Prime Time的问题
时间:10-02
整理:3721RD
点击:
静态时序分析,
毕设的时候必须要用这个工具,迷迷糊糊的学过一段时间,感觉什么都没有学到,只是看了tutorial,也只是看了看,现在真正开始用的时候完全不记得。
昨天做STA的时候,直接用下面的这个脚本试了试,有什么时序模型之类的都没有涉及到,比较高级的分析技巧也都不会,然后看看最后的结果,高亮了关键路径。
(1)老师说在做分析以前,你应该大概知道哪几条路径有可能是关键路径,我一点都不知道。所以高亮的路径到底是不是关键路径呢?
(2)说是关键路径是针对层次而言的,所以在综合的时候应该把能够展平的设计全部展平,可是这样的话我们综合种强调的合理分区有什么意义啊?不知道综合时将关键路径展平这种说法对不对啊。
(3)slack最小的路径是关键路径,可是高亮的那条不是slack最小的那条路径啊。
(4)要找到关键路径对应的设计代码,更改代码才能够增加slack,从而达到提速的目的,这个我要怎么样才能知道那段代码对应哪条路径啊,再说,就算知道那段代码有问题,我也不知道该怎么改啊。
另外:毕设啊,感觉大部分时间都是在弄工具,也没有人带,自己也没怎么玩,就这么时间都过了,实质性的东西一点也没学会,真是叫人郁闷啊。
附上我的PT脚本吧,很初级很弱智的脚本,欢迎大家指正啊。谢谢大家帮忙啊。
#read design and library files
#set sh_enable_page_mode true
set search_path {. ./design}
set link_path {* /export/homeO3/student/zonglu/library/aci/sc-x/synopsys/typical.db}
#choose the gate level netlist to read
read_verilog orca_gate.v
current_design orca_top
link_design
#specify timing constraints
#check_timing
#create_clock -period 25 -name CLK -waveform {0 12} [get_ports sysclk_40M]
#set_dont_touch_network [get_ports CLK]
#set_fix_hold [get_ports CLK]
#set_input_delay 2.0 -clock CLK [remove_from_collection [all_inputs] [get_ports sysclk_40M]]
#set_output_delay 1.0 -clock CLK [all_outputs]
######################################
###the same with DC constraints?#####
######################################
create_clock -name CLK -period 25 -waveform {0 12} [get_ports sysclk_40M]
set_dont_touch_network [get_clocks CLK]
create_generated_clock -source [get_pins orca_pll/clk_4M_reg/CK] -divide_by 10 [get_pins orca_pll/clk_4M_reg/Q]
#set_fix_hold [get_clocks CLK]
set_clock_uncertainty 0.1 [get_clocks CLK]
set_clock_latency -source 0 [get_clocks CLK]
set_clock_latency 1 [get_clocks CLK]
set_input_transition 0.3 [all_inputs]
set_clock_transition 0.3 [all_clocks]
#report_clock -skew
#report_port -input_delay
#report_port -output_delay
check_timing
#specify environment and analysis conditions
#set_driving_cell -lib_cell
#set_load -pin_load 1 [all_outputs]
#set_wire_load_model -name smic18_wl10
#set_wire_load_mode top
#set_operating_conditions typical
###########################################
#environment the same with DC##############
##########################################
#Setting Design Environment
set_operating_conditions typical
set_wire_load_model -name smic18_wl10
set_wire_load_mode top
#set_driving_cell
set_drive [drive_of "typical/BUFX4/Y"] [get_ports sysclk_40M]
set_drive [drive_of "typical/DFFX1/Q"] [remove_from_collection [all_inputs] [get_ports sysclk_40M]]
set_load [load_of "typical/DFFX1/D"] [all_outputs]
set_input_delay -max 1 -clock CLK [all_inputs]
set_input_delay -min 0.2 -clock CLK [all_inputs]
set_output_delay -max 1 -clock CLK [all_outputs]
set_output_delay -min 0.1 -clock CLK [all_outputs]
#########################################################
#check design data and analysis setup file
report_design
#report_hierarchy
#report_net
#report_cell
#report_reference
#report_clock
#get a full report on the setup(max) path having the worst violation or least slack
report_timing
#report_timing -nets -transition_time -capacitance
#report_timing -nworst 10 -path_type summary
#save_session session1
#remove_design all
#remove_lib -all
#exit
毕设的时候必须要用这个工具,迷迷糊糊的学过一段时间,感觉什么都没有学到,只是看了tutorial,也只是看了看,现在真正开始用的时候完全不记得。
昨天做STA的时候,直接用下面的这个脚本试了试,有什么时序模型之类的都没有涉及到,比较高级的分析技巧也都不会,然后看看最后的结果,高亮了关键路径。
(1)老师说在做分析以前,你应该大概知道哪几条路径有可能是关键路径,我一点都不知道。所以高亮的路径到底是不是关键路径呢?
(2)说是关键路径是针对层次而言的,所以在综合的时候应该把能够展平的设计全部展平,可是这样的话我们综合种强调的合理分区有什么意义啊?不知道综合时将关键路径展平这种说法对不对啊。
(3)slack最小的路径是关键路径,可是高亮的那条不是slack最小的那条路径啊。
(4)要找到关键路径对应的设计代码,更改代码才能够增加slack,从而达到提速的目的,这个我要怎么样才能知道那段代码对应哪条路径啊,再说,就算知道那段代码有问题,我也不知道该怎么改啊。
另外:毕设啊,感觉大部分时间都是在弄工具,也没有人带,自己也没怎么玩,就这么时间都过了,实质性的东西一点也没学会,真是叫人郁闷啊。
附上我的PT脚本吧,很初级很弱智的脚本,欢迎大家指正啊。谢谢大家帮忙啊。
#read design and library files
#set sh_enable_page_mode true
set search_path {. ./design}
set link_path {* /export/homeO3/student/zonglu/library/aci/sc-x/synopsys/typical.db}
#choose the gate level netlist to read
read_verilog orca_gate.v
current_design orca_top
link_design
#specify timing constraints
#check_timing
#create_clock -period 25 -name CLK -waveform {0 12} [get_ports sysclk_40M]
#set_dont_touch_network [get_ports CLK]
#set_fix_hold [get_ports CLK]
#set_input_delay 2.0 -clock CLK [remove_from_collection [all_inputs] [get_ports sysclk_40M]]
#set_output_delay 1.0 -clock CLK [all_outputs]
######################################
###the same with DC constraints?#####
######################################
create_clock -name CLK -period 25 -waveform {0 12} [get_ports sysclk_40M]
set_dont_touch_network [get_clocks CLK]
create_generated_clock -source [get_pins orca_pll/clk_4M_reg/CK] -divide_by 10 [get_pins orca_pll/clk_4M_reg/Q]
#set_fix_hold [get_clocks CLK]
set_clock_uncertainty 0.1 [get_clocks CLK]
set_clock_latency -source 0 [get_clocks CLK]
set_clock_latency 1 [get_clocks CLK]
set_input_transition 0.3 [all_inputs]
set_clock_transition 0.3 [all_clocks]
#report_clock -skew
#report_port -input_delay
#report_port -output_delay
check_timing
#specify environment and analysis conditions
#set_driving_cell -lib_cell
#set_load -pin_load 1 [all_outputs]
#set_wire_load_model -name smic18_wl10
#set_wire_load_mode top
#set_operating_conditions typical
###########################################
#environment the same with DC##############
##########################################
#Setting Design Environment
set_operating_conditions typical
set_wire_load_model -name smic18_wl10
set_wire_load_mode top
#set_driving_cell
set_drive [drive_of "typical/BUFX4/Y"] [get_ports sysclk_40M]
set_drive [drive_of "typical/DFFX1/Q"] [remove_from_collection [all_inputs] [get_ports sysclk_40M]]
set_load [load_of "typical/DFFX1/D"] [all_outputs]
set_input_delay -max 1 -clock CLK [all_inputs]
set_input_delay -min 0.2 -clock CLK [all_inputs]
set_output_delay -max 1 -clock CLK [all_outputs]
set_output_delay -min 0.1 -clock CLK [all_outputs]
#########################################################
#check design data and analysis setup file
report_design
#report_hierarchy
#report_net
#report_cell
#report_reference
#report_clock
#get a full report on the setup(max) path having the worst violation or least slack
report_timing
#report_timing -nets -transition_time -capacitance
#report_timing -nworst 10 -path_type summary
#save_session session1
#remove_design all
#remove_lib -all
#exit
老师的第一句话有道理,自己做的设计应该知道综合出来哪里会比较慢(组合逻辑比较多),而且综合之后看看报告,应该有写
1# lulugui
学习了,关键是加约束时,一些值怎么设定:例如输入延迟要估摸设定多大,有什么依据?希望牛人指点!
学习了
要对设计的电路熟悉才能写出有效的脚本,然后不断完善。
学习下
学习下
紫薯布丁