目录
1.tcl脚本实例
下面给出一个综合tcl脚本的实例,通过实例我们可以看到整个综合流程
set search_path "../lib/logic ../src" #设置搜索路径
set target_library " slow.db " #设置标准元件库
set link_library "* $target_library "
set symbol_library " smic18.sdb " #设置标准元件图标库
set access_internal_pins true
set report_path "./reports" #设置reports文件夹
set output_path "./outputs" #设置outputs文件夹
read_file -format verilog cic_filter.v #读取verilog设计文件
read_file -format verilog divider64.v
current_design cic_filter #指明主程序
link #工艺库链接
uniquify
set design_name [get_object_name [current_design]]
set_wire_load_model -name "smic18_wl10" #设置线负载模型
set_wire_load_mode top
create_clock -period 156 -waveform {0 78} [get_ports clk] -name clk #设置时钟,周期156ns,脉宽0-78ns
create_generated_clock [get_pins div/clk_div] -source [get_ports clk] -divide_by 64 -name clk_div #分频64后的时钟
set_clock_latency 2.5 clk #延迟时间2.5ns
set_clock_transition 0.3 clk #翻转时间0.3ns
set_clock_uncertainty 1.5 -setup clk #建立时间1.5ns
set_clock_uncertainty 0.3 -hold clk #保持时间0.3ns
set_drive 0 [list clk rst_n] #设置输入驱动强度为0
set_driving_cell -lib_cell NAND2X1 in #设置驱动单元
set_input_delay 35 -clock [get_clocks clk] {in rst_n} #设置输入延时35ns
set_output_delay 35 -clock [get_clocks clk_div] [get_ports out] #设置输出延时35ns
set_load 2 [all_outputs] #设置输出负载为2pF
set_max_area 0
check_design > $report_path/check_design_before_compile.rpt
check_timing > $report_path/check_timing_before_compile.rpt
compile
compile -incremental_mapping -map_effort high
write_sdf -version 2.1 $output_path/${design_name}_post_dc.sdf #时序描述
write -f ddc -hier -output $output_path/${design_name}_post_dc.ddc
write -f verilog -hier -output $output_path/${design_name}_post_dc.v #网表
write_sdc $output_path/${design_name}_post_dc.sdc #约束
report_constraint -all_violators -verbose > $report_path/constraint.rpt
report_qor > $report_path/qor.rpt
report_power > $report_path/power.rpt
report_area > $report_path/area.rpt
report_cell > $report_path/cell.rpt
report_clock > $report_path/clk.rpt
report_hierarchy > $report_path/hierarchy.rpt
report_design > $report_path/design.rpt
report_reference > $report_path/reference.rpt
report_timing > $report_path/timing.rpt
check_design > $report_path/check_design_post_compile.rpt
check_timing > $report_path/check_timing_post_compile.rpt
#start_gui
其中在读取rtl的verilog文件时可以采用更好的方法:
read_verilog xxx.v
#或者
read_file -format verilog xxx.v
#或者
read_file file_list
#这个filelist必须是tcl语法的list
#或者
analyze -format sverilog -vcs “-f $RTL_FILE/flist.f”
2.整个综合流程的原文如下:
数字asic流程实验(四) DC综合_mb5fdb0ff6b2aaf的技术博客_51CTO博客