CN108829382B - 一种用Python建立参考模型提高自动化验证平台效率的方法 - Google Patents

一种用Python建立参考模型提高自动化验证平台效率的方法 Download PDF

Info

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
Application number
CN201810569489.2A
Other languages
English (en)
Other versions
CN108829382A (zh
Inventor
任志强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing CEC Huada Electronic Design Co Ltd
Original Assignee
Beijing CEC Huada Electronic Design Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing CEC Huada Electronic Design Co Ltd filed Critical Beijing CEC Huada Electronic Design Co Ltd
Priority to CN201810569489.2A priority Critical patent/CN108829382B/zh
Publication of CN108829382A publication Critical patent/CN108829382A/zh
Application granted granted Critical
Publication of CN108829382B publication Critical patent/CN108829382B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation 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建立参考模型提高自动化验证平台效率的方法
技术领域
本发明涉及芯片验证技术,具体指一种用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封装函数返回的参数。
CN201810569489.2A 2018-06-05 2018-06-05 一种用Python建立参考模型提高自动化验证平台效率的方法 Active CN108829382B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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切换器逻辑仿真验证平台及方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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引擎的业务数据处理方法及装置
CN110175163A (zh) 基于业务功能智能解析的多库分离方法、系统及介质
CN114707650B (zh) 一种提高仿真效率的仿真实现方法
CN109299530A (zh) 一种仿真测试案例生成方法、系统、存储介质和终端
CN113919254A (zh) 寄存器传输级信号映射构建方法、装置、设备和存储介质
CN115185627A (zh) 用于实时仿真的方法、系统和计算机可读存储介质
CN111966383B (zh) 一种操作系统内核兼容性量化分析方法、系统和介质
US20020066082A1 (en) Bus performance evaluation method for algorithm description
US20090259454A1 (en) Automatic test program generation using extended conditional constraint satisfaction
CN109063402B (zh) 一种复杂流场下散热系统风侧仿真方法
CN112783915A (zh) 基于SpringMVC+Mybatis框架的数据传输对象映射方法和单元
CN110334001A (zh) 一种批量自动生成回声测试的方法和装置
US8954307B1 (en) Chained programming language preprocessors for circuit simulation
CN115130672A (zh) 一种软硬件协同优化卷积神经网络计算的方法及装置
CN114913006A (zh) 银行贷款审批数据处理方法、系统及电子设备
CN112069022B (zh) 一种npu型服务器功耗测试方法及系统
CN115237390A (zh) 一种继电保护装置逻辑图生成代码方法、装置及存储介质
CN116739094A (zh) 量子线路的串扰优化方法、装置、存储介质及电子装置
CN116933699A (zh) 用于生成和存储电路仿真过程中的波形数据的方法、电子设备和存储介质
CN101141663A (zh) 一种用于提高智能网访问数据库效率的方法及系统
CN113849951A (zh) 芯片仿真方法、装置、设备、系统及存储介质
CN111985772B (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