术语——中文术语
大陆与台湾的一些术语存在差别:
 
验证常用的英语术语:

 验证:尽量模拟实际应用场景,比对芯片的所需要的目标功能和实现的功能
 影响验证的要素:应用场景、目标功能、比对应用场景、目标功能:来源于产品需求、系统方案、设计实现;准确、完备、清晰、异常。
 比对:设计与验证的隔离、独立性;比对效率
 验证与测试:关注点的区别
 验证类型:EDA验证、FPGA验证、芯片验证、软硬件结合验证
验证流程

 
测试点:

 例如:芯片可以处理包长为64Bytes~1500Bytes的数据包,则验证时则可以划分成哪几个测试区间呢?(假设包长为16Bit位宽)。

测试点——分解测试点的方法
1,SPEC
 文档上所有明确写出的SPEC
 2,输入、配置、输出
 所有合理的输入
 所有合理的配置
 所有合理的输出
 所有合理的输入、配置的不同组合
 3,场景
 多个功能在同一时间段内的不同组合
 多个功能在前后顺序之间的不同组合
 4,异常
验证用例——定向验证

验证用例——随机验证

rand bit [15:0] pkt_len;
constraint c_pkt_len {
	pkt_len dist {
		[1:61]	    	:/ 10,
		[62:63]     	:/ 10,
		[64:,65]   	:/ 10,
		[66:1498]	    :/ 10,
		[1499:1500]  	:/ 10,
		[1501:1502]  	:/ 10,
		[1502:65535]	:/ 10,
	};
}
利用System Verilog的比例约束,可以灵活地设置每个区间的概率。
 通过上述方法,发送同样的包个数,就能覆盖到所有的测试点。
覆盖率——Code Coverage

发送三个数据包,包长分别为10、100、2000字节,就可以达到100%的
 Code Coverage(如:Line Coverage、Conditon Coverage)

 如果RTL不小心写成上面这样,而没有验证到,我们能发现吗?
覆盖率——Function Coverage
通过定义功能覆盖率,就可以发现上述的问题。
 
 
 从需求,到测试点,到用例:总->分->总
 测试点要求细而不漏。
 测试点的交叉。例如不同类型包文有不同的长度范围和处理。变量越多组合
 越多,测试向量就越多。
 测试用例:随机为主定向为辅,还是随机为主定向为辅
验证用例——脚本化
传统的用例设计方法:
 根据测试点编写大量的TestCase来覆盖所列的测试点
 用例脚本化:
 设计一个通用用例模版,通过脚本,传递不同的参数配置。
 一个TestCase生出大量TestCase,减少大量用例的编写、维护工作。
 
验证平台——架构

验证平台——集成

验证的模块化、完整性思维
模块化与完整性
 结构上的模块化
 数据类型上的模块化:配置、数据
 流程上的模块化:

验证自动化——工具
1,Makefile
 (1)支持批量仿真;
 (2)每个TC单独生成一个LOG,一个波形,一组对应图像信息
 (3)自动检查所有TC的LOG,生成所有TC的Pass or Fail的记录
 (4)自动本地化
 (5)在当前目录下,编辑打开其他目录的文件
 …
 2,Excell提取脚本
 (1)寄存器信息列表
 (2)数模接口连线复位值
 (3)数模混仿Vector信息
 3,自动连线脚本
 (1) 连接各个module的verilog
 4,其他Tcl、Perl脚本
验证自动化
1,Regression自动化
 2,寄存器测试自动化
 3,Log检查自动化
 4,数据比对自动化
 5,时序比对自动化
 6,Co-SIM的Vector自动化
 7,数字模拟接口连线检查自动化
服务自己的人机交互:
 表格与仿真环境之间自动化
 EXCEL+VBA
 XML PARSER
验证语言——System Verilog
HDVL:Hardware Description And Verification Language
 完全兼容Verilog语言
 支持Behaviour Level建模
 支持面向对象编程,容易扩展、移植
 支持各种随机方式:权重比例等
 支持功能覆盖率

验证语言——SVA
System Verilog Assertions:简称SVA
 用途:用来检查Timing的正确性。(区别:Reference Model用来检查Data的正确性)。如果Timing不正确会输出Fail信息。
 SVA代码示例:
 
 以上代码是检测check_en有效的时候, 每次lcd_busy_bfm 的上升沿之后
 两个clk,必须有gate_lcd_busy 的上升沿。
UVM
UVM:Universal Verification Methodology
 来源:兼容VMM和OVM的优点
 内容:验证方法学+验证平台模版+验证代码库
 举例:盖房子
 很早很早以前没有建筑学,大家的房子也是千奇百怪,各不相同,有在树上,有在地下,也有在树上。后来,慢慢开始有人归纳这些房子的特点,发现:大部分都有“门”、“窗户”,“房间”,“屋顶”等。所以,慢慢开始把房子分成这几个部分来研究,逐渐就形成一套房子的方法学。后来再总结各个部分优秀的建造方法,提供给大家做参考,或者直接做好各个部分,给大家用,就形成组件、模版。



















