DC命令总结

一、DC启动文件.synopsys_dc.setup

库相关变量:

//库相关变量

set search_path    "$search_path ## ##"            //设置搜索路径
set target_library    "## ##"         //设置综合设计库
set link_library    "* $target_library ## ##"            //设置相关IP库
set symbol_library    "## ##"        //设置用于图形显示的符号库
set synthetic_library    "## ##"    //设置DC自带的库

define_design_lib ## -path ##        //设置设计库的名字以及路径
history keep ##           //设置命令保存的历史数量
set alib_library_analysis_path ##        //设置alib分析路径

二、DC约束文件

//相关命令

current_design ##    //设置当前设计,一般为顶层文件
reset_design        //初始化当前设计

create_clock -period # [get_ports clk]    //创建约束时钟
set_clock_uncertainty -setup # [get_clocks clk]    //创建时钟不确定因素包括skew与jitter
set_clock_latency -max -source ## [get_clocks clk]    //-source 设置时钟源到芯片端口的延时
                                                      //空缺为芯片端口到内部寄存器延时
set_propagated_clock [get_clocks clk]    //布局布线后时钟设置,可以不用设置时钟-network的延时
set_clock_transition ## [get_clocks clk]    //设置时钟转换时间

suppress_message UID-401    //防止UID-401警告打印在终端
set_driving_cell -library ## -lib_cell ## [all_inputs]    //设置端口驱动模块为工艺库中的器件
set_input_transition ## [get_ports ##]    //设置出入端口转换时间
set_input_delay -max # -clock clk [all_inputs]    //创建端口输入延迟
set_output_delay -max # -clock clk [all_outputs]    //创建端口输出延迟
reomve_input_delay [get_ports ##] //移除端口输入延时约束
set_wire_load_mode top\segment\enclose    //设置线负载模型的模式,有三种
set_wire_load_model -name ##    //设置线负载模型
set_load ## ##    //设置端口负载
alib_analyze_libs    //生成alib库

set_max_area ##    //设置最大面积约束

write -f ddc\verolog -hier -out ##    //写出文件
list_designs    //列出所有设计
list_libs        //列出所有库文件
report_constraint -all_violators    //列出所有时序或面积的违例
report_timing    //列出时序违例
remove_design -designs    //移除设计
read_db ##    //读入db库文件
redirect -file ## {report_lib ##}    //重定向输出
dcprocheck    //检查tcl脚本语法是否正确
read_verilog ##    //读入verilog设计文件
read_file -f verilog ##    //读入Verilog设计文件    
check_timing    //检查时序约束是否完备以及是否出现冲突
report_clock    //显示时钟特性
report_clock -skew    //显示时钟skew
report_ports -verbose    //显示所有端口约束
write_script -out ##.wscr    //写出约束文件
diff ## ##    //比较两个约束文件##.wscr是否一致

group -design ## -cell ## [get_cells "## ##"]   //将两个模块合并为一组
ungroup -start_level # ##    //将一个模块分开
set_ungroup [get_designs ##] false    //设置模块不被自动打散
group_path -name ## -from ## -to ## -weight 5 -critical_range 0.2    //设置时序分析的路径组
set_critical_range  2  [current_design]    //设置时序优化范围
check_design    //检查读入设计是否发生错误
link    //将读入的设计链接到一起

set_operating_conditions -max ## -max_library ##    //设置工作条件
set auto_wire_load_selection false    //去除工具自动选择线负载模型

report_hierarchy -noleaf    //查看设计模块的树状结构

report_power_calculation    //显示功耗计算详细过程
report_delay_calculation    //显示延时计算的详细过程

set_max_delay ## -from [get_ports ##] -to [get_ports ##]    //设置路径最大延迟

set_min_library    //设置最小延时库
set auto_wire_load_selection false    //取消自动选择的线负载模型

get_attribute    //获取目标的属性
set_max_capacitance    //设计规则约束-最大电容
set_max_transition    //设计规则约束-最大转换时间
set_max_fanout    //设计规则约束-最大扇出

set hlo_resource_allocation area    //设置面积优先的综合策略
set_structure  true    //综合成共享逻辑表达式的形式
set_flatten true -effort low | medium  |  high    //将逻辑表达式综合成最小项的和的形式(low 、 medium、high其中一个就可以了)

set compile_auto_ungroup_delay_num_cells 100    //取消规模小于100的模块层次划分(默认值=500)
set compile_ultra_ungroup_dw true    //取消designware层次划分(默认值为true)
uniquify    //在多次例化时,为cell产生唯一的名字
uniquify_naming_style    //设置uniquify的命名规则
compile_ultra    //在compile的基础上进行优化,加上-timing选项时,比如一个寄存器驱动多个寄存器时,可能会违反设计规则,DC会把就驱动寄存器进行复用,同时把被驱动的进行分割

set_dont_retime ## true    //不进行retime优化
report_path_group    //查看路径组
report_auto_ungroup    //查看综合后被打散的模块
set_optimize_registers  true  -design  PIPELINE    //设置pipeline的retime操作
report_cells    //查看cell信息
set_dont_touch_network [get_clocks clk]    //防止时钟network在综合时被更改
set_clock_gating_check -setup ## -hold ## [current_design]    //门控时钟约束
report_timing_requirements    //报告设计中的时序例外
reset_path   -from  ##    //去掉不要的路径
set_disable_timing   [get_cells CLOCK_GEN/U1]  -from  ##  -to  ##    //不对cell内部端口之间进行时序分析
set_case_analysis   0  [get_pins  U1/sel]    //在时序分析时,对端口设置值
create_generated_clock  -name  Int_Clk  -source [get_pins CLOCK_GEN/U2/CP]   -divide_by  2  [get_pins  CLOCK_GEN/U2/Q] //设置分频电路时钟
set_clock_group -name false_grp1 -logically_exclusive -group clk -group vclk //设置两个时钟组的关系
set_fix_multiple_port_nets  -all  -buffer_constants  [get_designs  *]    //防止网表输出出现assign语句
change_names    //设置网表变量命名规则
define_name_rules    //设置网表变量命名规则
set_verilogout_no_tri true    //防止网表出现assign语句
set_verilogout_equation true    //防止网表出现assign语句

 

  • 9
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值