文章目录

  • 时序分析的基本方法
    • 策略
    • 延时计算方法
    • 时序路径分析方法
      • 触发器到触发器
        • setup
        • hold
      • 输入端到触发器
        • setup
        • hold
      • 触发器到输出端
        • setup
        • hold
      • 输入到输出端
        • step
        • hold
    • 分析模式
      • 单一分析
      • 最坏最好分析
      • OCV
  • 例子1:vivado约束
    • sa->sb_reg建立时间
      • Data Path
      • Clock Path
    • sa->sb_reg保持时间
      • Data Path
      • Clock Path
    • sb_reg->sb建立时间
      • Data Path
      • Clock Path
    • sb_reg->保持时间
      • Data Path
      • Clock Path
  • 例子2:vivado约束
    • sb_reg->sc_reg建立时间
      • Data Path
      • Clock Path
    • sb_reg->sc_reg保持时间
      • Data Path
      • Clock Path

时序分析的基本方法

策略

  • 基于路径的分析策略,在时序图中找到从起点和终点的所有路径并进行计算。
  • 基于模块的分析策略,在时序图中中只侧重分析该路径下延迟最严重的节点进行计算

延时计算方法

  • 组合逻辑

    • 任意时刻的输出只取决于输入,与电路的原来状态无关,但是实际在电路中延时计算需要指导输入上拉和下拉的延时。
  • 时序逻辑
    • 任意时刻的输出取决于输入和原来的电路状态,但是时序逻辑仅在时钟有效沿工作,分别需要计算数据和时钟的路径延时

时序路径分析方法

触发器到触发器

setup

clklaunch+FF1CLK−>Q+Logic⩽clkcapture+clkperiod−FF2setupclk_{launch}+FF1_{CLK->Q}+Logic \leqslant\\ clk_{capture}+clk_{period}-FF2_{setup} clklaunch​+FF1CLK−>Q​+Logic⩽clkcapture​+clkperiod​−FF2setup​

hold

clklaunch+FF1CLK−>Q+Logic⩾clkcapture+FF2holdclk_{launch}+FF1_{CLK->Q}+Logic \geqslant\\ clk_{capture}+FF2_{hold} clklaunch​+FF1CLK−>Q​+Logic⩾clkcapture​+FF2hold​

输入端到触发器

输入端到触发器的模型类似于触发器到触发器的模型,只需要将外部模型当作FF1就可以了,该路径的发射时延通过设置虚拟时钟来实现。

setup

virtualclklaunch+FF1CLK−>Q+Logic1+Logic2⩽clkcapture+clkperiod−FF2setupvirtualclk_{launch}+FF1_{CLK->Q}+Logic1+Logic2 \leqslant\\ clk_{capture}+clk_{period}-FF2_{setup}\\ virtualclklaunch​+FF1CLK−>Q​+Logic1+Logic2⩽clkcapture​+clkperiod​−FF2setup​

hold

virtualclklaunch+Inputdealay+Logic2⩾clkcapture+FF2holdvirtualclk_{launch}+Input_{dealay}+Logic2 \geqslant\\ clk_{capture}+FF2_{hold}\\ virtualclklaunch​+Inputdealay​+Logic2⩾clkcapture​+FF2hold​

触发器到输出端


触发器到输出端模型同样类似于触发器到触发器的模型,只需要将外部模型当作FF2就可以了,该捕获的发射时延也通过设置虚拟时钟来实现

setup

clklaunch+FF1CLK−>Q+Logic1+Logic2⩽virtualclkcapture+clkperiod−FF2setupclk_{launch}+FF1_{CLK->Q}+Logic1+Logic2 \leqslant\\ virtualclk_{capture}+clk_{period}-FF2_{setup} clklaunch​+FF1CLK−>Q​+Logic1+Logic2⩽virtualclkcapture​+clkperiod​−FF2setup​

hold

clklaunch+FF1CLK−>Q+Logic1+Logic2⩾virtualclkcapture+FF2holdclk_{launch}+FF1_{CLK->Q}+Logic1+Logic2 \geqslant\\ virtualclk_{capture}+FF2_{hold} clklaunch​+FF1CLK−>Q​+Logic1+Logic2⩾virtualclkcapture​+FF2hold​

输入到输出端

step

Logic⩽virtualperiod−Input−OutputLogic\leqslant virtual_{period} - Input - Output Logic⩽virtualperiod​−Input−Output

hold

Logic⩾FFhold−Input−OutputLogic\geqslant FF_{hold} - Input - Output Logic⩾FFhold​−Input−Output

分析模式

  • 最快路径:信号传输延时计算调用最快工艺参数的路径
  • 最慢路径:信号传输延时计算调用最慢工艺参数的路径

