文章目录
系列学习介绍DC相关知识,包括ASIC基本单元相关,DC指令工艺库脚本相关,后端综合实现相关等总结。本节包括Timing constraint,内容有一些个人理解和各地方论坛总结学习,有不同认识欢迎探讨,fighting。
DC主要针对setup进行约束,hold的修复与clk_tree密切相关。
3.1 setup constraint参数
对于setup相关参数定义,一般定义的都是max数值。
3.1.1 创建时钟
时钟source_latency是从PLL到时钟定义点之间的delay(PORT), Network_latency从时钟定义点到触发器delay。
create_clock -period 2 [get_ports Clk] #clock_period=2ns时钟周期
set_clock_uncertainty -setup Tu [get_clocks CLK]#Tu为clock skew+jitter+margin时钟不确定性添加
set_clock_latency -source -max 3 [get_clocks CLK] #source latency
set_clock_latency -max 1 [get_clocks CLK] #network latency
set_clock_transition -max Tt [get_clocks CLK] #指信号爬坡消耗时间,10%~90%
3.1.2 创建Input Path constraining
定义外接逻辑Path上delay。
set_input_delay -max 0.6 -clock Clk [get_ports A]
3.1.3 创建Output Path constraining
定义外接逻辑Path上delay。
set_output_delay -max 0.8 -clock Clk [get_ports B]
可同时定义所有的input或output信号
set_input_delay -max 0.6 -clock Clk [all_inputs]
set_output_delay -max 0.8 -clock Clk [all_outputs]
如果是所有的输入信号排出某一个信号的话
set_input_delay -max 0.6 -clock Clk [remove_from_colection [all_inputs] [get_ports Clk]] #CLK 输入信号不需要input delay约束
3.1.4 虚拟时钟 constrainting
定义的虚拟时钟不存在source latency,因为此时钟并不直接来源于port端口
create_clock -period 2 -name VCLK #clock_period=2ns时钟周期
set_clock_uncertainty -setup 0.3 -clock VCLK
3.2 外加命令解析
reset_design: 擦除所有已经加载的constraint
dcprocheck TOP.con : 在linux命令行下输入检查con语法
check_timing : 多时钟问题,时钟缺乏约束,clock_gating问题
redirect :
redirect -tee -file precompile.rpt {link} #重定向,将{link}步骤产生的LOG导入到precompile中来
#后面如果相同文件添加内容,添加参数append
redirect -append -tee -file precompile.rpt {check_design}