CN110674616A - 一种基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法 - Google Patents
一种基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法 Download PDFInfo
- Publication number
- CN110674616A CN110674616A CN201910886194.2A CN201910886194A CN110674616A CN 110674616 A CN110674616 A CN 110674616A CN 201910886194 A CN201910886194 A CN 201910886194A CN 110674616 A CN110674616 A CN 110674616A
- Authority
- CN
- China
- Prior art keywords
- data
- full
- matlab
- systemverilog
- algorithm
- 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.)
- Granted
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法,整个验证方法分为2个分支,2个分支并行运行,互相的交互依靠全局变量控制;环境控制部分根据给定的或者随即产生的随机种子,并根据设定好的所有约束产生所有需要的配置参数和原始待测数据,其中分支一为模型通路,分支二为真实数据通路。本发明通过两条通路并行计算,无论仿真工具先进行哪个通路的计算都可以得到正确结果,并且所有的仿真时间都消耗在了真实数据通路中,模型通路仅仅占用一些仿真CPU计算时间,极大加速仿真速度。
Description
技术领域
本发明涉及一种基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法,更具体的说是一种使用Systemverilog语言作为环境语言搭建的仿真平台,通过DPI-C调用C中间接口层模型,然后通过调用C-Matlab API 实现的全自动,无额外文件开销、无图形化、无干预的全随机验证方法。
背景技术
在许多集成电路领域都需要使用算法模型进行电路的功能验证,以便保证硬件电路的实现和算法实现完全一致。例如通信、人工智能领域等。且目前大部分算法模型皆用Matlab等语言实现。此类电路验证方法主要集中在以下几个方面:
1、使用标准的UVM(Universal Verification Methodology)系统进行搭建,并将算法用Systemverilog实现后集成;
2、使用其他语言实现的算法模型,但是和验证平台互相独立,通过互相产生中间结果文件,然后读入仿真平台进行比对;
3、使用算法模型输出特定数量源文件和结果文件,然后灌入到仿真平台进行激励产生和结果比对;
4、使用算法平台,例如MATLAB等,自带仿真器调入RTL(Register Transfer Level)待测电路进行仿真,其平台需要用算法语言,例如MATLAB等实现;
5、通过Systemverilog和C的DPI-C接口传入部分参数和数据,然后调用Python等语言。
目前进行复杂算法验证主要集中在以上几个方面。以上的方案利用了现在流行的Systemverilog、System C等语言和UVM搭建仿真平台。通过文件或者传递参数的方式进行仿真,从而达到利用算法模型验证硬件电路的目的。
现有技术虽然实现较为简单,但是整个过程中存在需要编写大量脚本、使用图像化界面、产生额外文件、无法实时同步计算实时打印信息、调试复杂等缺点。下面一一对上述问题进行说明:
1、使用UVM平台对调试有很高的门槛,且前期搭建需要很长时间,激励和采集信号也使用类似的任务方式,需要对UVM的相关知识有很高的要求,后续接替的工程师也需要花大量时间进行平台熟悉。算法部分使用Systemverilog进行编写,因此需要算法工程师熟悉此语言,或者验证工程师重新移植到此平台上。这些都对整个算法产生了更改和变数。
2、如果仿真循环数很大,会造成很多额外文件的产生,拖累整个系统,并造成调试的难度。
3、随机化受限,只能对特定数目或者特定源数据进行仿真,无法保证覆盖所有参数和数据,容易漏掉某些极端情况,且需要进行人工干预。
4、需要使用算法语言,例如Matlab等,的自带平台进行集成和仿真。因为有图形界面或者算法语言平台的介入,导致拖慢系统仿真速度和需要额外平台经验。
5、目前在算法领域如通信中,大部分算法使用Matlab,因此需要算法的重写移植,并且无法实现Matlab中的图形化显示数据。Python数据接口较为复杂。
发明内容
为了解决上述技术问题,本发明的目的是提供一种基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法。
为解决上述技术问题,本发明采用如下技术方案:
一种基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法,整个验证方法分为2个分支,2个分支并行运行,互相的交互依靠全局变量控制,具体如下:
环境控制部分根据给定的或者随即产生的随机种子,并根据设定好的所有约束产生所有需要的配置参数和原始待测数据;
分支一、模型通路:
1)通过DPI-C将上述参数和数据全部传递给C中间层,这些数据会经过数据转换,成为C识别的数据格式;所有的数据都可以在调试需要时在宏的控制下打印到命令行或者生成文件;
2)C中间层通过调用C-Matlab引擎(Matlab仅使用浮点数实现全功能数据格式,在传入和传出参数和数据过程中大大简化流程),生成Matlab所用的double型数据,并且将参数和数据转化成double型数据赋值给Matlab变量,且其中并没有精度损失;
3)通过调用Matlab函数,将所有参数和数据传递给Matlab算法模型;
4)算法模型收到参数和数据,更新内部变量,进行计算;
5)算法模型将结果数据通过指针的方式回传给C中间层,数据精度依旧没有损失;
6)C中间层将收到的数据通过指针的方式回传给仿真平台;
7)Systemverilog收到C中间层回传的数据,将他们送到数据自动对比模块;
8)自动对比模块拿到模型计算后的数据,和硬件电路产生的结果进行自动比对,如有错误,则打印错误数据;
分支二、真实数据通路:
1)将随机产生的上述参数和数据按照硬件电路的时序配置到电路中。
2)待电路计算完毕,返回相应计算结果。
3)将结果传递给自动对比模块进行数据比对验证。
进一步的,所述分支一的步骤3)并不消耗仿真时间,不会调用图形界面,不会产生额外文件。
进一步的,所述分支一的步骤4)过程中如需调试,同样可以打开打印和生成数据文件,并且可以将数据以图形方式展现,有利于调试过程。
进一步的,所述分支一的步骤6)中也可以添加打印命令行或者文件的方式进行调试。
与现有技术相比,本发明的有益技术效果:
本发明对于算法的模型通路,不会消耗仿真时间,只是受限于服务器的性能。因此,当两条通路并行计算时,无论仿真工具先进行哪个通路的计算都可以得到正确结果,并且所有的仿真时间都消耗在了真实数据通路中,模型通路仅仅占用一些仿真CPU计算时间。使用两套串行的API作为参数和数据的接口。
所有参数和数据全部通过C-DPI和C-MATLAB API传递,无需产生中间文件,实时同步编译、运行和打印信息,无需额外干预、无额外系统开销,极大加速仿真速度。所有算法参数和数据可以在一定约束范围内全随机化,可以做到参数和数据的高覆盖率。算法接口调用简便且可方便扩展替换,只需要插入C作为中间层,算法只需封装成函数,并且支持所有与C有API接口的语言作为算法模型,例如MATLAB,C,PYTHON等。
全流程无需任何人工干预,无需中断仿真,也没有图形化界面调用和中间文件产生,都大大加快了仿真速度,减少了不必要的过程信息。只需要在Systemverilog平台调用进行仿真即可,保证了平台的一致性。保证了所有变化参数和数据的全随机,大大增加了覆盖率,覆盖极端和边界情况。算法易于替换,只需将算法封装成函数,函数参数包括所有数据和参数即可。因此易于进行多种算法的替换和混合仿真。
附图说明
下面结合附图说明对本发明作进一步说明。
图1为验证平台结构和数据流程图;
图2为Systemverilog和C中间层的DPI-C接口样例;
图3为C中间层和Matlab之间的API engine样例。
具体实施方式
本发明大致分为三个模块,Systemverilog平台层、C中间层和Matlab算法层。如图1所示展示了整个平台的层级和流程。
整个平台验证流程受控于环境脚本,所有的命令选项都来自于环境脚本,包括所进行的测试项目,循环数,覆盖率等等。
一种基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法,当平台启动时,整个数据流程分为2个分支(分别为如下的分支一和分支二),2个分支并行运行,互相的交互依靠全局变量控制,具体细节如下:
环境控制部分根据给定的或者随即产生的随机种子,并根据设定好的所有约束产生所有需要的配置参数和原始待测数据;
分之一、模型通路(使用圆圈+数字表示):
1)通过DPI-C将上述参数和数据全部传递给C中间层;这些数据会经过数据转换,成为C识别的数据格式,所有的数据都可以在调试需要时在宏的控制下打印到命令行或者生成文件;
2)C中间层通过调用C-Matlab引擎,生成Matlab所用的double型数据,并且将参数和数据转化成double型数据赋值给Matlab变量,且其中并没有精度损失;
3)通过调用Matlab函数,将所有参数和数据传递给Matlab算法模型,此步骤并不消耗仿真时间,不会调用图形界面,不会产生额外文件,因此大大加速了仿真进程;
3)算法模型收到参数和数据,更新内部变量,进行计算;该过程中如需调试,同样可以打开打印和生成数据文件,并且可以将数据以图形方式展现,有利于调试过程;
5)算法模型将结果数据通过指针的方式回传给C中间层,数据精度依旧没有损失;
6)C中间层将收到的数据通过指针的方式回传给仿真平台,其中也可以添加打印命令行或者文件的方式进行调试;
7)Systemverilog收到C中间层回传的数据,将他们送到数据自动对比模块;
8)对比模块拿到模型计算后的数据,和硬件电路产生的结果进行自动比对,如有错误,则打印错误数据;
分支二、真实数据通路:
1)将随机产生的上述参数和数据按照硬件电路的时序配置到电路中;
2)待电路计算完毕,返回相应计算结果;
3)将结果传递给自动比对模块进行数据比对验证。
对于算法的模型通路,不会消耗仿真时间,只是受限于服务器的性能。因此,当两条通路并行计算时,无论仿真工具先进行哪个通路的计算都可以得到正确结果,并且所有的仿真时间都消耗在了真实数据通路中,模型通路仅仅占用一些仿真CPU计算时间。
本实施例使用两套串行的API作为参数和数据的接口。
如图2所示列举了部分Systemverilog和C中间层的DPI-C接口样例,这个是一个标准接口,因此在将来的复用过程中替换方便。
如图3所示列举了部分C中间层和Matlab之间的API engine接口样例,这个是一个标准接口,因此在将来的复用过程中替换方便。并且Matlab大部分情况使用双精度浮点数作为主数据,其API提供了几个简单的调用函数,因此相较于Python等其他算法构建平台更为简单,不易出错。
整个平台流程结构清晰,只需2路并行通路即可,且算法模型通路无需进行大改动即可替换成新模型,甚至在写好固定调用接口后可以轻松替换成其他语言构成的算法模型。
Systemverilog平台部分仅仅由几个简单的任务组成,通过调用相应的任务,来进行参数的配置、数据的发送和两组数据的检查。C中间层只需和特定算法配合使用,即一种算法语言提供一种C中间层,无需每次进行更改。
以上所述的实施例仅是对本发明的优选方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
Claims (4)
1.一种基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法,其特征在于,整个验证方法分为2个分支,2个分支并行运行,互相的交互依靠全局变量控制,具体如下:
环境控制部分根据给定的或者随即产生的随机种子,并根据设定好的所有约束产生所有需要的配置参数和原始待测数据;
分支一、模型通路:
1)通过DPI-C将上述参数和数据全部传递给C中间层,这些数据会经过数据转换,成为C识别的数据格式;所有的数据都可以在调试需要时在宏的控制下打印到命令行或者生成文件;
2)C中间层通过调用C-Matlab引擎,生成Matlab所用的double型数据,并且将参数和数据转化成double型数据赋值给Matlab变量,且其中并没有精度损失;
3)通过调用Matlab函数,将所有参数和数据传递给Matlab算法模型;
4)算法模型收到参数和数据,更新内部变量,进行计算;
5)算法模型将结果数据通过指针的方式回传给C中间层,数据精度依旧没有损失;
6)C中间层将收到的数据通过指针的方式回传给仿真平台;
7)Systemverilog收到C中间层回传的数据,将他们送到数据自动对比模块;
8)自动对比模块拿到模型计算后的数据,和硬件电路产生的结果进行自动比对,如有错误,则打印错误数据;
分支二、真实数据通路:
1)将随机产生的上述参数和数据按照硬件电路的时序配置到电路中;
2)待电路计算完毕,返回相应计算结果;
3)将结果传递给自动对比模块进行数据比对验证。
2.根据权利要求1所述的基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法,其特征在于,所述分支一的步骤3)并不消耗仿真时间,不会调用图形界面,不会产生额外文件。
3.根据权利要求1所述的基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法,其特征在于,所述分支一的步骤4)过程中如需调试,同样可以打开打印和生成数据文件,并且可以将数据以图形方式展现,有利于调试过程。
4.根据权利要求1所述的基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法,其特征在于,所述分支一的步骤6)中也可以添加打印命令行或者文件的方式进行调试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910886194.2A CN110674616B (zh) | 2019-09-19 | 2019-09-19 | 一种基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910886194.2A CN110674616B (zh) | 2019-09-19 | 2019-09-19 | 一种基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110674616A true CN110674616A (zh) | 2020-01-10 |
CN110674616B CN110674616B (zh) | 2023-02-24 |
Family
ID=69078317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910886194.2A Active CN110674616B (zh) | 2019-09-19 | 2019-09-19 | 一种基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110674616B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111460759A (zh) * | 2020-03-19 | 2020-07-28 | 华南理工大学 | 一种基于Python语言的EDA验证平台及其使用方法 |
CN117436391A (zh) * | 2023-12-21 | 2024-01-23 | 四川思凌科微电子有限公司 | 一种用于算法和硬件联合仿真的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040158788A1 (en) * | 2002-07-30 | 2004-08-12 | Bull S.A. | Method for functional verification of an integrated circuit model in order to create a verification platform, equipment emulator and verification platform |
CN105302950A (zh) * | 2015-10-19 | 2016-02-03 | 北京精密机电控制设备研究所 | 一种软、硬件协同的可编程逻辑器件交联仿真测试方法 |
CN106682370A (zh) * | 2017-02-28 | 2017-05-17 | 郑州云海信息技术有限公司 | 一种仿真验证系统 |
CN106970879A (zh) * | 2017-03-27 | 2017-07-21 | 南京大学 | 一种针对可配置处理核的参数自动化配置验证平台及方法 |
US20190095303A1 (en) * | 2016-06-01 | 2019-03-28 | The Mathworks, Inc. | Systems and methods for measuring error in terms of unit in last place |
CN110096441A (zh) * | 2019-04-26 | 2019-08-06 | 北京航空航天大学 | 一种基于uvm方法下fpga软件仿真测试环境建立方法 |
-
2019
- 2019-09-19 CN CN201910886194.2A patent/CN110674616B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040158788A1 (en) * | 2002-07-30 | 2004-08-12 | Bull S.A. | Method for functional verification of an integrated circuit model in order to create a verification platform, equipment emulator and verification platform |
CN105302950A (zh) * | 2015-10-19 | 2016-02-03 | 北京精密机电控制设备研究所 | 一种软、硬件协同的可编程逻辑器件交联仿真测试方法 |
US20190095303A1 (en) * | 2016-06-01 | 2019-03-28 | The Mathworks, Inc. | Systems and methods for measuring error in terms of unit in last place |
CN106682370A (zh) * | 2017-02-28 | 2017-05-17 | 郑州云海信息技术有限公司 | 一种仿真验证系统 |
CN106970879A (zh) * | 2017-03-27 | 2017-07-21 | 南京大学 | 一种针对可配置处理核的参数自动化配置验证平台及方法 |
CN110096441A (zh) * | 2019-04-26 | 2019-08-06 | 北京航空航天大学 | 一种基于uvm方法下fpga软件仿真测试环境建立方法 |
Non-Patent Citations (1)
Title |
---|
王凯等: "基于SystemVerilog和MATLAB参考模型的WLAN基带功能验证", 《微电子学与计算机》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111460759A (zh) * | 2020-03-19 | 2020-07-28 | 华南理工大学 | 一种基于Python语言的EDA验证平台及其使用方法 |
CN117436391A (zh) * | 2023-12-21 | 2024-01-23 | 四川思凌科微电子有限公司 | 一种用于算法和硬件联合仿真的方法 |
CN117436391B (zh) * | 2023-12-21 | 2024-03-26 | 四川思凌科微电子有限公司 | 一种用于算法和硬件联合仿真的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110674616B (zh) | 2023-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5953519A (en) | Method and system for generating electronic hardware simulation models | |
CN110674616B (zh) | 一种基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法 | |
US20030182641A1 (en) | Rapid input/output probing apparatus and input/output probing method using the same, and mixed emulation/simulation method based on it | |
CN111176984A (zh) | 一种面向信号的自动测试实现方法 | |
US11860227B2 (en) | Machine learning delay estimation for emulation systems | |
KR100873956B1 (ko) | 에뮬레이션 시스템 | |
CN110134561A (zh) | 一种软硬件协同验证中调试信息的输出方法及装置 | |
Ivanov et al. | Modeling and verification of cache coherence protocols | |
JP2002366602A (ja) | ソフトウエア及びハードウエアのシミュレーション方法及びシステム並びにプログラム | |
CN113010361B (zh) | 全可编程soc芯片的mio功能快速验证方法 | |
CN108388147B (zh) | 一种实时故障注入时序资源优化方法及其系统 | |
US20150379178A1 (en) | Implementing a constant in fpga code | |
CN116340150A (zh) | 一种基于uvm的可重用的寄存器性能交互验证系统及其应用 | |
CN111736654B (zh) | 时钟模型实现方法、装置、计算机设备及存储介质 | |
CN111026590B (zh) | 接口电路的数据验证方法及平台 | |
US20200349304A1 (en) | Method, apparatus, device, and medium for implementing simulator | |
Otto | Asynchronous PC systems of pushdown automata | |
Habibi et al. | Assertion based verification of PSL for SystemC designs | |
KR20010114158A (ko) | 신속한 입출력탐침 장치 및 이를 이용한 입출력탐침방법과 이를 기반으로 하는 혼합 에뮬레이션/시뮬레이션방법 | |
US6775814B1 (en) | Dynamic system configuration for functional design verification | |
US11727178B2 (en) | Under test pin location driven simultaneous signal grouping and pin assignment | |
CN115392057B (zh) | 一种低轨星座卫星仿真建模方法 | |
CN116126478B (zh) | 接口控制文档的生成方法、装置、设备及介质 | |
CN103885301B (zh) | 浸没式光刻机中浸液传送系统的控制时序的模型匹配方法 | |
Camurati et al. | A methodology for system-level design for verifiability |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |