CN108829382B - 一种用Python建立参考模型提高自动化验证平台效率的方法 - Google Patents
一种用Python建立参考模型提高自动化验证平台效率的方法 Download PDFInfo
- Publication number
- CN108829382B CN108829382B CN201810569489.2A CN201810569489A CN108829382B CN 108829382 B CN108829382 B CN 108829382B CN 201810569489 A CN201810569489 A CN 201810569489A CN 108829382 B CN108829382 B CN 108829382B
- Authority
- CN
- China
- Prior art keywords
- python
- function
- reference model
- verification platform
- systemverilog
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- 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/35—Creation or generation of source code model driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开了一种用Python建立参考模型提高自动化验证平台效率的方法。本发明通过C程序作为中间层,通过C/Python API使得C程序可以调用Python参考模型,再通过SystemVerilog DPI调用中间层的C接口程序,从而实现SystemVerilog验证平台调用Python的目的。本发明使得可以用Python语言编写参考模型,并在验证平台中实时动态地调用Python参考模型。用Python语言开发程序有诸多优点,尤其是长整数运算等复杂算法时有着非常高的效率,此方法解决了SystemVerilog语言与Python语言交互的问题,使得Python程序可以作为验证平台中的参考模型,大大提升了验证的效率和质量,减少了验证成本。
Description
技术领域
本发明涉及芯片验证技术,具体指一种用Python建立参考模型提高自动化验证平台效率的方法。
背景技术
随着芯片的设计规模、复杂度日趋增加,芯片验证的难度越来越大。在验证工作中需要编写很多参考模型,有些参考模型的算法复杂度较高,尤其是算法协处理器对应的参考模型。
传统的参考模型通常用C语言等编写,C语言编写参考模型的开发效率较低。在涉及长整数运算时,用C语言开发参考模型需要用大数组来表示长整数,并且在运算时需要考虑进位传递等问题。因此需要一种更加高效、简洁的参考模型开发方案。
Python语言作为一门高级的面向对象的语言,正在得到越来越广泛的应用,如果能用Python语言编写参考模型,那么开发效率以及复杂度将大大降低。但SystemVerilog验证平台不能直接调用Python程序。
本发明旨在解决SystemVerilog验证平台调用Python参考模型的问题,使得可以用Python语言编写验证平台中的参考模型,从而提高验证效率。
发明内容
本发明解决的技术问题在于针对目前复杂的芯片验证,通过C函数封装Python函数的方案,解决了SystemVerilog验证平台调用Python参考模型的问题,提出了一种用Python建立参考模型提高自动化验证平台效率的方法,大大提高了验证效率。
本发明的核心在于,通过C程序作为中间层,通过Python/C API使得C程序可以调用Python参考模型(Python/C API是由Python提供的一套Python/C相互调用的API接口),再通过SystemVerilog DPI调用中间层的C接口程序,从而实现SystemVerilog验证平台调用Python的目的。本发明使得可以用Python语言编写参考模型,并在验证平台中实时动态地调用Python参考模型,大大提高了参考模型的开发效率,提高了验证效率。
本发明的技术方案如下:
一种用Python建立参考模型提高自动化验证平台效率的方法,其特征在于,包括如下步骤:
1)定义Python参考模型函数的接口参数规范;
2)用Python语言编写参考模型;
3)定义C封装函数的接口参数规范;
4)依据C接口规范编写C封装函数;
5)通过Python/C API将C封装函数和Python函数相连;
6)把C接口程序编译为动态链接库供验证平台加载;
7)定义SystemVerilog验证平台中的接口参数规范;
8)SystemVerilog验证平台加载动态链接库,通过DPI接口将SystemVerilog验证平台和C封装函数相连;
9)在仿真过程中验证平台的IN_AGENT实时产生激励,分别驱动DUT和Python参考模型;
10)参考模型模块将Python参考模型计算结果发送到SCOREBOARD模块;
11)OUT_AGENT监测收集DUT输出并将计算结果发送到SCOREBOARD模块;
12)SCOREBOARD对Python参考模型的输出与DUT的输出进行比对,从而验证DUT的设计正确性。
其中:
1.定义Python函数的接口参数规范包括如下步骤:
21)定义Python函数输入元组中元素的位长规范以及元素排列方式;
22)在Python函数中按照步骤21)的定义将输入元组合并为长整数;
23)定义Python函数返回元组中元素的位长规范以及元素排列方式;
24)在Python函数中将待返回长整数分割为符合步骤23)定义的元组;
2.用Python语言编写参考模型包括如下步骤:
31)根据步骤21)-24)以及所要实现的具体功能编写Python参考模型。
3.定义C封装函数的接口参数规范包括如下步骤:
41)定义C封装函数接口参数多位长共用体数据类型规范;
4.定义SystemVerilog验证平台中的接口参数规范包括如下步骤:
51)定义SystemVerilog验证平台中接口参数多位长共用体以及常规整形数据类型规范;5.通过Python/C API将C封装函数和Python函数相连包括如下步骤:
61)在C封装函数中导入对应的Python参考模型函数;
62)在C封装函数中按照步骤41)的定义解析由SystemVerilog验证平台传来的输入参数;
63)在C封装函数中按照步骤21)的定义为Python参考模型函数准备输入元组参数;
64)在C封装函数中调用Python参考模型函数并得到返回元组;
65)在C封装函数按中照步骤23)的定义解析返回元组,并将返回值转化为符合步骤41)定义的共用体数据类型;
6.SystemVerilog验证平台加载动态链接库,通过DPI接口将SystemVerilog验证平台和C封装函数相连包括如下步骤:
71)验证脚本中加载步骤6)中编译好的动态链接库;
72)在SystemVerilog验证平台中按照步骤51)的定义为C封装函数准备输入参数;
73)在SystemVerilog验证平台中通过DPI接口调用C封装函数;
74)在SystemVerilog验证平台中按照步骤41)解析由C封装函数返回的参数;
本发明的优点在于:
依据SystemVerilog验证平台通过C封装函数调用Python函数的方法,可实现SystemVerilog验证平台调用Python参考模型,Python参考模型的开发效率优于传统的参考模型,大大提高了验证效率。
附图说明
图1是具体实施流程图
图2是本发明系统的框架图
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
下面结合PKE(公钥引擎)协处理器的验证来说明具体实施步骤。
图1是具体实施流程图。第一步和第三步分别是定义Python函数的接口规范和定义C接口规范,由于PKE设计2048位的长整数运算,但C程序的基本变量只有64位长(无符号长整型),因此对于大于64位的传输参数,C到Python的输入变量以及Python到C的输出变量只能是由64位长的变量组合成的复合类型。具体地为,在Python端为由多个64位整数组成的元组类型,在C端为PyTuple类型。
第七步为定义SystemVerilog接口参数规范。同样的由于C程序的基本变量只有64位长,因此对于大于64位的传输参数,C端变量是由多个64位长的无符号整型变量组成的共用体类型,SystemVerilog端的变量是由多个bit[63:0]类型的变量组成的共用体。
按照上述接口规范编写好Python参考模型、C接口程序后,将C接口程序编译为动态链接库供SystemVerilog验证平台加载。
在验证平台的编译脚本中指定好要加载的C接口程序动态链接库,在验证环境中就可以通过DPI接口调用C接口程序。
图2为SystemVerilog-C-Python参考模型在验证平台中的位置框图。
参考模型单元通过SystemVerilog DPI接口调用C封装层,再通过C封装层调用Python参考模型,从而实现了验证平台实时、动态地调用Python参考模型,实现了DUT和Python参考模型的实时比较。
验证平台中的IN_AGENT产生实时激励,分别传送给DUT和Python参考模型。
验证平台中的OUT_AGENT监测收集DUT的输出并将计算结果发送到SCOREBOARD模块。
SCOREBOARD模块用来对Python的输出和DUT的输出进行比对,验证DUT的功能是否符合设计规范。
Claims (7)
1.一种用Python建立参考模型提高自动化验证平台效率的方法,其特征在于,通过C程序作为中间层,通过Python/C API使得C程序可以调用Python参考模型,再通过SystemVerilog DPI调用中间层的C接口程序,从而实现SystemVerilog验证平台调用Python的目的,实现方法主要包括如下步骤:
1)定义Python参考模型函数的接口参数规范;
2)用Python语言编写参考模型;
3)定义C封装函数的接口参数规范;
4)依据C接口规范编写C封装函数;
5)通过Python/C API将C封装函数和Python函数相连;
6)把C接口程序编译为动态链接库供验证平台加载;
7)定义SystemVerilog验证平台中的接口参数规范;
8)SystemVerilog验证平台加载动态链接库,通过DPI接口将SystemVerilog验证平台和C封装函数相连;
9)在仿真过程中验证平台的IN_AGENT实时产生激励,分别驱动DUT和Python参考模型;
10)参考模型模块将Python参考模型计算结果发送到SCOREBOARD模块;
11)OUT_AGENT监测收集DUT输出并将计算结果发送到SCOREBOARD模块;
12)SCOREBOARD对Python参考模型的输出与DUT的输出进行比对,从而验证DUT的设计正确性。
2.根据权利要求1所述的一种用Python建立参考模型提高自动化验证平台效率的方法,其特征在于,所述步骤1)定义Python函数的接口参数规范包括如下步骤:
21)定义Python函数输入元组中元素的位长规范以及元素排列方式;
22)在Python函数中按照步骤21)的定义将输入元组合并为长整数;
23)定义Python函数返回元组中元素的位长规范以及元素排列方式;
24)在Python函数中将待返回长整数分割为符合步骤23)定义的元组。
3.根据权利要求1所述的一种用Python建立参考模型提高自动化验证平台效率的方法,其特征在于,所述步骤2)用Python语言编写参考模型包括如下步骤:
31)根据步骤21)-24)以及所要实现的具体功能编写Python参考模型。
4.根据权利要求1所述的一种用Python建立参考模型提高自动化验证平台效率的方法,其特征在于,所述步骤3)定义C封装函数的接口参数规范包括如下步骤:
41)定义C封装函数接口参数多位长共用体数据类型规范。
5.根据权利要求1所述的一种用Python建立参考模型提高自动化验证平台效率的方法,其特征在于,所述步骤7)定义SystemVerilog验证平台中的接口参数规范包括如下步骤:
51)定义SystemVerilog验证平台中接口参数多位长共用体以及常规整形数据类型规范。
6.根据权利要求1所述的一种用Python建立参考模型提高自动化验证平台效率的方法,其特征在于,所述步骤5)通过Python/C API将C封装函数和Python函数相连包括如下步骤:
61)在C封装函数中导入对应的Python参考模型函数;
62)在C封装函数中按照步骤41)的定义解析由SystemVerilog验证平台传来的输入参数;
63)在C封装函数中按照步骤21)的定义为Python参考模型函数准备输入元组参数;
64)在C封装函数中调用Python参考模型函数并得到返回元组;
65)在C封装函数中按照步骤23)的定义解析返回元组,并将返回值转化为符合步骤41)定义的共用体数据类型。
7.根据权利要求1所述的一种用Python建立参考模型提高自动化验证平台效率的方法,其特征在于,所述步骤8)SystemVerilog验证平台加载动态链接库,通过DPI接口将SystemVerilog验证平台和C封装函数相连包括如下步骤:
71)验证脚本中加载步骤6)中编译好的动态链接库;
72)在SystemVerilog验证平台中按照步骤51)的定义为C封装函数准备输入参数;
73)在SystemVerilog验证平台中通过DPI接口调用C封装函数;
74)在SystemVerilog验证平台中按照步骤41)解析由C封装函数返回的参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810569489.2A CN108829382B (zh) | 2018-06-05 | 2018-06-05 | 一种用Python建立参考模型提高自动化验证平台效率的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810569489.2A CN108829382B (zh) | 2018-06-05 | 2018-06-05 | 一种用Python建立参考模型提高自动化验证平台效率的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108829382A CN108829382A (zh) | 2018-11-16 |
CN108829382B true CN108829382B (zh) | 2021-09-21 |
Family
ID=64143880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810569489.2A Active CN108829382B (zh) | 2018-06-05 | 2018-06-05 | 一种用Python建立参考模型提高自动化验证平台效率的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108829382B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109669421B (zh) * | 2018-12-27 | 2021-06-25 | 四川普什宁江机床有限公司 | 一种智能数控车间设计验证方法 |
CN111610966A (zh) * | 2019-02-22 | 2020-09-01 | 龙芯中科技术有限公司 | 程序的运行方法、装置和计算设备 |
CN111651149B (zh) * | 2020-07-03 | 2022-11-22 | 东软教育科技集团有限公司 | 一种便于部署的机器学习模型系统及其调用方法 |
CN112988602B (zh) * | 2021-04-30 | 2021-11-12 | 北京欣博电子科技有限公司 | 验证平台的生成方法、装置、计算机设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7331031B2 (en) * | 2005-03-03 | 2008-02-12 | Lsi Logic Corporation | Method for describing and deploying design platform sets |
CN102567122A (zh) * | 2010-12-27 | 2012-07-11 | 北京国睿中数科技股份有限公司 | 多仿真验证平台下的处理器参考模型的通信接口方法 |
CN103597863A (zh) * | 2011-04-14 | 2014-02-19 | 中兴通讯(美国)公司 | 确定无线网络中的机器类型通信设备地址的方法和装置 |
CN104899138A (zh) * | 2015-05-25 | 2015-09-09 | 浪潮集团有限公司 | 一种uvm验证环境中复用c程序测试向量的方法 |
CN105930299A (zh) * | 2016-04-25 | 2016-09-07 | 浪潮电子信息产业股份有限公司 | 一种基于BFM的SystemVerilog搭建协议验证平台的方法 |
CN106777571A (zh) * | 2016-11-30 | 2017-05-31 | 北京广利核系统工程有限公司 | 一种基于System Verilog实现的可编程逻辑算法块自动化验证平台 |
CN104965750B (zh) * | 2015-06-05 | 2017-11-10 | 浪潮集团有限公司 | 基于Python语言的Rapidio切换器逻辑仿真验证平台及方法 |
-
2018
- 2018-06-05 CN CN201810569489.2A patent/CN108829382B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7331031B2 (en) * | 2005-03-03 | 2008-02-12 | Lsi Logic Corporation | Method for describing and deploying design platform sets |
CN102567122A (zh) * | 2010-12-27 | 2012-07-11 | 北京国睿中数科技股份有限公司 | 多仿真验证平台下的处理器参考模型的通信接口方法 |
CN103597863A (zh) * | 2011-04-14 | 2014-02-19 | 中兴通讯(美国)公司 | 确定无线网络中的机器类型通信设备地址的方法和装置 |
CN104899138A (zh) * | 2015-05-25 | 2015-09-09 | 浪潮集团有限公司 | 一种uvm验证环境中复用c程序测试向量的方法 |
CN104965750B (zh) * | 2015-06-05 | 2017-11-10 | 浪潮集团有限公司 | 基于Python语言的Rapidio切换器逻辑仿真验证平台及方法 |
CN105930299A (zh) * | 2016-04-25 | 2016-09-07 | 浪潮电子信息产业股份有限公司 | 一种基于BFM的SystemVerilog搭建协议验证平台的方法 |
CN106777571A (zh) * | 2016-11-30 | 2017-05-31 | 北京广利核系统工程有限公司 | 一种基于System Verilog实现的可编程逻辑算法块自动化验证平台 |
Non-Patent Citations (2)
Title |
---|
"SystemVerilog 利用DPI调用其他语言";小小黑;《https://blog.csdn.net/immeatea_aun/article/details/80569938?utm_medium=distribute.pc_feed_404.none-task-blog-2~default~BlogCommendFro》;20180604;第1-4页 * |
"基于UVM 验证方法学的存储转发系统验证";庞博;《太赫兹科学与电子信息学报》;20170630;第15卷(第3期);第450-第454页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108829382A (zh) | 2018-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108829382B (zh) | 一种用Python建立参考模型提高自动化验证平台效率的方法 | |
CN107145537B (zh) | 一种表格数据导入方法及系统 | |
CN106293664A (zh) | 代码生成方法及装置 | |
CN110704518A (zh) | 基于Flink引擎的业务数据处理方法及装置 | |
CN107171897A (zh) | 一种接口测试方法及数据接口测试系统 | |
CN111966383B (zh) | 一种操作系统内核兼容性量化分析方法、系统和介质 | |
CN114138674A (zh) | 自动化测试方法、装置及计算机设备 | |
CN109299530A (zh) | 一种仿真测试案例生成方法、系统、存储介质和终端 | |
CN115185627A (zh) | 用于实时仿真的方法、系统和计算机可读存储介质 | |
CN116933699A (zh) | 用于生成和存储电路仿真过程中的波形数据的方法、电子设备和存储介质 | |
CN110334001A (zh) | 一种批量自动生成回声测试的方法和装置 | |
US20090259454A1 (en) | Automatic test program generation using extended conditional constraint satisfaction | |
US20020066082A1 (en) | Bus performance evaluation method for algorithm description | |
CN109063402B (zh) | 一种复杂流场下散热系统风侧仿真方法 | |
CN112783915A (zh) | 基于SpringMVC+Mybatis框架的数据传输对象映射方法和单元 | |
CN110691004B (zh) | 一种基于硬件仿真加速器的维护协议报文收发方法 | |
US8954307B1 (en) | Chained programming language preprocessors for circuit simulation | |
CN115130672A (zh) | 一种软硬件协同优化卷积神经网络计算的方法及装置 | |
CN114913006A (zh) | 银行贷款审批数据处理方法、系统及电子设备 | |
CN116739094A (zh) | 量子线路的串扰优化方法、装置、存储介质及电子装置 | |
CN114036769A (zh) | 面向航电系统物理架构的功能部署方案生成方法及装置 | |
CN111985772B (zh) | 一种评价标准协议的鲁棒性与完整度实现方法 | |
CN110275710A (zh) | 一种Java本地接口一致性检查方法及系统、存储介质及终端 | |
CN115866087B (zh) | 一种报文映射、报文转换方法、装置及传输系统 | |
CN118550841B (zh) | 一种基于鸿蒙系统实现对讲模块跨层通信方法及系统 |
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 |