微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > Prime Time的问题

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

老师的第一句话有道理,自己做的设计应该知道综合出来哪里会比较慢(组合逻辑比较多),而且综合之后看看报告,应该有写

1# lulugui
学习了,关键是加约束时,一些值怎么设定:例如输入延迟要估摸设定多大,有什么依据?希望牛人指点!

学习了

要对设计的电路熟悉才能写出有效的脚本,然后不断完善。

学习下

学习下

紫薯布丁

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top