原创 Quartus II TimeQuest Timing Analyzer Cookbook翻译P14-P16

2015-3-22 13:49 1220 13 13 分类: FPGA/CPLD
I/O Constraints I/O约束
This section contains the following topics:
■ “Input and Output Delays with Virtual Clocks” on page 1–9 输入输出延时在虚拟时钟下
■ “Tri-State Outputs” on page 1–13三态输出
■ “System Synchronous Input” on page 1–14 系统同步输入


Input and Output Delays with Virtual Clocks 
所有的输入输出延时都应当有一个参照的虚拟时钟,这样就能够在derive_clock_uncertainty命令被使用时,Timequest Analyse得到正确的时钟uncertainty value。如果输入输出延时参照基准时钟或者PLL时钟而不是irtual clock,那么 intra-clock 和inter_clock的传递时钟uncertainty(由命令derive_clock_uncertainty决定)将被错误的应用在I/O口上。同时,如果使用virtual clock,额外的外部时钟不确定性也能够独立的添加到clock uncertainties里面,通过使用 derive_clock_uncertainty命令。
虚拟时钟virtual clock的属性应当用于输入(input delay)或输出(output delay)的原始时钟original clock一致。
Figure 1–10 展示了一个简单的chip-to-chip设计,这里virtual clock被用作输入和输出端口。
P14

20150322134657359.jpg
为了约束上图展示的输入输出延时,使用如 Example 1–12.的约束指令
Example 1–12. Input and Output Delays Referencing a Virtual Clock 
#specify the maximum external clock delay from the external device
#指定从外部设备进来的最大外部时钟延时
set CLKAs_max 0 .200
#指定从外部设备进来的最小外部时钟延时
set CLKAs_min 0 .100
#specify the maximum external clock delay to the FPGA
#指定信号传递到FPGA的最大外部时钟延时
set CLKAd_max 0 .200
#指定信号传递到FPGA的最小外部时钟延时
set CLKAd_min 0 .100
#specify the maximum clock-to-out of the external device
#指定外部设备最大Tco延时
set tCOa_max 0 .525
#指定外部设备最小Tco延时
set tCOa_min 0 .415
#specify the maximum board delay
#定义最大的board延时( PCB走线延时?)
set BDa_max 0 .180
#定义最小的board延时
set BDa_min 0 .120

#create the input maximum delay for the data input to the
#FPGA that accounts for all delays specified
#指定最大的输入延时(Note:即从 clkA处时钟上升沿开始计时< clk
#clkA端口也有一段时延CLKAd,所以需要减去该值 >,数据进入FPGA的寄
#存器耗费的时间)
set_input_delay -clock clk \
-max [ expr $CLKAs_max + $tCOa_max + $BDa_max - $CLKAd_min] \
[get_ports {data_in
  • }]

  • #create the input minimum delay for the data input to the #FPGA that
    #accounts for all delays specified
    #指定最小的输入延时
    set_input_delay -clock clk \
    -min [ expr $CLKAs_min + $tCOa_min + $BDa_min - $CLKAd_max] \
    [get_ports {data_in
  • }]
  • #create the input clock
    #创建输入时钟
    create_clock -name clkA -period 10 [get_ports clkA]
    #create the associated virtual input clock
    #创建与输入时钟关联的virtual clock
    create_clock -name clkA_virt -period 10
    #specify any uncertainty from the external clock to the virtual clock
    #指定从外部时钟到virtual clock的不确定时间
    set_clock_uncertainty -from { clkA_virt } -setup 0.25

    #create the output clock
    #创建输出时钟
    create_clock -name clkB -period 5 [get_ports clkB]
    #create the associated virtual input clock
    #创建相关联的virtual input clock
    create_clock -name clkB_virt -period 5
    #specify any uncertainty from the external clock to the virtual clock
    #指定从外部时钟到virtual clock的不确定时间
    set_clock_uncertainty -from { clkB_virt } -setup 0.25

    #determine internal clock uncertainties
    #决定内部时钟不确定性
    derive_clock_uncertainty
    #create the input delay referencing the virtual clock
    #引用vritual clock 来创建输入延时
    #specify the maximum external clock delay from the external device
    set CLKAs_max 0 .200
    #specify the minimum external clock delay from the external
    #device
    set CLKAs_min 0 .100
    #specify the maximum external clock delay to the FPGA
    set CLKAd_max 0 .200
    #specify the minimum external clock delay to the FPGA
    set CLKAd_min 0 .100
    #specify the maximum clock-to-out of the external device
    set tCOa_max 0 .525
    #specify the minimum clock-to-out of the external device
    set tCOa_min 0 .415
    #specify the maximum board delay
    set BDa_max 0 .180
    #specify the minimum board delay
    set BDa_min 0 .120
    #create the input maximum delay for the data input to the
    #FPGA that accounts for all delays specified
    set_input_delay -clock clkA_virt \
    -max [ expr $CLKAs_max + $tCOa_max + $BDa_max - $CLKAd_min] \
    [get_ports {data_in
  • }]
  • #create the input minimum delay for the data input to the
    #FPGA that accounts for all delays specified
    set_input_delay -clock clkA_virt \
    -min [ expr $CLKAs_min + $tCOa_min + $BDa_min - $CLKAd_max] \
    [get_ports {data_in
  • }]
  • #creating the output delay referencing the virtual clock
    #specify the maximum external clock delay from the external
    #device
    set CLKBs_max 0 .100
    #specify the minimum external clock delay from the external
    #device
    set CLKBs_min 0 .050
    #specify the maximum external clock delay to the FPGA
    set CLKBd_max 0 .100
    #specify the minimum external clock delay to the FPGA
    set CLKBd_min 0 .050
    #specify the maximum clock-to-out of the external device
    set tSUb_max 0 .500
    #specify the hold time of the external device
    set tHb 0 .400
    #specify the maximum board delay
    set BDb_max 0 .100
    #specify the minimum board delay
    set BDb_min 0 .080
    #create the output maximum delay for the data output from the
    #FPGA that accounts for all delays specified
    set_output_delay -clock clkB_virt \
    -max [ expr $CLKBs_max + $tSUb_max + $BDb_max - $CLKBd_min] \
    [get_ports {data_out}]
    #create the output minimum delay for the data output from the
    #FPGA that accounts for all delays specified
    set_output_delay -clock clkB_virt \
    -min [ expr $CLKBs_min - $tHb + $BDb_min - $CLKBd_max] \
    [get_ports {data_out}]
    PARTNER CONTENT

    文章评论0条评论)

    登录后参与讨论
    我要评论
    0
    13
    关闭 站长推荐上一条 /3 下一条