altera FPGA时序工程约束主要命令

时序约束命令

#**************************************************************
# Create Clock
#**************************************************************
create_clock -name pic_sys_ref_clk  -period 10.000 -waveform { 0.000 5.000}[get_ports { pic_sys_ref_clk }]
create_clock -name pic_ddr3_ref_clk -period 10.000 -waveform { 0.000 5.000}[get_ports { pic_ddr3_ref_clk }]
create_clock -name pid_link0_clk_p -period 10 -waveform { 0.000 5.0}[get_ports { pid_link0_clk_p }]
create_clock -name pic_idt_clk -period 13.333 -waveform { 0.000 6.667}[get_ports { pic_idt_clk }]
create_clock -name r_rst_flop3_rst -period 100.000 [get_registers {ResetGen:ResetGen_uut|r_rst_flop3[9]}]
#create_clock -name {pic_vx1_ref_clk_L} -period 8.000 -waveform { 0.000 4.000 } [get_ports {pic_vx1_ref_clk_L}]
#create_clock -name {pic_vx1_ref_clk_R} -period 8.000 -waveform { 0.000 4.000 } [get_ports {pic_vx1_ref_clk_R}]
create_clock -name {pic_dp_ref0_clk} -period 7.408 -waveform { 0.000 3.704 } [get_ports {pic_dp_ref0_clk}]
create_clock -name {pic_dp_ref1_clk} -period 7.408 -waveform { 0.000 3.704 } [get_ports {pic_dp_ref1_clk}]
create_clock -name {pic_lvds_ref_clk_p} -period 6.670 -waveform { 0.000 3.330 } [get_ports {pic_lvds_ref_clk_p}]
#**************************************************************
# Get the clocks from the different PLLs
#**************************************************************
derive_pll_clocks
derive_clock_uncertainty
create_generated_clock -name cal_clk0 -source {bitec_dp_2tx_top:dp_top_uut|r_cal_clk|clk} -divide_by 2 {bitec_dp_2tx_top:dp_top_uut|r_cal_clk|q}
#**************************************************************
# Set False Path
#**************************************************************
set_clock_groups -asynchronous \
-group [get_clocks {pic_sys_ref_clk}]  \
-group [get_clocks {pic_ddr3_ref_clk}] \
-group [get_clocks {lvds_top_uut|lvds_rx_top_uut0|mtx_lvds_rx_clkgen_uut|mtx_lvds_rx_clk_uut|mtx_lvds_rx_clk_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}]  
set_clock_groups -asynchronous \
-group [get_clocks {ddr_top_uut|a5_ddr3a|a5_ddr3a_inst|pll0|pll_afi_clk}] \
-group [get_clocks {sys_clk_gen_uut|sys_clk_gen_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] \
-group [get_clocks {lvds_top_uut|lvds_rx_top_uut0|mtx_lvds_rx_clkgen_uut|mtx_lvds_rx_clk_uut|mtx_lvds_rx_clk_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}]  
set_clock_groups -asynchronous \
-group [get_clocks {lvds_top_uut|lvds_tx_top|link0_data|ALTLVDS_TX_component|auto_generated|pll_sclk~PLL_OUTPUT_COUNTER|divclk}] \
-group [get_clocks {lvds_top_uut|lvds_rx_top_uut0|lvds_rx|ALTLVDS_RX_component|auto_generated|pll_sclk~PLL_OUTPUT_COUNTER|divclk}]  

工程主要约束约束修改,

1、Create Clock外部输入时钟约束,

2、Get the clocks from the different PLLs,pll时钟约束

3、 Set False Path,非关联时钟约束。

时钟的约束

关于时钟的约束命令:

create_clock-name clk-period 10.000[get_ports{clk}]
derive_pll_clocks        //当约束了主时钟之后加上这句话就不用逐一约束pll时钟啦
derive_clock_uncertainty
create_generated_clock  //当 FPGA 的引脚要向外部其他芯片提供时钟的时候 

 

当出现警告: The following clock transfer have no clock uncertainty assignment. For more accurate results, apply clock uncertainty or use the derive_clock_uncertainty command.

只要加上   derive_clock_uncertainty 这条命令就可以解决。

 


output引脚约束命令

set_output_delay-clock{clk}-min 2.5 [get_ports{reg1}] //最大
set_output_delay-clock{clk}-max 2.5 [get_ports{reg1}] //最小
set_output_delay-clock{clk}-  2.5 [get_ports{reg1}] //当最大和最小的值相等时

因为 Timequest 只能约束 FPGA 的内部走线延时,但是无法知道 PCB 板上的走线延时或者外部寄存器芯片的延时, 所以这些不知道的延时都要算到 FPGA 的保持裕量和建立裕量。PCB 板的路径延时越大,建立裕量越小,保持裕量越大。反之路径延时越小,建立裕量越大,保持裕量越小。

建立裕量考虑的是最大值

Delay Value =  PCB最长走线的时间 + 外部芯片的建立时间 Tsu - clock skew

保持裕量考虑的是最小值

Delay Value =  PCB最短走线的时间 - 外部芯片的保持时间 Th - clock skew

 


input引脚约束命令 

set_input_delay-clock{clk}-min 2.5 [get_ports{reg1}] //最大
set_input_delay-clock{clk}-max 2.5 [get_ports{reg1}] //最小
set_intput_delay-clock{clk}-  2.5 [get_ports{reg1}] //当最大和最小的值相等时

建立裕量考虑的是最大值

Delay Value =  PCB最长走线的时间 + 外部芯片的建立时间 Tco - clock skew

保持裕量考虑的是最小值

Delay Value =  PCB最短走线的时间 + 外部芯片的保持时间 Tco - clock skew

 


其余约束

set_clock_latency //将外部时钟信号的抖动信息告诉 TimeQuest

set_min_delay  //将有关路径延时告诉 TimeQuest

set_max_delay

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值