精华内容
下载资源
问答
  • FPGA时序分析和时序约束1时序分析和时序约束2例子分析2.1实现代码2.2时序分析的基本模型 1时序分析和时序约束 时序分析的目的: 通过分析FPGA设计中各个寄存器之间的数据和时钟传输路径,来分析数据延迟和时钟延迟的...

    1时序分析和时序约束

    时序分析的目的:
    通过分析FPGA设计中各个寄存器之间的数据和时钟传输路径,来分析数据延迟和时钟延迟的关系。一个良好的设计系统,必然能够保证整个系统中的所有寄存器都能够正确的寄存数据。
    数据和时钟路径是由EDA软件,通过对特定器件布局布线得到的。
    时序约束的目的:
    (1)告知EDA软件,本设计需要达到怎样的时序指标,然后EDA软件会根据时序的各个参数,尽量优化布局,以达到该指标。
    (2)协助EDA软件进行分析设计的时序路径,以产生相应的时序报告。

    2例子分析

    2.1实现代码

    `timescale 1ns / 1ps
    //
    module top(
        input            sys_clk,
        input  [0:0]     a,
        input  [0:0]     b,   
        output reg [0:0] c
        );   
        
        reg  [0:0]  a_reg;
        reg  [0:0]  b_reg;
        wire [0:0]  c_wire;   
        
        always@(posedge sys_clk)
        begin
            a_reg<=a;
            b_reg<=b;
        end 
        
        assign c_wire=a_reg & b_reg;   
        
        always@(posedge sys_clk)
        begin
            c<=c_wire;
        end  
          
    endmodule
    
    
    
    

    2.2时序分析的基本模型

    在这里插入图片描述
    D触发器需要用到DFF,与门需要用到LUT。
    延迟产生原因:
    (1)内部连线走线延迟;
    (2)组合逻辑电路延迟。

    Tco:时钟上升沿到达D触发器的D端 到 数据输出到Q端的延迟。
    Tsu:寄存器稳定数据的建立时间,由目的寄存器自身的特性决定。在时钟信号的上升沿到达时钟接口时,触发器的数据输入端(D)必须提前N纳秒稳定下来,否则无法保证数据正确存储。也就是说,D触发器D端口的数据必须比时钟上升沿提前Nns到达D触发器的端口。
    为了保证正确接收数据,内部连线走线延迟+组合逻辑电路延迟必须小于sys_clk- Tsu。如下图所示。

    请添加图片描述
    例子分析:
    a=1,b=1;间隔一定的时间,a变成0;
    在这里插入图片描述

    图中,a_reg_D指的是寄存器a的D端,a_reg_Q指的是寄存器a的Q端。

    展开全文
  • FPGA STA(静态时序分析)

    2021-01-21 04:35:16
    FPGA STA(静态时序分析) 今天给大侠带来FPGA STA(静态时序分析),话不多说,上货。 一、概述 1.1 概述 在快速系统中FPGA时序约束不止包含内部时钟约束,还应包含完整的IO时序约束和时序例外约束才能实现PCB...

    FPGA STA(静态时序分析)

    今天给大侠带来FPGA STA(静态时序分析),话不多说,上货。

     

    一、概述

     

    1.1 概述

    在快速系统中FPGA时序约束不止包含内部时钟约束,还应包含完整的IO时序约束和时序例外约束才能实现PCB板级的时序收敛。因此。FPGA时序约束中IO口时序约束也是一个重点。仅仅有约束正确才能在快速情况下保证FPGA和外部器件通信正确。

     

    1.2 FPGA总体概念

    因为IO口时序约束分析是针对于电路板整个系统进行时序分析,所以FPGA需要作为一个总体分析,当中包含FPGA的建立时间、保持时间以及传输延时。传统的建立时间、保持时间以及传输延时都是针对寄存器形式的分析。针对整个系统FPGA的建立时间保持时间能够简化。下图为FPGA总体时序图:

    如图上图所示,分解的FPGA内部寄存器的性能參数:

    (1) Tdin为从FPGA的IO口到FPGA内部寄存器输入端的延时;

    (2) Tclk为从FPGA的IO口到FPGA内部寄存器时钟端的延时;

    (3) Tus/Th为FPGA内部寄存器的建立时间和保持时间;

    (4) Tco为FPGA内部寄存器传输时间;

    (5) Tout为从FPGA寄存器输出到IO口输出的延时。

    对于整个FPGA系统分析,能够又一次定义这些參数:FPGA建立时间能够定义为:

    (1) FPGA建立时间:FTsu = Tdin + Tsu – Tclk;

    (2) FPGA保持时间:FTh = Th + Tclk。

    (3) FPGA传输数据时间:FTco = Tclk + Tco + Tout;

    由上分析当FPGA成为一个系统后就可以进行IO时序分析了。FPGA模型变为如下图所示,为FPGA系统参数:

     

    1.3 输入最大最小延时

    外部器件发送数据到FPGA系统模型如图1.3所看到的。

    对FPGA的IO口进行输入最大最小延时约束是为了让FPGA设计工具可以尽可能的优化从输入port到第一级寄存器之间的路径延迟,使其可以保证系统时钟可靠的採到从外部芯片到FPGA的信号。下图为FPGA数据输入模型:

    输入延时即为从外部器件发出数据到FPGA输入port的延时时间。

    当中包含时钟源到FPGA延时和到外部器件延时之差、经过外部器件的数据发送Tco。再加上PCB板上的走线延时。如图1.4所看到的,为外部器件和FPGA接口时序。下图为外部器件和FPGA接口时序:

    (1). 最大输入延时

    最大输入延时(input delay max)为当从数据发送时钟沿(lanuch edge)经过最大外部器件时钟偏斜(Tclk1),最大的器件数据输出延时(Tco),再加上最大的PCB走线延时(Tpcb)。减去最小的FPGA时钟偏移(FTsu)的情况下还能保证时序满足的延时。这样才能保证FPGA的建立时间,准确采集到本次数据值,即为setup slack必须为正。如图1.1的所看到的。计算公式如下所示:

    Setup slack =(Tclk + Tclk2(min))–(Tclk1(max) +Tco(max) +Tpcb(max) +FTsu)≥0

    推出以下公式:

    Tclk1(max) + Tco(max) + Tpcb(max) –Tclk2(min) ≤ Tclk + FTsu 由Altera官方数据手冊得知:

    input delay max = Board Delay (max) – Board clock skew (min) + Tco(max)

    结合本系统參数公式为:

    input delay max = Tpcb(max) – (Tclk2(min)–Tclk1(max)) + Tco(max)

    (2). 最小输入延时

    最小输入延时(input delay min)为当从数据发送时钟沿(lanuch edge)经过最小外部器件时钟偏斜(Tclk1),最小器件数据输出延时(Tco),再加上最小PCB走线延时(Tpcb),此时的时间总延时值一定要大于FPGA的最大时钟延时和建立时间之和。这样才能不破坏FPGA上一次数据的保持时间。即为hold slack必须为正,如图1.1的所看到的,计算公式例如以下式所看到的:

    Hold slack=(Tclk1(min) + Tco(min) + Tpcb(min))–(FTh + Tclk2(max))≥ 0

    推出例如以下公式:

    Tclk1(min)+Tco(min)+Tpcb(min)–Tclk2(max) ≥ FTh

    由Altera官方数据手冊得知:

    input delay max = Board Delay (min) - Board clock skew (min) + Tco(min)

    结合本系统參数公式为

    input delay max=Tpcb(min) – (Tclk2(max)–Tclk1(min)) + Tco(min) 进行输入最大最小延时的计算,我们需要估算4个值:

    外部器件输出数据通过PCB板到达FPGAport的最大值和最小值Tpcb,PCB延时经验值为600mil/ns。1mm = 39.37mil; 外部器件接收到时钟信号后输出数据延时的最大值和最小值Tco。 时钟源到达外部器件的最大、最小时钟偏斜Tclk1; 时钟源到达FPGA的最大、最小时钟偏斜Tclk2;

    当外部器件时钟为FPGA提供的时候。Tclk1和Tclk2即合成Tshew,如图下图所示,为FPGA输出时钟模型:

     

    1.4 输出最大最小延时

    FPGA输出数据给外部器件模型如下图所示。对FPGA的IO口进行输出最大最小延时约束是为了让FPGA设计工具可以尽可能的优化从第一级寄存器到输出port之间的路径延迟。使其可以保证让外部器件能准确的採集到FPGA的输出数据。下图为FPGA输出延时模型:

    输出延时即为从FPGA输出数据后到达外部器件的延时时间。

    当中包含时钟源到FPGA延时和到外部器件延时之差、PCB板上的走线延时以及外部器件的数据建立和保持时间。如图所看到的,为FPGA和外部器件接口时序图。下图为FPGA输出延时:

    (1). 最大输出延时

    由Altera官方数据手冊得知:

    Output delay max = Board Delay (max) – Board clock skew (min) + Tsu

    由公式得知。最大输出延时(output delay max)为当从FPGA数据发出后经过最大的PCB延时、最小的FPGA和器件时钟偏斜,再加上外部器件的建立时间。约束最大输出延时,是为了约束IO口输出,从而使外部器件的数据建立时间。即为setup slack必须为正,计算公式例如以下式所看到的:

    Setup slack =(Tclk + Tclk2(min))–(Tclk1(max) +FTco(max) +Tpcb(max) +Tsu)≥0

    推导出例如以下公式:

    FTco(max) + Tpcb(max) –(Tclk2(min) – Tclk1(max))+Tsu ≤Tclk 再次推导,得到例如以下公式:

    FTco(max) + Output delay max ≤Tclk

    由此可见,约束输出最大延时。即为通知编译器FPGA的FTco最大值为多少。依据这个值做出正确的综合结果。

    (2). 输出最小延时

    由Altera官方数据手冊得知:

    Output delay min = Board Delay (min) – Board clock skew (max) –Th

    由公式得知,最小输出延时(output delay min)为当从FPGA数据发出后经过最小的PCB延时、最大的FPGA和器件时钟偏斜,再减去外部器件的建立时间。约束最小输出延时,是为了约束IO口输出。从而使IO口输出有个最小延时值,防止输出过快,破坏了外部器件上一个时钟的数据保持时间。导致hlod slack为负值。不能正确的锁存到数据。最小输出延时的推导计算公式例如以下式所看到的:

    Hold slack = (Tclk1(min) + FTco(min) + Tpcb(min))–(Th + Tclk2(max))≥ 0

    推导出例如以下公式:

    FTco(min) + Tpcb(min) – (Tclk2(max) – Tclk1(min))– Th ≥ 0    再次推导,得出例如以下公式:

    FTco(min) + Output delay min ≥ 0

    由公式得知,约束输出最大延时,即为通知编译器FPGA的FTco最小值为多少。依据这个值做出正确的综合结果。

    由公式得知,进行输出最大最小延时的计算,我们需要估算4个值:

    FPGA输出数据通过PCB板到达外部器件输入port的最大值和最小值Tpcb,PCB延时经验值为600mil/ns,1mm = 39.37mil。

    时钟源到达外部器件的最大、最小时钟偏斜Tclk2;

    时钟源到达FPGA的最大、最小时钟偏斜Tclk1;

    外部器件的建立时间Tsu和保持时间Th;    当外部器件时钟为FPGA提供的时候,Tclk1和Tclk2即合成Tshew。如下图所示,为FPGA提供时钟模型:

     

    1.5 使用范围

    通过作者使用总结情况,IO口时序约束主要使用在下面情况:

    1.数据交换频率较高

    因为IO时序约束一般计算值都是在几纳秒。当FPGA和外部数据交换频率较低,如FPGA操作640*480的TFT液晶进行刷屏,传输数据频率只24Mhz,一个数据时钟都有41.666ns,全然不用约束都能满足时序要求。

    可是当操作SDRAM执行到120M时候,因为一个数据变换周期才8ns。因此IO口的少量延时都会影响到SDRAM数据。因此这样的情况下需要对输入输出进行完整的IO口时序约束。而且分析正确,才干消除传输数据不稳定过的情况。

    2.代码已经比较优化

    当数据交换频率较高,可是时序约束还是不满足时序要求的时候。我们都需要对代码进行分析,好的时序都是设计出来的,不是约束出来的。如程序清单 1.1所看到的。首先hcount_r 和vcount_r 都为10位计数器,这种代码TFT的三色输出的port就会有非常大的延时。由于dat_act的胶合逻辑太多。输出路径太长导致。

    这种情况下应该不是首先做时序约束,应该改动代码,尽量做到寄存器直接输出。仅仅有当代码比较优化的情况,再做时序约束这样才干得到较好的结果。

    演示样例程序如下:

     
    assign dat_act  =    ((hcount_r >= hdat_begin) && (hcount_r < hdat_end))                 
               && ((vcount_r >= vdat_begin) && (vcount_r < vdat_end));
    assign tft_r    =    (dat_act) ? {rgb16_dat[15:11], 3'b111} : 8'h00;
    assign tft_g    =    (dat_act) ?
     {rgb16_dat[10:5],  3'b111} : 8'h00;  
    assign tft_b    =    (dat_act) ? {rgb16_dat[4:0],   3'b111} : 8'h00;

     

     

    1.6 总结

    本篇主要是对FPGA的IO口时序约束进行对应的分析,并未做实际的使用分析,兴许以后将会结合软件,以及实际案例对IO口时序约束进行具体的使用介绍。最后附上一个Altera官方的IO时序约束分析样例。如图下图所示,为Altera官方例程:

    FPGA设计过程中所遇到的路径有输入到触发器,触发器到触发器,触发器到输出,例如下图所示,下图就是典型的同步时序路径:

     

    二、 应用背景

    静态时序分析简称STA,它是一种穷尽的分析方法。它依照同步电路设计的要求。依据电路网表的拓扑结构,计算并检查电路中每个DFF(触发器)的建立和保持时间以及其它基于路径的时延要求是否满足。

    STA作为FPGA设计的主要验证手段之中的一个,不需要设计者编写测试向量,由软件自己主动完毕分析,验证时间大大缩短,测试覆盖率可达100%。

    静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会依据特定的时序模型进行分析,给出正确是时序报告。

    进行静态时序分析。主要目的就是为了提高系统工作主频以及添加系统的稳定性。

    对非常多数字电路设计来说,提高工作频率非常重要,由于高工作频率意味着高处理能力。通过附加约束能够控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时。从而提高工作频率。

     

    三、理论分析

     

    1.静态时序分析的理论基础知识

    在进行正确的时序分析前。我们必须具备主要的静态时序的基本知识点,不然看着编译器给出的时序分析报告宛如天书。如图所示,为libero软件给出的寄存器到寄存器模型的时序分析报告的截取,接下来我们会弄清楚每一个栏目的数据变量的含义以及计算方法。

    下图为libero静态时序分析报告:

    1.1 固定参数 launch edge、latch edge、Tsu、Th、Tco概念

    (1). launch edge

    时序分析起点(launch edge):第一级寄存器数据变化的时钟边沿,也是静态时序分析的起点。

    (2). latch edge

    时序分析终点(latch edge):数据锁存的时钟边沿,也是静态时序分析的终点。

    (3). Clock Setup Time (Tsu)

    建立时间(Tsu):是指在时钟沿到来之前数据从不稳定到稳定所需的时间,假设建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器。如下图所示,下图为建立时间图解:

    (4). Clock Hold Time (Th)

    保持时间(Th):是指数据稳定后保持的时间。假设保持时间不满足要求那么数据相同也不能被稳定的打入触发器。保持时间示意图如下图所示,下图为保持时间图解:

    (5). Clock-to-Output Delay(tco)

    数据输出延时(Tco):这个时间指的是当时钟有效沿变化后,数据从输入端到输出端的最小时间间隔。

     

    1.2 Clock skew

    时钟偏斜(clock skew):是指一个时钟源到达两个不同寄存器时钟端的时间偏移。如下图所示,下图为时钟偏斜:

    时钟偏斜计算公式如下:

    Tskew = Tclk2 -Tclk1

     

    1.3 Data Arrival Time

    数据到达时间(Data Arrival Time):输入数据在有效时钟沿后到达所需要的时间。主要分为三部分:时钟到达寄存器时间(Tclk1),寄存器输出延时(Tco)和传输数据延时(Tdata),如下图所示,为数据到达的时间:

    数据到达时间计算公式如下:

    Data Arrival Time = Launch edge + Tclk1 +Tco + Tdata

     

    1.4 Clock Arrival Time

    时钟到达时间(Clock Arrival Time):时钟从latch边沿到达锁存寄存器时钟输入端所消耗的时间为时钟到达时间,如下图所示,为时钟到达时间:

    时钟到达时间计算公式如下:

    Clock Arrival Time = Lacth edge + Tclk2

     

    1.5 Data Required Time(setup/hold)

    数据需求时间(Data Required Time):在时钟锁存的建立时间和保持时间之间数据必须稳定,从源时钟起点达到这样的稳定状态需要的时间即为数据需求时间。如下图所示,为数据需求时间:

    (建立)数据需求时间计算公式例如以下:

    Data Required Time = Clock Arrival Time - Tsu

    (保持)数据需求时间计算公式例如以下:

    Data Required Time = Clock Arrival Time + Th

     

    1.6 Setup slack

    建立时间余量(setup slack):当数据需求时间大于数据到达时间时,就说时间有余量,Slack是表示设计是否满足时序的一个称谓。下图为建立时间余量:

    建立时间余量的计算公式例如以下: Setup slack = Data Required Time - Data Arrival Time

    由公式可知。正的slack表示数据需求时间大于数据到达时间,满足时序(时序的余量)。负的slack表示数据需求时间小于数据到达时间,不满足时序(时序的欠缺量)。

     

    1.7 时钟最小周期

    时钟最小周期:系统时钟能执行的最高频率。

    当数据需求时间大于数据到达时间时,时钟具有余量;

    当数据需求时间小于数据到达时间时,不满足时序要求,寄存器经历亚稳态或者不能正确获得数据。

    当数据需求时间等于数据到达时间时。这是最小时钟执行频率。刚好满足时序。

    从以上三点能够得出最小时钟周期为数据到达时间等于数据需求时间的运算公式如下:Data Required Time = Data Arrival Time

    由上式推出如下公式:

    Tmin + Latch edge + Tclk2 - Tsu = Launch edge + Tclk1 + Tco + Tdata

    最后推出最小时钟周期为:

    Tmin = Tco + Tdata + Tsu - Tskew

     

    四、应用分析

     

    1.1 设置时钟主频约束

    全部的静态时序分析都是在有约束的情况下编译器才给出分析报告,所以进行时序分析的第一步就是设置约束。

    Libero软件设置时钟约束的途径三种,单时钟约束,多时钟约束和在Designer里面进行约束。

    1.1.1 单时钟约束

    有时我们系统全部模块都採用同一个时钟,这样的方式最为简单,直接在Synplify主界面上有个设置时钟约束的。如下图红框所看到的,下图为单时钟设置:

    设置完毕后,编译。通过Synplify时钟报告看初步时钟执行频率是否能达到要求,时钟报告如图4.2所看到的,设定100Mhz,能执行102.7Mhz。满足时序。下图为时序报告:

    1.1.2 时钟约束

    当系统内部模块採用了多个时钟时。那就需要进行多时钟约束了。

    首先需要打开设置界面。在Synplify中选择:File->New->Constraint File建立SDC文件,选择时钟约束如下图所示,为多时钟约束:

    对时钟进行例如以下约束后保存SDC文件,约束如下图所示,为多时钟约束完毕:

     

    1.2 Designer SmartTime时钟约束

    时钟约束除了在Synplify中能够约束外。还能够在Designer SmartTime中设置时钟约束,打开Designer Constraint,选择Clock进行针对每一个使用时钟的设置,如下图所示,为Designer时序约束:

     

    1.3 时序报告分析

    (1)Synplify时序报告

    当约束了时序后,需要观察时序报告,看时钟是否能达到我们需要的时钟,首先观察Synplify综合报告。以多时钟约束为样例,从Synplify得到的时序报告如下图所示,为多时钟约束时序报告:

    由上图可知时序都满足约束,未出现违规。能够在以下的报告中查看最差路径,如图4.7所看到的是clk2的最差路径。下图为最差路径:

    (2)Designer SmartTime时序分析报告 当设计经过Synplify综合给出网表文件后,还须要Designer进行布局布线,通过布局布线优化后的时序会有变化,因此,还须要分析布局布线后的时序,打开Designer->Timing Analyzer查阅总体时序分析报告如下图所示,为布局布线后时序报告:

    由Synplify综合后的报告和Designer进行布局布线后的报告能够看出。布局布线后优化了一些时序。特别是clk2时钟,通过布局布线后优化到了184Mhz,全然满足时序。

    (3)具体时序报告图

    通过Synplify综合后的和Designer进行布局布线都仅仅是看到了一个大体的时序报告。当我们需要分析时序时候必须观察细致的时序报告,在SmartTime中提供这样的报告功能,以clk2分析为例,在Timing Analyzer找到例如以下区域,下图为 时序报告选择。

    如上图所示,选择寄存器到寄存器进行分析时钟主频。寄存器到寄存器分析。

    如上图所示,时序报告中给出了数据延时。时序余量,数据到达时间,数据需求时间。数据建立时间,以及最小周期和时钟偏斜等信息,有了上一节的时序分析基础知识,我们全然能看懂这些数据代表的意义。这样对我们时序分析就知己知彼,进一步双击当中一条路径,还会给出这条路径的硬件电路图,如下图硬件电路图所示。有了这些具体的时序报告。对设计进行调整更加清晰。

     

    【QQ交流群】

    群号:173560979,进群暗语:FPGA技术江湖粉丝。

    多年的FPGA企业开发经验,各种通俗易懂的学习资料以及学习方法,浓厚的交流学习氛围,QQ群目前已有1000多名志同道合的小伙伴,无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有。

     

    【微信交流群】

    现微信交流群已建立08群,人数已达数千人,欢迎关注“FPGA技术江湖”微信公众号,可获取进群方式。

    后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

    江湖偌大,继续闯荡,愿大侠一切安好,有缘再见!

    展开全文
  • 时序分析基础知识

    2021-09-08 14:48:37
    1.什么是时序分析 时序分析本质就是一种时序检查,目的是检查设计中所有的D触发器是否能够正常工作,也就是检查D触发器的同步端口(数据输入端口)的变化是否满足建立时间(Setup)和保持时间要求(Hold);检查D...

    1.什么是时序分析

    时序分析本质就是一种时序检查,目的是检查设计中所有的D触发器是否能够正常工作,也就是检查D触发器的同步端口(数据输入端口)的变化是否满足建立时间(Setup)保持时间要求(Hold);检查D触发器的异步端口(异步复位端口)的变化是否满足恢复时间要求(Recovery)和移除时间要求(Removal)。

    2.时序分析的类型

    时序分析包括静态时序分析(STA)动态时序分析

    动态时序分析:将布局布线生成的布线延迟信息反标注到门级网表中进行仿真,检查是否存在时序违例。此时的仿真包括门延迟和布线延迟信息,能够较好反应芯片的实际工作情况。因为不可能产生完备的测试向量,覆盖门级网表中的每一条路径。因此在动态时序分析中,无法暴露一些路径上可能存在的时序问题。

    **静态时序分析:**采用穷尽分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误。它不需要输入向量就能穷尽所有的路径,且运行速度很快、占用内存较少,不仅可以对芯片设计进行全面的时序功能检查,而且还可利用时序分析的结果来优化设计,因此静态时序分析已经越来越多地被用到数字集成电路设计的验证中。

    3.时序分析中的常用术语

    源时钟(Source Clock/Launch Clock,也称为发起时钟)
    目的时钟(Destination Clock/Capture Clock,也称为捕获时钟)
    发起沿(launch edge,源时钟产生数据的有效时钟沿)
    捕获沿(capture edge,目的时钟捕获数据的有效时钟沿)
    发起沿通常在0ns,捕获沿通常在下一个发起沿,发起沿和捕获沿通常相差一个时钟周期。

    4.一条普通时序路径的三要素

    源时钟路径:从源时钟的源节点(通常是FPGA的时钟输入引脚)到源寄存器的时钟端口的路径。当时序路径的起点是FPGA输入端口时,该时序路径是没有源时钟路径的。
    数据路径:从时序路径的起点到时序路径的终点之间的数据传播路径。时序路径的起点可以是源寄存器的时钟端口或FPGA的输入端口,时序路径的终点可以是目的寄存器的输入端口或FPGA的输出端口。
    目的时钟路径:从目的时钟的源节点(通常是FPGA的时钟输入引脚)到目的寄存器的时钟端口的路径。当时序路径的终点是FPGA的输出端口时,该时序路径是没有目的时钟路径的。
    在这里插入图片描述

    5.FPGA中常见的四种时序路径。

    第一种,从FPGA的输入端口到目的寄存器的数据输入端口 。
    数据由Board clock发起并在FPGA外部产生;
    数据经过Input Delay的延迟后到达FPGA的输入端口;
    数据经过FPGA的Internal Delay后到达由目的时钟驱动的目的寄存器。
    这种路径是没有源时钟路径的,用户需要约束Input Delay和时钟来告知时序引擎必要信息,时序引擎才能正确的分析这种路径。

    第二种,从源寄存器的时钟端口到目的寄存器的数据输入端口。
    数据由源时钟发起并在FPGA内部产生;
    数据经过Data Path Delay后到达由目的时钟驱动的目的寄存器。
    这种时序路径是最常见的,用户需要约束源时钟和目的时钟告知时序引擎必要的信息,时序引擎才能正确的分析这种时序路径。

    第三种,从源寄存器的时钟端口到FPGA的输出端口。
    数据由源时钟发起并在FPGA内部产生;
    数据经过Internal Delay后到达输出端口;
    数据经过Output Delay后被Board Clock捕获到。
    这种路径是没有目的时钟路径的,用户需要约束Output Delay和时钟来告知时序引擎必要信息,时序引擎才能正确的分析这种路径。

    第四种,从FPGA的输入端口到FPGA的输出端口。
    数据横穿FPGA,没有经过任何触发器,这种路径也叫in-to-out path,约束输入和输出延时的参考时钟可以使用虚拟时钟。
    这种路径中只有数据路径,用户需要约束Input Delay和Output Delay,告知时序引擎必要的信息,时序引擎才能正确的分析这种时序路径。

    在这里插入图片描述

    6.各种到达时间的具体含义

    数据到达时间(data arrival time)

    在这里插入图片描述

    时钟到达时间(Clock Arrival Time)
    时钟到达时间就是指时钟从latch edge到达目的寄存器(destination register)输入端所用的时间。
    在这里插入图片描述
    时钟偏斜(Clock Arrival Time)

    在这里插入图片描述
    数据需求时间(Data Required Time)
    (建立)(Setup)数据需求时间

    在这里插入图片描述
    (保持)(hold)数据需求时间
    在这里插入图片描述

    建立余量(Setup Slack)
    在这里插入图片描述
    在这里插入图片描述

    ==保持余量(Hold Slack)

    在这里插入图片描述
    在这里插入图片描述

    参考文献:静态时序分析

    展开全文
  • 之前做过的笔试题,涉及到了时序分析,那就看看小梅哥的教程: 小梅哥FPGA时序分析和约束实例演练 建议直接从后面从文章下面的这张图开始看! 1. FPGA的基本原理 1.1 FPGA基本结构 Field-Programmable Gate Array ...

    前言

    • 之前做过笔试题,涉及到了时序分析,那就看看小梅哥的教程:
      小梅哥FPGA时序分析和约束实例演练
    • 市面上很多课程都是给你结论,不会给你深入分析,如果你想专研,建议您直接观看视频,相信您有不菲的收获!
    • 本文的记录只是为了扫盲,记录的很潦草,希望您能联系各种基础知识来理解!
    • 如果后期需要深入挖掘,小编可能就会更新此笔记。
    • 建议直接从后面从文章下面的这张图开始看!
      在这里插入图片描述

    01. FPGA的基本原理

    1.1 FPGA基本结构

    Field-Programmable Gate Array
    现场-可编程 门 阵列

    • 现场可编程
      通过JTAG、AS、PS等方式,可以现场对器件进行编程以实现各种不同的定制功能。

    • 只能实现基本逻辑关系的电路称为门。最基本的逻辑关系是与、或、非,最基本的逻辑门是与门、或门和非门
    • 门阵列
      将实现基本逻辑关系的电路按照阵列的形式排布,就形成了门阵列

    1.2 FPGA组成三要素

    • 可编程逻辑功能块
    • 片内互联线(Programmable Interconnect)
    • 输入输出块(I/O)
      在这里插入图片描述

    可编程逻辑功能块

    • 可编程逻辑功能块是实现用户功能的基本单元,多个逻辑功能块通常规则地排成一个阵列结构,分布于整个芯片。
    • 一个可编程逻辑功能块基本组成包括
      查找表
      D触发器:时序逻辑必须有这个
      进位链
      ······
      在这里插入图片描述
      下面的5代,配置已经开始升级、、、、、、
      在这里插入图片描述

    在这里插入图片描述

    可编程输入输出块

    • 可编程输入输出块完成片内部逻辑与外部管脚之间的接口,围绕在逻辑单元阵列四周,可编程输入输出块的功能和性能从一定程度上也决定了该器件的市场定位。
    • 一个可编程输入输出基本单元包括
      输出寄存器
      输入寄存器
      输出使能寄存器
      输出延迟链
      输入延迟链
      上拉电阻
      ······
      在这里插入图片描述

    在这里插入图片描述

    可编程内部互联资源

    • 可编程内部互联资源包括各种长度的连线线段和一些可编程连接开关,它们将各个可编程逻辑块或输入/输出块连接起来,构成特定功能的电路。用户可以通过编程决定个单元的功能以及它们的互连关系,从而实现所需的逻辑功能。
      在这里插入图片描述

    1.3 FPGA可编原理

    • 与PD的主要区别:编程原理
      PLD:修改具有固定内联电路的逻辑功能来进行编程
      FPGA:修改一或多根内连线的布线,更适合实现多级的逻辑功能
    • 按编程的方式和逻辑功能的类型主要有三种:
      SRAM-查找表类型( Intel Xilinx)
      反熔丝的多路开关类型FPGA器件( Actel)
      基于 Flash的FPGA( Lattice)
      在这里插入图片描述
      在这里插入图片描述

    可编程IO功能

    1、I/O模块配有缓冲器和寄存器,可实现电平匹配、提高驱动能力,延时等功能。
    2、可实现单端I/O和差分I/O,差分I/O有LVDS和 LVPECL两种协议,他们的电平和外部终端电路不一样
    3、I/O电平驱动防过冲解决该方案:分压电阻和齐纳 二极管

    • 能兼容TTL和CMOS多种接口和电压标准
    • 可配置为输入、输出、双、三态、双速率等形式
    • 能提供适当的驱动电流
    • 降低功耗,防止过冲和减少电源噪声
    • 支持多种接口电压(降低功耗)

    FPGA可选扩展资源

    除了上述构成FPGA基本结构的三种资源以外,随着工艺的进步和应用系统需求的发展,一般在FPGA中还可能包含以下可选资源:

    • 存储器资源(块RAM、分布式RAM);
    • 数字时钟管理单元(分频/倍频、数字延退、时钟锁定)
    • 算数运算单元(高速硬件乘法器、乘加器)
    • 高速串行I/O接口
    • 特殊功能模块(PCIE、DDR等硬IP核)
    • 微处理器( Cortex-M3、 Cortex-A9、 Cortex-A53、 PowerPC)。

    1.4 典型FPGA结构

    在这里插入图片描述

    • 数字锁相环和模拟锁相环,精度不一样

    本节回顾

    基本FPGA结构包括
    可编程逻辑功能块的结构:
    LUT实现各种组合逻辑的原理
    可编程IO块的结构:
    内部连线的意义

    02. FPGA时序分析和时序约束

    时序分析
    时序约束
    时序分析:

    • 时序分析:时序分析的目的就是通过分析FPGA设计中各个寄存器之间的数据和时钟传输路径,来分析数据延迟和时钟延迟之间的关系。一个设计OK的系统,必然能够保证整个系统中所有的寄存器都能够正确的寄存数据。

    • 数据和时钟传输路径是由EDA软件,通过针对特定器件布局布线得到的。

    • 时序约束:两个作用
      1、告知EDA软件,该设计需要达到怎样的时序指标,然后EDA软件会根据时序约東的各个参数,尽力优化布局布线,以达到该约束的指标。
      2、协助EDA软件分析设计的时序路倥,以产生相应的时序报告。

    时序分析基本模型

    • 此处假设前提:Clk到达所有寄存器的时间是完全一致
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    • Tsu:建立时间,目的寄存器自身的特性決定,在时钟信号上升沿到达其时钟接口时,其数据输入端(D)的数据必须提前Nns稳定下来,否则就无法确保数据正确存储
    • D触发器D端口的数据必须比时钟上升沿提前Nns到达D触发器的端口
    • Tco:时钟上升沿到达D触发器 数据输出到Q端的延迟
      在这里插入图片描述

    03. FPGA时序传输模型分析

    在这里插入图片描述
    在这里插入图片描述
    总结:为方便记忆的话,可以在直接理解为下面形式

    • 建立时间余量Tslack >= 0
    • 数据需求时间 >= 数据到达时间

    在这里插入图片描述
    在这里插入图片描述

    • 请大家把本节课程讲的内容自己在图上绘制一遍,理解各种物理意义,推导出 Slack(建立时间余量)的计算公式

    4. FPGA时序分析工具上手

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    温度越高,芯片内信号传输速度越慢,说是温度会改变硅片材料,泄露电流和电子移动能力等特性,导致较高温度下芯片内信号传输速度变慢。信号在相同路径中的传输时间变长,也就是延时会增加,这也就是做产品需要关心的问题。在实验室环境下运行良好的系统,能否在环境温度达到 85度的情况下依旧运行良好?如果到了 85 度环境下运行不好了,可能就是高温导致的信号传输速度下降,从而导致时序不满足了。
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    EDA软件仅会根据约束需求去布局布线以达到约束要求,但是,不会每次编译就按照最优的情况去编译。所以说,设计中一定要最起码加入合理的时钟约束。

    05. TimeQuest时序路径详解01

    暂无!在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    • 时钟悲观,等价于建立时间余量最小,这时就要求假定Tclk2最小、Tclk1最大
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    06.TimeQuest时序路径详解02

    在这里插入图片描述

    07. 基于timequest时序优化原理和方法

    插入寄存器为什么能提高时序?
    时序分析是分析寄存器到寄存器
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    08. 基于chipplanner的时序路径分析

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    09. nodenamefinder功能使用

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    10. 保持时间概念分析

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    11. 源同步io传输模型

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    12. outputdelay值推导

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    数据经过最短的外部传延迟时间到达目的寄存器时还能不破坏目的寄存器接收前一个 launch edge发射的数据的保持时间。

    13. 使用timequset分析和约束outputdelay

    在这里插入图片描述

    14. inputdelay时序分析

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    15. 图像采集显示系统时序分析与约束

    在这里插入图片描述

    在这里插入图片描述
    【设计实例】小梅哥CMOS摄像头(7670/7725/5640)应用工程资料-网页截图如下
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    16. 通用io时序模型与参数总结

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    自己推导下面这个!
    在这里插入图片描述

    17. sdram接口时序约束实操

    后记

    展开全文
  • vivado时序分析

    2021-07-15 10:31:51
    vivado时序分析 1.Tsu问题常见原因及解决方法 1.1 组合逻辑过于庞大复杂 组合逻辑过大时会增加信号的到达时间。 解决方式: 1.如果设计允许,可以添加多周期路径。 2.添加流水线寄存器,切分组合逻辑,降低延迟。 3....
  • 文章目录什么是静态时序分析?相关参数1.建立时间和保持时间的分析2.发射沿和锁存沿3.数据到达时间(数据路径)4.时间到达时间(时间路径)5.时钟偏斜6.数据需求时间7.建立裕量8.保持裕量总结 什么是静态时序分析?...
  • 时序分析|小梅哥

    2021-02-25 21:27:35
    小梅哥FPGA时序分析和约束实例演练 FPGA的基本原理 FPGA基本结构 Field-Programmable Gate Array 现场-可编程 门 阵列 现场可编程 通过JTAG、AS、PS等方式,可以现场对器件进行编程以实现各种不同的定制功能。 门 ...
  • 对于FPGA的时序分析主要包括管脚和内部寄存器的时序分析,目前这边刚看了一点时序分析的资料,总结在这里,希望能够对大家也带来帮助。 时序分析目前主要针对同步时序逻辑的静态时序分析(STA),主要涉及的概念整理...
  • 对于时序电路而言,需要通过时钟驱动电路正常工作,时钟的出现会使电路内各器件按照某种触发顺序以及时钟频率工作,因此需要时序分析技术对数字设计时序进行验证。 实际上时序分析包括两种方法:STA和时序仿真。时序...
  • 什么时静态时序分析

    2021-08-04 21:44:55
    静态时序分析是一种通过检查所有可能的路径是否违例来验证设计的时序性能。STA把设计分解成时序路径,计算这这些路径的传播时延,并且检查设计内部和输入/输出接口的时序约束的违例情况。 另外一种时序分析的方法是...
  • 关于什么是“拟时序分析”,可以参考本期推送的另一篇推文。这一篇直接演示代码 monocle2这个软件用得太多了,很多文章都是monocle2的图。因为只使用表达矩阵作为输入,相比于其他软件,已经很方便了。不过话说回来...
  • 原标题:时序分析的一些基本概念时序分析是FPGA设计中永恒的话题,也是FPGA开发人员设计进阶的必由之路。慢慢来,先介绍时序分析中的一些基本概念。时钟的时序特性主要分为抖动(Jitter)、偏移(Skew)、占空比失真...
  • FPGA时序分析基础知识总结 下面将FPGA时序分析涉及到的基础知识总结如下。 时序分析目的 时序分析的本质是一种时序检查,目前是检查FPGA中所有的D触发器能否正常工作,也就是检查D触发器的同步输入的数据端口是否...
  • Q1:时序分析是什么? 时序分析是以分析时间序列的发展过程、方向和趋势,预测将来时域可能达到的目标的方法。此分析是运用概率统计中时间序列分析原理和技术,利用时序系统的数据相关性,建立相应的数学模型,描述...
  • STA 静态时序分析

    2021-06-09 15:19:53
    STA静态时序分析与电路的输入激励无关,它通过遍历所有的时序路径,寻找出最大的组合逻辑延迟和最小的组合逻辑延迟,通过得到的逻辑延迟验证电路的建立时间和保持时间是否满足,其中建立时间是通过最大的组合逻辑...
  • 相信在看这篇文章的时候基本上已经对FPGA有了一个比较全面的了解了,那现在来谈一谈静态时序分析基础。 什么是静态时序分析? 在我们进行简单的FPGA设计的时候,都假设信号在FPGA内部的流动是0延时的,即当clk上升沿...
  • 静态时序分析(Static Timing Analysis)记录 概念 launch edge 发射沿 时钟源第一个上升沿对应的时刻,数据发送沿。STA分析以该时刻为0时刻。 latch edge 锁存沿 时钟源第二个上升沿对应的时刻,数据接收沿。...
  • 静态时序分析的作用 这篇文章内容来源于《Xilinx FPGA 权威设计指南》 (1)一个设计是由单元和网络的互连组成的。 (2)一个器件的性能由构成设计单元的延迟决定,它可以通过静态时序分析(Static Timing Analysis...
  • FPGA-小梅哥时序分析

    2021-01-25 13:42:44
    小梅哥 FPGA时序分析和约束实例演练(1) FPGA现场可编程门阵列 FPGA组成三要素: 可编程逻辑功能块 片内互联线 输入输出块 可编程逻辑功能块: 实现用户功能的基本单元,多个逻辑功能块通常规则地排列成一个阵列结构...
  • 推荐西南交通大学邸志雄老师的网络公开课 《数字集成电路静态时序分析基础》 链接:https://www.bilibili.com/video/BV1if4y1p7Dq 静态时序分析的经典书籍:《Static Timing Analysis for Nanometer Designs》 J. ...
  • ISE时序分析器 单击Design Summary中的Static Timing就可以启动时序分析器(Timing Analyzer)。在综合、布局布线阶段ISE就会估算时延,给出大概的时延和所能达到的最大时钟频率,经过PAR后,在Static Timing中给出...
  • 继续分析《AUTOSAR_TR_TimingAnalysis》,这个算是近期看到的文档... 为了展示时序分析方法的建议用法,文档中包含了许多实际用例。 用例使用与章节相同的结构分为几类: ECU 级别的时序分析(第 3 章) ...
  • 静态时序分析:是分析,调试并确认一个门级系统设计时序性能的方法。检验门级电路的最大延迟,以保证在指定的频率下,能够满足建立时间的要求;检验门级电路的最小延迟,以保证在指定的频率下,能够满足保持时间的...
  • 虚拟时钟:驱动外部器件的时钟,不真正进入fpga内部,为IO时序分析确定正确的发送、锁存沿的相对关系。 衍生时钟:(来自fpga内部的基本时钟或其他的衍生时钟,其与时钟源之间必须定义明确的关系) 如:pll的输出时钟...
  • 描述时序分析时FPGA设计中永恒的话题,也是FPGA开发人员设计进阶的必由之路。慢慢来,先介绍时序分析中的一些基本概念。1. 时钟相关时钟的时序特性主要分为抖动(Jitter)、偏移(Skew)、占空比失真(Duty Cycle ...
  • 此部分内容是学习的小梅哥的时序分析与时序约束课程,所记录的笔记。并针对其内容,又补充了部分自己的理解。由于个人能力有限,欢迎大佬指正本篇内容所出现的问题! 原文链接: 开篇时间:2021-5-19 17:46 结篇时间...
  • 在不采用动态激励的情况下,通过静态分析delay并检查时序是否满足。 STA贯穿在整个后端流程中,逻辑综合阶段和RouteOPT阶段,STA引擎被嵌入在相应的工具中,到了Signoff阶段的STA,会使用专门的STA工具。前者使用...
  • 静态时序分析(STA)

    2021-06-24 22:12:13
    静态时序分析 静态时序分析(Static Timing Analysis, 以下统一简称STA)是验证数字集成电路时序是否合格的一种方法,其中需要进行大量的数字计算,需要依靠工具进行,但是我们必须了解其中的原理。在综合工具(DC /...
  • synopsys-SDC第二章——综合的基础知识前言一、静态时序分析(STA)二、约束在STA中的作用1.作为声明2.作为断言3.作为指令4.作为异常5.约束的变化三、STA常见问题1.无功能检查2.无声明检查3.要求正确4.常见错误四、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 93,799
精华内容 37,519
关键字:

时序分析