单一分析

  • 最好的:较小的工艺偏差、较低的工作温度、较高的工作电压
  • 最坏的:较大的工艺偏差、较高的工作温度、较低工作电压
  • 典型位于两者之间

单一静态时序分析将指定其中一种工作条件下检查建立时间和保持时间

最坏最好分析

将在最好和最坏下进行分析和单一分析的计算方式一样,不同在于所使用的延时时序库的参数不同,计算建立用最大的延时库,计算保持用最小延时库

OCV

和前面的计算方法一样,不同在于计算最快和最慢路径有差别,最慢路径下调用最大延时,最快路径下调用最短延时。快慢的路径得出依赖于逻辑深度和逻辑单元的延时

例子1:vivado约束

以下面的例子介绍不同的约束手段

module time_practice(
input  clk,
input  sa,
output reg sb);always @(posedge clk)beginif(sa)sb <= 1'b1;elsesb <= 1'b0;endendmodule

芯片时xc7a35t实际上芯片在这里不重要

create_clock -period 20.000 -name sys_clk -waveform {0.000 10.000} [get_ports clk]set_property PACKAGE_PIN R2 [get_ports sa]
set_property IOSTANDARD LVCMOS33 [get_ports sa]set_property PACKAGE_PIN R3 [get_ports sb]
set_property IOSTANDARD LVCMOS33 [get_ports sb]set_input_delay -clock sys_clk -max 1.0 [get_ports sa]
set_input_delay -clock sys_clk -min 0.5 [get_ports sa]set_output_delay -clock sys_clk -max 1.0 [get_ports sb]
set_output_delay -clock sys_clk -min 0.5 [get_ports sb]

综合后的图,vivado自动给我们添加IBUF BUFG 和OBUF

sa->sb_reg建立时间

vivado分析信号sa到触发器的D的建立时间路径如下:

实际时序分析的模型是从输入的到触发器,其中建立公式

clklauch=clkexternal_1+ex1delayclkcapture=clkexternal_2+clkinternal_delayclklauch+ex2delay+ex3delay+ex4delay+signalinternal_delay⩽clkcapture+CLKperiod−Dsetupclk_{lauch} = clk_{external\_1}+ex1_{delay}\\ clk_{capture} = clk_{external\_2}+clk_{internal\_delay}\\ clk_{lauch}+ex2_{delay}+ex3_{delay}+ex4_{delay}+signal_{internal\_delay}\leqslant clk_{capture}+CLK_{period}-D_{setup} clklauch​=clkexternal_1​+ex1delay​clkcapture​=clkexternal_2​+clkinternal_delay​clklauch​+ex2delay​+ex3delay​+ex4delay​+signalinternal_delay​⩽clkcapture​+CLKperiod​−Dsetup​
在vivado中分析认为
ex1delay+ex2delay+ex3delay++ex4delay=input_dealyclkexternal_1=clkexternal_2ex1_{delay}+ex2_{delay}+ex3_{delay}++ex4_{delay} = input\_dealy\\ clk_{external\_1} =clk_{external\_2} ex1delay​+ex2delay​+ex3delay​++ex4delay​=input_dealyclkexternal_1​=clkexternal_2​

化简后
input_dealy+signalinternal_delay⩽clkinternal_delay+CLKperiod−Dsetupinput\_dealy+signal_{internal\_delay}\leqslant clk_{internal\_delay}+CLK_{period}-D_{setup} input_dealy+signalinternal_delay​⩽clkinternal_delay​+CLKperiod​−Dsetup​
vivado从极端的条件下考虑,总是将等式左边的等式的变化量取极大值,右边的等式变化量取极小值。

Data Path

将sa信号的套入上面的式子
input_dealy=1signalinternal_delay=1.436(IBUF)+3.289(net)input_dealy+signalinternal_delay=5.726\begin{aligned} input\_dealy &= 1\\ signal_{internal\_delay} &=1.436(IBUF)+3.289(net)\\ input\_dealy+signal_{internal\_delay}&=5.726 \end{aligned} input_dealysignalinternal_delay​input_dealy+signalinternal_delay​​=1=1.436(IBUF)+3.289(net)=5.726​
input_dealyinput\_dealyinput_dealy 在这里是1,因为有约束sa信号最大的输入延时是1,若以最大的延时计算都能满足等式,自然其他时候也能够满足条件。

Clock Path

