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

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

源码来源:爱芯人公开课

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

___Leo___

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值