时序约束进阶七:Set_External_Delay详解

目录

一、前言

二、约束用法

2.1 设置界面

2.2 命令语法

三、示例代码

3.1 工程示例

3.2 时序约束

3.3 时序报告


一、前言

    在时序约束中对clock的约束还存在一种特殊的延时约束set external delay。set external delay如字面含义,设置外部的时延值,但这个外部时延主要是指反馈时延,即信号从FPGA的output端口输出后经过外部电路回到输入端口的时延值。

二、约束用法

2.1 设置界面

进入Timing Constraints界面,在左侧Clock栏中选中Set External Delay,右侧即显示Set External Delay

 

设置界面中需设置反馈路径中的输出端口output port和输入端口input port,delay value为设置的时延值。勾选“Specify min/max values”后可设置max和min,即指进行setup或hold分析,“Add to existing external delay”勾选后对于约束的端口如果存在其他的外部时延约束,则会将其覆盖。

 

2.2 命令语法

命令格式

set_external_delay ‑from <args> ‑to <args> [‑min] [‑max] [‑add] [‑quiet] [‑verbose] <delay_value>

参数含义

 

三、示例代码

3.1 工程示例

module set_external_delay(CLKIN1,CLKIN2,CLKINSEL,CLKFBIN,CLKFBOUT,rst,d,S,ff_clkout0_a,ff_clkout0_b);
input CLKIN1,CLKIN2,CLKINSEL,CLKFBIN,rst,d,S;
output reg ff_clkout0_a,ff_clkout0_b;
output CLKFBOUT;
reg ff_clkout0;

 PLLE2_ADV #(
      .BANDWIDTH("OPTIMIZED"),  // OPTIMIZED, HIGH, LOW
      .CLKFBOUT_MULT(8),        // Multiply value for all CLKOUT, (2-64)
      .CLKFBOUT_PHASE(90.0),     // Phase offset in degrees of CLKFB, (-360.000-360.000).
      // CLKIN_PERIOD: Input clock period in nS to ps resolution (i.e. 33.333 is 30 MHz).
      .CLKIN1_PERIOD(0.0),
      .CLKIN2_PERIOD(0.0),
      // CLKOUT0_DIVIDE - CLKOUT5_DIVIDE: Divide amount for CLKOUT (1-128)
      .CLKOUT0_DIVIDE(1),
      .CLKOUT1_DIVIDE(2),
      .CLKOUT2_DIVIDE(4),
      // CLKOUT0_DUTY_CYCLE - CLKOUT5_DUTY_CYCLE: Duty cycle for CLKOUT outputs (0.001-0.999).
      .CLKOUT0_DUTY_CYCLE(0.4),
      .CLKOUT1_DUTY_CYCLE(0.5),
      .CLKOUT2_DUTY_CYCLE(0.5),
      // CLKOUT0_PHASE - CLKOUT5_PHASE: Phase offset for CLKOUT outputs (-360.000-360.000).
      .CLKOUT0_PHASE(0.0),
      .CLKOUT1_PHASE(0.0),
      .CLKOUT2_PHASE(0.0),
      .COMPENSATION("EXTERNAL"),   // ZHOLD, BUF_IN, EXTERNAL, INTERNAL
      .DIVCLK_DIVIDE(1),        // Master division value (1-56)
      // REF_JITTER: Reference input jitter in UI (0.000-0.999).
      .REF_JITTER1(0.0),
      .REF_JITTER2(0.0),
      .STARTUP_WAIT("FALSE")    // Delay DONE until PLL Locks, ("TRUE"/"FALSE")
   )
   PLLE2_ADV_inst (
      // Clock Outputs: 1-bit (each) output: User configurable clock outputs
      .CLKOUT0(CLKOUT0),   // 1-bit output: CLKOUT0
      .CLKOUT1(CLKOUT1),   // 1-bit output: CLKOUT1
      .CLKOUT2(CLKOUT2),   // 1-bit output: CLKOUT2
      // Feedback Clocks: 1-bit (each) output: Clock feedback ports
      .CLKFBOUT(CLKFBOUT), // 1-bit output: Feedback clock
      // Clock Inputs: 1-bit (each) input: Clock inputs
      .CLKIN1(CLKIN1),     // 1-bit input: Primary clock
      .CLKIN2(CLKIN2),     // 1-bit input: Secondary clock
      // Control Ports: 1-bit (each) input: PLL control ports
      .CLKINSEL(CLKINSEL), // 1-bit input: Clock select, High=CLKIN1 Low=CLKIN2
      .RST(rst),           // 1-bit input: Reset
      // Feedback Clocks: 1-bit (each) input: Clock feedback ports
      .CLKFBIN(CLKFBIN)    // 1-bit input: Feedback clock
   );
   // End of PLLE2_ADV_inst instantiation


always@(posedge CLKOUT0,negedge rst)
    if(!rst)
        ff_clkout0<=1'b0;
    else begin
        ff_clkout0<=d;
    end
always@(posedge CLKOUT0,negedge rst)
    if(!rst)
        ff_clkout0_a<=1'b0;
    else begin
        ff_clkout0_a<=ff_clkout0;
    end
always@(posedge CLKOUT1,negedge rst)
    if(!rst)
        ff_clkout0_b<=1'b0;
    else begin
        ff_clkout0_b<=ff_clkout0;
    end

endmodule 

3.2 时序约束

create_clock -period 10.000 -name clkin1 -waveform {0.000 5.000} [get_ports CLKIN1]
create_clock -period 8.000 -name clkin2 -waveform {0.000 4.000} [get_ports CLKIN2]
create_generated_clock -name gen_clkout0 -source [get_ports CLKIN1] -multiply_by 2 -add -master_clock clkin1 [get_pins PLLE2_ADV_inst/CLKOUT0]
set_external_delay -from [get_ports CLKFBOUT] -to [get_ports CLKFBIN] 1.181
set_input_delay -clock [get_clocks clkin1] 0.222 [get_ports {d rst}]

3.3 时序报告

external_delay约束反馈延时为1.181ns时,PLLE2的Incr延时为-5.059ns,

 

修改external_delay约束值为1.111

set_external_delay -from [get_ports CLKFBOUT] -to [get_ports CLKFBIN] -min 1.111

时序报告中其他路径延时不变,只有PLL的Incr延时变为-4.989ns,即体现了外反馈时延约束的影响

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA芯中的小蚂蚁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值