clkinternal_delay=0.79(IBUF)+1.599(net)+0.077(BUFG)+1.333(net)CLKperiod=20Dsetup=0.047clkuncertainty=0.035clkinternal_delay+CLKperiod−Dsetup−clkuncertainty=23.717\begin{aligned} clk_{internal\_delay}&=0.79(IBUF)+1.599(net)+0.077(BUFG)+1.333(net)\\ CLK_{period}& = 20\\ D_{setup} &=0.047\\ clk_{uncertainty} &=0.035\\ clk_{internal\_delay}+CLK_{period}-D_{setup}-clk_{uncertainty} &=23.717 \end{aligned} clkinternal_delay​CLKperiod​Dsetup​clkuncertainty​clkinternal_delay​+CLKperiod​−Dsetup​−clkuncertainty​​=0.79(IBUF)+1.599(net)+0.077(BUFG)+1.333(net)=20=0.047=0.035=23.717​

在vivado分析种还有clock pessimism (时序悲观,存在于有共同路径上,没有所以0)和 clock uncertainty(时序不确定性,在极端条件要影响这个等式不满足只能把它往左边的等式加,因为在将它往左边等式加的过程中如果依然满足等式条件,那么没有它存在自然也满足)。
slack=ClockPath−DataPah=17.991slack = Clock Path - DataPah = 17.991 slack=ClockPath−DataPah=17.991

可以看到分析建立时间的路径采用最慢路径的最大时延工艺参数。

sa->sb_reg保持时间


其中保持时间公式
clklauch=clkexternal_1+ex1delayclkcapture=clkexternal_2+clkinternal_delayclklauch+ex2delay+ex3delay+ex4delay+signalinternal_delay⩾clkcapture+Dholdclk_{lauch} = clk_{external\_1}+ex1_{delay}\\ clk_{capture} = clk_{external\_2}+clk_{internal\_delay}\\ clk_{lauch}+ex2_{delay}+ex3_{delay}+ex4_{delay}+signal_{internal\_delay}\geqslant clk_{capture}+D_{hold} clklauch​=clkexternal_1​+ex1delay​clkcapture​=clkexternal_2​+clkinternal_delay​clklauch​+ex2delay​+ex3delay​+ex4delay​+signalinternal_delay​⩾clkcapture​+Dhold​
化简
input_dealy+signalinternal_delay⩾clkinternal_delay+Dholdinput\_dealy+signal_{internal\_delay}\geqslant clk_{internal\_delay}+D_{hold} input_dealy+signalinternal_delay​⩾clkinternal_delay​+Dhold​

vivado从极端的条件下考虑,总是将等式左边的等式的变化量取极小值,右边的等式变化量取极大值。

Data Path

input_dealy=0.5signalinternal_delay=0.273(IBUF)+1.568(net)input_dealy+signalinternal_delay=2.341\begin{aligned} input\_dealy &= 0.5\\ signal_{internal\_delay} &=0.273(IBUF)+1.568(net)\\ input\_dealy+signal_{internal\_delay}&=2.341 \end{aligned} input_dealysignalinternal_delay​input_dealy+signalinternal_delay​​=0.5=0.273(IBUF)+1.568(net)=2.341​

input_dealyinput\_dealyinput_dealy 在这里是0.5,因为有约束sa信号最小的输入延时是0.5,若以最小的延时计算都能满足等式,自然其他时候也能够满足条件。

Clock Path

clkinternal=0.407(IBUF)+0.685(net)+0.029(BUFG)+0.868(net)Dhold=0.070clkuncertainty=0.035clkinternal+Dhold+clkuncertainty=2.094\begin{aligned} clk_{internal}&=0.407(IBUF)+0.685(net)+0.029(BUFG)+0.868(net)\\ D_{hold} &=0.070\\ clk_{uncertainty} &=0.035\\ clk_{internal}+D_{hold}+clk_{uncertainty} &=2.094 \end{aligned} clkinternal​Dhold​clkuncertainty​clkinternal​+Dhold​+clkuncertainty​​=0.407(IBUF)+0.685(net)+0.029(BUFG)+0.868(net)=0.070=0.035=2.094​

同样在vivado分析种还有clock pessimism (时序悲观,存在于有共同路径上,没有所以0)和 clock uncertainty(时序不确定性,时序不确定性,在极端条件要影响这个等式不满足只能把它往右边的等式加,因为在将它往右边等式加的过程中如果依然满足等式条件,那么没有它存在自然也满足)。
slack=DataPah−ClockPath=0.248slack = DataPah - Clock Path = 0.248 slack=DataPah−ClockPath=0.248

可以看到分析保持的路径采用最快路径的最小时延工艺参数。
这也就解释了为什么在clkinternalclk_{internal}clkinternal​一样的路径下得到的延时参数不一致。

sb_reg->sb建立时间

vivado分析触发器sb到输出端口的建立时间路径如下:

实际时序分析的模型是从触发器到输出端,其中建立公式

