数字集成电路可测性软件设计及验证平台_第1页
数字集成电路可测性软件设计及验证平台_第2页
数字集成电路可测性软件设计及验证平台_第3页
数字集成电路可测性软件设计及验证平台_第4页
数字集成电路可测性软件设计及验证平台_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字集成电路可测性软件设计及验证平台数字集成电路可测性软件数字集成电路可测性软件设计及验证平台设计及验证平台2013年年4月月25日日数字集成电路可测性软件设计及验证平台2主要内容主要内容可测性基础可测性基础可测性设计工具可测性设计工具验证的必要性验证的必要性验证方法学介绍验证方法学介绍验证工具介绍验证工具介绍数字集成电路可测性软件设计及验证平台3主要内容主要内容可测性基础可测性基础可测性设计工具可测性设计工具验证的必要性验证的必要性验证方法学介绍验证方法学介绍验证工具介绍验证工具介绍数字集成电路可测性软件设计及验证平台4可测性基础可测性基础什么是可测性设计?什么是可测性设计?物理瑕疵及故障模

2、型物理瑕疵及故障模型单一故障模型:单一故障模型:SAF Model可测性设计常用方法可测性设计常用方法检测检测SAF的算法:的算法:D算法算法测试矢量集测试矢量集故障覆盖率故障覆盖率数字集成电路可测性软件设计及验证平台5什么是可测性设计?什么是可测性设计?可测性设计可测性设计, Design For Test,即即DFT 。 为了测试所设计为了测试所设计IC有没有被正确的制造出来有没有被正确的制造出来(测试半导体生产处理过程中的瑕疵,不是测试(测试半导体生产处理过程中的瑕疵,不是测试芯片设计的对错芯片设计的对错)。 DFT=增加芯片逻辑增加芯片逻辑+生成测试矢量集(供测试生成测试矢量集(供测试

3、设备用)设备用)数字集成电路可测性软件设计及验证平台6物理瑕疵和故障模型物理瑕疵和故障模型 1.开路和短路开路和短路 2.金属线之间的电桥金属线之间的电桥 3.漏源穿通漏源穿通CMOS反相器反相器中的物中的物理缺陷理缺陷数字集成电路可测性软件设计及验证平台7物理故障物理故障 逻辑故障逻辑故障 封装引脚间的漏电或短路封装引脚间的漏电或短路 单一固定故障单一固定故障芯片焊接点到管脚连线断裂芯片焊接点到管脚连线断裂 延时故障延时故障表面玷污、含湿气表面玷污、含湿气 短路或者开路故障短路或者开路故障金属层迁移、应力、脱皮金属层迁移、应力、脱皮 金属层开路、短路金属层开路、短路 数字集成电路可测性软件设

4、计及验证平台8 固定固定1故障:故障: U0的输入端的输入端A固定接在高固定接在高 电平上,其值一直为电平上,其值一直为“1” 固定固定0故障:故障: U1的输出端的输出端Y固定接在固定接在 低电平上,其值一直为低电平上,其值一直为“0”单一固定故障:单一固定故障:stuck-at fault数字集成电路可测性软件设计及验证平台9DFT常用方法常用方法功能点测试功能点测试 需在每个测试点增加可控的输入和输出,需在每个测试点增加可控的输入和输出,I/O增加增加扫描测试扫描测试(基于(基于D算法)算法) 结构化的结构化的DFT技术,全扫描和部分扫描技术,全扫描和部分扫描内建自测试内建自测试 消除了

5、对消除了对ATE的存储能力和频率的限制,更的存储能力和频率的限制,更具发展潜力具发展潜力数字集成电路可测性软件设计及验证平台10D算法算法 D算法是算法是20世纪世纪60年代年代IBM提出测试提出测试SAF(stuck-at fault model,简称,简称SAF模型模型)的,)的,D算法在没有故障和算法在没有故障和有故障的电路之间产生了逻辑的差异(有故障的电路之间产生了逻辑的差异(Discrepancy),),D为为Discrepancy缩写,缩写,D算法即为差异算法。算法即为差异算法。n经典的经典的D算法如下:算法如下:1、瞄准特定的、瞄准特定的SAF。2、驱动故障节点为反向值。、驱动故

