您好,欢迎访问三七文档
数字集成电路验证方法学2013年12月31日2019/10/142主要内容验证的必要性验证方法学介绍验证工具介绍演示共69页2019/10/143主要内容验证的必要性验证方法学介绍验证工具介绍演示共69页2019/10/144验证的必要性验证的概念,验证与测试的区别。经验表明,验证已经占到整个产品开发周期的70%以上,它已经成为复杂SOC(Systemon-Chip)开发中的重要壁垒。制造、设计和验证能力之间的鸿沟共69页2019/10/145典型流程时序不满足动态仿真正确Verificationisnotjustveryhard,itisvery,veryhard没有一个简单的工具可以解决你所有的验证问题。(VSIA,VirtualSocketInterfaceAlliance)系统功能不满足系统规划满足功能不正确系统结构不合理时序不满足动态仿真正确功能正确共69页2019/10/146主要内容验证的必要性验证方法学介绍验证工具介绍演示共69页2019/10/147验证方法学方法学:又称方法论,是一门学问采用的方法、规则与公理;一种特定的做法或一套做法。验证方法学:指完成验证过程中的一系列方法、技术和规范。1.仿真技术2.静态技术3.物理验证共69页2019/10/148仿真技术基于事件的仿真--任何一个输入的变化都被标记为事件,即常说的功能仿真,精度高,速度慢。比如Modelsim,VCS。基于周期的仿真--单周期内只检查一次输入并计算设计的输出逻辑值。速度快,无时序、毛刺。比如Cyclone。事务级仿真--一堆事件的集合即为事务,即常说的验证平台。软硬件协同验证--需要专门的软硬件,成本高。共69页传统验证系统2019/10/149DUT:DesignUnderTest适用于基于事件的仿真和基于周期的仿真。适用于简单的设计。缺点:1.可扩展性差2.可重用性差共69页层次化的验证系统2019/10/1410适用于事务级仿真优点:1.可扩展性好2.可重用性好共69页为什么要用事务级仿真?2019/10/1411基于事件的仿真事务级仿真Testbench代码可读性,可维护性差强仿真速度慢快Testbench结构DUT复杂时,结构混乱DUT复杂时,结构清晰Testbench代码量DUT简单时,代码量尚可DUT复杂时,代码量巨大DUT简单时,代码量略多DUT复杂时。代码量较少与待测设计联系程度非常紧密行为级与DUT联系紧密事务级具有自身独立性可复用性无强抽象层次无有参考模型无有基于事件的仿真与事务级仿真的比较共69页事务级仿真RVM:ReferenceVerificationMethodology,Synopsys公司。VMM:VerificationMethodologyManual,ARM公司和Synopsys公司。AVM:AdvancedVerificationMethodology,Mentor公司。OVM:OpenVerificationMethodology,Cadence公司和Mentor公司UVM:UniversalVerificationMethodology,Cadence公司2019/10/1412共69页为什么选用OVM?验证方法学侧重点EDA验证工具支持的验证语言基类库是否开源RVM层次化验证VCSOpenVera否VMMRTL级模块VCSSystemVerilog是AVM层次化验证QuestasimSystemC/SystemVerilog是OVM开源和不同仿真器之间的透明性支持不同验证工具支持SystemVerilog等多种语言是UVM开源和快速入门QuestasimNC-verilog支持SystemVerilog等多种语言是2019/10/1413各种验证方法学比较共69页SystemVerilog介绍SystemVerilog结合了Verilog和C++的概念,具有如下新功能:1.面向对象编程(OOP)、2.随机约束(ConstraintRandom)、3.断言(Assertion)、4.功能覆盖率(FunctionalCoverage)。2019/10/1414共69页OOP:Object-orientedprogramming类:定义实物的抽象特点,包含方法和属性。对象:类的实例。方法:类的行为。继承:子类包含类的特性。2019/10/1415SystemVerilog介绍-面向对象编程共69页CRT:ConstraintRandomTestclassmy_transactionextendsovm_transaction;randintdata_i;constraintc_data_i{data_i=0;data_i262144;}virtualfunctionvoidrandomize_();data_i=$random&18'h3ffff;endfunction2019/10/1416SystemVerilog介绍-随机约束共69页SystemVerilog介绍-断言Assertion示例propertyp10;@(posedgeclock)(io.data_check_o=data_out_design_for_check+2)&&(io.data_check_o=data_out_design_for_check-2);endpropertya10:assertproperty(p10);2019/10/1417共69页FunctionalCoveragecovergroup:覆盖率模型sample():采样函数bins:仓CovergroupCovkind;coverpointtr.kind{//kind为4位数据binszero={0};binshi[]={[8:$]};};endgroup2019/10/1418SystemVerilog介绍-功能覆盖率共69页OVM介绍OVM是一种基于SystemVerilog的验证方法或者策略。OVM已经实现了一个基本的层次化验证平台,大大简化验证工程师的工作量。OVM可以验证HDL代码或者网表文件OVM特点:1.开放性:支持所有验证工具2.开源:OVM库都是基于SystemVerilog实现的,可以在网上下载。3.可靠性:两大公司共同开发维护2019/10/1419共69页2019/10/1420OVM结构ovm_envovm_sequecerovm_agentovm_transcationovm_scoreboardovm_driverovm_monitor共69页2019/10/1421静态技术语法检查--用户可以自由控制需要检查的规则,如代码风格,可综合检查,DFT检查。nlint工具。静态时序分析--检查建立、保持时间以及其他延时信息是否满足设计时序要求。PrimeTime。形式验证—不考虑时序信息,通常用于验证两个设计是否在功能上等效。Formality工具。共69页2019/10/1422一般来说,要分析或检验一个电路设计的时序方面的特征有两种主要手段:动态时序仿真(DynamicTimingSimulation)和静态时序分析(StaticTimingAnalysis)1.动态时序仿真:利用仿真器和延迟文件,通过反标节点延迟信息来仿真。优点:可直观查看波形;缺点:速度慢,看不到关键路径。2.静态时序分析:分析每条时间路径上的延迟,来查看是否存在setup/hold违反。优点:分析速度比较快,全面;缺点:不能查看功能是否正确。静态时序分析共69页2019/10/1423所谓形式验证,就是通过比较两个设计在逻辑功能是否等同的方法来验证电路的功能。优点:1.不依赖于测试矢量,因此能提供更完全的验证;2.可以实现RTL-to-RTL、RTL-to-gate、gate-to-gate两者之间的验证;3.有定位功能,可以帮助你找出两个设计之间功能不等同的原因;4.可以使用的文件格式有VHDL、Verilog、Synopsys的.db格式,以及EDIF网表等;5.可以实现自动的分层验证;形式验证共69页2019/10/1424物理验证--版图级电源电压降电迁移功耗Astro布局布线工天线效应具中完成串扰共69页2019/10/1425主要内容验证的必要性验证方法学介绍验证工具介绍演示共69页如何利用OVM完成验证?2019/10/1426共69页基于OVM的数字滤波器验证平台数模转化器(DAC)中的数字插值滤波器做为此验证平台的DUT数字插值滤波器的功能:1.提高采样频率2.滤除带外(带宽20KHz)噪声2019/10/1427输入信号输出信号共69页传统的滤波器验证平台仿真结果传统的验证平台:基于定向测试矢量+波形查看的方式2019/10/1428共69页传统验证平台没找到BUG的原因1.仿真时间没有足够长2.借助波形来判断3.没有与理想参考模型比较基于OVM的验证平台2019/10/1429共69页OVM验证平台验证步骤1.利用OVM库完成平台代码2.启动验证工具3.创建编译库4.编译验证平台代码5.启动仿真2019/10/1430共69页利用OVM库完成平台代码扩展OVM类逐层完成:1.接口2.数据产生3.驱动器4.验证环境5.比较器2019/10/1431共69页OVM平台--接口interfaceio_if();logic[17:0]data_i;logic[17:0]data_o;logic[17:0]data_check_o;modportdut_if(inputdata_i,outputdata_o);//DUT接口modportcheck_if(inputdata_i,outputdata_check_o);//比较器模块接口Endinterfaceio_ifmy_io();//装载接口modulecheck(io_if.check_ifio,inputclock,rst,en);dutdut(.io(my_io),.clock(clock),.rst(rst),.en(rst_check));checkcheck(.io(my_io),.clock(clock),.rst(rst),.en(rst_check));2019/10/1432共69页OVM平台—数据产生classmy_transactionextendsovm_transaction;randintdata_i;functionnew(stringname=);super.new(name);endfunction:new//产生随机事件的约束条件constraintc_data_i{data_i=0;data_i262144;}virtualfunctionvoidrandomize_();data_i=$random&18'h3ffff;endfunction`ovm_object_utils_begin(my_transaction)//在程序中`ovm_field_int(data_i,OVM_ALL_ON+OVM_DEC)`ovm_object_utils_endendclass:my_transaction2019/10/1433共69页OVM平台—驱动器classmy_driverextendsovm_driver;//`ovm_component_utils(my_driver)//注册本类,这个宏的结尾没有符号;virtualio_ifv_io;//装载虚拟接口ovm_get_port#(my_transaction)get_port;//装载与激励发生器通信的通道接口:functionnew(stringname,ovm_componentparent);super.new(name,parent);//〖建议〗验证程序中可写一些ovm_report_in
本文标题:数字电路验证方法学
链接地址:https://www.777doc.com/doc-1502532 .html