FPGA设计基础-第4章设计验证.ppt

上传人:小飞机 文档编号:5431438 上传时间:2023-07-06 格式:PPT 页数:79 大小:635KB
返回 下载 相关 举报
FPGA设计基础-第4章设计验证.ppt_第1页
第1页 / 共79页
FPGA设计基础-第4章设计验证.ppt_第2页
第2页 / 共79页
FPGA设计基础-第4章设计验证.ppt_第3页
第3页 / 共79页
FPGA设计基础-第4章设计验证.ppt_第4页
第4页 / 共79页
FPGA设计基础-第4章设计验证.ppt_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《FPGA设计基础-第4章设计验证.ppt》由会员分享,可在线阅读,更多相关《FPGA设计基础-第4章设计验证.ppt(79页珍藏版)》请在三一办公上搜索。

1、第四章 设计验证,随着集成度的提高,系统的规模日益庞大且复杂。强壮的系统应有完备的验证作保障。验证工作量远大于系统设计工作量。验证工作的基本技术和方法。,Page 1,目前,验证一般通过仿真实现本章节中,验证和仿真不加区分,4.1 验证概述,Page 2,验证过程是证明设计正确的过程,验证的目的是为了保证设计实现与设计规范是一致的,保证从设计规范开始,经过一系列变换后得到的网表与最初的规范是一致的,整个变换的过程是正确的。,4.1.1 验证的概念,Page 3,4.1 验证概述,从自然语言表述的系统规范变换成完整的、可验证和无二义性的系统规范。从系统规范变换成可实现的模块设计规范。从模块设计规

2、范变换成RTL及代码描述。从RTL代码通过综合工具变换成门级网表。从门级网表通过后端布局布线工具变换成具有延时信息的网表。,FPGA设计可能包含的几个变换:,Page 4,4.1 验证概述,验证是一个多次重复的过程,是一个不断向期望结果靠近的过程。,系统规范,网表,交换,验证,Page 5,4.1 验证概述,验证和测试是ASIC设计流程中两个不同的环节。验证的目的则是为了确认设计符合设计规范,目前验证一般通过仿真实现。测试的目的是为了确认生产后的设计产品是否合格、正确,一般由加工厂家或封装测试厂家完成。,4.1.2 验证和测试(Verification vs Test),4.1 验证概述,系统

3、规范,网表,芯片,电路设计,生产,验证(仿真),测试,对物理器件高低电平的确认不属于本教材范畴,对设计规范及功能的确认,Page 6,4.1 验证概述,传统的电子线路设计验证方法,4.1.3 Top-Down/Bottom-Up 验证方法,目前的电子线路设计验证方法,逻辑设计、画电路图、搭建电路、测试验证,借助 EDA 工具在计算机上进行 RTL 级设计和验证。,Page 7,4.1.3 Top-Down/Bottom-Up 验证方法,Top-Down 验证法,系统级验证:根据系统规范对系统进行建模,并对建立的模型进行验证。功能验证:验证设计的RTL代码应符合系统规范。主要方法-功能仿真(形式

4、化验证为辅)。门级网表验证:通过功能仿真或形式化工具检验RTL代码和综合后网表的是否相等。时序验证:验证综合后含有延时信息的网表时序是否满足要求。对于同步设计一般通过静态时序分析工具完成验证。,Page 8,4.1.3 Top-Down/Bottom-Up 验证方法,Bottom-Up 验证法,模块级验证-验证模块的各种工作情况,保证每个单元的设计质量。子系统验证、系统级验证-分层次组装模块进行子系统验证直至完成系统级验证。,备注:系统级验证,目标是验证整个设计的功能。验证主要集中在设计和外环境之间能否协调工作,包括一些极端情况、边界条件和错误处理等。,Page 9,目前主流的两类“验证技术”

5、:,4.1.4 验证技术,(1)基于形式化的验证-通过数学的方法,证明设计的功能是否与规范一致。等价性检验:比较两个设计是否完全等价。两个网表比较,网表与RTL代码比较模型检验:根据设计的RTL代码,提取有限状态机并穷举搜索设计状态空间,验证设计特性。模型检验工具:Cadence的FormalCheck、IBM的Sugar和 Sypopsys的Vera,局限性很大1、设计规模越来越大复杂2、模型检验所描述的特性有限,4.1.4 验证技术,(2)基于TestBench的验证(目前主要的验证方式)Testbench测试平台 即:Testbench产生激励给被验证设计(DUV)或待测设计(DUT),