6、障节点为反向值。3、把错误传送到输出端口。、把错误传送到输出端口。4、记录测试向量,减掉已测试过的故障。、记录测试向量,减掉已测试过的故障。 数字集成电路可测性软件设计及验证平台11D算法算法 第一步:是把某个节点作为测试目标,我们把第一步:是把某个节点作为测试目标,我们把U1的输的输出出端作为测试的目标,探测它有无端作为测试的目标,探测它有无SA0的故障。的故障。数字集成电路可测性软件设计及验证平台12D算法算法第二步:是通过驱动该节点为相反的值以激活第二步:是通过驱动该节点为相反的值以激活(activate)目标的故障。)目标的故障。 输入端口输入逻辑输入端口输入逻辑“0”,如,如U1输出

7、没有输出没有SA0的的故故障,其逻辑障,其逻辑“1”;如;如U1输出有输出有SA0的故障,其逻的故障,其逻辑为辑为“0”。 可以通过测试其逻辑值来判断值该节点是否有可以通过测试其逻辑值来判断值该节点是否有SA0的故障。的故障。数字集成电路可测性软件设计及验证平台13D算法算法 第三步:是把故障效应传送到输出端口,可以在输出第三步:是把故障效应传送到输出端口,可以在输出端口观测到其逻辑值,有故障节点的逻辑值通过组合端口观测到其逻辑值,有故障节点的逻辑值通过组合电路后可能会反向,但是差异还保留着。电路后可能会反向,但是差异还保留着。数字集成电路可测性软件设计及验证平台14D算法算法第四步:记录向量

8、。成功的测试向量被记录在第四步:记录向量。成功的测试向量被记录在内存里,已测试的故障从目标故障的清单里减内存里,已测试的故障从目标故障的清单里减掉。掉。数字集成电路可测性软件设计及验证平台15可测试的触发器有两种模式:可测试的触发器有两种模式: 正常模式正常模式在这种模式下,所设计芯片以设计的原来在这种模式下,所设计芯片以设计的原来功能工作;功能工作; 测试模式测试模式在这种模式下,所设计芯片进行生产测试。在这种模式下,所设计芯片进行生产测试。扫描测试扫描测试数字集成电路可测性软件设计及验证平台16扫描测试扫描测试标准标准D触发器触发器与标准与标准D触发器等触发器等效的扫描触发器效的扫描触发器

