一 运行
1 setup synthesis
set target_library
"name_target_library"
set link_library "* link_library"
//*的作用是先在内存中找link_library
set symbol_library "name"
2 运行DC
>synopsys.setup
>design_vision -xg
>list_designs
>list_libs
3 Execute Script
4 compile
5 其它命令
printvar
target_library/link_library/symbol_library/search_path
help -verbose command_name
command_name -help
man command -name
二 constraints & attributes
1 启动dc-shell
dc_shell -xg
检查库设置变量
>printvar target_library
>printvar link_library
读入文件
>read_ddc
unmapped/PRGRM_CNT_TOP.ddc
//PRGRM_CNT_TOP.ddc->P
>current_design PRGRM_CNT_TOP
>link
2 查看core_slow库
>list libs
>report_lib ssc_core_slow | view
report_lib ssc_core_slow
3 约束P
>reset design
>all_inputs
//查看
>all_outputs //端口
>create_clock -period 4 -name
my_clk [get_ports
Clk] //生成时钟
>set_clock_uncertainty 0.25 [get_clocks
my_clk] //设置clk歪斜
>set_input_delay -max 1.7 -clock my_clk
\
//约束输入
[remove_from_collection [all_inputs]
[get_ports Clk]] //端口时序
>set_max_transition 0.25
[remove_from_collection
\
//设计规
[all_inputs]
[get_ports.Clk]]
//则约束
>set_output_delay -max 2.4 -clock my_clk
[all_outputs] //约束输出
>set_output_delay -min -0.3 -clock
my_clk [all_outputs] //端口时序
>report_clock -skew
-attributes //生成时钟报告
>view report_port
-verbose
//端口
>view report_port -verbose
Clk
//报告
4 设置P环境变量
>get_attribute ssc_core_slow
default_operation_conditions //默认
>view report_lib
ssc_core_slow //互连线负载模型
>set_driving_cell -library ssc_core_slow
-lib_cell fdef1a1 -pin Q\
remove_from_collection
[all_inputs] [get_ports -Clk] //端口环境
>report_attribute [get_lib_pins
ssc_core_slow.fdef1a1/*] //报告驱动
//单元属性
>set_max_capacitance [expr [load_of
ssc_core_slow/and2a1/A] *5]\
[remove_from_collection
[all_inputs] [get_ports Clk]] //限制输入
//端口电容
>set_load [expr [load_of
ssc_core_slow/and2a1/A] *15]\//指定最坏情
[all_outputs] //况输出电容
>view
report_design //生成设计报告
>view report_port
-verbose
//生成端口报告
5 编译保存
>write_script. -output
scripts/pc-w.tcl //保存约束和环境
>compile
>report_constraint
-all
//生成约束报告
>write -format ddc -hierarchy -output
mappec/pc.ddc //层次化保存
>quit
//推出
三 时序报告和调试
1 约束和编译P
>dc_shell -xg -f
scripts/instruction_lab3.tcl |tee -i \
instruction_lab3.log
//tee:unix程序,将结果输出到文件和终端
>sh grep -i error instruction_lab3.log
//检查.log有无error
//grep:unix程序
//sh:在dc_shell下运行unix命令
>view report -verbose
>view report_desing
2 时序报告
>check_timing
//有无未约束路径
>report_path_group
>report_timing
>report_timing -nets/delay min
>report_timing -max -path 10
>report_constraints
-all_violators //显示所有违背时序的路径
3 解决建立时间违背
>group -design_name NEW_PC -cell_name
I_NEW_PC \
{I_PRGRM_DECODE I_PRGRM_CNT}
>report_hierarchy
-noleaf
>ungoup -start_level 2 I_NEW_PC
>report_hierarchy -noleaf
>current PRGRM_CNT_TOP
>compile
>report_timing -delay max
>report_constraint -all_violators
4 解决保持时间
>set -fix_hold [all_clocks]
>compile -incremental -mapping
>report_constraint -all_violators
5 保存
>write -format ddc -hierarchy -output
mapped/instruction_lab3.ddc
>write -format ddc -hierarchy -output
mapped/instruction_lab3.v
>write_sdf
scripts/PRGRM_CNT_TOP.sdf
>quit