- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 CPLDFPGA的验证方法学
9.7 代码覆盖 代码覆盖率从某种程度上反映了验证是否已经完成。 代码覆盖的目的并不是检测代码的正确性,而是反映代码的完整性——一个100%的功能覆盖率不一定所有的功能都准确,只是意味着所有功能的覆盖点都已经验证过而已。 代码覆盖有许多种类型,包括: 基本代码覆盖率 分支覆盖率 条件覆盖率 表达式覆盖率 状态覆盖率 功能覆盖率 断言/属性覆盖率 代码覆盖率又可以分为规范级代码覆盖率和实现级代码覆盖率。规范级代码覆盖率是对高层次功能进行验证时使用的一种衡量表征。而实现级则是对微观方面进行验证的一种衡量。 9.8 验证工具 Lint工具是一种静态工具,不需要激励,也不需要描述期望的输出,是完全静态的检验,因此能够比程序更快地发现问题。它能够发现程序员犯下的一般性错误,不过它只能识别出某些类型的问题,并且由于过于谨慎还会经常报出一些伪错信息,因此需要经常仔细过滤错误信息。同时在使用Lint工具的时候,设计和验证工程师需要特别注意代码风格和编码规则,包括信号的命名等。 9.9 验证计划 验证计划需要重点考虑几个方面: 一是需要什么样的工具来帮助确定什么时间能够完成验证,需要多少人,需要多少设备,需要使用到什么样的工具和语言来进行验证; 二是要有一个待验证的设计规范,这个设计规范必须是书面正式的,而不是口头的。设计规范通常包括两方面:一方面是结构级的规范;另外一方面是设计规范。 三是要对首步成功进行明确的定义,只有首步成功了以后,才能进行下一步的验证。 9.10 DFT 对于设计者来说,DFT无疑就相当于一次技术的更新,它给设计方法和流程增加了工作量和复杂度,在设计预算方面和设计进度方面增加了风险,特别是在设计越来越复杂,上市时间要求越来越短的情况下,设计工程师需要在功耗、面积、速度以及封装引脚方面做出最大的平衡,而这个工作将比之前会更有挑战性。 ?对于测试工程师来说,DFT无疑就相当于给了他们一双洞察设计内部工作的眼睛,他们能够确定测试的质量等级,容易生成所需的测试向量,易于支持所用的测试环境,降低生产成本等等。 多路选择D类型的扫描触发器:在一个D触发器上增加了一个MUX,同时增加了SDI、SDO和SE三个扫描端口。 图 9–8 Mux-D扫描触发器 图 9–9 带优先级别的Mux-D扫描触发器 9.11 版本控制 版本控制属于软件管理的范畴,目前有一些的免费工具或者商用工具来管理文件,比如RCS、CVS、SCCS等等都是比较好的版本管控软件。 对于版本管控来说,在一个小的设计队伍中文件最好的是集中管理,这样可以有效地了解对方的文件位置,不过这样的最大隐患就是其他的设计者没有通知别人就在原先的代码上进行了修改。 当设计团队增大时,这样的版本管控不再有效,最好的方式就是采用源码管理系统——不仅可以保存文件的必威体育精装版版本,还可以保存每个文件的各个版本 一个有效的版本控制对于一个设计团队来说至关重要,也是高效验证的前提 9.12 实例 12:基于FSM的SVA断言验证设计 9.12.1 SVA简介 SVA全称为SystemVerilog Assertions,实际上是SystemVerilog 3.1标准中关于断言语言的那部分。 Verilog语言是一个过程语言,而过程语言使得测试同一时刻点的多个并行事件会变得相当困难。 Verilog语言不能较好地进行时序控制,由于Verilog的这些先天缺陷,没有断言语句和功能覆盖语句,所以要实现断言和功能覆盖需要冗长的语言表达。 断言一般包含三个阶段:预备、观察和响应。在预备阶段,信号和变量的状态不能改变;进入观察期后,SVA就会对所有的属性表达式进行求值;而响应阶段,则是评估属性是否成功。 具体程序设计 请参考实例12 图 9–10 FSM状态示意图 图 9–11 State Machine Viewer 图 9–12 RTL线路示意图 9.13 本章小结 本章主要讲述了验证方法学的一些基本概念和理解——包括验证的工具、验证的语言、验证计划、验证策略以及DFT等等。并没有一个规范定义验证方法学的基本范畴,目前的验证方法学更多地应用于ASIC设计的领域。随着FPGA/CPLD的设计复杂度越来越高,设计越来越接近ASIC、CPLD/FPGA研发工程师必须对这些概念熟练掌握并加以应用,掌握好验证方法学的要领,对于设计、验证、测试都大有裨益。 9.14 思考与练习 验证与仿真有什么样的区别与联系? 验证与测试有什么样的区别与联系? 验证的语言主要有哪些种类? SystemC、SystemVerilog、e语言之间有什么样的区别与联系? 什么是断言?什么是属性?属性与断言之间有什么样的区别与联系? 什么是静态形式验证?什么
文档评论(0)