综合脚本
#script for Design Compiler # Language : TCL # Usage: #1) make sure the lib in the current directory #2) if you have the file .synopsys_dc.setup, #set synopsys_dc_setup_file 1, #if not, set synopsys_dc_setup_file 0 #3) change Step 3 : Variables to what you want #Especially : top module name, clock name, #reset name, all files name, and period #4) typing dc_shell-t -f run_72.tcl | tee -i run.log # #======================================================== set synopsys_dc_setup_file 0 #----------------------------------------------------- # Step 1 : # Setting Up path and library: # If you have edited the file .synopsys_dc.setup, then you can skip over this step #----------------------------------------------------- if { $synopsys_dc_setup_file == 0} { set search_path [list /home/chanshi/dc/library/smic /home/chanshi/dc/rfid/source /home/chanshi/dc/script] set target_library {typical.db} #set target_library {CSM35OS142_typ.db}; # if you want use typical library,change to typical.db #set link_library [list {*} ram_interp_typical_syn.db ram_458_typical_syn.db typical.db] set link_library [list {*} $target_library] } #set symbol_library {csm18ic.sdb csm18io.sdb} #set synthetic_library {dw_foundation.sldb}; # Design Ware set command_log_file“command.log“ #----------------------------------------------------- # Step 2 : # Compile Swithes #----------------------------------------------------- #set verilogout_no_tritrue ; # if inout used, tri net will be used #通过将三态(tri)逻辑声明成线网(wire)来确保网表中不会出现三态逻辑,因为一些布 线工具很难读取包含 tri、tran 源语、assign 语句的网表,对于“inout”类型的 port,DC 产生 tri wire 语句和 tran 源语,对于 tri,还会产生 assign 语句 set test_default_scan_stylemultipld_flip_flop #设置扫描链的类型,还可以通过set_scan_configuration -style来设置 set link_force_casecase_insensitive #设置 link 命令是否区分大小写,默认是check_reference,就是根据产生 reference 的模块 格式来判断是否大小写敏感,如果是vhdl 格式就是不敏感,如果是verilog 就敏感 define_name_rules VLSI_NET -allowed “a-zA-Z0-9_“ -first_restricted “0-9_“ -type net -max_length 256 define_name_rules VLSI_CELL -allowed “a-zA-Z0-9_“ -first_restricted “0-9_“ -type cell -max_length 256 define_name_rules VLSI_PORT -allowed “a-zA-Z0-9_“ -first_restricted “0-9_“ -type port -max_length 256 define_name_rules TAN_RULE -allowed “a-zA-Z0-9_“ -first_restricted “0-9_\[]“ -max_length 256 -map {{{“*cell*“, “mycell“}, {“*-return“, “myreturn“}}}; set hdlin_check_no_latch “true“ #设置如果推断出锁存器,是否报warning,默认是 false,即不报。 set hdlin_merge_nested_conditional_statements “true“ #顾名思义,是否把嵌套的if 融合,默认值是 false,就是对于嵌套的条件语句(if 或 case 语句)中的每一个if 和 case 都推断出一个选择器,这种做法有利于把某些迟到的条件判断 信号(late arriving signals)安排到离输出最近的选择器上(进而有利于减小延迟),如果 设成 true, 就会把这些选择器融合成一个大的选择器, 这样所有的选择信号到输出的距离都 是相同的 #----------------------------------------------------- # Step 3 : # Define Variables #----------------------------------------------------- set active_design “whole_modules“; # Top module name source files.tcl; # All RTL source_files (verilog) set clock_name “clk“; # Name of clock set reset_name “reset“; # Name of reset set clk_period 70.0 #设置时钟周期,注意带小数点,这样计算出的值都带