clklauch=clkexternal_1+clkinternal_delayclkcapture=clkexternal_2+ex3delayclklauch+flipdelay+signalinternal_delay+ex1delay+ex2delay⩽clkcapture+CLKperiod−Dsetupclk_{lauch} = clk_{external\_1}+clk_{internal\_delay}\\ clk_{capture} = clk_{external\_2}+ex3_{delay}\\ clk_{lauch}+flip_{delay}+signal_{internal\_delay}+ex1_{delay}+ex2_{delay}\leqslant clk_{capture}+CLK_{period}-D_{setup} clklauch​=clkexternal_1​+clkinternal_delay​clkcapture​=clkexternal_2​+ex3delay​clklauch​+flipdelay​+signalinternal_delay​+ex1delay​+ex2delay​⩽clkcapture​+CLKperiod​−Dsetup​
在vivado中分析认为
ex1delay+ex2delay+Dsetup−ex3delay=output_dealyclkexternal_1=clkexternal_2ex1_{delay}+ex2_{delay}+D_{setup}-ex3_{delay}= output\_dealy\\ clk_{external\_1} =clk_{external\_2} ex1delay​+ex2delay​+Dsetup​−ex3delay​=output_dealyclkexternal_1​=clkexternal_2​
化简后
clkinternal_delay+flipdelay++signalinternal⩽CLKperiod−outputdelayclk_{internal\_delay}+flip_{delay}++signal_{internal} \leqslant CLK_{period}-output_delay clkinternal_delay​+flipdelay​++signalinternal​⩽CLKperiod​−outputd​elay
vivado从极端的条件下考虑,总是将等式左边的等式的变化量取极小值,右边的等式变化量取极大值。

Data Path

clkinternal_delay=0.921(IBUF)+1.689(net)+0.081(BUFG)+1.443(net)flip_dealy=0.379(FDRE)signalinternal_delay=1.385(net)+3.309(OBUF)clkinternal_delay+flip_dealy+signalinternal_delay=9.206\begin{aligned} clk_{internal\_delay} &=0.921(IBUF)+1.689(net)+0.081(BUFG)+1.443(net)\\ flip\_dealy&=0.379(FDRE)\\ signal_{internal\_delay}&=1.385(net)+3.309(OBUF)\\ clk_{internal\_delay}+flip\_dealy+signal_{internal\_delay} &=9.206 \end{aligned} clkinternal_delay​flip_dealysignalinternal_delay​clkinternal_delay​+flip_dealy+signalinternal_delay​​=0.921(IBUF)+1.689(net)+0.081(BUFG)+1.443(net)=0.379(FDRE)=1.385(net)+3.309(OBUF)=9.206​

Clock Path

CLKperiod=20clkuncertainty=0.035outputdelay=1CLKperiod−outputdelay−clkuncertainty=18.965\begin{aligned} CLK_{period}&=20\\ clk_{uncertainty} &=0.035\\ output_{delay} &=1\\ CLK_{period}-output_{delay}-clk_{uncertainty} &=18.965 \end{aligned} CLKperiod​clkuncertainty​outputdelay​CLKperiod​−outputdelay​−clkuncertainty​​=20=0.035=1=18.965​

outputdelayoutput_{delay}outputdelay​在这里是1,因为有约束sb信号最大的输出延时是1,若以最大的输出延时计算都能满足等式,自然其他时候也能够满足条件。

在vivado分析种还有clock pessimism (时序悲观,存在于有共同路径上,没有所以0)和 clock uncertainty(时序不确定性,在极端条件要影响这个等式不满足只能把它往左边的等式加,因为在将它往左边等式加的过程中如果依然满足等式条件,那么没有它存在自然也满足)。

可以看到分析建立时间的路径采用最慢路径的最大时延工艺参数。

sb_reg->保持时间

其中保持时间公式
clklauch=clkexternal_1+clkinternal_delayclkcapture=clkexternal_2+ex3delayclklauch+flipdelay+signalinternal_delay+ex1delay+ex2delay⩾clkcapture+Dholdclk_{lauch} = clk_{external\_1}+clk_{internal\_delay}\\ clk_{capture} = clk_{external\_2}+ex3_{delay}\\ clk_{lauch}+flip_{delay}+signal_{internal\_delay}+ex1_{delay}+ex2_{delay}\geqslant clk_{capture}+D_{hold} clklauch​=clkexternal_1​+clkinternal_delay​clkcapture​=clkexternal_2​+ex3delay​clklauch​+flipdelay​+signalinternal_delay​+ex1delay​+ex2delay​⩾clkcapture​+Dhold​
在vivado中分析认为
ex1delay+ex2delay−Dhold−ex3delay=output_dealyclkexternal_1=clkexternal_2ex1_{delay}+ex2_{delay}-D_{hold}-ex3_{delay}= output\_dealy\\ clk_{external\_1} =clk_{external\_2} ex1delay​+ex2delay​−Dhold​−ex3delay​=output_dealyclkexternal_1​=clkexternal_2​
化简后
clkinternal_delay+flipdelay++signalinternal⩾−outputdelayclk_{internal\_delay}+flip_{delay}++signal_{internal} \geqslant -output_{delay} clkinternal_delay​+flipdelay​++signalinternal​⩾−outputdelay​
vivado从极端的条件下考虑,总是将等式左边的等式的变化量取极小值,右边的等式变化量取极大值。

