我是靠谱客的博主 个性西牛,最近开发中收集的这篇文章主要介绍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 topsegmentenclose    //设置线负载模型的模式,有三种
set_wire_load_model -name ##    //设置线负载模型
set_load ## ##    //设置端口负载
alib_analyze_libs    //生成alib库

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

write -f ddcverolog -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语句

 

最后

以上就是个性西牛为你收集整理的DC命令总结的全部内容,希望文章能够帮你解决DC命令总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部