首页 > 编程知识 正文

run_dc.tcl注释小记

时间:2023-05-04 19:03:06 阅读:265002 作者:4902

> 给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"# memoryset memory_libs ""#设置工艺库变量值set target_library "$stdcel_libs"#其中*代表内存set link_library "* $target_library $memory_libs"#分页显示关闭set enable_page_mode false#shell命令,创建目录sh mkdir -p ../rptssh 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优化clockset_dont_touch_network [get_ports clock]#过滤源的类型为端口的clkset 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

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

源码来源:爱芯人公开课

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。