Data Path

clkinternal_delay=0.218(IBUF)+0.631(net)+0.026(BUFG)+0.597(net)flipdelay=0.141(FDRE)signalinternal_delay=0.321(net)+1.264(OBUF)clkinternal_delay+flipdelay+signalinternal_delay=3.197\begin{aligned} clk_{internal\_delay} &= 0.218(IBUF)+0.631(net)+0.026(BUFG)+0.597(net)\\ flip_{delay} &=0.141(FDRE)\\ signal_{internal\_delay} &=0.321(net)+1.264(OBUF)\\ clk_{internal\_delay}+flip_{delay}+signal_{internal\_delay} &=3.197\\ \end{aligned} clkinternal_delay​flipdelay​signalinternal_delay​clkinternal_delay​+flipdelay​+signalinternal_delay​​=0.218(IBUF)+0.631(net)+0.026(BUFG)+0.597(net)=0.141(FDRE)=0.321(net)+1.264(OBUF)=3.197​

Clock Path

clkuncertainty=0.035outputdelay=0.5clkuncertainty−outputdelay=−0.465\begin{aligned} clk_{uncertainty} &=0.035\\ output_{delay} &=0.5\\ clk_{uncertainty}-output_{delay} &=-0.465 \end{aligned} clkuncertainty​outputdelay​clkuncertainty​−outputdelay​​=0.035=0.5=−0.465​

outputdelayoutput_{delay}outputdelay​在这里是0.5,因为有约束sb信号最小的输出延时是0.5,若以最小的输出延时计算都能满足等式,自然其他时候也能够满足条件。

同样在vivado分析中还有clock pessimism (时序悲观,存在于有共同路径上,没有所以0)和 clock uncertainty(时序不确定性,在极端条件要影响这个等式不满足只能把它往右边的等式加,因为在将它往右边等式加的过程中如果依然满足等式条件,那么没有它存在自然也满足)。

可以看到分析保持时间的路径采用最快路径的最小时延工艺参数。

因此按照分析原则,vivado默认的静态时序分析模式是OCV

例子2:vivado约束

module time_practice(
input  clk,
input sa,
output reg sc);reg sb;   always @(posedge clk)beginif(sa)sb <= 1'b1;elsesb <= 1'b0;endalways @(posedge clk)beginsc<=sb;end
endmodule

芯片时xc7a35t实际上芯片在这里不重要


create_clock -period 20.000 -name sys_clk -waveform {0.000 10.000} [get_ports clk]set_property PACKAGE_PIN R2 [get_ports sa]
set_property IOSTANDARD LVCMOS33 [get_ports sa]set_property PACKAGE_PIN R3 [get_ports sc]
set_property IOSTANDARD LVCMOS33 [get_ports sc]set_input_delay -clock sys_clk -max 1.0 [get_ports sa]
set_input_delay -clock sys_clk -min 0.5 [get_ports sa]set_output_delay -clock sys_clk -max 1.0 [get_ports sc]
set_output_delay -clock sys_clk -min 0.5 [get_ports sc]

综合后的图,vivado自动给我们添加IBUF BUFG 和OBUF,不过这里分析sb到sc的信号

sb_reg->sc_reg建立时间

vivado分析信号sb到sc的D的建立时间路径如下:

实际时序分析的模型是从触发器到触发器

其中建立公式

clklauch=clkexternal_1+clkinternal_delay_1clkcapture=clkexternal_1+clkinternal_delay_2clklauch+fligdelay+signalinternal_delay⩽clkcapture+CLKperiod−Dsetupclk_{lauch} = clk_{external\_1}+clk_{internal\_delay\_1}\\ clk_{capture} = clk_{external\_1}+clk_{internal\_delay\_2}\\ clk_{lauch}+flig_{delay}+signal_{internal\_delay}\leqslant clk_{capture}+CLK_{period}-D_{setup} clklauch​=clkexternal_1​+clkinternal_delay_1​clkcapture​=clkexternal_1​+clkinternal_delay_2​clklauch​+fligdelay​+signalinternal_delay​⩽clkcapture​+CLKperiod​−Dsetup​
化简
clkinternal_delay_1+flipdelay+signalinternal_delay⩽clkinternal_delay_2+CLKperiod−Dsetupclk_{internal\_delay\_1}+flip_{delay}+signal_{internal\_delay}\leqslant clk_{internal\_delay\_2}+CLK_{period}-D_{setup} clkinternal_delay_1​+flipdelay​+signalinternal_delay​⩽clkinternal_delay_2​+CLKperiod​−Dsetup​
vivado从极端的条件下考虑,总是将等式左边的等式的变化量取极大值,右边的等式变化量取极小值。

