FPGA设计基础_第4章设计验证

上传人:小**** 文档编号:243041502 上传时间:2024-09-14 格式:PPT 页数:79 大小:675KB
返回 下载 相关 举报
FPGA设计基础_第4章设计验证_第1页
第1页 / 共79页
FPGA设计基础_第4章设计验证_第2页
第2页 / 共79页
FPGA设计基础_第4章设计验证_第3页
第3页 / 共79页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四章 设计验证,随着集成度的提高,系统的规模日益庞大且复杂。,强壮的系统应有完备的验证作保障。,验证工作量远大于系统设计工作量,。,验证工作的基本技术和方法。,Page 1,目前,验证一般通过仿真实现,本章节中,验证和仿真不加区分,4.1,验证概述,Page 2,验证过程是证明设计正确的过程,验证的目的是为了保证设计实现与设计规范是一致的,保证从设计规范开始,经过,一系列变换,后得到的网表与最初的规范是一致的,整个变换的过程是正确的。,4.1.1,验证的概念,Page 3,4.1,验证概述,从自然语言表述的系统规范变换成完整的、可验证和无二义性的系统规范。,从系统规范变换成可实现的模块设计规范。,从模块设计规范变换成,RTL,及代码描述。,从,RTL,代码通过综合工具变换成门级网表。,从门级网表通过后端布局布线工具变换成具有延时信息的网表。,FPGA,设计可能包含的几个变换:,Page 4,4.1,验证概述,验证是一个多次重复的过程,是一个不断向期望结果靠近的过程。,系统规范,网表,交换,验证,Page 5,4.1,验证概述,验证和测试是,ASIC,设计流程中两个不同的环节。,验证的目的则是为了确认设计符合设计规范,目前验证一般通过仿真实现。,测试的目的是为了确认生产后的设计产品是否合格、正确,一般由加工厂家或封装测试厂家完成。,4.1.2,验证和测试(,Verification vs Test,),4.1,验证概述,系统规范,网表,芯片,电路设计,生产,验证(仿真),测试,对物理器件高低电平的确认,不属于本教材范畴,对设计规范及功能的确认,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,代码应符合系统规范。主要方法,-,功能仿真,(,形式化验证为辅,),。,门级网表验证: 通过功能仿真或形式化工具检验,RTL,代码和综合后网表的是否相等。,时序验证,:验证综合后含有延时信息的网表时序是否满足要求。对于同步设计一般通过静态时序分析工具完成验证。,Page 8,4.1.3 Top-Down/Bottom-Up,验证方法,Bottom-Up,验证法,模块级验证,-,验证模块的各种工作情况,保证每个单元的设计质量。,子系统验证、系统级验证,-,分层次组装模块进行子系统验证直至完成系统级验证。,备注:系统级验证,目标是验证整个设计的功能。验证主要集中在设计和外环境之间能否协调工作,包括一些极端情况、边界条件和错误处理等。,Page 9,目前主流的两类 “验证技术”:,4.1.4,验证技术,(,1,)基于形式化的验证,-,通过数学的方法,证明设计的功能是否与规范一致。,等价性检验:比较两个设计是否完全等价。,两个网表比较,网表与,RTL,代码比较,模型检验:根据设计的,RTL,代码,提取有限状态机并穷举搜索设计状态空间,验证设计特性。,模型检验工具:,Cadence,的,FormalCheck,、,IBM,的,Sugar,和,Sypopsys,的,Vera,局限性很大,1,、设计规模越来越大复杂,2,、模型检验所描述的特性有限,4.1.4,验证技术,(,2,)基于,TestBench,的验证,(,目前主要的验证方式,),Testbench,测试平台,即:,Testbench,产生激励给被验证设计(,DUV,)或待测设计(,DUT,),同时检查,DUV/DUT,输出是否满足要求,Page 10,4.1.4,验证技术,TB,结构模型,黑盒验证法,白盒验证法,灰盒验证法,解释:,DUV/DUT,Design Under Verification,Design Under Test,Testbench,功能:,为,DUV/DUT,提供激励信号,正确实例化,DUV/DUT,将仿真数据显示在终端或者存为文件,也可以显示在波形窗口用于分析,复杂设计可以使用,EDA,工具,自动比较仿真结果与理想值。,激励,实例化,DUT,终端显示值、存成文件,波形显示,自动比较结果正确性,4.1.5,仿真工具,1,、仿真器,仿真器是验证中最常用的工具。仿真器,试图,创建一个能够模拟真实设计的工作环境,使验证工程师和设计进行交互,在设计生产之前发现设计错误,以减少损失。之所以称为,仿真器,,是因为它们是真实状态的一种近似。,Page 11,Page 12,4.1.5,仿真工具,验证人员在仿真器中,通过,testbench,为设计提供输入激励,(,为电路建立模拟工作环境,),,仿真器通过一定方式与验证人员交互,将电路的输出状态随环境变化的信息反映给验证人员 。,业界常用的仿真器有:,Cadence,的,NC-Verilog, Synopsys,的,VCS,和,Mentor,的,ModelSim,Page 13,4.1.5,仿真工具,最常见的和仿真器一起使用的验证工具。通过波形观察器的图形界面,设计人员可以直观地观察随时间变化的信号以及信号之间的相互关系,定位设计错误或测试文件的错误。,2,、波形观察器工具,TB,运行中即统计,被测设计代码,的,测试覆盖,情况,给出报告,验证者可依据此报告分析判断验证工作的完备性。几个主要覆盖分析方面:,3,、代码覆盖分析工具,4.1.5,仿真工具,使用代码覆盖技术必须非常了解设计细节,通过代码覆盖分析工具了解哪些语句、路径已经被执行,那些表达式已经被执行,那些过程没有被触发等等,然后修改测试程序,提高代码覆盖率。,提高覆盖率可以提高测试的完备性。,语句覆盖,路径覆盖,表达式覆盖,触发覆盖,自动机覆盖,Page 15,4.1.6,验证计划和流程,随着设计规模的加大,验证工作量越来越大,制定,验证计划或者,验证规范,是验证过程的一个重要环节,验证计划可以提高验证效率,减少验证的盲目性。,制定,验证规范,在,系统设计规范,签收,(signoff),后开始。,Page 16,4.1.6,验证计划和流程,应该注意:,验证工程师应与总体设计师以及设计人员一起讨论整个设计功能、模块划分、接口方式等,详尽理解设计规范。,在此基础上,制定,验证方案,-,确定需要验证的功能特性,确定验证策略,规划验证环境和验证程序的开发,确定整个验证所需的验证人员的数目,资源和时间等等。,Page 17,4.1.6,验证计划和流程,典型的验证流程,Page 18,4.1.6,验证计划和流程,验证方案,的要点,(验证什么、如何验证),确定设计需要验证的特性(验证内容);,确定验证策略,-,系统级,/,模块级,黑,/,白,/,灰盒式验证,激励产生策略,验证响应方式(观察法、记录法、自检查法),人员、设备、环境管理安排等。,确定验证方法,-,具体验证的步骤和方法,如自顶向下,/,自下向上,激励的具体方式等。,4.1.6,验证计划和流程,制作标准的测试组件和测试模板。,个人编制相关部分的测试方案;,编制、调试测试程序,进行系统测试。,测试记录及分析,编制测试报告。,回归测试:对发现问题修改后的设计重新测试。,(,1,)确认修改是否正确,(,2,)修改是否影响其他设计,4.2,功能验证,所谓的 “验证程序”,-,是对 “,待测电路,” 的输入序列和预期输出相应的代码集合。,4.2.1,验证程序,(TestBench),的组成,一个典型的验证程序模型,4.2.1,验证程序,(TestBench),的组成,一个典型的,Testbench,的六个组成部分:,DUV,(,被验证的设计,)- Design Under Verification,,可能是,RTL,设计,也可以是网表。,输入激励,-,产生,DUV,需要的各种输入信号。,时序控制模块,-,产生,TB,和,DUV,所需的时钟信号。,参考模块,-,产生预期信号(行为级编码模块,/,以验证过正确的设计)。,诊断记录,-,相关信号变化情况的记录。,断言检查器,-,对特定的信号形式检测。,编写仿真激励:,1,、仿真激励与被测对象的连接,模块实例的端口方式:,(,1,)名称对应:将模块实例外部的信号直接对应于模块的端,口名称。,module,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,。,initial,begin,forever,bengin,.,end,end,条件发生时执行,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%,占空比时钟,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;,#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,、利用系统函数和系统任务,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,;/,测试平台顶层,/,时钟激励产生,initial,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,、,$,fdisplay,3,自动检查仿真结果,(,1,)数据库比较法。,(数据库存储期望结果),(,2,)波形比较法。,(存储标准波形,仿真结果与其比较),(,3,)动态自检法。编写行为级与,DUT,功能一致代码,同时读入激励,比较输出结果,举例:加法器,Page 22,4.2.1,验证程序,(TestBench),的组成,Book Page141,例:一个编码器的验证。,Page 23,4.2.2,实用构造,Testbench,技术,1,、使用,行为级,代码描述验证模型,设计工程师,编写的电路模型代码,要从实现的角度出发,从物理实现上考虑,verilog,代码的写法,写出的代码必须是可综合的。,验证工程师,编写的用于验证的代码不必考虑到内部的实现问题,只要按规范描述出一个设计的功能就可以了,也就是说只要建立一个设计“逻辑模型”。,行为模型代码的描述往往比,RTL,代码的描述简单的多,容易正确描述电路功能。,Page 24,4.2.2,实用构造,Testbench,技术,2,、使用,抽象数据类型,行为级代码可以不受,可综合,要求的约束,可以在更高的层次上实现数据的抽象,使得验证程序编写时更方便 。,实数,数据类型,-,数字滤波器的仿真,例子,(P148,; 例,4.4),。,记录,数据类型,-,记录是一种抽象的数据结构,可以由不同类型信息组成,可以方便的表示在具有一定结构的数据。,Verilog,语言本身并不支持记录结构,通过一些方法可以模拟记录的实现。,Page 25,记录的用法,记录的用途,在仿真中主要用于描述一定格式的数据块。,创建一个没有参数的,module,,内部的所有变量都用寄存器类型声明。当模块实例化后,用模块中定义的变量表示记录中的域。,对,记录,可以进行,行为级,的处理,准备好仿真数据。,(备注:行为级数据准备不占用信号时序时间),4.2.2,实用构造,Testbench,技术,Page 30,4.2.2,实用构造,Testbench,技术,多维,数组,数据类型,-,数组类型是记录类型的特例(域等长,二维数组在设计中也,用于对,RAM,等数据结构的建模,)。,测试激励需要构造有固定格式的数据帧时,使用二维数组是一种较好的方法。,(例如,SDH,数据帧信元的构成等),Page 31,4.2.2,实用构造,Testbench,技术,3,、编写,结构化,的仿真代码,行为代码通常按功能和需求划分结构,复杂的仿真功能,可以按功能划分若干个子功能,然后编写行为代码实现这些子功能。,在,Verilog,中,可以用,module,,,function,和,task,实现仿真代码结构化,。,封装,是实现结构化仿真编码的主要手段,封装的主要思想是将实现的细节隐藏起来,将功能和它的实现完全分离开,只要封装的接口不变,实现的修改和优化不影响用户的使用。,Page 32,4.2.2,实用构造,Testbench,技术,实现封装的几种方法,变量局部化,方法一,:,变量声明时局部化,尽可能地将变量的声明局部化,避免变量在其它模块间相互作用,产生不正确地结果。,方法二,:,用,task,和,function,使变量局部化,在,verilog,语言中,用,task,和,function,也可以使说明局部化。,Page 33,4.2.2,实用构造,Testbench,技术,integer I; /,全局,I,.,al,ways,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,之间的一种抽象,它,是,任务的集合,,集合中的每个任务完成一个特定的事务,事务可以是非常简单的操作,如内存的一次读、写,也可以是非常复杂的操作,如通信中结构化的数据包。,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,产生不同物理信号,把左侧的接口称为,过程接口,。,在,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 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;,end,endtask,task wr_cpu ;,/,写,CPU,操作,input addr_width: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;,end,endtask,endmodule /cpu_interface,Page 39,在测试程序中,实例化,cpu_bfm,模块,直接和被测试的设计连接,通过层次关系调用元件的,cpu,任务,实现对目标器件的读写操作。,module,testbench,;,.,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,中既存储了读出的数,;,/other operation,#1000 cpu_inst.wr_cpu(14h 0001, 8h3C);, ;,/other operation,end,endmodule,/,testbench,例,4.12,cpu_interface,的使用方法,Page 41,4,、编写具有,层次结构,的仿真代码,4.2.2,实用构造,Testbench,技术,上面的,CPU,接口的仿真代码例子中包含了一定的层次结构。,验证工程师,在最顶层,只需要,写出,特定的完成某项功能验证的,事务序列,,而这些序列中的事务去调用不同的事务处理程序,这些不同的事务处理程序又可以去调用更低层的事务处理程序,以产生,CPU,接口所需要的物理信号。这种层次化结构,可以,为验证工程师提供一个良好的可操作环境,使他们更关注于,DUV,的验证而不是注意如何产生,DUV,接口信号,。,Page 42,5,、编写具有自检查功能的仿真程序,4.2.2,实用构造,Testbench,技术,设计的有效性必须通过设计对激励响应的结果得以体现,有,几种方式,可以,检查,设计响应,是否正确,。,通过人工观测,DUV,输出波形的结果是否正确;,通过日志的方式,将一些结果输出到文件中,在仿真结束后,分析日志文件;,自检查方式;,Page 43,6,、验证代码的重用,4.2.2,实用构造,Testbench,技术,大规模,FPGA/ASIC,设计一般由多个层次构成,设计人员应对各个层次上的子模块逐一验证,然后将这些验证过的模块连接在一起形成高层规模较大的设计。为这些不同的子模块开发不同的验证环境需要花费大量的时间和精力,验证重用是解决这一问题的有效方法,验证人员利用大量的可重用验证模块构造出不同层次模块的验证环境。,Page 44,6,、验证代码的重用,-,两种形式,4.2.2,实用构造,Testbench,技术,同一个芯片设计中验证重用,在验证的不同周期或设计的不同阶段验证代码的重用。好的验证代码可以在,子模块级,和,系统级,验证时均可重用。,不同芯片设计之间的重用,验证代码可以用于同一芯片的更新换代上,或用于一个包含许多标准设计模块的芯片或与以前设计有相同性的新设计中。,Page 45,6,、验证代码的重用,4.2.2,实用构造,Testbench,技术,重用的模块越多,所考虑的事项和投入的精力就越多。需要在验证重用所取得的效果和投入重用的资源做些平衡。,仿真程序被划分成两个主要的部分:可重用的验证代码与专用的验证代码。,Page 46,4.3,基于断言的验证,基于断言的验证是一种有效的 “白盒” 验证方法,它在,RTL,设计的源代码中监视系统的关键行为,特别是在某些特殊情况下的行为。通过断言的方法,可以增加观测点,在仿真过程中及时发现设计错误。,断言中用到的概念:,特性(,Property,),:,用于刻画设计特征的一些行为属性。,事件(,Event,),:,验证过程的一个行为。,断言(,Assertion,),:,用于监控或检查施加在设计上的一些规则和假设的一种机制。,Page 47,4.3,基于断言的验证,用户可以用各种硬件描述语言如,Verilog,、,VHDL,或,System C,等形成断言以监视设计在仿真过程中的行为。也可以利用已有的断言库,将断言直接加入到设计中。如:,Accellera,(,)推出的采用了断言思想的验证库,OVL,(,Open Verification Library,),该库中用,HDL,语言(,VHDL,和,Verilog,),定义和实现了一些非常常用的属性声明。,一些专用的,硬件特性描述语言,(,Property Specification Language:,PSL,)和断言语言已经称为工业标准,并开始推向市场,例如,IBM,公司开发的,Suger,语言已被,Accellera,组织接受,成为,PSL,工业的标准。,Page 48,4.3,基于断言的验证,断言可以有多种实现方法,最常用、最简单的方法是所谓的 “,叙述性,” 的实现方法,即在设计结构中描述断言,断言和设计中的其他结构一起并发地计算。,叙述性断言,实际上是一些代码,这些代码中一般包含三部分:,断言的条件,,报告信息,,错误的严重程度以及相关的处理。,例:,assert_always #(severity_level, options, msg),inst_name (clk,reset_n,test_expr),备注:,assert_always,模块是,Accellera,组织,OVL,库中的标准件,详见书中,page166,。,Page 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) &,(count = 4b1001); /always,断言,endmodule,例,4.14,模,9,计数器中使用,always,断言。,Page 50,4.3,基于断言的验证,一个断言实际上就是一段,Verilog,代码,用模块的形式将其封装起来。使用时直接实例化,把断言嵌入在设计中,当测试条件不成立的时候,触发该断言。,在验证中使用断言的优点 :,节约仿真时间,一旦出现了仿真错误,可以立即停止仿真;,增加了设计的可观察性;,减少设计错误定位时间,可以准确而快速定位设计错误;,减少人为干预,自动监控测试。,Page 51,4.4,时序验证,时序验证的目的是为了确认物理实现的电路时序是否满足时序规范要求。时序验证的方法分为,动态验证,和,静态验证,两种,本节简单地介绍静态时序分析中的一些基本概念。,(备注:简介动态时序分析概念。),4.4.1,静态时序分析概述,静态时序分析是通过分析设计中所有可能的信号路径以确定时序约束是否满足时序规范,不依赖于激励,且可以穷尽所有路径,运行速度快,占用内存少。对于同步设计电路,仅借助于静态时序分析工具即可完成时序验证的任务。,Page 52,4.4,时序验证,常见的静态时序分析的工具,Synopsys,公司的,Primetime,和,Mentor Graphic,公司的,SST Velocity,是比较有影响的用于全定制,IC,时序分析的工具。,FPGA,供应商如,Altera,,,Xilinx,和,Actel,也在其集成环境中嵌入了静态时序分析工具。,Page 53,四种基本时序路径:,路径,1(Path1),:从输入管脚到,D,触发器的输入;,路径,2(Path2),:从,D,触发器的输入到下一个,D,出发器的输入;,路径,3(Path3),:从,D,触发器的输入到输出管脚;,路径,4(Path4),:从输入到输出;,时钟路径,(,clock path,):从一个时钟的输入通过一个或多个缓冲器到达一个时序元件的时钟管脚的路径;,Page 54,4.4.1,静态时序分析概述,一条路径的延时等于在该条路径上所有,元件延时,和,连线延时,之和。静态分析工具通过反向跟踪路径终点到起点所有的延时来计算路径的传输延时。,在时序分析中,,禁止组合环的存在,,要求所有的反馈路径都可以在时钟边界被打断。,元件延时,是一个门的输入到输出之间的延时。,连线延时,是时序分析路径上一个元件的输出到下一个元件输入之间的路径延时(寄生电容,线电阻,驱动强度等都会引起延时)。,一条路径的延时是由该路径的组合电路、存储元件、路径上门的扇出负载、信号之间的互连线负载、时钟的歪斜率、时钟抖动和信号的压摆率等所决定。,goon from here 06.11.22,Page 55,4.4.2,静态时序分析中的基本概念,1.,扇入和扇出,一个逻辑门的,扇入,是指连接到该门输入的数目,一个逻辑门的,扇出,是指连接到该门输出的负载门的数目,扇出越多,延时越大。,Page 56,4.4.2,静态时序分析中的基本概念,2.,压摆率,(slew rate),压摆率,(slew rate):,电压变化的速度。,Page 57,4.4.2,静态时序分析中的基本概念,3.,时钟歪斜,(clock skew),时钟在经过时钟路径后,到达存储元件的时间存在差别,称为,时钟歪斜,。时序上,相邻的寄存器,如果时钟歪斜较大,可能在同一时钟沿上造成时间违规或不能正确锁定数据的现象。,Page 58,4.4.2,静态时序分析中的基本概念,4.,寄存器的建立,(t,s,),和保持时间,(t,h,),寄存器的建立和保持时间的验证是静态时序分析最重要的参数。所谓的,建立时间,是指一个数据信号在有效的时钟沿到达前必须稳定的最小时间;,保持时间,是指一个数据信号在有效时钟沿结束后必须稳定的最短时间。,Page 59,4.4.2,静态时序分析中的基本概念,5.,时钟到输出的延时(,t,co,),时钟到输出的延时是指信号通过寄存器传播到输出管脚后,在输出管脚上获得稳定有效的数据所要求的最大时间。,6.,时钟脉冲宽度,时钟脉冲宽度定义为一个时钟周期的高,/,低电平的最小宽度。如果脉冲宽度过小,那么存储器就不能正确锁存数据。,Page 60,4.4.2,静态时序分析中的基本概念,7.,恢复,(Recovery),数据,/,撤销,(Removal),数据时间,时钟,有效沿前,,异步控制输入信号(如,reset, clear,)必须稳定的最小时间称为,恢复时间,。时钟,有效沿后,,异步控制输入信号(如,reset, clear,)必须稳定的最小时间称为,撤销时间,。如果时钟有效沿和异步复位信号的结束之间的时间太短,寄存器无法判断是继续保持复位值,还是该由时钟沿打入新的数据,从而导致寄存器的内容不确定。,恢复时间,撤销时间,Page 61,4.4.2,静态时序分析中的基本概念,8.,裕度,(slack),裕度是时序要求与实际时序之间的差值,它反映了时序是否满足要求。,(,正,的裕度表示设计满足时序要求,而,负,的裕度表示设计不满足时序要求 。),裕度,=,要求的时间 实际的时间,9.,最大时钟频率,最大时钟频率是指在不违背要求的建立和保持时间前提下,电路工作的最快速度。,频率 ,1/,最大的时钟周期,Page 62,4.4.3,假路径和多周期路径,假路径,静态时序分析工具对于,假路径,不能正确分析。,逻辑门的,控制值,和,非控制值,如果一个逻辑门的输出值只取决于一个输入值,这个输入值就是该逻辑门的,控制值,,而其它值则为,非控制值,。例如,“与” 门的控制就是,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,开发系统中的静态时序分析工具自动完成,用户根据电路的特点,向静态时序分析工具提交时序约束文件,静态时序分析工具计算所有的可能的路径,检查电路设计是否满足时序要求,并给出详细的分析报告。用户根据此报告,对电路进行判定或修改。,用户通过约束文件可以对设计的多周期路径或者假路径进行指定方式的控制或不进行控制。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!