6、同时检查DUV/DUT输出是否满足要求,Page 10,4.1.4 验证技术,TB 结构模型,黑盒验证法 白盒验证法灰盒验证法,解释:,DUV/DUT,Design Under VerificationDesign Under Test,Testbench功能:,为DUV/DUT提供激励信号正确实例化DUV/DUT将仿真数据显示在终端或者存为文件,也可以显示在波形窗口用于分析复杂设计可以使用EDA工具,自动比较仿真结果与理想值。,激励,实例化DUT,终端显示值、存成文件,波形显示,自动比较结果正确性,4.1.5 仿真工具,1、仿真器,仿真器是验证中最常用的工具。仿真器试图创建一个能够模拟真实设

7、计的工作环境,使验证工程师和设计进行交互,在设计生产之前发现设计错误,以减少损失。之所以称为仿真器,是因为它们是真实状态的一种近似。,Page 11,Page 12,4.1.5 仿真工具,验证人员在仿真器中,通过 testbench 为设计提供输入激励(为电路建立模拟工作环境),仿真器通过一定方式与验证人员交互,将电路的输出状态随环境变化的信息反映给验证人员。业界常用的仿真器有:Cadence 的 NC-Verilog,Synopsys的VCS 和 Mentor的ModelSim,Page 13,4.1.5 仿真工具,最常见的和仿真器一起使用的验证工具。通过波形观察器的图形界面,设计人员可以直

8、观地观察随时间变化的信号以及信号之间的相互关系,定位设计错误或测试文件的错误。,2、波形观察器工具,TB运行中即统计被测设计代码的测试覆盖情况,给出报告,验证者可依据此报告分析判断验证工作的完备性。几个主要覆盖分析方面:,3、代码覆盖分析工具,4.1.5 仿真工具,使用代码覆盖技术必须非常了解设计细节,通过代码覆盖分析工具了解哪些语句、路径已经被执行,那些表达式已经被执行,那些过程没有被触发等等,然后修改测试程序,提高代码覆盖率。提高覆盖率可以提高测试的完备性。,语句覆盖路径覆盖表达式覆盖,触发覆盖自动机覆盖,Page 15,4.1.6 验证计划和流程,随着设计规模的加大,验证工作量越来越大,

9、制定验证计划或者验证规范是验证过程的一个重要环节,验证计划可以提高验证效率,减少验证的盲目性。制定验证规范在系统设计规范签收(signoff)后开始。,Page 16,4.1.6 验证计划和流程,应该注意:验证工程师应与总体设计师以及设计人员一起讨论整个设计功能、模块划分、接口方式等,详尽理解设计规范。在此基础上制定验证方案-确定需要验证的功能特性,确定验证策略,规划验证环境和验证程序的开发,确定整个验证所需的验证人员的数目,资源和时间等等。,Page 17,4.1.6 验证计划和流程,典型的验证流程,Page 18,4.1.6 验证计划和流程,验证方案的要点(验证什么、如何验证),确定设计需

10、要验证的特性(验证内容);确定验证策略-系统级/模块级,黑/白/灰盒式验证,激励产生策略,验证响应方式(观察法、记录法、自检查法),人员、设备、环境管理安排等。确定验证方法-具体验证的步骤和方法,如自顶向下/自下向上,激励的具体方式等。,4.1.6 验证计划和流程,制作标准的测试组件和测试模板。个人编制相关部分的测试方案;编制、调试测试程序,进行系统测试。测试记录及分析,编制测试报告。,回归测试:对发现问题修改后的设计重新测试。(1)确认修改是否正确(2)修改是否影响其他设计,4.2 功能验证,所谓的“验证程序”-是对“待测电路”的输入序列和预期输出相应的代码集合。,4.2.1 验证程序(Te

11、stBench)的组成,一个典型的验证程序模型,4.2.1 验证程序(TestBench)的组成,一个典型的Testbench的六个组成部分:,DUV(被验证的设计)-Design Under Verification,可能是RTL设计,也可以是网表。输入激励-产生DUV需要的各种输入信号。时序控制模块-产生TB和DUV所需的时钟信号。参考模块-产生预期信号(行为级编码模块/以验证过正确的设计)。诊断记录-相关信号变化情况的记录。断言检查器-对特定的信号形式检测。,编写仿真激励:,1、仿真激励与被测对象的连接模块实例的端口方式:(1)名称对应:将模块实例外部的信号直接对应于模块的端 口名称。m