Data Path

clkinternal_delay_1=0.921(IBUF)+1.689(net)+0.081(BUFG)+(1.443)netflipdelay=0.379(FDRE)signalinternal_delay=0.397(net)clkinternal_delay_1+flipdelay+signalinternal_delay=4.910\begin{aligned} clk_{internal\_delay\_1} & =0.921(IBUF)+1.689(net)+0.081(BUFG)+(1.443)net\\ flip_{delay} & =0.379(FDRE)\\ signal_{internal\_delay} & =0.397(net)\\ clk_{internal\_delay\_1}+flip_{delay}+signal_{internal\_delay} & =4.910 \end{aligned} clkinternal_delay_1​flipdelay​signalinternal_delay​clkinternal_delay_1​+flipdelay​+signalinternal_delay​​=0.921(IBUF)+1.689(net)+0.081(BUFG)+(1.443)net=0.379(FDRE)=0.397(net)=4.910​

Clock Path

clkinternal_delay_2=0.79(IBUF)+1.599(net)+0.077(BUFG)+(1.333)netCLKperiod=20Dsetup=0.059(net)clockpessimism=0.335clockuncertainty=0.035clkinternal_delay_2+CLKperiod−Dsetup+clockpessimism−clockuncertainty=24.040\begin{aligned} clk_{internal\_delay\_2} & =0.79(IBUF)+1.599(net)+0.077(BUFG)+(1.333)net\\ CLK_{period} & =20\\ D_{setup} & =0.059(net)\\ clock_{pessimism}&=0.335\\ clock_{uncertainty}&=0.035\\ clk_{internal\_delay\_2}+CLK_{period}-D_{setup}+clock_{pessimism}-clock_{uncertainty} & =24.040 \end{aligned} clkinternal_delay_2​CLKperiod​Dsetup​clockpessimism​clockuncertainty​clkinternal_delay_2​+CLKperiod​−Dsetup​+clockpessimism​−clockuncertainty​​=0.79(IBUF)+1.599(net)+0.077(BUFG)+(1.333)net=20=0.059(net)=0.335=0.035=24.040​

  • clock pessimism

    • 时序悲观,可以看到到sb_reg和sc_reg的时钟路径上其实是同一路径也就是说clkinternal_delay_1clk_{internal\_delay\_1}clkinternal_delay_1​和clkinternal_delay_2clk_{internal\_delay\_2}clkinternal_delay_2​在综合图上路径是一致的,因此实际上延迟是一致的,不应该为了极端方式在路径上clkinternal_delay_1clk_{internal\_delay\_1}clkinternal_delay_1​使用最慢路径,在路径上clkinternal_delay_2clk_{internal\_delay\_2}clkinternal_delay_2​使用最快路径。为了补偿他们的差值

clockpessimism=clkinternal_delay_1−clkinternal_delay_2=0.335clock_{pessimism}=clk_{internal\_delay\_1}-clk_{internal\_delay\_2}=0.335\\ clockpessimism​=clkinternal_delay_1​−clkinternal_delay_2​=0.335

  • clock uncertainty

    • 时序不确定性,在极端条件要影响这个等式不满足只能把它往左边的等式加,因为在将它往左边等式加的过程中如果依然满足等式条件,那么没有它存在自然也满足。

slack=ClockPath−DataPath=19.130slack = ClockPath-DataPath=19.130 slack=ClockPath−DataPath=19.130

分析建立时间使用了最慢路径的最大延时工艺参数

sb_reg->sc_reg保持时间

vivado分析信号sb到sc的D的保持时间路径如下:

其中保持公式

clklauch=clkexternal_1+clkinternal_delay_1clkcapture=clkexternal_1+clkinternal_delay_2clklauch+fligdelay+signalinternal_delay⩾clkcapture+Dholdclk_{lauch} = clk_{external\_1}+clk_{internal\_delay\_1}\\ clk_{capture} = clk_{external\_1}+clk_{internal\_delay\_2}\\ clk_{lauch}+flig_{delay}+signal_{internal\_delay}\geqslant clk_{capture}+D_{hold} clklauch​=clkexternal_1​+clkinternal_delay_1​clkcapture​=clkexternal_1​+clkinternal_delay_2​clklauch​+fligdelay​+signalinternal_delay​⩾clkcapture​+Dhold​
化简
clkinternal_delay_1+flipdelay+signalinternal_delay⩾clkinternal_delay_2+Dholdclk_{internal\_delay\_1}+flip_{delay}+signal_{internal\_delay}\geqslant clk_{internal\_delay\_2}+D_{hold} clkinternal_delay_1​+flipdelay​+signalinternal_delay​⩾clkinternal_delay_2​+Dhold​

