逻辑综合讲义
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– Set a dont_touch property on a port, or on the net – Usually used for clock networks and resets
dc_shell> set_dont_touch_network {CLK, RST}
逻辑综合的约束
• set_dont_touch
dc_shell> set_max_delay 5 –from all_inputs() –to all_outputs()
• set_min_delay
– The opposite of set_max_delay command
dc_shell> set_min_delay 3 –from all_inputs() –to all_outputs()
逻辑综合的约束-时钟问题
• Post-Layout Step
dc_shell> create_clock –period 40 –waveform {0 20} CLK dc_shell> set_clock_skew –propagated 2.5 \
–minus_uncertainty 0.5 –plus_uncertainty 0.05 CLK dc_shell> set_dont_touch_network CLK dc_shell> set_drive 0 CLK
• 输入驱动强度:
输入端口的驱动,由工艺库单元决定。 确定线网可以驱动的负载。 用于计算输入线网转换时间。
• 输出负载:
输出端口的负载电容和扇出单元数。
• 输出时序:
内部组合电路延迟和外部寄存器的时钟信息。
描述综合环境
• 输入达到时间:
输入端口的到达时间,用于优化时序路径。 明确输入信号参考的时钟域。 用于决定最晚到达输入信号并优化路径。
逻辑综合的约束
• group_path
– Bundles together timing critical paths in a design, for cost function calculations
dc_shell> group_path –to {out1 out2} –name grp1
逻辑综合的约束
•create_clock
–Defines a clock object with a particular period and waveform
dc_shell> create_clock –period 40 –waveform {0 20} CLK
• set_clock_skew
• Generated Clocks
Top Level
clk_div
clkA Block
CLK
clkB
A
dc_shell> create_clock –period 40 \ –waveform {0 20} CLK
dc_shell> create_clock –period 80 \ –waveform {0 20} \ find(port, “clk_div/clkA”)
In this example CLKA and CLKB are asynchronous to each other, so how do we constrain it?
First you want to define the clocks using create_clock, then tell Design Compiler not to optimize logic crossing the clock domains by using set_false_path.
• set_multicycle path
– Informs DC regarding the number of clock cycles a particular path requires in order to reach its endpoints
dc_shell> set_multicycle_path 2 –from U1/Z –through U2/A –to out1
逻辑综合的约束
• 逻辑综合的功耗约束 使用工艺库中的低功耗单元 基于功耗的综合算法依赖于所有输入和双向端口的跳变信息, 该信息通过HDL模拟得到。 在不影响功能情况下,最小化操作和信号翻转。 在不需要时关掉某些设计。 例 门控时钟 降低功耗:只有在选择线有效时选通触发器。 使时序验证复杂 影响可测性、时钟树综合、偏差平衡,导致毛刺。
逻辑综合的约束
2 设计规则约束
• 设计规则
对集成电路版图的约束,以保证制造成品率。 保证设计版图是可行的。 一般情况下,设计规则依赖于工艺。
• 最大转换
线网的最大转换时间。 转换时间定义为一个线网改变逻辑值所需的时间。
10%-90%。
使用大的驱动单元和恰当的缓冲。
逻辑综合的约束
• 最大电容
对特定单元的最大电容负载。 不同单元,约束不同。 基于时序和面积约束选择最恰当的单元。
逻辑综合的约束
• set_false_path
– Instructs DC to ignore a particular path for timing or optimization
dc_shell> set_false_path –from in1 –through U1/Z –to out1
• set_dont_use
– Eliminates certain types of cells from the technology library that the user would not want DC to infer
dc_shell> set_dont_use {mylib/SD*}
逻辑综合的约束-时钟问题
• The clock description – the most critical part of synthesis
• Pre-Layout Step
dc_shell> create_clock –period 40 –waveform {0 20} CLK dc_shell> set_clock_skew –delay 2.5 –uncertainty 0.5 CLK dc_shell> set_clock_transition 0.2 CLK dc_shell> set_dont_touch_network CLK dc_shell> set_drive 0 CLK
– Set a dont_touch property on the current_design
dc_shell> set_dont_touch current_design dc_shell> set_dont_touch find(cell, “sub1”) dc_shell> set_dont_touch find(net, “gated_rst”)
0
15
30
datain 0
InvalidБайду номын сангаас
V. D
23
30
逻辑综合的约束
• set_output_delay
– Specifies the time it takes for the data to be available before the clock edge
dc_shell> set_output_delay –max 19.0 –clock CLK {dataout}
逻辑综合
逻辑综合
• 逻辑综合的概念 • 逻辑综合的约束 • 描述综合环境 •基本综合流程 • 编码风格 •综合脚本实例
逻辑综合的概念
• 逻辑综合
将HDL描述转换成目标工艺库的门的过程。 基于用户指定的约束。
• 允许设计者用软件的方式指定硬件系统的功能,由综 合工具产生和优化门级实现
逻辑综合的约束
Block B
逻辑综合的约束
• 面积约束 指定设计的最大面积:Sum of cell area and wire area Although each wire is different, can depend on average wire lengths Good estimate of area is K * cell area
• 最大扇出
对单元库中原始单元的负载建模。 对特定单元指定扇出。fanout_load 限定给定输出可以驱动的门数。
逻辑综合的约束
•Design Rule Constraints
–DRC are generally set in the technology library and are determined by the process parameters
dc_shell> set_max_transition 0.3 current_design dc_shell> set_max_capacitance 1.5 find(port, “out1”) dc_shell> set_max_fanout 3.0 all_outputs()
描述综合环境
K ranges from 1 (datapath layout) to around 3 (standard cells)
时序约束有最高优先级 在满足时序约束情况下减少面积。
逻辑综合的约束
• 功耗优化:应在各个层次综合考虑 系统级:不同部分有不同操作电压 算法级:复杂性和并发性 体系结构级:并行和流水 后端:减小互连、调整晶体管尺寸。
逻辑综合的约束
• set_input_delay
– Specifies the input arrival time of a signal in relation to the clock
dc_shell> set_input_delay –max 23.0 –clock CLK {datain} dc_shell> set_input_delay –min 0.0 –clock CLK {datain}
– Defines the clock network delay and clock skew information
dc_shell> set_clock_skew 2.5 {CLK}
• set_clock_transition
– Sets a clock transition time
dc_shell> set_clock_transition 0.3 {CLK}
set_false_path –from [get_clocks CLKA] –to [get_clocks CLKB]
set_false_path –from [get_clocks CLKB] -to [get_clocks CLKA]
逻辑综合的约束
• set_dont_touch_network
• 综合是约束驱动的 • 优化约束
时序:时钟周期,建立时间,保持时间 面积 功耗:由开关总电容决定
•设计规则约束
最大电容 最大转换时间 最大扇出
逻辑综合的约束
1 优化约束
• 时序约束
时序电路的建立和保持约束。 指定时钟周期和不同时钟周期的波形。 每个时钟的时钟树延时和最大时钟偏差。 设计的所有端口的时序信息。
0
15
30
dataout V. D
Invalid
0
11
30
逻辑综合的约束
纯组合逻辑或异步逻辑 • set_max_delay
– Defines the maximum delay required in terms of time units for a particular path
– To constrain the combinational logic, it is used virtual clock or below constraint
数据什么时间在输入端口有效。 Set_input_delay 输出端口的时序需求。 Set_output_delay
Tclk-q + Tm = 7.4 ns
create_clock –period 20 [get_ports clk] set_input_delay –max 7.4 –clock clk [get_ports A]
• 线负载模型:
确定设计的线网延迟。 线负载模型基于扇出和负载数据。 例 线负载模型
• 操作条件:
基于温度、电压和工艺的变化按比例改变延迟值。
dc_shell> set_dont_touch_network {CLK, RST}
逻辑综合的约束
• set_dont_touch
dc_shell> set_max_delay 5 –from all_inputs() –to all_outputs()
• set_min_delay
– The opposite of set_max_delay command
dc_shell> set_min_delay 3 –from all_inputs() –to all_outputs()
逻辑综合的约束-时钟问题
• Post-Layout Step
dc_shell> create_clock –period 40 –waveform {0 20} CLK dc_shell> set_clock_skew –propagated 2.5 \
–minus_uncertainty 0.5 –plus_uncertainty 0.05 CLK dc_shell> set_dont_touch_network CLK dc_shell> set_drive 0 CLK
• 输入驱动强度:
输入端口的驱动,由工艺库单元决定。 确定线网可以驱动的负载。 用于计算输入线网转换时间。
• 输出负载:
输出端口的负载电容和扇出单元数。
• 输出时序:
内部组合电路延迟和外部寄存器的时钟信息。
描述综合环境
• 输入达到时间:
输入端口的到达时间,用于优化时序路径。 明确输入信号参考的时钟域。 用于决定最晚到达输入信号并优化路径。
逻辑综合的约束
• group_path
– Bundles together timing critical paths in a design, for cost function calculations
dc_shell> group_path –to {out1 out2} –name grp1
逻辑综合的约束
•create_clock
–Defines a clock object with a particular period and waveform
dc_shell> create_clock –period 40 –waveform {0 20} CLK
• set_clock_skew
• Generated Clocks
Top Level
clk_div
clkA Block
CLK
clkB
A
dc_shell> create_clock –period 40 \ –waveform {0 20} CLK
dc_shell> create_clock –period 80 \ –waveform {0 20} \ find(port, “clk_div/clkA”)
In this example CLKA and CLKB are asynchronous to each other, so how do we constrain it?
First you want to define the clocks using create_clock, then tell Design Compiler not to optimize logic crossing the clock domains by using set_false_path.
• set_multicycle path
– Informs DC regarding the number of clock cycles a particular path requires in order to reach its endpoints
dc_shell> set_multicycle_path 2 –from U1/Z –through U2/A –to out1
逻辑综合的约束
• 逻辑综合的功耗约束 使用工艺库中的低功耗单元 基于功耗的综合算法依赖于所有输入和双向端口的跳变信息, 该信息通过HDL模拟得到。 在不影响功能情况下,最小化操作和信号翻转。 在不需要时关掉某些设计。 例 门控时钟 降低功耗:只有在选择线有效时选通触发器。 使时序验证复杂 影响可测性、时钟树综合、偏差平衡,导致毛刺。
逻辑综合的约束
2 设计规则约束
• 设计规则
对集成电路版图的约束,以保证制造成品率。 保证设计版图是可行的。 一般情况下,设计规则依赖于工艺。
• 最大转换
线网的最大转换时间。 转换时间定义为一个线网改变逻辑值所需的时间。
10%-90%。
使用大的驱动单元和恰当的缓冲。
逻辑综合的约束
• 最大电容
对特定单元的最大电容负载。 不同单元,约束不同。 基于时序和面积约束选择最恰当的单元。
逻辑综合的约束
• set_false_path
– Instructs DC to ignore a particular path for timing or optimization
dc_shell> set_false_path –from in1 –through U1/Z –to out1
• set_dont_use
– Eliminates certain types of cells from the technology library that the user would not want DC to infer
dc_shell> set_dont_use {mylib/SD*}
逻辑综合的约束-时钟问题
• The clock description – the most critical part of synthesis
• Pre-Layout Step
dc_shell> create_clock –period 40 –waveform {0 20} CLK dc_shell> set_clock_skew –delay 2.5 –uncertainty 0.5 CLK dc_shell> set_clock_transition 0.2 CLK dc_shell> set_dont_touch_network CLK dc_shell> set_drive 0 CLK
– Set a dont_touch property on the current_design
dc_shell> set_dont_touch current_design dc_shell> set_dont_touch find(cell, “sub1”) dc_shell> set_dont_touch find(net, “gated_rst”)
0
15
30
datain 0
InvalidБайду номын сангаас
V. D
23
30
逻辑综合的约束
• set_output_delay
– Specifies the time it takes for the data to be available before the clock edge
dc_shell> set_output_delay –max 19.0 –clock CLK {dataout}
逻辑综合
逻辑综合
• 逻辑综合的概念 • 逻辑综合的约束 • 描述综合环境 •基本综合流程 • 编码风格 •综合脚本实例
逻辑综合的概念
• 逻辑综合
将HDL描述转换成目标工艺库的门的过程。 基于用户指定的约束。
• 允许设计者用软件的方式指定硬件系统的功能,由综 合工具产生和优化门级实现
逻辑综合的约束
Block B
逻辑综合的约束
• 面积约束 指定设计的最大面积:Sum of cell area and wire area Although each wire is different, can depend on average wire lengths Good estimate of area is K * cell area
• 最大扇出
对单元库中原始单元的负载建模。 对特定单元指定扇出。fanout_load 限定给定输出可以驱动的门数。
逻辑综合的约束
•Design Rule Constraints
–DRC are generally set in the technology library and are determined by the process parameters
dc_shell> set_max_transition 0.3 current_design dc_shell> set_max_capacitance 1.5 find(port, “out1”) dc_shell> set_max_fanout 3.0 all_outputs()
描述综合环境
K ranges from 1 (datapath layout) to around 3 (standard cells)
时序约束有最高优先级 在满足时序约束情况下减少面积。
逻辑综合的约束
• 功耗优化:应在各个层次综合考虑 系统级:不同部分有不同操作电压 算法级:复杂性和并发性 体系结构级:并行和流水 后端:减小互连、调整晶体管尺寸。
逻辑综合的约束
• set_input_delay
– Specifies the input arrival time of a signal in relation to the clock
dc_shell> set_input_delay –max 23.0 –clock CLK {datain} dc_shell> set_input_delay –min 0.0 –clock CLK {datain}
– Defines the clock network delay and clock skew information
dc_shell> set_clock_skew 2.5 {CLK}
• set_clock_transition
– Sets a clock transition time
dc_shell> set_clock_transition 0.3 {CLK}
set_false_path –from [get_clocks CLKA] –to [get_clocks CLKB]
set_false_path –from [get_clocks CLKB] -to [get_clocks CLKA]
逻辑综合的约束
• set_dont_touch_network
• 综合是约束驱动的 • 优化约束
时序:时钟周期,建立时间,保持时间 面积 功耗:由开关总电容决定
•设计规则约束
最大电容 最大转换时间 最大扇出
逻辑综合的约束
1 优化约束
• 时序约束
时序电路的建立和保持约束。 指定时钟周期和不同时钟周期的波形。 每个时钟的时钟树延时和最大时钟偏差。 设计的所有端口的时序信息。
0
15
30
dataout V. D
Invalid
0
11
30
逻辑综合的约束
纯组合逻辑或异步逻辑 • set_max_delay
– Defines the maximum delay required in terms of time units for a particular path
– To constrain the combinational logic, it is used virtual clock or below constraint
数据什么时间在输入端口有效。 Set_input_delay 输出端口的时序需求。 Set_output_delay
Tclk-q + Tm = 7.4 ns
create_clock –period 20 [get_ports clk] set_input_delay –max 7.4 –clock clk [get_ports A]
• 线负载模型:
确定设计的线网延迟。 线负载模型基于扇出和负载数据。 例 线负载模型
• 操作条件:
基于温度、电压和工艺的变化按比例改变延迟值。