run_dc.tcl注释小记

Posted 罪途

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了run_dc.tcl注释小记相关的知识,希望对你有一定的参考价值。

> 给DC启动命令加个注释,当是学习了

#设置top值
set top "demo00_top"
#设置标准单元库文件变量
set stdcel_libs "
/disk2/course/library/stdcel/db/ss1p08v125c/saed90nm_max_hth_cg.db
/disk2/course/library/stdcel/db/ss1p08v125c/saed90nm_max_hth_cg_hvt.db
/disk2/course/library/stdcel/db/ss1p08v125c/saed90nm_max_hth_cg_lvt.db
/disk2/course/library/stdcel/db/ss1p08v125c/saed90nm_max_hth.db
/disk2/course/library/stdcel/db/ss1p08v125c/saed90nm_max_hth_hvt.db
/disk2/course/library/stdcel/db/ss1p08v125c/saed90nm_max_hth_lvt.db"
# memory
set memory_libs ""
#设置工艺库变量值
set target_library "$stdcel_libs"
#其中*代表内存
set link_library   "* $target_library $memory_libs"
#分页显示关闭
set enable_page_mode false
#shell命令,创建目录
sh mkdir -p ../rpts
sh mkdir -p ../output_data
#记录dc在综合时采用的优化、复用、状态机重编码信息等等,供formality验证时使用。
set_svf ../output_data/${top}.svf
#指定设计和库的工作路径,放一些运行中的垃圾,临时目录
define_design_lib temp_work -path ./tmp_work
#读入设计
read_verilog -rtl /disk2/course/proj/demo00/design/rtl/demo00_top.v
#设置当前设计,要综合哪个模块,就把哪个模块设置为当前设计
current_design $top
#链接,查看当前要综合的设计是否缺少子模块,返回值是1,说明子模块完整
link
#读入设计约束
read_sdc /disk2/course/proj/demo00/design/sdc/demo00_top.sdc
#设置工作条件 综合条件
set_operating_conditions -max WORST -max_library saed90nm_max_hth \\
			             -min WORST -min_library saed90nm_max_hth
#关闭自动选择线负载模型
set_app_var auto_wire_load_selection false
#设置线负载模型?
set_wire_load_model  -name ForQA
#设置线负载模式
set_wire_load_mode enclosed
#设置最大静态功耗
set_max_leakage_power 0
#设置最大面积
set_max_area 0
#阻止DC优化clock
set_dont_touch_network [get_ports clock]
#过滤源的类型为端口的clk
set ports_clock_root [filter_collection [get_attribute [get_clocks] sources] object_class==port]
#路径分组。-from -to 优先级最大,-from 次之,-to 优先级最小
group_path -name reg2out -to [all_outputs] 
#来自除去clk之外的所有输入信号的路径
group_path -name in2reg -from [remove_from_collection [all_inputs] $ports_clock_root] 
#除去clk之外的所有输入信号到所有输出信号的路径
group_path -name in2out -from [remove_from_collection [all_inputs] $ports_clock_root] -to [all_outputs]
set_clock_gating_style \\
        #设置在RTL代码中用上升沿沿触发的寄存器采用使用集成门控时钟单元。
        -positive_edge_logic {integrated:saed90nm_max_hth_cg_lvt/CGLPPRX8_LVT} \\
        #设置该门控单元在DFT时的控制点放在门逻辑中的锁存器之前。
        -control_point before \\
        #设置一个门控单元所驱动的最大负载数目,定义CG单元最大扇出的一个目的是减少CG后面的时钟延迟,门控时钟单元的扇出越大,它到达寄存器的延迟越长;此外,还有用来约束重新平衡
        -max_fanout 32 \\
        -no_sharing \\
        #设置进行时钟门控的寄存器阵列的最小宽度(一个门控时钟至少要触发4个寄存器)
        -minimum_bitwidth 4 \\
        #基于锁存器的离散门控单元
        -sequential_cell latch
#综合并插入门控时钟单元
compile_ultra -gate_clock
#报出所有违规,包括setup, hold check, drv, clock gating check等
report_constraint -all_violators  > ../rpts/all_vios1.rpt
#为formality进行停止记录数据(形式验证)
set_svf -off
#因为DC和其它的XX命名规则不同,为了避免出现问题,在产生网表之前先要定义一些命名规则。
change_names -rules verilog -hierarchy
#保存综合后的设计
write -format ddc -hierarchy -output ../output_data/${top}.mapped.ddc
#输出网表,自动布局布线需要
write -f verilog -hierarchy -output ../output_data/${top}.mapped.v

水平有限,内容难免有误,望各位不吝指正。

源码来源:爱芯人公开课

以上是关于run_dc.tcl注释小记的主要内容,如果未能解决你的问题,请参考以下文章

随笔小记

Java 基本数据类型 编码方式(小记1.7)

vscode 用户代码片段 vue初始化模板 Snippet #新加入开头注释 自动生成文件名 开发日期时间等内容

phpstorm 实用快捷键 和 注释

java学习中,object 对象的使用(toStringequalshashCode)(java 学习中的小记录)

兼容ie8,firefox,chrome浏览器的代码片段