Data Path

clkinternal_delay_1=0.218(IBUF)+0.631(net)+0.026(BUFG)+(0.597)netflipdelay=0.141(FDRE)signalinternal_delay=0.167(net)clkinternal_delay_1+flipdelay+signalinternal_delay=1.780\begin{aligned} clk_{internal\_delay\_1} & =0.218(IBUF)+0.631(net)+0.026(BUFG)+(0.597)net\\ flip_{delay} & =0.141(FDRE)\\ signal_{internal\_delay} & =0.167(net)\\ clk_{internal\_delay\_1}+flip_{delay}+signal_{internal\_delay} & =1.780 \end{aligned} clkinternal_delay_1​flipdelay​signalinternal_delay​clkinternal_delay_1​+flipdelay​+signalinternal_delay​​=0.218(IBUF)+0.631(net)+0.026(BUFG)+(0.597)net=0.141(FDRE)=0.167(net)=1.780​

Clock Path

clkinternal_delay_2=0.407(IBUF)+0.685(net)+0.029(BUFG)+(0.868)netDhold=0.066(net)clockpessimism=−0.517clkinternal_delay_2+Dhold+clockpessimism=24.040\begin{aligned} clk_{internal\_delay\_2} & =0.407(IBUF)+0.685(net)+0.029(BUFG)+(0.868)net\\ D_{hold} & =0.066(net)\\ clock_{pessimism}&=-0.517\\ clk_{internal\_delay\_2}+D_{hold}+clock_{pessimism} & =24.040 \end{aligned} clkinternal_delay_2​Dhold​clockpessimism​clkinternal_delay_2​+Dhold​+clockpessimism​​=0.407(IBUF)+0.685(net)+0.029(BUFG)+(0.868)net=0.066(net)=−0.517=24.040​

clock pessimism

  • 时序悲观,可以看到到sb_reg和sc_reg的时钟路径上其实是同一路径也就是说clkinternal_delay_1clk_{internal\_delay\_1}clkinternal_delay_1​和clkinternal_delay_2clk_{internal\_delay\_2}clkinternal_delay_2​在综合图上路径是一致的,因此实际上延迟是一致的,不应该为了极端方式在路径上clkinternal_delay_1clk_{internal\_delay\_1}clkinternal_delay_1​使用最快路径,在路径上clkinternal_delay_2clk_{internal\_delay\_2}clkinternal_delay_2​使用最慢路径。为了补偿他们的差值

clockpessimism=clkinternal_delay_1−clkinternal_delay_2=−0.517clock_{pessimism}=clk_{internal\_delay\_1}-clk_{internal\_delay\_2}=-0.517\\ clockpessimism​=clkinternal_delay_1​−clkinternal_delay_2​=−0.517

slack=ClockPath−DataPath=19.130slack = ClockPath-DataPath=19.130 slack=ClockPath−DataPath=19.130

但是这里突然没有clockuncertaintyclock_{uncertainty}clockuncertainty​感觉有些奇怪。

clkinternal_delay_2=0.407(IBUF)+0.685(net)+0.029(BUFG)+(0.868)netDhold=0.066(net)clockpessimism=−0.517clkinternal_delay_2+Dhold+clockpessimism=24.040\begin{aligned} clk_{internal\_delay\_2} & =0.407(IBUF)+0.685(net)+0.029(BUFG)+(0.868)net\\ D_{hold} & =0.066(net)\\ clock_{pessimism}&=-0.517\\ clk_{internal\_delay\_2}+D_{hold}+clock_{pessimism} & =24.040 \end{aligned} clkinternal_delay_2​Dhold​clockpessimism​clkinternal_delay_2​+Dhold​+clockpessimism​​=0.407(IBUF)+0.685(net)+0.029(BUFG)+(0.868)net=0.066(net)=−0.517=24.040​

clock pessimism

  • 时序悲观,可以看到到sb_reg和sc_reg的时钟路径上其实是同一路径也就是说clkinternal_delay_1clk_{internal\_delay\_1}clkinternal_delay_1​和clkinternal_delay_2clk_{internal\_delay\_2}clkinternal_delay_2​在综合图上路径是一致的,因此实际上延迟是一致的,不应该为了极端方式在路径上clkinternal_delay_1clk_{internal\_delay\_1}clkinternal_delay_1​使用最快路径,在路径上clkinternal_delay_2clk_{internal\_delay\_2}clkinternal_delay_2​使用最慢路径。为了补偿他们的差值