12、odule halfadd(x,y,sum,cout);endmodule名称对应halfadd u_halfadd_a(.x(ax),.y(ay),.sum(asum),.cout(acout);(2)位置对应:外部信号按照该模块端口声明的顺序一一对 应。Halfadd u_halfadd_b(bx,by,bsum,bcout);,2、使用initial语句和always语句 通常主动产生激励用initial,被动检测响应用always。前者执行一次,后者不断重复执行。在initial中多次运行一个语句块,使用嵌入循环语句:while、repeat、for和forever。,initialb

13、egin forever bengin.endend,条件发生时执行always(posedge clk)begin siga=sigb end,3、时钟、复位写法(1)普通时钟信号/产生一个周期为10的时钟 parameter FAST_PERIOD=10;reg clk;initial begin clk=0;forever#(FAST_PERIOD/2)clk=clk;end,用always产生一个周期为10的时钟 parameter FAST_PERIOD=10;reg clk;initial clk=0;always#(FAST_PERIOD/2)clk=clk;,(2)非50%占空

14、比时钟 parameter Hi_time=5;parameter Lo_time=10;reg clk;always begin#Hi_time clk=0;#Lo_time clk=1;end由于clk0时刻未初始化,前5纳秒输出为x,(3)固定数目时钟产生两个高脉冲 parameter PulseCount=4,PERIOD=10;reg clk;initial begin clk=0;repeat(PulseCount)#(PERIOD/2)clk=clk;end,(4)异步复位信号 parameter PERIOD=10;reg Rst_n;initial begin Rst_n=1

15、;#PERIOD Rst_n=0;#(5*PERIOD)Rst_n=1;end Rst_n为低有效,代码表示10ns时复位,复位延时50ns,(5)同步复位:initial begin Rst_n=1;(negedge clk);/等待时钟下降沿 Rst_n=0;#30;(negedge clk);/等待时钟下降沿 Rst_n=1;end,另一种同步复位initial begin Rst_n=1;(negedge clk);/等待时钟下降沿 Rst_n=0;/复位开始 repeat(3)(negedge clk);/经过3个时 钟下降沿 Rst_n=1;/复位撤销 end,4、利用系统函数和系

16、统任务,display在显示数据$display(“Addr:%b-Data:%d”,add,data);时序检查系统任务$setup(sig_d,posedge clk,1);/若clk上升沿到达之前的1ns时间内sig_d发生跳变,则建立时间不足告警$hold(posedge clk,sig_d,0.1);/若clk上升沿到达之后的0.1ns时间内sig_d发生跳变,则保持时间不足告警 dato_out=$random%256;从文本文件中读出和写入数据(类似C语言文件操作),搭建仿真环境,单顶层的TestBench代码:module testbench;/测试平台顶层/时钟激励产生 in

17、itial bengin end/复位激励产生 initial begin end,/各种测试激励 initial bengin end,/设计模块实例mpi u_mpi(.clk(clk),.rst_n(rst_n),.mpi_data(data),.mpi_addr(addr),.mpi_csn(csn),.mpi_rw(rw);,确认仿真结果,1、直接观测波形2、观察文本输出 利用系统任务打印的信息查看仿真结果,$display、$monitor、$fdisplay3自动检查仿真结果(1)数据库比较法。(数据库存储期望结果)(2)波形比较法。(存储标准波形,仿真结果与其比较)(3)动态自

18、检法。编写行为级与DUT功能一致代码,同时读入激励,比较输出结果,举例:加法器,Page 22,4.2.1 验证程序(TestBench)的组成,Book Page141 例:一个编码器的验证。,Page 23,4.2.2 实用构造Testbench技术,1、使用行为级代码描述验证模型,设计工程师编写的电路模型代码,要从实现的角度出发,从物理实现上考虑verilog代码的写法,写出的代码必须是可综合的。验证工程师编写的用于验证的代码不必考虑到内部的实现问题,只要按规范描述出一个设计的功能就可以了,也就是说只要建立一个设计“逻辑模型”。行为模型代码的描述往往比RTL代码的描述简单的多,容易正确描

19、述电路功能。,Page 24,4.2.2 实用构造Testbench技术,2、使用抽象数据类型,行为级代码可以不受可综合要求的约束,可以在更高的层次上实现数据的抽象,使得验证程序编写时更方便。,实数数据类型-数字滤波器的仿真例子(P148;例4.4)。记录数据类型-记录是一种抽象的数据结构,可以由不同类型信息组成,可以方便的表示在具有一定结构的数据。Verilog语言本身并不支持记录结构,通过一些方法可以模拟记录的实现。,Page 25,记录的用法,记录的用途,在仿真中主要用于描述一定格式的数据块。,创建一个没有参数的module,内部的所有变量都用寄存器类型声明。当模块实例化后,用模块中定义

20、的变量表示记录中的域。对记录可以进行行为级的处理,准备好仿真数据。(备注:行为级数据准备不占用信号时序时间),4.2.2 实用构造Testbench技术,Page 30,4.2.2 实用构造Testbench技术,多维数组数据类型-数组类型是记录类型的特例(域等长,二维数组在设计中也用于对RAM 等数据结构的建模)。测试激励需要构造有固定格式的数据帧时,使用二维数组是一种较好的方法。(例如 SDH 数据帧信元的构成等),Page 31,4.2.2 实用构造Testbench技术,3、编写结构化的仿真代码,行为代码通常按功能和需求划分结构,复杂的仿真功能,可以按功能划分若干个子功能,然后编写行为

21、代码实现这些子功能。在Verilog中,可以用module,function 和 task 实现仿真代码结构化。封装是实现结构化仿真编码的主要手段,封装的主要思想是将实现的细节隐藏起来,将功能和它的实现完全分离开,只要封装的接口不变,实现的修改和优化不影响用户的使用。,Page 32,4.2.2 实用构造Testbench技术,实现封装的几种方法,变量局部化,方法一:变量声明时局部化,尽可能地将变量的声明局部化,避免变量在其它模块间相互作用,产生不正确地结果。,方法二:用 task 和 function 使变量局部化,在verilog语言中,用 task 和 function 也可以使说明局部

22、化。,Page 33,4.2.2 实用构造Testbench技术,integer I;/全局I.always begin for(I=0;I0,I=I-1)begin end end,always begin:block_1 integer I;/局部 I for(I=0;I0,I=I-1)begin end end,Page 34,4.2.2 实用构造Testbench技术,实现封装的几种方法,总线功能模型 BFM(Bus Function Module),总线功能模型BFM,也称为事务处理程序(transactions)描述模块。所谓BFM就是DUV和TB之间的一种抽象,它是任务的集合,集

23、合中的每个任务完成一个特定的事务,事务可以是非常简单的操作,如内存的一次读、写,也可以是非常复杂的操作,如通信中结构化的数据包。BFM被直接链接到DUV上,TB通过“函数/功能”调用实现DUV的操作。,Page 35,4.2.2 实用构造Testbench技术,TB-BFM-DUV 模型,Page 36,例 4.11 带有微机接口芯片 MPI 的仿真(8255、8251等)。,CPU接口可抽象成右图形式。根据预定义的协议,由CPU BFM产生CPU接口所需要的实际物理信号(图右侧信号),图左侧接口用特定的数据初始化一个事务,根据不同的事务,CPU BFM产生不同物理信号,把左侧的接口称为过程接

24、口。,在BFM中根据CPU接口的时序,应用task产生一次CPU读写操作所需要的各种信号。,Page 37,module cpu_bfm(A,D,ALE,WRB,RDB,CSB);output 13:0 A;/地址总线 inout 7:0 D;/双向数据总线 output ALE,WRB,RDB,CSB;/控制线 reg 13:0 A;reg ALE,WRB,RDB,CSB;/定义CPU读写信号的所需要的时序参数 parameter tSalr=10,tSlr=5,Prd=30,tHrd=10;parameter tHar=10,tVl=5,tSalw=10,tVwr=40,parameter

25、 tSdw=20,tSlr=5;parameter data_width=8,addr_width=14;reg data_width-1:0 work_reg;,Page 38,task rd_cpu;/读操作的时序;input addr_width-1:0 addr;begin#10 A=addr;CSB=1b0;#(tSalr-tVl)ALE=1b1;#tVl ALE=1B0;#tSlr RDB=1B0;#Prd work_reg=D;RDB=1B1;#tHar A=14hzzzz;CSB=1b1;endendtask,task wr_cpu;/写CPU操作 input addr_wid

26、th:0 addr;input data_width:0 write_value;begin#10 A=addr;CSB=1B0;#(tSalw-tVl)ALE=1B1;#tVl ALE=1B0;#tSlw WRB=1B0;#(tVwr-tSdw)D=write_value;WRB=1b1;#tHdw Release D;A=14Hzzzz;CSB=1B0;endendtaskendmodule/cpu_interface,Page 39,在测试程序中,实例化cpu_bfm模块,直接和被测试的设计连接,通过层次关系调用元件的cpu任务,实现对目标器件的读写操作。,module testbenc

27、h;.cpu_bfm cpu_inst(.A(A),.D(D),.ALE(ALE),.WRB(WRB),.RDB(RDB),.CSB(CSB);DUV DUV_inst(/*other signal*/*cpu signal*/.A(A),.D(D),.ALE(ALE),.WRB(WRB),.RDB(RDB),.CSB(CSB),/*other signal*/.);,例 4.12 cpu_interface 的使用方法,Page 40,initial begin#300 cpu_inst.rd_cpu(14h 0010);/此时cpu_inst.work_reg 中既存储了读出的数;/oth

28、er operation#1000 cpu_inst.wr_cpu(14h 0001,8h3C);/other operation endendmodule/testbench,例 4.12 cpu_interface 的使用方法,Page 41,4、编写具有层次结构的仿真代码,4.2.2 实用构造Testbench技术,上面的CPU接口的仿真代码例子中包含了一定的层次结构。验证工程师在最顶层,只需要写出特定的完成某项功能验证的事务序列,而这些序列中的事务去调用不同的事务处理程序,这些不同的事务处理程序又可以去调用更低层的事务处理程序,以产生 CPU接口所需要的物理信号。这种层次化结构,可以为

29、验证工程师提供一个良好的可操作环境,使他们更关注于DUV的验证而不是注意如何产生DUV接口信号。,Page 42,5、编写具有自检查功能的仿真程序,4.2.2 实用构造Testbench技术,设计的有效性必须通过设计对激励响应的结果得以体现,有几种方式可以检查设计响应是否正确。,通过人工观测DUV输出波形的结果是否正确;通过日志的方式,将一些结果输出到文件中,在仿真结束后,分析日志文件;自检查方式;,Page 43,6、验证代码的重用,4.2.2 实用构造Testbench技术,大规模FPGA/ASIC设计一般由多个层次构成,设计人员应对各个层次上的子模块逐一验证,然后将这些验证过的模块连接在

30、一起形成高层规模较大的设计。为这些不同的子模块开发不同的验证环境需要花费大量的时间和精力,验证重用是解决这一问题的有效方法,验证人员利用大量的可重用验证模块构造出不同层次模块的验证环境。,Page 44,6、验证代码的重用-两种形式,4.2.2 实用构造Testbench技术,同一个芯片设计中验证重用 在验证的不同周期或设计的不同阶段验证代码的重用。好的验证代码可以在子模块级和系统级验证时均可重用。不同芯片设计之间的重用 验证代码可以用于同一芯片的更新换代上,或用于一个包含许多标准设计模块的芯片或与以前设计有相同性的新设计中。,Page 45,6、验证代码的重用,4.2.2 实用构造Testb

31、ench技术,重用的模块越多,所考虑的事项和投入的精力就越多。需要在验证重用所取得的效果和投入重用的资源做些平衡。,仿真程序被划分成两个主要的部分:可重用的验证代码与专用的验证代码。,Page 46,4.3 基于断言的验证,基于断言的验证是一种有效的“白盒”验证方法,它在RTL设计的源代码中监视系统的关键行为,特别是在某些特殊情况下的行为。通过断言的方法,可以增加观测点,在仿真过程中及时发现设计错误。,断言中用到的概念:,特性(Property):用于刻画设计特征的一些行为属性。事件(Event):验证过程的一个行为。断言(Assertion):用于监控或检查施加在设计上的一些规则和假设的一种

32、机制。,Page 47,4.3 基于断言的验证,用户可以用各种硬件描述语言如 Verilog、VHDL 或System C 等形成断言以监视设计在仿真过程中的行为。也可以利用已有的断言库,将断言直接加入到设计中。如:Accellera()推出的采用了断言思想的验证库 OVL(Open Verification Library),该库中用HDL语言(VHDL和Verilog),定义和实现了一些非常常用的属性声明。一些专用的硬件特性描述语言(Property Specification Language:PSL)和断言语言已经称为工业标准,并开始推向市场,例如IBM公司开发的Suger语言已被Ac

33、cellera组织接受,成为PSL工业的标准。,Page 48,4.3 基于断言的验证,断言可以有多种实现方法,最常用、最简单的方法是所谓的“叙述性”的实现方法,即在设计结构中描述断言,断言和设计中的其他结构一起并发地计算。叙述性断言实际上是一些代码,这些代码中一般包含三部分:断言的条件,报告信息,错误的严重程度以及相关的处理。,例:,assert_always#(severity_level,options,msg)inst_name(clk,reset_n,test_expr),备注:assert_always模块是Accellera组织OVL库中的标准件,详见书中 page166。,Pa

34、ge 49,module counter_0_to_9(reset_n,clk);define ASSERT_ON 1 input reset_n,clk;reg 3:0 count;always(posedge clk)begin if(reset_n=0|count=9)count=1b0;else count=count+1;end assert_always#(0,0,error:count not within 0 and 9)valid_count(clk,reset_n,(count=4b0000)/always断言endmodule,例4.14 模9计数器中使用always断言

35、。,Page 50,4.3 基于断言的验证,一个断言实际上就是一段Verilog代码,用模块的形式将其封装起来。使用时直接实例化,把断言嵌入在设计中,当测试条件不成立的时候,触发该断言。,在验证中使用断言的优点:,节约仿真时间,一旦出现了仿真错误,可以立即停止仿真;增加了设计的可观察性;减少设计错误定位时间,可以准确而快速定位设计错误;减少人为干预,自动监控测试。,Page 51,4.4 时序验证,时序验证的目的是为了确认物理实现的电路时序是否满足时序规范要求。时序验证的方法分为动态验证和静态验证两种,本节简单地介绍静态时序分析中的一些基本概念。(备注:简介动态时序分析概念。),4.4.1 静

36、态时序分析概述,静态时序分析是通过分析设计中所有可能的信号路径以确定时序约束是否满足时序规范,不依赖于激励,且可以穷尽所有路径,运行速度快,占用内存少。对于同步设计电路,仅借助于静态时序分析工具即可完成时序验证的任务。,Page 52,4.4 时序验证,常见的静态时序分析的工具,Synopsys公司的Primetime和Mentor Graphic 公司的SST Velocity是比较有影响的用于全定制IC时序分析的工具。FPGA供应商如Altera,Xilinx和Actel也在其集成环境中嵌入了静态时序分析工具。,Page 53,四种基本时序路径:,路径1(Path1):从输入管脚到D触发器

37、的输入;路径2(Path2):从D触发器的输入到下一个D出发器的输入;,路径3(Path3):从D触发器的输入到输出管脚;路径4(Path4):从输入到输出;,时钟路径(clock path):从一个时钟的输入通过一个或多个缓冲器到达一个时序元件的时钟管脚的路径;,Page 54,静态时序分析概述,一条路径的延时等于在该条路径上所有元件延时和连线延时之和。静态分析工具通过反向跟踪路径终点到起点所有的延时来计算路径的传输延时。在时序分析中,禁止组合环的存在,要求所有的反馈路径都可以在时钟边界被打断。元件延时是一个门的输入到输出之间的延时。连线延时是时序分析路径上一个元件的输出到下一个元件输入之间

38、的路径延时(寄生电容,线电阻,驱动强度等都会引起延时)。一条路径的延时是由该路径的组合电路、存储元件、路径上门的扇出负载、信号之间的互连线负载、时钟的歪斜率、时钟抖动和信号的压摆率等所决定。,Page 55,4.4.2 静态时序分析中的基本概念,1.扇入和扇出,一个逻辑门的扇入是指连接到该门输入的数目,一个逻辑门的扇出是指连接到该门输出的负载门的数目,扇出越多,延时越大。,Page 56,4.4.2 静态时序分析中的基本概念,2.压摆率(slew rate),压摆率(slew rate):电压变化的速度。,Page 57,4.4.2 静态时序分析中的基本概念,3.时钟歪斜(clock skew

39、),时钟在经过时钟路径后,到达存储元件的时间存在差别,称为时钟歪斜。时序上相邻的寄存器如果时钟歪斜较大,可能在同一时钟沿上造成时间违规或不能正确锁定数据的现象。,Page 58,4.4.2 静态时序分析中的基本概念,4.寄存器的建立(ts)和保持时间(th),寄存器的建立和保持时间的验证是静态时序分析最重要的参数。所谓的建立时间是指一个数据信号在有效的时钟沿到达前必须稳定的最小时间;保持时间是指一个数据信号在有效时钟沿结束后必须稳定的最短时间。,Page 59,4.4.2 静态时序分析中的基本概念,5.时钟到输出的延时(tco),时钟到输出的延时是指信号通过寄存器传播到输出管脚后,在输出管脚上

40、获得稳定有效的数据所要求的最大时间。,6.时钟脉冲宽度,时钟脉冲宽度定义为一个时钟周期的高/低电平的最小宽度。如果脉冲宽度过小,那么存储器就不能正确锁存数据。,Page 60,4.4.2 静态时序分析中的基本概念,7.恢复(Recovery)数据/撤销(Removal)数据时间,时钟有效沿前,异步控制输入信号(如reset,clear)必须稳定的最小时间称为恢复时间。时钟有效沿后,异步控制输入信号(如reset,clear)必须稳定的最小时间称为撤销时间。如果时钟有效沿和异步复位信号的结束之间的时间太短,寄存器无法判断是继续保持复位值,还是该由时钟沿打入新的数据,从而导致寄存器的内容不确定。,

41、恢复时间,撤销时间,Page 61,4.4.2 静态时序分析中的基本概念,8.裕度(slack),裕度是时序要求与实际时序之间的差值,它反映了时序是否满足要求。(正的裕度表示设计满足时序要求,而负的裕度表示设计不满足时序要求。)裕度=要求的时间 实际的时间,9.最大时钟频率,最大时钟频率是指在不违背要求的建立和保持时间前提下,电路工作的最快速度。频率 1/最大的时钟周期,Page 62,4.4.3 假路径和多周期路径,假路径,静态时序分析工具对于假路径不能正确分析。,逻辑门的控制值和非控制值,如果一个逻辑门的输出值只取决于一个输入值,这个输入值就是该逻辑门的控制值,而其它值则为非控制值。例如,

42、“与”门的控制就是0,非控制值是1,而“或”门的控制值是1,0为非控制值。,Page 63,4.4.3 假路径和多周期路径,路径敏化(静态可敏化/动态可敏化),静态可敏化:对于一条路径,如果存在一组输入向量使得该路径上逻辑门的其他输入都被设置成非控制值,则这条路径称为是可敏化路径。,b=0、1都是控制值,acdz不可敏化(也就是说从输入a到z不能传递任何信号的跳变),如果一条路径是静态不可敏化,那么这条路径对于延时分析是没有贡献的,把这种路径称为是假路径。,Page 64,动态可敏化:如果在一条路径上,在不同的时间可以找到一组输入,使得这条路径可以传输信号的跳变,这种敏化方式称为动态可敏化。,4.4.3 假路径和多周期路径,多周期路径,Page 65,4.4.3 假路径和多周期路径,静态时序分析由FPGA开发系统中的静态时序分析工具自动完成,用户根据电路的特点,向静态时序分析工具提交时序约束文件,静态时序分析工具计算所有的可能的路径,检查电路设计是否满足时序要求,并给出详细的分析报告。用户根据此报告,对电路进行判定或修改。用户通过约束文件可以对设计的多周期路径或者假路径进行指定方式的控制或不进行控制。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号