FPGA设计基础-第4章设计验证PPT课件

上传人:日度 文档编号:146270730 上传时间:2020-09-29 格式:PPT 页数:79 大小:659.50KB
返回 下载 相关 举报
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、1,第四章 设计验证,随着集成度的提高,系统的规模日益庞大且复杂。 强壮的系统应有完备的验证作保障。 验证工作量远大于系统设计工作量 。 验证工作的基本技术和方法。,Page 1,目前,验证一般通过仿真实现 本章节中,验证和仿真不加区分,2,4.1 验证概述,Page 2,验证过程是证明设计正确的过程,验证的目的是为了保证设计实现与设计规范是一致的,保证从设计规范开始,经过一系列变换后得到的网表与最初的规范是一致的,整个变换的过程是正确的。,4.1.1 验证的概念,3,Page 3,4.1 验证概述,从自然语言表述的系统规范变换成完整的、可验证和无二义性的系统规范。 从系统规范变换成可实现的模

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

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

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

5、极端情况、边界条件和错误处理等。,10,Page 9,目前主流的两类 “验证技术”:,4.1.4 验证技术,(1)基于形式化的验证-通过数学的方法,证明设计的功能是否与规范一致。 等价性检验:比较两个设计是否完全等价。 两个网表比较,网表与RTL代码比较 模型检验:根据设计的RTL代码,提取有限状态机并穷举搜索设计状态空间,验证设计特性。 模型检验工具:Cadence的FormalCheck、IBM的Sugar和 Sypopsys的Vera,局限性很大 1、设计规模越来越大复杂 2、模型检验所描述的特性有限,11,4.1.4 验证技术,(2)基于TestBench的验证(目前主要的验证方式)

6、Testbench测试平台 即: Testbench产生激励给被验证设计(DUV)或待测设计(DUT),同时检查DUV/DUT输出是否满足要求,12,Page 10,4.1.4 验证技术,TB 结构模型,黑盒验证法 白盒验证法 灰盒验证法,解释:,DUV/DUT,Design Under Verification Design Under Test,13,Testbench功能:,为DUV/DUT提供激励信号 正确实例化DUV/DUT 将仿真数据显示在终端或者存为文件,也可以显示在波形窗口用于分析 复杂设计可以使用EDA工具,自动比较仿真结果与理想值。,激励,实例化 DUT,终端显示值、存成文

7、件,波形显示,自动比较结果正确性,14,4.1.5 仿真工具,1、仿真器,仿真器是验证中最常用的工具。仿真器试图创建一个能够模拟真实设计的工作环境,使验证工程师和设计进行交互,在设计生产之前发现设计错误,以减少损失。之所以称为仿真器,是因为它们是真实状态的一种近似。,Page 11,15,Page 12,4.1.5 仿真工具,验证人员在仿真器中,通过 testbench 为设计提供输入激励(为电路建立模拟工作环境),仿真器通过一定方式与验证人员交互,将电路的输出状态随环境变化的信息反映给验证人员 。 业界常用的仿真器有:Cadence 的 NC-Verilog, Synopsys的VCS 和

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

9、盖率可以提高测试的完备性。,语句覆盖 路径覆盖 表达式覆盖,触发覆盖 自动机覆盖,18,Page 15,4.1.6 验证计划和流程,随着设计规模的加大,验证工作量越来越大,制定验证计划或者验证规范是验证过程的一个重要环节,验证计划可以提高验证效率,减少验证的盲目性。 制定验证规范在系统设计规范签收(signoff) 后开始。,19,Page 16,4.1.6 验证计划和流程,应该注意: 验证工程师应与总体设计师以及设计人员一起讨论整个设计功能、模块划分、接口方式等,详尽理解设计规范。 在此基础上制定验证方案-确定需要验证的功能特性,确定验证策略,规划验证环境和验证程序的开发,确定整个验证所需的

10、验证人员的数目,资源和时间等等。,20,Page 17,4.1.6 验证计划和流程,典型的验证流程,21,Page 18,4.1.6 验证计划和流程,验证方案的要点(验证什么、如何验证),确定设计需要验证的特性(验证内容); 确定验证策略-系统级/模块级,黑/白/灰盒式验证,激励产生策略,验证响应方式(观察法、记录法、自检查法),人员、设备、环境管理安排等。 确定验证方法-具体验证的步骤和方法,如自顶向下/自下向上,激励的具体方式等。,22,4.1.6 验证计划和流程,制作标准的测试组件和测试模板。 个人编制相关部分的测试方案; 编制、调试测试程序,进行系统测试。 测试记录及分析,编制测试报告

11、。,回归测试:对发现问题修改后的设计重新测试。 (1)确认修改是否正确 (2)修改是否影响其他设计,23,4.2 功能验证,所谓的 “验证程序” - 是对 “待测电路” 的输入序列和预期输出相应的代码集合。,4.2.1 验证程序(TestBench)的组成,一个典型的验证程序模型,24,4.2.1 验证程序(TestBench)的组成,一个典型的Testbench的六个组成部分:,DUV (被验证的设计)- Design Under Verification,可能是RTL设计,也可以是网表。 输入激励 - 产生DUV需要的各种输入信号。 时序控制模块 - 产生TB和DUV所需的时钟信号。 参考

12、模块- 产生预期信号(行为级编码模块/以验证过正确的设计)。 诊断记录 - 相关信号变化情况的记录。 断言检查器 - 对特定的信号形式检测。,25,编写仿真激励:,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,b

13、y,bsum,bcout);,26,2、使用initial语句和always语句 通常主动产生激励用initial,被动检测响应用always。前者执行一次,后者不断重复执行。在initial中多次运行一个语句块,使用嵌入循环语句:while、repeat、for和forever。,initial begin forever bengin . end end,条件发生时执行 always (posedge clk) begin siga=sigb end,27,3、时钟、复位写法 (1)普通时钟信号 /产生一个周期为10的时钟 parameter FAST_PERIOD=10; reg clk

14、; initial begin clk=0; forever #(FAST_PERIOD/2) clk=clk; end,28,用always产生一个周期为10的时钟 parameter FAST_PERIOD=10; reg clk; initial clk=0; always #(FAST_PERIOD/2) clk=clk;,29,(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纳

15、秒输出为x,30,(3)固定数目时钟 产生两个高脉冲 parameter PulseCount=4,PERIOD=10; reg clk; initial begin clk=0; repeat (PulseCount) #(PERIOD/2) clk=clk; end,31,(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,32,(5)同步复位: initial beg

16、in Rst_n=1; (negedge clk); /等待时钟下降沿 Rst_n=0; #30; (negedge clk); /等待时钟下降沿 Rst_n=1; end,33,另一种同步复位 initial begin Rst_n=1; (negedge clk); /等待时钟下降沿 Rst_n=0; /复位开始 repeat (3) (negedge clk); /经过3个时 钟下降沿 Rst_n=1; /复位撤销 end,34,4、利用系统函数和系统任务,display在显示数据 $display(“Addr:%b-Data:%d”,add,data); 时序检查系统任务 $setup(s

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号