clockpessimism=clkinternal_delay_1−clkinternal_delay_2=−0.517clock_{pessimism}=clk_{internal\_delay\_1}-clk_{internal\_delay\_2}=-0.517\\ clockpessimism​=clkinternal_delay_1​−clkinternal_delay_2​=−0.517

slack=ClockPath−DataPath=19.130slack = ClockPath-DataPath=19.130 slack=ClockPath−DataPath=19.130

但是这里突然没有clockuncertaintyclock_{uncertainty}clockuncertainty​感觉有些奇怪。

分析建立时间使用了最快路径的最小延时工艺参数。

Vivado时序分析相关推荐

  1. vivado时序分析 实例

    vivado时序分析实例 建立余量 保持余量 实例分析 建立余量 保持余量 实例分析 环境:Vivado 2019.2 芯片型号:xc7z020clg484-2 举例子说明怎么使用Reporte Ti ...

  2. Vivado时序分析概念setup time, hold time

    Vivado时序分析概念setup time, hold time reference What is Setup and hold time in an FPGA? Propagation dela ...

  3. Vivado 时序分析(理论篇) 卷一

    文章目录 引言 1.建立余量 2.建立时间余量的Vivado软件分析 3.保持时间 4.保持时间余量的Vivado软件分析 引言 在之前我的文章中,已经写过时序分析,但当时仅解决了step slack ...

  4. TIMING_05 VIVADO环境下的时序约束 之 基本时钟周期约束

    由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此:  https://blog.csdn.net/qq_33486907/ ...

  5. aws课程_AWS DeepRacer,Reinforcement Learning 101和一门关于AI管治的小课程

    aws课程 Dear readers, hope you are all doing well. I recently participated in an AWS DeepRacer tournam ...

  6. 【FPGA】时序概念

    ​​​​​​​ 目录 一.时钟定义 1.1 Primary Clocks 1.2 Generated Clocks 1.3 Virtual Clock 1.4 Clock groups 二.时钟分类 ...

  7. Setup和Hold(Max/Min)分析

    Setup和Hold(Max/Min)分析 Vivado时序分析概念setup time, hold time reference What is Setup and hold time in an ...

  8. 输入引脚时钟约束_Happy Design in Vivado 系列:时序分析入门三板斧(一):创建时钟...

    本系列中我们将一起探寻 Xilinx FPGA 的硬件开发环境 Vivado,发现 Vivado 的 Design Flow,使用 Tips...或许再来一些 BUG?Happy Design in ...

  9. vivado 亚稳态_【vivado学习五】时序分析

    想一千次,不如去做一次.华丽的跌倒,胜过无谓的徘徊. [vivado学习五]时序分析 典型的时序模型由发起寄存器.组合逻辑和捕获寄存器3部分组成,如图1所示形成了三条时钟路径:原时钟路径(Source ...

最新文章

  1. UI设计培训技术分享:搞定萌萌哒可爱图标
  2. 5G NR — 毫米波
  3. nginx图片服务器性能,搭建nginx图片服务器
  4. ddl mysql_mysql 5.6 在线 DDL
  5. VTK:相互作用之PickableOff
  6. 回顾游戏中的设计模式:策略模式vs抽象工厂
  7. 《Go语言圣经》学习笔记 第十一章 测试
  8. Windows CE 6.0中断处理过程(转载)
  9. 【HNOI2013】消毒
  10. java jar包 配置文件_java 导入jar包中配置文件
  11. java获取页面点击次数_在Java中怎样得出一个按钮点击的次数
  12. 请律师到底有什么用?
  13. 程序员找 Bug 福音!微软全新开源查找修复 Bug 工具——Project OneFuzz
  14. java导出excel 边框不全_java POI导出excel,合并单元格边框消失
  15. Buffer Overflow with Shellcode-protostar-stak5-bin-0x06
  16. 用lambda表达式写左联查询的示例
  17. 我的世界基岩版种子和java版种子_我的世界:基岩版种子榜单,7个刷怪笼扎堆,还有美丽的花海!...
  18. 正则表达式判断移动号码
  19. 数据认知与数据预处理--数据认知
  20. dB与倍数换算速查表

热门文章

  1. HTTP代理穿透原理
  2. Django城市信息查询功能
  3. 图论及其应用 2008年期末考试 答案 总结
  4. 百度指数批量抓取导出提取的工具开发历程
  5. 复盘2020全球旅游业:新冠疫情巨大冲击下的艰难复苏
  6. 电磁兼容常用名词术语
  7. 器件封装——SMA/SMB/SMC
  8. EXCEL与地图无缝结合,实现地址解析,标注联动更新
  9. HTTP状态码大全(整理)
  10. linux中的图形化UDP调试工具