CN104899138A - 一种uvm验证环境中复用c程序测试向量的方法 - Google Patents
一种uvm验证环境中复用c程序测试向量的方法 Download PDFInfo
- Publication number
- CN104899138A CN104899138A CN201510269858.2A CN201510269858A CN104899138A CN 104899138 A CN104899138 A CN 104899138A CN 201510269858 A CN201510269858 A CN 201510269858A CN 104899138 A CN104899138 A CN 104899138A
- Authority
- CN
- China
- Prior art keywords
- program
- uvm
- sequence
- driver
- test vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012795 verification Methods 0.000 title claims abstract description 67
- 239000013598 vector Substances 0.000 title claims abstract description 54
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000012360 testing method Methods 0.000 claims abstract description 20
- 230000008569 process Effects 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims description 22
- 238000010998 test method Methods 0.000 claims description 5
- 230000005284 excitation Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 206010016275 Fear Diseases 0.000 description 1
- 230000008140 language development Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种UVM验证环境中复用C程序测试向量的方法,其具体实现过程为:通过对UVM验证组件增加DPI直接程序接口,使SOC测试向量能够驱动SV语言编写的UVM验证组件,并能在UVM验证环境中被复用。该UVM验证环境中复用C程序测试向量的方法与现有技术相比,可使得旧有的基于类似C驱动程序的传统SOC测试向量,不必做改动,就能被集成到基于UVM验证组件搭建的验证环境中得到继续使用,节省了重新开发测试向量的时间,提高了老旧验证环境的复用效率。
Description
技术领域
本发明涉及芯片逻辑验证技术领域,具体地说是一种实用性强、UVM验证环境中复用C程序测试向量的方法。
背景技术
UVM是芯片验证业界最新研发的一种验证方法学。工程师用它可创建坚实、可重用、具互操作性的验证组件和验证平台。UVM提供基于SystemVerilog语言开发的一套库函数,工程师通过调用库可以省去自己从零开始开发验证环境的麻烦。
UVM与SystemVerilog为验证人员开发面向对象的验证环境提供了方便,但是因为此类验证方法使用时间并不太长,很多工程实际问题并没有统一明确的解决方案,比如如何从之前的基于Verilog或者基于C的验证环境无缝过度到新的验证环境。大公司都各自有不同的处理方法,小一些的设计团队,甚至畏惧新技术带来的挑战,仍然固守落后的方法,不愿意尝试效率更高,但是需要承担一些风险的方法。
很多带有微处理器的SOC设计项目所使用的传统的验证环境,是基于Verilog模型以及类似C驱动程序的测试向量组成的。C程序模拟芯片中微处理器的启动程序,启动后对芯片中个组件的寄存器进行读写操作,将实际得到的寄存器值与期望值进行比较,判断测试是否通过。仿真时,C程序被编译为2进制文件,由Verilog测试平台读入到微处理器的存储器模型中,然后处理器开始执行C代码编译出的程序,模拟芯片的行为。此类验证环境基本是UVM标准环境出现前所有SOC设计项目的通用模型。对于大一些的项目,其中的C测试程序可能会有几千个。如果我们想升级这种验证环境为新的UVM环境,必然希望复用这些C代码编写的测试程序。
UVM没有此类问题的明确解决方案,但是鉴于实现这一复用有迫切需求,我们可以将基于SystemVerilog编写的UVM验证组件的功能进行扩展,使之能够完成此功能。基于此,现提供一种UVM验证环境中复用C程序测试向量的方法。
发明内容
本发明的技术任务是针对以上不足之处,提供一种实用性强、UVM验证环境中复用C程序测试向量的方法。
一种UVM验证环境中复用C程序测试向量的方法,其具体实现过程为:
通过对UVM验证组件增加DPI直接程序接口,使SOC测试向量能够驱动SV语言编写的UVM验证组件,并能在UVM验证环境中被复用。
所述复用C程序测试向量的具体过程为:
对已有的C程序测试向量进行分析;
对UVM验证环境功能进行扩充;
通过DPI接口,将UVM验证环境与C程序测试向量进行集成。
所述复用C程序测试向量的详细过程为:
对已有的C程序测试向量的底层寄存器操作进行分析;
编写与C程序中寄存器操作相应的SV DPI ;
编写UVM组件中sequence调用所需的辅助函数;
在UVM顶层test中编写调用C程序测试向量的激励;
完成UVM环境与C程序测试向量的集成。
C程序驱动UVM验证环境,施加激励到被测对象,其具体过程为:
UVM验证环境启动,执行测试用例中的设备驱动测试程序;
设定SV语言验证环境与C驱动中各种变量;
调用C语言驱动程序;
C语言驱动程序对寄存器、存储空间进行读写操作;
C程序到SV语言的映射程序调用DPI;
DPI设置SV环境中的各种变量;
在发送机构上启动device_driver_sequence,结束程序。
所述UVM环境与C程序测试向量的集成过程为:
启动device_driver_sequence发送sequence给被测对象dut;
UVM中的device_driver_sequence启动C程序中的c_device_driver;
c_device_driver调用SV DPI中的读写函数;
device_driver_sequence中的读写函数发送数据给被测对象dut;
通过以上在SV语言与C程序间的来回切换,使得C程序c_device_driver控制UVM组件中device_driver_sequence向被测对象发送数据。
所述C程序在调用SV DPI时,通过序列号记录器找到需要发送数据的sequence,并且让这个sequence发送数据,该序列号记录器为一个构建的列表,存入每个sequence的唯一序列号,当UVM中的device_driver_sequence启动C程序中的c_device_driver时,将这个序列号记录下来,而在c_device_driver的读写函数需要回调sequence的读写时,使用这个序列号查找到相应的sequence。
本发明的一种UVM验证环境中复用C程序测试向量的方法,具有以下优点:
本发明提出的一种UVM验证环境中复用C程序测试向量的方法,使得旧有的基于类似C驱动程序的传统SOC测试向量,不必做改动,就能被集成到基于UVM验证组件搭建的验证环境中得到继续使用,节省了重新开发测试向量的时间,提高了老旧验证环境的复用效率,安全高效,实用性强,易于推广。
附图说明
附图1为UVM验证环境中复用C程序测试向量的结构图。
附图2为UVM验证环境中复用C程序测试向量仿真进程图。
附图3为UVM顶层test的代码图。
附图4为device_driver_sequence启动C程序中的c_device_driver代码图。
附图5为c_device_driver中启动SV DPI读写程序。
附图6为device_driver_sequence中的读写程序。
附图7为查找sequence的序列号记录器。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
本发明提供一种UVM验证环境中复用C程序测试向量的方法,如附图1、图2所示,其具体实现过程为,
通过对UVM验证组件增加DPI直接程序接口,使SOC测试向量能够驱动SystemVerilog编写的UVM验证组件,并能在UVM验证环境中被复用。
所述复用C程序测试向量的具体过程为:
对已有的C程序测试向量进行分析;
对UVM验证环境功能进行扩充;
通过DPI接口,将UVM验证环境与C程序测试向量进行集成。
所述复用C程序测试向量的详细过程为:
对已有的C程序测试向量的底层寄存器操作进行分析;
编写与C程序中寄存器操作相应的SV DPI ;
编写UVM组件中sequence调用所需的辅助函数;
在UVM顶层test中编写调用C程序测试向量的激励;
完成UVM环境与C程序测试向量的集成。
C程序驱动UVM验证环境,施加激励到被测对象,其具体过程为:
UVM验证环境启动,执行测试用例中的设备驱动测试程序;
设定SV语言验证环境与C驱动中各种变量;
调用C语言驱动程序;
C语言驱动程序对寄存器、存储空间进行读写操作;
C程序到SV语言的映射程序调用DPI;
DPI设置SV环境中的各种变量;
在发送机构上启动device_driver_sequence,执行device_driver_test的run_phase,结束程序。
所述UVM环境与C程序测试向量的集成过程为:
启动device_driver_sequence发送sequence给被测对象dut,该步骤可通过编码实现,代码如附图3所示;
UVM中的device_driver_sequence启动C程序中的c_device_driver,该步骤可通过编码实现,代码如附图4所示;
c_device_driver调用SV DPI中的读写函数,该步骤可通过编码实现,代码如附图5所示;
device_driver_sequence中的读写函数发送数据给被测对象dut,该步骤可通过编码实现,代码如附图6所示;
通过以上在SV语言与C程序间的来回切换,使得C程序c_device_driver控制UVM组件中device_driver_sequence向被测对象发送数据。
之所以有以上多次的频繁切换,是由于UVM验证环境是由SystemVerilog语言实现,而一般SOC驱动程序由C程序实现,这2种程序是无法使用同一编译器进行统一编译的。但是环境中必须使这2种程序配合同步执行。C程序与SystemVerilog间程序最方便的接口就是DPI(直接程序接口),我们必须有效使用这个接口,使2种程序能够配合执行,使已有的C驱动程序能够驱动UVM环境中的序列,实现对之前环境的有效复用。
当然,这里还有一个问题,就是如何让C程序在调用SV DPI时,能够找到那个需要发送数据的sequence,并且让这个正确的sequence发送数据。这里需要构建一个列表,存入每个sequence的唯一序列号,当UVM中的device_driver_sequence启动C程序中的c_device_driver时,将这个序列号记录下来,而在c_device_driver的读写函数需要回调sequence的读写时,使用这个序列号查找到那个相应的sequence既可。这里为了实现这个功能,编写了一个专门的序列号记录器,该序列号记录器可通过编码实现,代码如附图7所示。其中set功能将pid号码记录在表中,get功能通过这个pid找到相应的sequence。
通过以上的功能扩展,一个标准的UVM组件就可以被一个标准的C驱动程序所驱动,能够实现遗留的测试向量在新的验证环境中被复用了。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种UVM验证环境中复用C程序测试向量的方法的权利要求书的且任何所述技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。
Claims (6)
1.一种UVM验证环境中复用C程序测试向量的方法,其特征在于,其具体实现过程为:通过对UVM验证组件增加DPI直接程序接口,使SOC测试向量能够驱动SV语言编写的UVM验证组件,并能在UVM验证环境中被复用。
2.根据权利要求1所述的一种UVM验证环境中复用C程序测试向量的方法,其特征在于,所述复用C程序测试向量的具体过程为:
对已有的C程序测试向量进行分析;
对UVM验证环境功能进行扩充;
通过DPI接口,将UVM验证环境与C程序测试向量进行集成。
3.根据权利要求2所述的一种UVM验证环境中复用C程序测试向量的方法,其特征在于,所述复用C程序测试向量的详细过程为:
对已有的C程序测试向量的底层寄存器操作进行分析;
编写与C程序中寄存器操作相应的SV DPI ;
编写UVM组件中sequence调用所需的辅助函数;
在UVM顶层test中编写调用C程序测试向量的激励;
完成UVM环境与C程序测试向量的集成。
4.根据权利要求3所述的一种UVM验证环境中复用C程序测试向量的方法,其特征在于,C程序驱动UVM验证环境,施加激励到被测对象,其具体过程为:
UVM验证环境启动,执行测试用例中的设备驱动测试程序;
设定SV语言验证环境与C驱动中各种变量;
调用C语言驱动程序;
C语言驱动程序对寄存器、存储空间进行读写操作;
C程序到SV语言的映射程序调用DPI;
DPI设置SV环境中的各种变量;
在发送机构上启动device_driver_sequence,结束程序。
5.根据权利要求3或4所述的一种UVM验证环境中复用C程序测试向量的方法,其特征在于,所述UVM环境与C程序测试向量的集成过程为:
启动device_driver_sequence发送sequence给被测对象dut;
UVM中的device_driver_sequence启动C程序中的c_device_driver;
c_device_driver调用SV DPI中的读写函数;
device_driver_sequence中的读写函数发送数据给被测对象dut;
通过以上在SV语言与C程序间的来回切换,使得C程序c_device_driver控制UVM组件中device_driver_sequence向被测对象发送数据。
6.根据权利要求5所述的一种UVM验证环境中复用C程序测试向量的方法,其特征在于,所述C程序在调用SV DPI时,通过序列号记录器找到需要发送数据的sequence,并且让这个sequence发送数据,该序列号记录器为一个构建的列表,存入每个sequence的唯一序列号,当UVM中的device_driver_sequence启动C程序中的c_device_driver时,将这个序列号记录下来,而在c_device_driver的读写函数需要回调sequence的读写时,使用这个序列号查找到相应的sequence。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510269858.2A CN104899138A (zh) | 2015-05-25 | 2015-05-25 | 一种uvm验证环境中复用c程序测试向量的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510269858.2A CN104899138A (zh) | 2015-05-25 | 2015-05-25 | 一种uvm验证环境中复用c程序测试向量的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104899138A true CN104899138A (zh) | 2015-09-09 |
Family
ID=54031813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510269858.2A Pending CN104899138A (zh) | 2015-05-25 | 2015-05-25 | 一种uvm验证环境中复用c程序测试向量的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104899138A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708687A (zh) * | 2015-11-12 | 2017-05-24 | 青岛海信电器股份有限公司 | 一种基于可执行文件的芯片验证方法和装置 |
CN108829382A (zh) * | 2018-06-05 | 2018-11-16 | 北京中电华大电子设计有限责任公司 | 一种用Python建立参考模型提高自动化验证平台效率的方法 |
CN112199911A (zh) * | 2020-10-16 | 2021-01-08 | 天津飞腾信息技术有限公司 | 一种soc系统级验证环境的激励生成方法 |
CN112417797A (zh) * | 2020-11-27 | 2021-02-26 | 海光信息技术股份有限公司 | 寄存器配置同步方法、验证平台系统及配置方法、装置 |
CN113866586A (zh) * | 2020-06-30 | 2021-12-31 | 澜至电子科技(成都)有限公司 | 一种系统级芯片的验证平台及验证方法 |
US11520968B2 (en) | 2020-06-30 | 2022-12-06 | Montage Lz Technologies (Chengdu) Co., Ltd. | Verification platform for system on chip and verification method thereof |
CN117291145A (zh) * | 2023-11-24 | 2023-12-26 | 之江实验室 | 片上系统的验证方法、系统和电子装置 |
CN117648263A (zh) * | 2024-01-29 | 2024-03-05 | 苏州联芸科技有限公司 | 待测设计的测试方法、装置、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6718537B1 (en) * | 2000-08-10 | 2004-04-06 | International Business Machines Corporation | Method and system to stress interactions in a test machine |
CN101968770A (zh) * | 2010-11-01 | 2011-02-09 | 北京航空航天大学 | 一种可复用的嵌入式软件测试开发方法和系统 |
CN102629232A (zh) * | 2012-01-09 | 2012-08-08 | 北京航空航天大学 | 引入测试有效性的软件可靠性验证测试方法 |
-
2015
- 2015-05-25 CN CN201510269858.2A patent/CN104899138A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6718537B1 (en) * | 2000-08-10 | 2004-04-06 | International Business Machines Corporation | Method and system to stress interactions in a test machine |
CN101968770A (zh) * | 2010-11-01 | 2011-02-09 | 北京航空航天大学 | 一种可复用的嵌入式软件测试开发方法和系统 |
CN102629232A (zh) * | 2012-01-09 | 2012-08-08 | 北京航空航天大学 | 引入测试有效性的软件可靠性验证测试方法 |
Non-Patent Citations (2)
Title |
---|
FEDOR PUTRYA: ""Method of Free C++ Code Migration Between SoC Level Tests and Standalone IP-Core UVM Environments"", 《DESIGN & TEST SYMPOSIUM(EWDTS),2014 EAST-WEST》 * |
RICH EDELMAN等: ""UVM SchmooVM – I Want My C Tests!"", 《DVCON 2014 PROCEEDINGS ARCHIVED SESSION 1P》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708687B (zh) * | 2015-11-12 | 2020-03-17 | 青岛海信电器股份有限公司 | 一种基于可执行文件的芯片验证方法和装置 |
CN106708687A (zh) * | 2015-11-12 | 2017-05-24 | 青岛海信电器股份有限公司 | 一种基于可执行文件的芯片验证方法和装置 |
CN108829382A (zh) * | 2018-06-05 | 2018-11-16 | 北京中电华大电子设计有限责任公司 | 一种用Python建立参考模型提高自动化验证平台效率的方法 |
CN108829382B (zh) * | 2018-06-05 | 2021-09-21 | 北京中电华大电子设计有限责任公司 | 一种用Python建立参考模型提高自动化验证平台效率的方法 |
US11520968B2 (en) | 2020-06-30 | 2022-12-06 | Montage Lz Technologies (Chengdu) Co., Ltd. | Verification platform for system on chip and verification method thereof |
CN113866586B (zh) * | 2020-06-30 | 2024-04-12 | 澜至电子科技(成都)有限公司 | 一种系统级芯片的验证平台及验证方法 |
CN113866586A (zh) * | 2020-06-30 | 2021-12-31 | 澜至电子科技(成都)有限公司 | 一种系统级芯片的验证平台及验证方法 |
US11514225B2 (en) | 2020-06-30 | 2022-11-29 | Montage Lz Technologies (Chengdu) Co., Ltd. | Verification platform for system on chip and verification method thereof |
CN112199911A (zh) * | 2020-10-16 | 2021-01-08 | 天津飞腾信息技术有限公司 | 一种soc系统级验证环境的激励生成方法 |
CN112199911B (zh) * | 2020-10-16 | 2023-07-04 | 飞腾信息技术有限公司 | 一种soc系统级验证环境的激励生成方法 |
CN112417797B (zh) * | 2020-11-27 | 2023-09-26 | 海光信息技术(成都)有限公司 | 寄存器配置同步方法、验证平台系统及配置方法、装置 |
CN112417797A (zh) * | 2020-11-27 | 2021-02-26 | 海光信息技术股份有限公司 | 寄存器配置同步方法、验证平台系统及配置方法、装置 |
CN117291145A (zh) * | 2023-11-24 | 2023-12-26 | 之江实验室 | 片上系统的验证方法、系统和电子装置 |
CN117648263A (zh) * | 2024-01-29 | 2024-03-05 | 苏州联芸科技有限公司 | 待测设计的测试方法、装置、电子设备和存储介质 |
CN117648263B (zh) * | 2024-01-29 | 2024-05-10 | 苏州联芸科技有限公司 | 待测设计的测试方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104899138A (zh) | 一种uvm验证环境中复用c程序测试向量的方法 | |
CN106156278B (zh) | 一种数据库数据读写方法和装置 | |
CN106095620B (zh) | 一种嵌入式Linux存储分区的开发方法 | |
CN103064403B (zh) | 一种ecu硬件在环仿真自动化测试方法和系统 | |
CN105204913A (zh) | 一种在Android操作系统上运行Linux应用程序的方法及系统 | |
CN104298534B (zh) | 基于Lua语言的编程方法和装置 | |
CN109255107A (zh) | 组态软件处理方法、装置、计算机设备和存储介质 | |
CN101566943A (zh) | 一种控制终端软件功能的方法、终端和系统 | |
CN104572238A (zh) | 一种高效的生成可执行软件包的方法及系统 | |
CN109445845A (zh) | 接口调用方法、装置、计算机设备和存储介质 | |
CN112506517A (zh) | 一种裸机系统级激励交叉编译系统及编译方法 | |
CN101334737A (zh) | 一种嵌入式设备的启动或复位方法 | |
CN101520733A (zh) | 装载类的方法和装置及重组类存档文件方法 | |
CN107544813B (zh) | 一种静态库配置的切换方法和系统 | |
KR20200010396A (ko) | 집적 회로 테스트 장치 및 방법 | |
CN102141915B (zh) | 一种基于RTLinux的设备实时控制方法 | |
CN116185742A (zh) | 处理器芯片性能测试方法和测试装置 | |
CN110750579A (zh) | 一种云数据库Redis的高效内存分布方法及系统 | |
CN103677790A (zh) | 软件的函数修改方法 | |
CN102542525A (zh) | 一种信息处理设备以及信息处理方法 | |
CN101876898B (zh) | 一种com组件的注册方法及装置 | |
CN111123084B (zh) | 一种基于tcl语言的数字电路快速测试方法 | |
CN107315587B (zh) | 一种基于二次链接的航天器在轨维护注入码生成方法 | |
CN106250120A (zh) | 一种基于高通平台的系统的编译方法 | |
Liu et al. | RISC Compiler and Simulator, Alpha Release V0. 2.1: Out-of-Order Parallel Simulatable SystemC Subset |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150909 |
|
WD01 | Invention patent application deemed withdrawn after publication |