Open cisen opened 3 years ago
read_verilog {dcLabCore.v dcLabTop.v iopads.v} 读入设计原文件后,一般设定当前设计,这样约束条件才可有针对性施加: current_design dcLabCore 设定当前设计后,要完成链接,也就是将设计与库链接起来,用于映射过程中搜寻相应的单元,完成综合。tcl语句: link 检查设计,主要是检查完成转换(translate)的设计: check_design。然后设定输出网表的格式规则,输出未优化的设计: set verilogout_no_tri true change_names -rule verilog -hier write -f ddc -hier –out ../output/dcLabCore.ddc 然后对设计设定时序约束,这是最重要的一项约束,用于设定设计的工作速度的。针对不同的设计部分,有不同的约束方法。这里假设设计为全同步设计,单时钟工作,复杂情况参考design compiler的手册即可。以下语句设定时钟及属性、输入信号的时间裕量: create_clock –name clk_cal -period 20 [get_ports clk_cal] #名称clk_cal,对应端口clk_cal,50M工作频率 set_clock_uncertainty -setup 0.2 [get_clocks clk_cal] #时钟的不确定时间 set_clock_latency -source -max 0.3 [get_clocks clk_cal]#时钟输入延时 set_clock_latency -max 0.1 [get_clocks clk_cal]#时钟延时 set_clock_transition -max 0.2 [get_clocks clk_cal]#时钟上升/下降时间 set_dont_touch_network [get_ports "clk* rstn"] #不对时钟复位信号优化 set_ideal_network [get_ports "clk* rstn"] #延时分析时认为时钟复位无延时 set_input_delay -max 12 -clock clk_cal [get_ports "add* mult*"]#输入信号裕量 set_output_delay -max 12 -clock clk_cal [get_ports "caculo"] #输出时间裕量 完成时序约束后,要对设计的工作环境、设计规则等进行约束,如下约束语句: set_wire_load_mode top #设定线载模型的模式 set_wire_load_model -library slow -name umc_wl20 -max #线载模型,要粗略综合一下估出面积,再设定 以下是设计规则的约束: set_driving_cell -lib_cell FFEDQHD4X -pin Q [get_ports all_inputs] #驱动能力的约束 set max_cap [expr [load_of slow/AND2HD4XSPG/A] * 5] set_load [expr 3 * $max_cap] [all_outputs] #设计负载设定 set_fanout_load 10 [all_outputs] #扇出负载 然后是综合的策略,简单的设计比较容易,这里不展开: compile -map_effort medium -incremental_mapping 输出综合报告、输出综合网表、综合数据以及标准延时文件: rc > log/rc.log #时序报告 write -f verilog -hier -out output/dcLabTop.sv #输出网表 write -f ddc -hier -out output/dcLabTop.ddc#综合数据文件 write_sdf -version 2.1 mapped/light_controller.sdf #标准延时文件
design compiler