9、数字集成电路可测性软件设计及验证平台17 使用扫描触发器,会增加设计的面积,增加了路径使用扫描触发器,会增加设计的面积,增加了路径的延迟,增大了触发器的输出负载和电路的功耗。的延迟,增大了触发器的输出负载和电路的功耗。SMIC0.18m工艺库工艺库AREA(m2)FFDQRHDLX63.2FFSDQRHDLX79.83增加百分比增加百分比26.3%扫描测试扫描测试数字集成电路可测性软件设计及验证平台18扫描测试流程扫描测试流程数字集成电路可测性软件设计及验证平台19测试矢量集(测试矢量集(Test Pattern) 由一个或多个测试序列组成的测试矢量,测试矢量包含输由一个或多个测试序列组成的测

10、试矢量,测试矢量包含输入激励和预期的输出响应,以测试一个目标的故障。入激励和预期的输出响应,以测试一个目标的故障。数字集成电路可测性软件设计及验证平台20 以二输入与非门为例,假设输以二输入与非门为例,假设输入为入为A,B,输出为,输出为Y,Y=(A*B);ABYA/1A/0B/1B/0Y/0Y/1001111101011011101101110101110010101n测试矢量为:测试矢量为:00 1,01 1,10 1,11 0 输入激励输入激励 输出响应输出响应数字集成电路可测性软件设计及验证平台21故障覆盖率故障覆盖率 可以测试到的故障占总故障的比例。可以测试到的故障占总故障的比例。

11、如果电路的每个节点既可以控制如果电路的每个节点既可以控制(controllable),又可观测又可观测(observable),那么电路的测试覆盖率就,那么电路的测试覆盖率就高。高。 可控,可测可控,可测 可控,不可测可控,不可测不可控点:冗余电路,门控时钟不可控点:冗余电路,门控时钟数字集成电路可测性软件设计及验证平台22业界产品测试方法业界产品测试方法ATE: Automatic Test Equipment数字集成电路可测性软件设计及验证平台23数字集成电路可测性软件设计及验证平台24主要内容主要内容可测性基础可测性基础可测性设计工具可测性设计工具验证的必要性验证的必要性验证方法学介绍验

12、证方法学介绍验证工具介绍验证工具介绍数字集成电路可测性软件设计及验证平台25DFT CompilernSynopsys公司的集成于公司的集成于Design Compiler的的先进测试综合工具先进测试综合工具n独创的独创的“一遍测试综合一遍测试综合”技术技术n功能强大的扫描式可测性设计分析、综合和验功能强大的扫描式可测性设计分析、综合和验证技术证技术n支持支持RTL级、门级的扫描测试设计规则检查,级、门级的扫描测试设计规则检查,以及给予约束的扫描链插入和优化以及给予约束的扫描链插入和优化n启动命令启动命令source /opt/demo/synopsys.env design_vision &

13、amp;数字集成电路可测性软件设计及验证平台26设计流程设计流程数字集成电路可测性软件设计及验证平台271.Scan-Ready SynthesisDFT Compiler数字集成电路可测性软件设计及验证平台282.Set ATE Configuration数字集成电路可测性软件设计及验证平台29 即测试时钟周期为即测试时钟周期为100ns,输入端口的数据输入到达,输入端口的数据输入到达时间为时间为5ns,双向端口的数据输入到达时间为,双向端口的数据输入到达时间为55ns,输出端口的数据程序采样(输出端口的数据程序采样(strobe)时间为)时间为40ns。 测试时间参数的设置一般放在测试时间

14、参数的设置一般放在.synopsys_dc.setup文件中,也可以包含在文件中,也可以包含在DC综合脚本文件里。综合脚本文件里。 测试时钟定义了驱动所有扫描触发器的时钟,测试时测试时钟定义了驱动所有扫描触发器的时钟,测试时钟一般与电路的工作时钟不同,它是由钟一般与电路的工作时钟不同,它是由ATE提供的,提供的,只在测试时使用。只在测试时使用。DFTC进行设计时,假设进行设计时,假设ATE对芯片对芯片做测试的所有时钟周期是相同的,等于做测试的所有时钟周期是相同的,等于test_default _period。2.Set ATE Configuration数字集成电路可测性软件设计及验证平台30

15、3.Pre-Scan Checkn执行执行create_test_protocol命令命令,生成测试协议生成测试协议n执行执行dft_drc命令,检查设计中有无测试设计规则的违规。命令,检查设计中有无测试设计规则的违规。n典型的设计综合规则有:典型的设计综合规则有: capacitance, transition, and fanoutn典型的测试设计规则主要检查典型的测试设计规则主要检查 1. 设计中是否有测试违规使得无法插入扫描链设计中是否有测试违规使得无法插入扫描链 2. 设计中是否有测试违规使得无法捕获数据设计中是否有测试违规使得无法捕获数据 3. 设计中是否有测试违规使得测试覆盖率降

16、低设计中是否有测试违规使得测试覆盖率降低数字集成电路可测性软件设计及验证平台314.Scan Specificationn 在在DFTC中,可以用中,可以用set_scan_configuration命命 令进行扫描路径的管理令进行扫描路径的管理set_scan_configuration -chain_count 6set_scan_configuration -clock_mixing mix_clocksset_scan_configuration -internal_clocks trueset_scan_configuration -add_lockup false数字集成电路可测性

17、软件设计及验证平台324.Scan Specification用下面的命令定义设计中其中一条扫描链:用下面的命令定义设计中其中一条扫描链:set_dft_signal -view spec -type ScanDataIn -port SI1set_dft_signal -view spec -type ScanDataOut -port SO1set_dft_signal -view spec -type ScanEnable -port SE active_satate1set_san_path -view spec C1 -scan_data_in SI1 scan_data_out S

18、01数字集成电路可测性软件设计及验证平台335.Scan Preview执行执行preview_dft:1.检查扫描路径的一致性检查扫描路径的一致性2.确定扫描链的数目确定扫描链的数目3.分派扫描单元和为扫描单元排次序分派扫描单元和为扫描单元排次序4.加入连接的硬件加入连接的硬件数字集成电路可测性软件设计及验证平台346.Scan Chain Synthesis执行执行insert_dft,读取已预览的扫描结构读取已预览的扫描结构进行所需要的扫描代替进行所需要的扫描代替插入测试点插入测试点保证没有竞争保证没有竞争连接扫描路径连接扫描路径把违规减少到最少把违规减少到最少数字集成电路可测性软件设计

19、及验证平台35Setting the Effort Level数字集成电路可测性软件设计及验证平台367.Post-Scan Check数字集成电路可测性软件设计及验证平台37数字集成电路可测性软件设计及验证平台388.Estimate Test coverage数字集成电路可测性软件设计及验证平台39write -format verilog hierarchy output ./netlist/top_pad.svwrite_sdc ./sdc/top_pad.sdcwrite_test_protocol -format stil -output ./spf/top_pad.spf.sv文

20、件和文件和.sdc文件供布局布线工具文件供布局布线工具Astro生成芯片版图生成芯片版图.spf文件供测试矢量生成工具文件供测试矢量生成工具Tetramax生成与测试矢量集,待芯片流片生成与测试矢量集,待芯片流片封装好后,测试矢量集供封装好后,测试矢量集供ATE设备来测试芯片。设备来测试芯片。 数字集成电路可测性软件设计及验证平台40主要内容主要内容可测性基础可测性基础可测性设计工具可测性设计工具验证的必要性验证的必要性验证方法学介绍验证方法学介绍验证工具介绍验证工具介绍数字集成电路可测性软件设计及验证平台41验证的必要性验证的必要性验证的概念,验证与测试的区别。经验表明,验证已经占到整个产品

21、开发周期的70%以上,它已经成为复杂SOC(System on-Chip)开发中的重要壁垒。数字集成电路可测性软件设计及验证平台42典型流程典型流程 时序 不满足动态仿真正确Verification is not just very hard, it is very, very hard没有一个简单的工具可以解决你所有的验证没有一个简单的工具可以解决你所有的验证问题。问题。(VSIA,Virtual Socket Interface Alliance)数字集成电路可测性软件设计及验证平台43主要内容主要内容可测性基础可测性基础可测性设计工具可测性设计工具验证的必要性验证的必要性验证方法学介绍验

22、证方法学介绍验证工具介绍验证工具介绍数字集成电路可测性软件设计及验证平台44验证方法学验证方法学方法学:又称方法论,是一门学问采用的方法、规方法学:又称方法论,是一门学问采用的方法、规则与公理;一种特定的做法或一套做法。则与公理;一种特定的做法或一套做法。验证方法学:指完成验证过程中的一系列方法、技验证方法学:指完成验证过程中的一系列方法、技术和规范。术和规范。 仿真技术仿真技术 静态技术静态技术 物理验证物理验证数字集成电路可测性软件设计及验证平台45仿真技术仿真技术基于事件的仿真基于事件的仿真-任何一个输入的变化都任何一个输入的变化都被标记为事件,即常说的功能仿真,精度被标记为事件,即常说

23、的功能仿真,精度高,速度慢。比如高,速度慢。比如Modelsim, VCS。基于周期的仿真基于周期的仿真-单周期内只检查一次输单周期内只检查一次输入并计算设计的输出逻辑值。速度快,无入并计算设计的输出逻辑值。速度快,无时序、毛刺。比如时序、毛刺。比如Cyclone。事务级仿真事务级仿真-一堆事件的集合即为事务,一堆事件的集合即为事务,即常说的验证平台。即常说的验证平台。软硬件协同验证软硬件协同验证-需要专门的软硬件,成需要专门的软硬件,成本高本高 。数字集成电路可测性软件设计及验证平台46传统仿真系统传统仿真系统nDUT:Design Under Testn适用于基于事适用于基于事件的仿真件的

24、仿真和和基基于周期的仿真。于周期的仿真。n适用于简单的适用于简单的设计。设计。缺点:缺点:1.可扩展性差2.可重用性差数字集成电路可测性软件设计及验证平台47层次化的验证系统层次化的验证系统适用于事务级仿真适用于事务级仿真优点:优点:1.可扩展性好2.可重用性好数字集成电路可测性软件设计及验证平台48为什么要用事务级仿真?基于事件的仿真基于事件的仿真事务级仿真事务级仿真Testbench代码可读性,可代码可读性,可维护性维护性差差强强仿真速度仿真速度慢慢快快Testbench结构结构DUT复杂时,结构混乱复杂时,结构混乱DUT复杂时,结构清晰复杂时,结构清晰Testbench代码量代码量DUT

25、简单时,代码量尚可简单时,代码量尚可DUT复杂时,代码量巨大复杂时,代码量巨大DUT简单时,代码量略多简单时,代码量略多DUT复杂时。代码量较少复杂时。代码量较少与待测设计联系程度与待测设计联系程度非常紧密非常紧密行为级与行为级与DUT联系紧密联系紧密事务级具有自身独立性事务级具有自身独立性可复用性可复用性无无强强抽象层次抽象层次无无有有参考模型参考模型无无有有基于事件的仿真与事务级仿真的比较基于事件的仿真与事务级仿真的比较数字集成电路可测性软件设计及验证平台49事务级仿真事务级仿真RVM: Reference Methodology Methodology, Synopsys公司。VMM:V

26、erificationMethodology Manual, ARM公司和Synopsys公司。AVM:Advanced Verification Methodology, Mentor公司。OVM:Open Verification Methodology, Cadence公司和Mentor公司UVM: Universal Verification Methodology, Cadence公司数字集成电路可测性软件设计及验证平台50为什么选用OVM?验证方法学验证方法学侧重点侧重点EDA验证工具验证工具支持的验证语言支持的验证语言基类库是否基类库是否开源开源RVM层次化验证层次化验证VCSO

27、penVera否否VMMRTL级模块级模块VCSSystemVerilog是是AVM层次化验证层次化验证QuestasimSystemCSystemVerilog是是OVM开源和不同开源和不同仿真器之间仿真器之间的透明性的透明性支持不同验证支持不同验证工具工具支持支持SystemVerilog等多种语言等多种语言是是UVM开源和快速开源和快速入门入门QuestasimNC-verilog支持支持SystemVerilog等多种语言等多种语言是是各种验证方法学比较各种验证方法学比较数字集成电路可测性软件设计及验证平台51SystemVerilog介绍介绍SystemVerilog结合了结合了Ve

28、rilog和和C+的概念,的概念,具有如下新功能:具有如下新功能: 1.面向对象编程面向对象编程(OOP) 、 2.随机约束随机约束(Constraint Random)、 3.断言断言(Assertion) 、 4.功能覆盖率功能覆盖率(Functional Coverage) 。数字集成电路可测性软件设计及验证平台52OOP:Object-oriented programming类:定义实物的抽象特点,包含方法和属性。对象:类的实例。方法:类的行为。继承:子类包含类的特性。SystemVerilog介绍介绍-面向对象编程面向对象编程数字集成电路可测性软件设计及验证平台53CRT:Const

29、raint Random Test class my_transaction extends ovm_transaction; rand int data_i; constraint c_data_i data_i = 0; data_i 262144; virtual function void randomize_();data_i = $random & 18h3ffff; endfunctionSystemVerilog介绍介绍-随机约束随机约束数字集成电路可测性软件设计及验证平台54SystemVerilog介绍介绍-断言断言Assertion 示例示例property p1

30、0;(posedge clock) (io.data_check_o=data_out_design_for_check-2);endpropertya10: assert property (p10);数字集成电路可测性软件设计及验证平台55Functional Coveragecovergroup:覆盖率模型:覆盖率模型sample():采样函数:采样函数bins: 仓仓Covergroup Covkind;coverpoint tr.kind /kind 为4位数据bins zero=0;bins hi = 8:$;endgroupSystemVerilog介绍介绍-功能覆盖率功能覆盖率

31、数字集成电路可测性软件设计及验证平台56OVM介绍介绍OVM是一种基于SystemVerilog的验证方法或者策略。OVM已经实现了一个基本的层次化验证平台,大大简化验证工程师的工作量。OVM可以验证HDL代码或者网表文件OVM特点: 1.开放性:支持所有验证工具 2.开源:OVM库都是基于SystemVerilog实现 的,可以在网上下载。 3.可靠性:两大公司共同开发维护数字集成电路可测性软件设计及验证平台57OVM结构结构novm_envnovm_sequecernovm_agentnovm_transcationnovm_scoreboardnovm_drivernovm_monito

32、r数字集成电路可测性软件设计及验证平台58静态技术静态技术语法检查语法检查-用户可以自由控制需要检查的规则,如代码风格,可综合检查,DFT检查。 nlint工具。静态时序分析静态时序分析-检查建立、保持时间以及其他延时信息是否满足设计时序要求。 Prime Time。形式验证形式验证不考虑时序信息,通常用于验证两个设计是否在功能上等效。 Formality 工具。数字集成电路可测性软件设计及验证平台59 一般来说,要分析或检验一个电路设计的时序方面的特征有两种主要手段:动态时序仿真(Dynamic Timing Simulation)和静态时序分析(Static Timing Analysis

33、) 1.动态时序仿真:利用仿真器和延迟文件,通过反标节点延迟信息来仿真。 优点:可直观查看波形;缺点:速度慢,看不到关键路径。 2.静态时序分析:分析每条时间路径上的延迟,来查看是否存在setup/hold违反。 优点:分析速度比较快,全面;缺点:不能查看功能是否正确。静态时序分析静态时序分析数字集成电路可测性软件设计及验证平台60 所谓形式验证,就是通过比较两个设计在逻辑功能是否等同的方法来验证电路的功能。 优点: 1.不依赖于测试矢量,因此能提供更完全的验证; 2.可以实现RTL-to-RTL、RTL-to-gate、gate-to-gate之 间的验证; 3.有定位功能,可以帮助你找出两

34、个设计之间功能不等同的原因; 4.可以使用的文件格式有VHDL、Verilog、Synopsys 的.db格式,以及EDIF网表等; 5.可以实现自动的分层验证;形式验证形式验证数字集成电路可测性软件设计及验证平台61物理验证物理验证-版图级版图级电源电压降电源电压降电迁移电迁移功耗功耗 Astro布局布线工布局布线工天线效应天线效应 具中完成具中完成串扰串扰数字集成电路可测性软件设计及验证平台62主要内容主要内容验证的必要性验证的必要性验证方法学介绍验证方法学介绍验证工具介绍验证工具介绍演示演示数字集成电路可测性软件设计及验证平台63如何利用如何利用OVM完成验证?完成验证?数字集成电路可测

35、性软件设计及验证平台64基于OVM的数字滤波器验证平台数模转化器(DAC)中的数字插值滤波器做为此验证平台的DUT数字插值滤波器的功能: 1.提高采样频率 2. 滤除带外(带宽20KHz)噪声 输入信号输入信号输出信号输出信号数字集成电路可测性软件设计及验证平台65传统的滤波器验证平台仿真结果传统的验证平台:基于定向测试矢量+波形查看的方式数字集成电路可测性软件设计及验证平台66传统验证平台没找到传统验证平台没找到BUG的原因的原因1.仿真时间没有足够长 2.借助波形来判断 3.没有与理想参考模型比较 基于基于OVM的验证平台的验证平台数字集成电路可测性软件设计及验证平台67OVM验证平台验证

36、步骤验证平台验证步骤利用OVM库完成平台代码启动验证工具创建编译库编译验证平台代码启动仿真数字集成电路可测性软件设计及验证平台68利用利用OVM库完成平台代码库完成平台代码扩展OVM类逐层完成 接口 数据产生 驱动器 验证环境 比较器数字集成电路可测性软件设计及验证平台69OVM平台平台-接口接口 interface io_if(); logic 17:0 data_i; logic 17:0 data_o; logic 17:0 data_check_o; modport dut_if(input data_i, output data_o);/ DUT接口 modport check_if

37、(input data_i, output data_check_o);/ 比较器模块接口 Endinterface io_if my_io();/装载接口 module check(io_if.check_if io, input clock,rst,en); dut dut(.io(my_io), .clock(clock), .rst(rst), .en(rst_check); check check(.io(my_io), .clock(clock), .rst(rst), .en(rst_check) ;数字集成电路可测性软件设计及验证平台70OVM平台平台数据产生数据产生 clas

38、s my_transaction extends ovm_transaction; rand int data_i; function new (string name = ); super.new(name); endfunction: new /产生随机事件的约束条件 constraint c_data_i data_i = 0; data_i 262144; virtual function void randomize_(); data_i = $random & 18h3ffff; endfunction ovm_object_utils_begin(my_transacti

39、on)/在程序中 ovm_field_int(data_i, OVM_ALL_ON + OVM_DEC) ovm_object_utils_end endclass: my_transaction 数字集成电路可测性软件设计及验证平台71OVM平台平台驱动器驱动器 class my_driver extends ovm_driver;/ ovm_component_utils(my_driver)/注册本类,这个宏的结尾没有符号; virtual io_if v_io;/装载虚拟接口 ovm_get_port #(my_transaction) get_port;/装载与激励发生器通信的通道接

40、口: function new(string name, ovm_component parent); super.new(name, parent); /建议验证程序中可写一些ovm_report_info的语句供提示用: ovm_report_info(, Called my_driver:new);/在测试结果显示此函数被调用 endfunction: new 数字集成电路可测性软件设计及验证平台72 function void build; super.build(); ovm_report_info(, Called my_driver:build); get_port = new(

41、get_port, this);/初始化 endfunction : build virtual task run; ovm_report_info(, Called my_driver:run); forever begin my_transaction tx; #1600 get_port.get(tx);/从通道中取一个事件 ovm_report_info(,$psprintf(data_i = %2h,tx.data_i); v_io.dut_if.data_i = tx.data_i; end endtask: run endclass: my_driver数字集成电路可测性软件设计

42、及验证平台73OVM平台平台验证环境验证环境 class my_env extends ovm_env;/ ovm_component_utils(my_env)/注册本类 ovm_random_stimulus #(my_transaction) env_stimulus;/装载激励器 tlm_fifo #(my_transaction) env_fifo;/装载通道 my_driver env_driver;/装载驱动器 function new(string name = my_env, ovm_component parent = null); super.new(name, pare

43、nt); ovm_report_info(, Called my_env:new); endfunction: new 数字集成电路可测性软件设计及验证平台74 virtual function void build; super.build(); ovm_report_info(, Called my_env:build); env_stimulus = new(env_stimulus, this);/初始化激励器 env_fifo = new(env_fifo, this);/初始化通道 env_driver = new(env.driver, this);/初始化驱动器 endfunc

44、tion: build virtual function void connect;/设定连接关系 ovm_report_info(, Called my_env:connect); env_stimulus.blocking_put_port.connect(env_fifo.put_export);/激励器侧接口-放事件 env_driver.get_port.connect(env_fifo.get_export);/驱动器侧接口-取事件 endfunction: connect数字集成电路可测性软件设计及验证平台75 virtual function void configure;/

45、ovm_report_info(, Called my_env:configure); env_stimulus.set_report_id_action(stimulus generation, OVM_NO_ACTION);/限制显示信息 endfunction: configure/你可删除上一行,看看有什么变化? task run(); ovm_report_info(,Called my_env:run); endtask: run virtual function void report; ovm_report_info(, Called my_env:report); endfu

46、nction: report /在运行下面的run_test()函数时,以上函数将自动依次运行 endclass: my_env数字集成电路可测性软件设计及验证平台76 module check(io_if.check_if io, input clock,rst,en, input 17:0 data_out_design_for_check); wire 17:0 hcic_out; /参考模型 Hcic_full Hcic_full (clock, en, rst, io.data_i, hcic_out,); assign io.data_check_o= hcic_out; prop

47、erty p10; (posedge clock) (io.data_check_o=data_out_design_for_check-2)|io.data_check_o=0; endproperty a10: assert property (p10); endmoduleOVM平台平台比较器比较器数字集成电路可测性软件设计及验证平台77 timescale 1ns/1ns module top; import ovm_pkg:*; import my_pkg:*; parameter clock_cycle = 100; bit clock; bit rst; bit rst_chec

48、k; io_if my_io();/装载接口 dut dut(.io(my_io), .clock(clock), .rst(rst), .en(rst_check);/装载DUT check check(.io(my_io), .clock(clock), .rst(rst), .en(rst_check), .data_out_design_for_check(my_io.dut_if.data_o); /建议在验证程序顶级模块中一般采用继承ovm_test的类包装继承 ovm_env的类 OVM平台平台顶层模块顶层模块数字集成电路可测性软件设计及验证平台78 class my_test

49、extends ovm_test; ovm_component_utils(my_test)/注册本类 my_env top_env;/装载环境-top_env function new(string name = my_test, ovm_component parent = null); super.new(name, parent); ovm_report_info(, Called my_test:new); endfunction: new virtual function void build; super.build(); ovm_report_info(, Called my_

50、test:build); top_env=new();/初始化 /建议在验证程序中可设定看门狗 set_global_timeout(1000000us); endfunction: build 数字集成电路可测性软件设计及验证平台79 virtual function void connect; ovm_report_info(, Called my_test:connect); top_env.env_driver.v_io = my_io;/连接虚拟接口到驱动器的物理接口 endfunction: connect task run; my_transaction tx; tx = new

51、(); ovm_report_info(, Called my_test:run); top_env.env_stimulus.generate_stimulus(tx, 2000000);/激励器产生20个事件 endtask: run endclass: my_test数字集成电路可测性软件设计及验证平台80 initial begin run_test(“my_test”); clock=0; rst=0; rst_check=0; #(32*clock_cycle) rst=1; end always #(clock_cycle/2) clock = clock; initial be

52、gin $fsdbDumpfile(top.fsdb); $fsdbDumpSVA; $fsdbDumpvars(0,top,+all); end endmodule: top数字集成电路可测性软件设计及验证平台81启动验证工具启动验证工具利用mentor的questasim,界面和操作类似于modelsim环境变量source /opt/demo/questasim.env启动命令vsim&数字集成电路可测性软件设计及验证平台82脚本方式完成验证脚本方式完成验证 vlib dac_hcic /创建库 vlog +acc -f ./rtl/ovm_rtl/compile_questa_

53、sv.f -work dac_hcic -sv +cover / 编译整个验证平台 vsim -c dac_hcic.top -sv_seed 100 -coverage -assertcover -assertdebug -sva -voptargs=“+acc” -pli /opt/springsoft/verdi/share/PLI/MODELSIM/LINUX/novas_fli.so /启动仿真 view assertions /查看断言 run -all /开始运行 quit -sim / 结束仿真数字集成电路可测性软件设计及验证平台83compile_questa_sv.f+in

54、cdir+/home1t/opt/questasim/questasim/verilog_src/ovm-2.1.2/src/home1t/opt/questasim/questasim/verilog_src/ovm-2.1.2/src/ovm_pkg.sv +incdir+/home/liuxp/dac/rtl/ovm_rtl+incdir+/home/liuxp/dac/rtl/dac_balise/dac_haf_cic/home/liuxp/dac/rtl/ovm_rtl/ovm_start.sv数字集成电路可测性软件设计及验证平台84结果查看结果查看断言结果查看断言结果查看覆盖率查

55、看覆盖率查看数字集成电路可测性软件设计及验证平台85断言结果查看Questasim下数字集成电路可测性软件设计及验证平台86断言结果查看Verdi下Verdi(另外一个软件,专门用作波形查看和调试)下查看断言结果更加直观,箭头朝上就表示端正通过,朝下表示断言失败。数字集成电路可测性软件设计及验证平台87覆盖率查看数字集成电路可测性软件设计及验证平台88覆盖率查看数字集成电路可测性软件设计及验证平台89静态验证工具静态验证工具静态时序分析静态时序分析Prime Time形式验证形式验证-Formality数字集成电路可测性软件设计及验证平台90静态时序分析静态时序分析PrimeTimePrime

56、Time是Synopsys的静态时序分析软件,常被用来分析大规模、同步、数字ASIC。PrimeTime适用于门级的电路设计。 1.逻辑综合后网表 2.自动布局布线后网表数字集成电路可测性软件设计及验证平台91PrimeTime流程流程 1.设置查找和链接路径; 2.读入并链接所要分析的设计; 3.设置操作条件和线上负载模型; 4.设置基本的时序约束; 5.检查所设置的约束以及该设计的结构。 数字集成电路可测性软件设计及验证平台92PrimeTime工具启动工具启动source /opt/demo/synopsys.envpt_shellprimetime&数字集成电路可测性软件设计及

57、验证平台93命令输入区命令输入区数字集成电路可测性软件设计及验证平台94PrimeTime脚本脚本 source pt.scrset lib_path /home1t/smic/smic_65/SCC65NLL_HS_RVT_V1p1aset smic_stdlib_path $lib_path/synopsys/1.2v/set smic_diolib_path /home1t/smic/smic_65/SP65NLLD2RP_OV3_TTM_V0p2a/syn/3p3v/set smic_aiolib_path /home1t/smic/smic_65/SP65NLLD2RP_OV3_AN

58、ALOG_TTM_V0p2a/syn/3p3v/set smic_stdsymlib_path $lib_path/Symbol/set search_path $search_path $smic_stdlib_path $smic_aiolib_path $smic_diolib_path $smic_stdsymlib_path $smic_iosymlib_path“set link_path * scc65nll_hs_rvt_ss_v1p08_125c_basic.db scc65nll_hs_rvt_ff_v1p32_-40c_basic.db SP65NLLD2RP_OV3_T

59、TM_V0p2_ss_V1p08_125C.db SP65NLLD2RP_OV3_TTM_V0p2_ff_V1p32_-40C.db“set symbol_library list SCC65NLL_HS_RVT_V1p1.sdbremove_design allread_verilog ./syn/netlist/dac.sv“link_design daccurrent_design daclist_designsreport_cell数字集成电路可测性软件设计及验证平台95PrimeTime脚本脚本 source pt.scrset_operating_conditions -min_library scc65nll_hs_rvt_ff_v1p32_-40c_basic -min ff_v1p32_-40c -max_library scc65nll_hs_rvt_ss_v1p08_125c_basic -max ss_v1p08_125c -analysis_type bc_wcset_operating_conditions -library scc65nll_hs_rvt_ff_v1p32_-4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论