DC综合教程

发布时间 : 星期四 文章DC综合教程更新完毕开始阅读

Design rule constraints

1.

set_max_transition 1.8 [current_design] 2.

set_max_fanout 10 [current_design] 3.

set_max_capacitance //用于设置输出单元允许的电容负载。 4. set_min_capacitance

transition time是指电压从 10%VDD上升到 90%VDD 所需要的时间

5. set_Cell_degradation

Optimization Constraints

################################### # CLOCK defintion # ################################### 1.create_clock 命令的格式为

create_clock –name clk_name –period cycle_value –waveform edge_list create_clock -period 14 -waveform [list 0.0 7.0] clk_62_5M 或

create_clock -period 14 –waveform [list 0.0 7.0] -name clk [get_ports clk_62.5M]

注意:[get_ports clk_62.5M]中的clk_62.5M是设计文件中的时钟名,-name后面的clk时钟名是

脚本中的时钟名

重要:在时序逻辑电路中,创建时钟约束是真实的时钟,要与设计中的时钟信号相连接,即用或

定义好 Clock 之后,为了模拟实际的时钟,可以用 set_clock_uncertainty 来指定实际时钟网络的 clock_skew。

set_clock_uncertainty 0.3 [get_clocks core_clk]

2、 set_dont_touch_network

由于时钟信号是驱动大负载的。在综合的时候综合工具会对负载进行估计,从而在该网络上加上一些有足够驱动能力的 buffer 或者反相器(增强驱动能力),以使得电路的上升时间和下降时间能够满足要求。而前端工具无法知道连线的走向和长度,在估计时钟网络的负载时不准确,而且 floorplan 的结果将会影响连线的长度,从而影响连线的负载,因此,前端工具不对大负载的网络进行处理,而把这个工作留到后端。所以在综合的时候需要告诉综合工具不对时钟网络进行处理。 参看《ASIC综合与DC使用》25 set_dont_touch_network clk_name

3、set_dont_touch

用于指定不需要综合工具进行优化的对象,这些对象有单元电路、 子模块、硬核等,使得在综合的时候综合工具可以忽略施加在这些对象 上的限制条件。

set_dont_touch_network [list clk_62_5M rst_n]

set_ideal_network [list clk_62_5M rst_n]//延时分析时认为时钟复位无延时

set_false_path 命令用于给出异步电路或者逻辑上不存在的电路,优化的时候所有加在该路径上的限制条件都不予以考虑。如果要取消该设置,使用reset_path命令。 指出异步电路的路径:

如图,由于 CLKA 和 CLKB 是属于不同的时钟晶振,因此,CLKA到 CLKB 的路径是异步电路。 set_false_path –from [get_clocks CLKA] –to [get_clocks CLKB] set_false_path -through rst_n

###################################

在纯组合逻辑电路中,需要创建虚拟时钟约束virtual clock,此时不用连接到设计,即不用写[get_ports clk_62.5M]

# INPUT TIMING # ################################### 参见笔记图DC时序计算

命令的格式:

set_input_delay –clock clk_name –max max_value –min min_value –add_delay

2) -max 的选项:指定输入的最大延迟,为了满足时序单元建立时间(setup time) 的要求。

3) -min 的选项:指定输入的最小延迟,为了满足时序单元保持时间(hold time) 的要求。

set_input_delay 5.8 -clock clk_62_5M [all_inputs]

remove_input_delay [get_ports [list clk_62_5M rst_n]]//为了去掉像clk、rst_n这些不需要设置输入延时的信号

################################### # OUTPUT TIMING # ###################################

set_output_delay 5.8 -clock clk_62_5M [all_outputs]

################################### # DESIGN AREA # ###################################

可以将 max_area 设置为 0,此时综合后的电路肯定不能满足要求,但 DC 会尽量对电路的面积进行优化,达到可能的最小面积,但同时也使得综合后的电路没有 “弹性” set_max_area 0

################################### #

组合电路 #

################################### set_max_delay set_min_delay

如果电路完全是组合逻辑电路,而没有时钟,可以使用这两条命令直接限制路径的最大最小的延迟。 例如,限制一个 reset 信号:由于 reset 信号跨越了不同的模块,因此,一般在顶层模块中对该模块做限制: set_max_delay 5 –from reset

即指定所有 reset 信号出发的路径的最大延迟都为 5限制一个从 IN输入到 OUT输出的最小路径: set_min_delay 10 –from IN –to OUT

对设置环境和约束的一些报告

################################### # Check missing or conflicting #

# constraints # ################################### check_timing

################################## # Check constraints were correct #

# applied to design # ################################### report_clock report_clock -skew

report_port –verbose //报告冗余端口 实例:

联系合同范文客服:xxxxx#qq.com(#替换为@)