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

文档序号:15980593发布日期:2018-11-17 00:17阅读:709来源:国知局

本发明涉及芯片验证技术,具体指一种用python建立参考模型提高自动化验证平台效率的方法。

背景技术

随着芯片的设计规模、复杂度日趋增加,芯片验证的难度越来越大。在验证工作中需要编写很多参考模型,有些参考模型的算法复杂度较高,尤其是算法协处理器对应的参考模型。

传统的参考模型通常用c语言等编写,c语言编写参考模型的开发效率较低。在涉及长整数运算时,用c语言开发参考模型需要用大数组来表示长整数,并且在运算时需要考虑进位传递等问题。因此需要一种更加高效、简洁的参考模型开发方案。

python语言作为一门高级的面向对象的语言,正在得到越来越广泛的应用,如果能用python语言编写参考模型,那么开发效率以及复杂度将大大降低。但systemverilog验证平台不能直接调用python程序。

本发明旨在解决systemverilog验证平台调用python参考模型的问题,使得可以用python语言编写验证平台中的参考模型,从而提高验证效率。



技术实现要素:

本发明解决的技术问题在于针对目前复杂的芯片验证,通过c函数封装python函数的方案,解决了systemverilog验证平台调用python参考模型的问题,提出了一种用python建立参考模型提高自动化验证平台效率的方法,大大提高了验证效率。

本发明的核心在于,通过c程序作为中间层,通过python/capi使得c程序可以调用python参考模型(python/capi是由python提供的一套python/c相互调用的api接口),再通过systemverilogdpi调用中间层的c接口程序,从而实现systemverilog验证平台调用python的目的。本发明使得可以用python语言编写参考模型,并在验证平台中实时动态地调用python参考模型,大大提高了参考模型的开发效率,提高了验证效率。

本发明的技术方案如下:

一种用python建立参考模型提高自动化验证平台效率的方法,其特征在于,包括如下步骤:

1)定义python参考模型函数的接口参数规范;

2)用python语言编写参考模型;

3)定义c封装函数的接口参数规范;

4)依据c接口规范编写c封装函数;

5)通过python/capi将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/capi将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参考模型在验证平台中的位置框图。

参考模型单元通过systemverilogdpi接口调用c封装层,再通过c封装层调用python参考模型,从而实现了验证平台实时、动态地调用python参考模型,实现了dut和python参考模型的实时比较。

验证平台中的in_agent产生实时激励,分别传送给dut和python参考模型。

验证平台中的out_agent监测收集dut的输出并将计算结果发送到scoreboard模块。

scoreboard模块用来对python的输出和dut的输出进行比对,验证dut的功能是否符合设计规范。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1