记录常用指令,长期补充
1.Clk
创建时钟 -源时钟 (Mstaer Clock)
creat_clock
- -name clk_ref (设置时钟名)
- -period 10ns (设置周期)
- -waveform{0,10} (设置占空比)
- [get_ports ref_clk] (绑定管脚)
uncertainty
定义时钟时,可以对时钟的误差进行估计,时钟误差包括:时钟偏差(clock skew)、时钟延迟(clock delay)、时钟抖动(clock jitter)
若在最悲观的情况下,仍然可以满足建立保持时间,那么设计的安全性能够得到进一步的保证
set_clock_uncertainty -setup 0.3 [get_clocks {CLK_120M}]
set_clock_uncertainty -hold 0.2 [get_clocks {CLK_120M}]
Lantency
时钟距离,分为从时钟源点到定义时钟距离Source Lantency以及从定义时钟到时钟网络的Network Lantency
#Specify a network latency(no-source option) of 0.8ns for rise,fall,max and min
set_clock+latency 0.8 [get_clocks CLK_CONFIG]
#specify a source latency:
set_clock_latency 1.9 -source [get_clocks SYS_CLK]
#Specify a min source latency:
set_clcok_latency 0.85 -source -min [get_clocks CFG_CLK]
#Specify a max source latency:
set_clock_latency 1.322 -source -max [get_clocks CFG_CLK]
生成时钟 -从时钟(generate Clock),例如自写的分频器,指定该时钟
creat_generate_clk
- -name clk_ref (设置时钟名)
- -source[gets_ports ref_clk] (设置时钟源)
- -div_by 2 (设置分频比)
- [get_ports reg_clk] (绑定管脚)
- -edge (沿对齐表示)
- duty_cycle 50 (高电平所占比例)
时钟组 -指明时钟的同步异步,同步时钟可以不用太申明
set_clock_groups
- -group CLK_1 -group CLK_2 (指定时钟)
- -asynchronous (声明异步)
- logically/physical exclusive(独占时钟,physical是物理上绝对不可能同时存在的时钟,logically是线路中可能一些地方可以用到)
虚拟时钟
并不是实际存在的时钟,不绑定管脚,用来分析没有定义时钟域的部分(如串口的输入),写法与创建时钟相同,但不要绑定引脚
2.IO
分析input to reg、reg to output
设置延迟
set_input_delay / set_output_delay
- -clock CLK_1 (指明时钟域)
- -max 12(延迟最大值,计算建立时间使用该值)
- -min 12(延迟最小值,计算保持时间使用该值)
- -from A_in -A_out (定义组合逻辑延迟,可替代虚拟时钟)
- [get_ports ref_clk] (绑定管脚)
提示:若报错,需要单独写max,min
设置驱动
set_input_transition(设置值) / set_driving_cell -lib_cell[] (选择驱动库)
set_load 10 (设置负载)
3.DRC
通常使用max transtation和max capacitance来检查所有的ports和pins是否满足时序的要求
set_max_transition
set_max_capacitance
set_max_transition 0.6 IOBANK
#Sets a limit of 600ps on IOBANK.
set_max_capacitance 0.5 [current_design]
#Max caoacitance is set to 0.5ps on all nets in current design
4.Other
设置不检查
set_flase_path -from A -to B (A到B的线路不检查)
建立时间、保持时间检查
set_multicycle_path - form A_q -to B_d -setup 3 (A的输出端到B的输入端,每3个周期检查建立时间 - 0时刻A输出数据,第三个时钟沿检查)
set_multicycle_path - form A_q -to B_d -hold 2 (A的输出端到B的输入端,每2个周期检查建立时间 -与上对应,set是n,hold为n-1 )
- -source (-end) (哪个时钟的边沿检查,source为输出端的边沿,end为输入端的边沿)