CN114840254A - 使用c语言对uvm环境中寄存器的读写访问方法 - Google Patents
使用c语言对uvm环境中寄存器的读写访问方法 Download PDFInfo
- Publication number
- CN114840254A CN114840254A CN202210418237.6A CN202210418237A CN114840254A CN 114840254 A CN114840254 A CN 114840254A CN 202210418237 A CN202210418237 A CN 202210418237A CN 114840254 A CN114840254 A CN 114840254A
- Authority
- CN
- China
- Prior art keywords
- register
- environment
- uvm
- language
- access
- 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
- 238000000034 method Methods 0.000 title claims abstract description 104
- 238000012795 verification Methods 0.000 claims abstract description 47
- 238000004806 packaging method and process Methods 0.000 claims abstract description 12
- 238000013461 design Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 240000007643 Phytolacca americana Species 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种使用C语言对UVM环境中寄存器的读写访问方法,包含如下子步骤:搭建UVM验证环境与C语言环境;在UVM环境下封装好供C语言环境下调用的寄存器访问的接口方法,并包含封装到package可重用包文件中去;在C语言环境中创建第一访问方法,用于调用上述若干个接口方法;在C语言环境中编写控制程序,用于调用第一访问方法来对目标寄存器进行读写访问;在UVM验证环境中启动所述控制程序从而最终完成对目标寄存器的读写访问。本发明解决了现有技术不支持直接使用C语言来对DUT的寄存器进行读写访问的问题。
Description
技术领域
本发明涉及芯片验证技术领域,特别涉及一种使用C语言对UVM环境中寄存器的读写访问方法。
背景技术
现有技术中,如图1所示, RTL(寄存器传输级,Register transfer level)设计内部都会使用寄存器来参与完成一些逻辑功能的运算,因此我们对该RTL设计进行验证的时需要对其内部的寄存器进行建模,以尽可能模拟RTL内部的功能逻辑,从而达到帮助验证开发人员来判断RTL设计功能的正确性的目的。
使用UVM寄存器模型(register_model)可以方便的对DUT(Design under test,待测设计,即上述RTL设计)内部的寄存器以及存储进行建模。创建寄存器模型后,可以在序列(sequence)和组件(component)里通过获取寄存器模型的句柄,调用寄存器模型里的接口方法来完成对寄存器的读写访问,如图1所示,左边的sequence里通过调用寄存器模型里的接口方法来实现对寄存器的读写访问。也可以像右侧那里直接启动寄存器总线的sequence,即通过操作总线来实现对寄存器的读写访问。UVM(Universal VerificationMethodology)作为一种通用的验证方法学,因此需要能够处理各种类型的事务请求sequence_item。在综合了各种类型的事务请求sequence_item的特征后, UVM预先定义好了一种事务请求sequence_item,即uvm_reg_item。然后通过适配器adapter的bus2reg()及 reg2bus()方法实现uvm_reg_item与目标总线协议的bus_item的转换,最后由sequencer和driver驱动给 DUT(Device Under Test),从而最终完成对目标寄存器的读写。
现有技术中存在无法满足芯片验证的要求的情况。例如,我们在对一块SOC(System on chip)芯片进行系统级全片验证时,通常使用C函数激励实现,然后将其编译成CPU能够运行的指令,再由该CPU通过一系列的总线接口,最终按照一定的访问时序来完成对目标寄存器的读写。因为一块芯片最终会给软件开发人员来开发使用,软件人员使用C语言编写代码,然后通过工具编译成相应的指令来使用这块芯片上提供的功能,因此为了更全面的对该芯片进行验证,我们需要在全片级层面上通过模拟软件人员使用的方式来对该芯片的使用场景进行验证。而现有方案并不支持直接使用C语言来对DUT的寄存器进行读写访问,因此现有方案无法满足我们对芯片验证的要求。
发明内容
根据本发明实施例,提供了一种使用C语言对UVM环境中寄存器的读写访问方法,包含如下子步骤:
搭建UVM验证环境与C语言环境;
在UVM验证环境下封装好供C语言环境下调用的寄存器访问的若干个接口方法,并将若干个接口方法包含封装到UVM验证环境的package可重用包文件中去;
在C语言环境中创建第一访问方法,用于调用上述若干个接口方法;
在C语言环境中编写控制程序,用于调用第一访问方法对目标寄存器进行读写访问;
在UVM验证环境中启动所述控制程序,从而最终完成目标寄存器的读写访问。
进一步,在头文件reg_api.h中声明SystemVerilog语言原生的DPI接口文件以及在C环境下创建的第一访问方法。
进一步,在UVM验证环境中封装UVM验证环境的若干个接口方法,并包含封装若干个接口方法于UVM验证环境的package可重用包文件,包含如下子步骤:
在SystemVerilog语言环境下的c_stimulus.sv文件的顶部导入UVM验证环境的库文件,用于封装若干个接口方法;
在c_stimulus.sv文件中创建set_c_stimulus_register_block方法,将UVM验证环境中的寄存器模型的句柄传递至若干个接口方法中;
在c_stimulus.sv文件中创建get_register_from_address方法,用于获取目标寄存器;
在c_stimulus.sv文件中创建第二访问方法,用于访问目标寄存器;
封装若干个接口方法于UVM验证环境中,用于在UVM验证环境中调用第一访问方法。
进一步,get_register_from_address方法根据目标寄存器在总线上的地址在寄存器模型中获取目标寄存器。
进一步,c_stimulus.sv文件中创建第二访问方法,用于访问目标寄存器,包含如下子步骤:
在c_stimulus.sv文件中创建第二访问方法,调用get_register_from_address方法,获取目标寄存器的句柄;
使用目标寄存器的句柄调用UVM验证环境原生的寄存器的读写访问方法访问目标寄存器。
根据本发明实施例的使用C语言对UVM环境中寄存器的读写访问方法,解决了现有技术不支持直接使用C语言来对DUT的寄存器进行读写访问的问题。
要理解的是,前面的一般描述和下面的详细描述两者都是示例性的,并且意图在于提供要求保护的技术的进一步说明。
附图说明
图1为现有技术的原理图;
图2为根据本发明实施例使用C语言对UVM环境中寄存器的读写访问方法的原理图;
图3为根据本发明实施例使用C语言对UVM环境中寄存器的读写访问方法的步骤流程图;
图4为图3中步骤S2的子步骤的流程图;
图5为图4中步骤S24的子步骤的流程图。
具体实施方式
以下将结合附图,详细描述本发明的优选实施例,对本发明做进一步阐述。
首先,将结合图2~5描述根据本发明实施例的使用C语言对UVM环境中寄存器的读写访问方法,用于芯片验证,其应用场景广阔。
如图2~4所示,本发明实施例的使用C语言对UVM环境中寄存器的读写访问方法,包含如下子步骤:
在S1中,如图2~3所示,搭建UVM验证环境与C语言环境。
在S2中,如图2~3所示,在UVM验证环境下封装好供C语言环境下调用的寄存器访问的若干个接口方法,并将若干个接口方法包含封装到UVM验证环境的package可重用包文件中去。
在S3中,如图2~3所示,在C语言环境中创建第一访问方法,用于调用上述若干个接口方法。
在S4中,如图2~3所示,在C语言环境中编写控制程序,控制程序为C程序,用于调用第一访问方法对目标寄存器进行读写访问。
在S5中,如图2~3所示,在UVM验证环境中启动所述控制程序,从而最终完成对目标寄存器的读写访问。
进一步,在头文件reg_api.h中声明SystemVerilog语言原生的DPI接口文件以及在C环境下创建的第一访问方法。
进一步,在UVM验证环境中封装UVM验证环境的若干个接口方法,并包含封装若干个接口方法于UVM验证环境的package可重用包文件,包含如下子步骤。
在S21中,如图2、4所示,在SystemVerilog语言环境下的c_stimulus.sv文件的顶部导入UVM验证环境的库文件,用于使用UVM验证环境中原生的寄存器访问方法来封装若干个接口方法。
在S22中,如图2、4所示,在c_stimulus.sv文件中创建set_c_stimulus_register_block方法,将UVM验证环境中的寄存器模型的句柄传递至若干个接口方法中。
在S23中,如图2、4所示,在c_stimulus.sv文件中创建get_register_from_address方法,用于获取目标寄存器。
在S24中,如图2、4所示,在c_stimulus.sv文件中创建第二访问方法,用于访问目标寄存器,第二访问方法首先调用get_register_from_address方法来获取目标寄存器的句柄,然后使用目标寄存器的句柄来调用UVM验证环境原生的寄存器读写访问方法来实现目标寄存器的访问。
进一步,在c_stimulus.sv文件中创建第二访问方法,用于访问目标寄存器,包含如下子步骤:
在S241中,如图5所示,在c_stimulus.sv文件中创建第二访问方法,调用get_register_from_address方法,获取目标寄存器的句柄。
在S242中,如图5所示,使用目标寄存器的句柄调用UVM验证环境原生的寄存器的读写访问方法访问目标寄存器。
在S25中,如图2、4所示,封装若干个接口方法于UVM验证环境中,用于在UVM验证环境中调用第一访问方法,若干个接口方法包括:
c_reg_write,用于模拟对寄存器的写(write)访问,通过access_type参数来决定是前门还是后门访问。
c_reg_read,用于模拟对寄存器的读(read)访问,通过access_type参数来决定是前门还是后门访问。
c_reg_poke,用于模拟对寄存器的后门写(peek)访问。
c_reg_peek,用于模拟对寄存器的后门读(poke)访问。
c_reg_get,用于模拟对寄存器的期望值的获取。
c_reg_set,用于模拟对寄存器的期望值的设置。
c_reg_update,用于模拟对寄存器模型中镜像值和DUT中实际寄存器的值进行更新。
c_reg_get_mirrored_value,用于获取寄存器模型中镜像值。
c_reg_randomize,用于对寄存器模型中的期望值进行随机。
c_reg_predict,用于更新寄存器模型中的期望值和镜像值。
c_reg_reset,用于将寄存器模型中的期望值和镜像值设置为配置时的复位值。
c_reg_get_reset,用于返回寄存器模型配置时的复位值。
进一步,get_register_from_address方法根据目标寄存器在总线上的地址在寄存器模型中搜索,然后返回目标寄存器的句柄从而获得目标寄存器。
如图2所示,本实施例通过SystemVerilog语言提供了其与C语言交互的DPI接口,可以实现与C语言之间的联合编译开发,而UVM通用验证方法学是基于SystemVerilog语言来进行开发的,因此我们可以利用DPI接口实现用C语言对在UVM环境中的寄存器的读写访问;本实施例在UVM通用验证方法学中的寄存器模型提供了一系列的对寄存器读写访问方法,因此我们可以在C语言环境下使用DPI接口来提供类似相应的访问接口从而达到直接在UVM验证环境中调用寄存器读写访问方法一样的效果,充分考虑本方法的通用性,将其封装成通用方法学的库文件,以方便在其他类似项目中使用,提升开发效率。
以上,参照图2~5描述了根据本发明实施例的使用C语言对UVM环境中寄存器的读写访问方法,解决了现有技术不支持直接使用C语言来对DUT的寄存器进行读写访问的问题。
需要说明的是,在本说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包含……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
Claims (5)
1.一种使用C语言对UVM环境中寄存器的读写访问方法,其特征在于,包含如下子步骤:
搭建UVM验证环境与C语言环境;
在所述UVM验证环境下封装好供所述C语言环境下调用的寄存器访问的若干个接口方法,并将所述若干个接口方法包含封装到所述UVM验证环境的package可重用包文件中去;
在所述C语言环境中创建第一访问方法,用于调用所述若干个接口方法;
在所述C语言环境中编写控制程序,用于调用所述第一访问方法对目标寄存器进行读写访问;
在所述UVM验证环境中启动所述控制程序,从而最终完成所述目标寄存器的读写访问。
2.如权利要求1所述使用C语言对UVM环境中寄存器的读写访问方法,其特征在于,在头文件reg_api.h中声明SystemVerilog语言原生的DPI接口文件以及在C环境下创建的第一访问方法。
3.如权利要求1所述使用C语言对UVM环境中寄存器的读写访问方法,其特征在于,在所述UVM验证环境中封装所述UVM验证环境的若干个接口方法,并包含封装所述若干个接口方法于所述UVM验证环境的package可重用包文件,包含如下子步骤:
在SystemVerilog语言环境下的c_stimulus.sv文件的顶部导入所述UVM验证环境的库文件,用于封装所述若干个接口方法;
在所述c_stimulus.sv文件中创建set_c_stimulus_register_block方法,将所述UVM验证环境中的寄存器模型的句柄传递至所述若干个接口方法中;
在所述c_stimulus.sv文件中创建get_register_from_address方法,用于获取目标寄存器;
在所述c_stimulus.sv文件中创建第二访问方法,用于访问所述目标寄存器;
封装所述若干个接口方法于所述UVM验证环境中,用于在所述UVM验证环境中调用所述第一访问方法。
4.如权利要求3所述使用C语言对UVM环境中寄存器的读写访问方法,其特征在于,所述get_register_from_address方法根据所述目标寄存器在总线上的地址在所述寄存器模型中获取所述目标寄存器。
5.如权利要求3所述使用C语言对UVM环境中寄存器的读写访问方法,其特征在于,在所述c_stimulus.sv文件中创建第二访问方法,用于访问所述目标寄存器,包含如下子步骤:
在所述c_stimulus.sv文件中创建第二访问方法,调用所述get_register_from_address方法,获取所述目标寄存器的句柄;
使用所述目标寄存器的句柄调用所述UVM验证环境原生的寄存器的读写访问方法访问所述目标寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210418237.6A CN114840254A (zh) | 2022-04-21 | 2022-04-21 | 使用c语言对uvm环境中寄存器的读写访问方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210418237.6A CN114840254A (zh) | 2022-04-21 | 2022-04-21 | 使用c语言对uvm环境中寄存器的读写访问方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114840254A true CN114840254A (zh) | 2022-08-02 |
Family
ID=82565369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210418237.6A Pending CN114840254A (zh) | 2022-04-21 | 2022-04-21 | 使用c语言对uvm环境中寄存器的读写访问方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114840254A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627496A (zh) * | 2023-03-08 | 2023-08-22 | 南京金阵微电子技术有限公司 | 基于uvm的寄存器模型构建、验证方法、系统与电子设备 |
-
2022
- 2022-04-21 CN CN202210418237.6A patent/CN114840254A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627496A (zh) * | 2023-03-08 | 2023-08-22 | 南京金阵微电子技术有限公司 | 基于uvm的寄存器模型构建、验证方法、系统与电子设备 |
CN116627496B (zh) * | 2023-03-08 | 2023-12-29 | 南京金阵微电子技术有限公司 | 基于uvm的寄存器模型构建、验证方法、系统与电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115841089B (zh) | 一种基于uvm的系统级芯片验证平台及验证方法 | |
US7366650B2 (en) | Software and hardware simulation | |
US6658633B2 (en) | Automated system-on-chip integrated circuit design verification system | |
US8402438B1 (en) | Method and system for generating verification information and tests for software | |
US5923567A (en) | Method and device for test vector analysis | |
CN109726507B (zh) | 一种高效的多功能验证方法 | |
KR20010067370A (ko) | SoC 설계 검증을 위한 방법 및 장치 | |
US7647583B2 (en) | Method and apparatus for emulating a hardware/software system using a computer | |
US20090164193A1 (en) | Method and System for Verifying Electronic Designs Having Software Components | |
CN112417798B (zh) | 一种时序测试方法、装置、电子设备及存储介质 | |
Jindal et al. | Verification of transaction-level SystemC models using RTL testbenches | |
US20020173942A1 (en) | Method and apparatus for design validation of complex IC without using logic simulation | |
US5966306A (en) | Method for verifying protocol conformance of an electrical interface | |
CN114840254A (zh) | 使用c语言对uvm环境中寄存器的读写访问方法 | |
US6634012B2 (en) | Design verification by symbolic simulation using a native hardware description language | |
US20050144436A1 (en) | Multitasking system level platform for HW/SW co-verification | |
US20030145290A1 (en) | System for controlling external models used for verification of system on a chip (SOC) interfaces | |
Patel et al. | Model-driven validation of SystemC designs | |
US6868545B1 (en) | Method for re-using system-on-chip verification software in an operating system | |
Feng et al. | Design and application of reusable SoC verification platform | |
EP1508108A2 (en) | Assertion-based transaction recording | |
CN115391181A (zh) | 一种soc芯片的验证方法 | |
CN114116346A (zh) | 基于UVM的sequence反馈机制的激励控制方法 | |
Carbognani et al. | Qualifying precision of abstract systemc models using the systemc verification standard | |
US11295051B2 (en) | System and method for interactively controlling the course of a functional simulation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Country or region after: China Address after: 3 / F, 665 Zhangjiang Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai Applicant after: Yunhe Zhiwang (Shanghai) Technology Co.,Ltd. Address before: 311203 floor 12, building 2, Purple Orange International Center, No. 39, Jincheng Road, Xiaoshan District, Hangzhou, Zhejiang Province Applicant before: Hangzhou yunhezhi Network Technology Co.,Ltd. Country or region before: China |
|
CB02 | Change of applicant information |