专利名称:一种软硬件协同仿真的验证平台及其构建方法
技术领域:
本发明涉及数字处理技术,尤其涉及一种针对高层次综合硬件电路设计的软硬件协同仿真的验证平台及其构建方法。
背景技术:
技术词解释:
Binary Decision Diagram:二叉判定图,简称为 BBDBoolean Satisfiability Problem:布尔可满足问题,简称为 SATSystemC:其是一种能同时实现高层次的软件和硬件描述的系统级设计语言在基于寄存器传输级(RTL)的设计中,业界通常使用基于Binary Decision Diagram(BBD)、Boolean Satisfiability Problem (SAT)等形式的验证方法来验证RTL与网表(netlist)、RTL与RTL以及网表与网表设计的等价性以确保设计的正确性。然而,随着设计的复杂性以及芯片容量的增加,基于寄存器传输级的设计已经不能满足时间到市场(time-to-market)的需求了,因此系统级的设计开始盛行并开始取代传统的基于寄存器传输级的设计。但是由于系统级设计与寄存器传输级设计存在许多难以克服的鸿沟,例如接口的时序差异、系统级与寄存器传输级在内部状态的差异以及操作位宽的差异,因此,基于BDD或者SAT这种静态的形式验证方法并不适用于寄存器传输级与系统级设计的等价性验证,也就是说在系统级的设计中,系统级设计与寄存器传输级设计之间的功能性等价验证平台并不完善。另外,系统级设计与寄存器传输级设计之间的功能性等价验证有助于早期地发现高层次综合工具中存在的漏洞,也有助于生成正确的硬件电路。因此一种系统级设计与寄存器传输级设计之间的功能性等价验证平台是迫切需要解决的技术问题。
发明内容
为了解决上述技术问题,本发明的目的是提供一种能够对利用高层次综合工具设计的硬件电路进行验证的,以及软硬件协同仿真的验证平台构建方法。本发明的另一目的是提供一种能够对利用高层次综合工具设计的硬件电路进行验证的,以及软硬件协同仿真的验证平台。本发明所采用的技术方案是:一种软硬件协同仿真的验证平台构建方法,该方法包括:
对输入的测试信息进行获取;
对由功能函数综合输出的寄存器传输级硬件电路代码进行获取,并对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型;
根据所述的硬件模型,进而生成与所述硬件模型相适配对应的软硬件接口层;
通过生成的软硬件接口层调用所述的硬件模型,进而对测试信息进行处理,并得到第一计算处理结果;
调用功能函数,进而对测试信息进行处理,并得到第二计算处理结果; 判断第一计算处理结果和第二计算处理结果是否一致,并且根据判断的结果进而验证由寄存器传输级硬件电路代码生成的硬件电路与功能函数之间的等价性。进一步,所述对由功能函数综合输出的寄存器传输级硬件电路代码进行获取,并对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型这一步骤,其具体为:
对由功能函数经高层次综合工具综合输出的寄存器传输级硬件电路代码进行获取,并运行开源工具对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型。进一步,所述判断第一计算处理结果和第二计算处理结果是否一致,并且根据判断的结果进而验证由寄存器传输级硬件电路代码生成的硬件电路与功能函数之间的等价性这一步骤,其具体为:
判断第一计算处理结果和第二计算处理结果是否一致,并且当判断的结果为是时,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是等价的;反之,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是不等价的。进一步,所述的功能函数为基准函数或者由用户设计的功能函数。进一步,所述的软硬件接口层用于对系统总线和通信设备进行了模拟,使软件程序和所述的硬件模型进行通信。本发明所采用的另一技术方案是:一种软硬件协同仿真的验证平台,包括:
测试信息获取模块,用于对输入的测试信息进行获取;
硬件模型生成模块,用于对由功能函数综合输出的寄存器传输级硬件电路代码进行获取,并对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型;
软硬件接口层生成模块,用于根据所述的硬件模型,进而生成与所述硬件模型相适配对应的软硬件接口层;
第一计算模块,用于通过生成的软硬件接口层调用所述的硬件模型,进而对测试信息进行处理,并得到第一计算处理结果;
第二计算模块,用于调用功能函数,进而对测试信息进行处理,并得到第二计算处理结
果;
判断结果输出模块,用于判断第一计算处理结果和第二计算处理结果是否一致,并且根据判断的结果进而验证由寄存器传输级硬件电路代码生成的硬件电路与功能函数之间的等价性。进一步,所述的硬件模型生成模块用于对由功能函数经高层次综合工具综合输出的寄存器传输级硬件电路代码进行获取,并运行开源工具对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型。进一步,所述的判断结果输出模块用于判断第一计算处理结果和第二计算处理结果是否一致,并且当判断的结果为是时,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是等价的;反之,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是不等价的。进一步,所述的功能函数为基准函数或者由用户设计的功能函数。
进一步,所述的软硬件接口层用于对系统总线和通信设备进行了模拟,使软件程序和所述的硬件模型进行通信。本发明的有益效果是:由于本发明的方法利用了基于SystemC的周期精度的硬件模型,以及能够自动生成软硬件接口层,因此加速了仿真的速度,从而极大提高了高层次综合设计中仿真验证由寄存器传输级硬件电路代码生成的硬件电路与功能函数之间等价性的效率,另外,通过使用本发明的方法还能用以检测高层次综合工具的正确性,这样为硬件电路的设计工作节省了许多的麻烦。本发明的另一有益效果是:由于本发明的验证平台利用了基于SystemC的周期精度的硬件模型,以及能够自动生成软硬件接口层,因此加速了验证平台的仿真速度,从而极大提高了高层次综合设计中仿真验证由寄存器传输级硬件电路代码生成的硬件电路与功能函数之间等价性的效率,另外,通过使用本发明的验证平台还能够用以检测高层次综合工具的正确性,这样为硬件电路的设计工作带来了便利。
下面结合附图对本发明的具体实施方式
作进一步说明:
图1是本发明一种软硬件协同仿真的验证平台构建方法的方法步骤 图2是本发明一种软硬件协同仿真的验证平台结构示意图。
具体实施例方式由图1所示,一种软硬件协同仿真的验证平台构建方法,该方法包括:
对输入的测试信息进行获取;
对由功能函数综合输出的寄存器传输级硬件电路代码进行获取,并对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型;
根据所述的硬件模型,进而生成与所述硬件模型相适配对应的软硬件接口层;
通过生成的软硬件接口层调用所述的硬件模型,进而对测试信息进行处理,并得到第一计算处理结果;
调用功能函数,进而对测试信息进行处理,并得到第二计算处理结果;
判断第一计算处理结果和第二计算处理结果是否一致,并且根据判断的结果进而验证由寄存器传输级硬件电路代码生成的硬件电路与功能函数之间的等价性。进一步作为优选的实施方式,所述的功能函数为基准函数或者由用户设计的功能函数。对于所述的基准函数,其行为功能是确定无误的,而对于由用户设计的功能函数,由于其是由用户设计的,因此其行为功能不一定是确定无误的。进一步作为优选的实施方式,所述对由功能函数综合输出的寄存器传输级硬件电路代码进行获取,并对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型这一步骤,其具体为:
对由功能函数经高层次综合工具综合输出的寄存器传输级硬件电路代码进行获取,并运行开源工具对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型。进一步作为优选的实施方式,所述判断第一计算处理结果和第二计算处理结果是否一致,并且根据判断的结果进而验证由寄存器传输级硬件电路代码生成的硬件电路与功能函数之间的等价性这一步骤,其具体为:
当高层次综合工具是设计完备无误的,并且所述的功能函数为由用户设计的功能函数时,判断第一计算处理结果和第二计算处理结果是否一致,并且当判断的结果为是时,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是等价的;反之,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是不等价的,也就是说,用户设计的功能函数是有误的。例如,用户在设计功能函数时,使用了未定义的变量从而导致了未定义的行为,这样就会使得高层次综合工具不能综合出等价的电路,因此通过使用本发明来验证由寄存器传输级硬件电路代码生成的硬件电路与功能函数之间的等价性,用户就能快速地了解到自己设计的功能函数是否有误的,而若有误,那么用户就会对自己设计的功能函数进行修改。由此可得,这样能够大大提高了利用高层次综合工具设计硬件电路的效率,为用户利用高层次综合工具设计硬件电路带来了极大的便利。另外,当所述的功能函数为基准函数时,判断第一计算处理结果和第二计算处理结果是否一致,并且当判断的结果为是时,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是等价的;反之,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是不等价的,而由于所述的功能函数为基准函数,并且基准函数的行为功能是准确无误的,因此,此时就能判断出高层次综合工具是有问题的。进一步作为优选的实施方式,所述的软硬件接口层用于对系统总线和通信设备进行了模拟,使软件程序和所述的硬件模型进行通信。根据上述可得的本发明方法,其具体实施的步骤如下:
S1、对输入的测试信息进行获取。S2、对由功能函数经高层次综合工具综合输出的寄存器传输级硬件电路代码进行获取,并运行开源工具对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型。所述的硬件模型模拟了寄存器传输级硬件设计的行为,并且具有与寄存器传输级硬件设计一致的周期,因此所述的硬件模型可以仿真寄存器传输级硬件设计的行为。S3、根据所述的硬件模型,进而生成与所述硬件模型相适配对应的软硬件接口层,进而使软件程序能够调用所述的硬件模型。所述的软硬件接口层用于对系统总线和通信设备进行了模拟,使软件程序和所述的硬件模型进行通信,同时负责软件程序和硬件模型之间的执行调度管理,并且所述的软硬件接口层不仅可支持基本的访存操作,而且所述的软硬件接口层还能够支持高级访存操作。另外,所述的软硬件接口层解决了软件接口与硬件接口不一样的矛盾。由于硬件接口对硬件的位数,接口的握手协议都有一定的要求,而软件的输入输出位数是基于设计语言的内置类型而定,比如C具有char (8位)、int (32位)与long long (64位)等内置类型,而且软件接口并无握手协议,因此,所述的软硬件接口层可隔离了软件与硬件通信的矛盾使得软件程序可以通过软硬件接口层来访问调用硬件模型。而所述的软硬件接口层和所述的硬件模型则组成软硬件协同仿真模型。S4、软件程序通过生成的软硬件接口层调用所述的硬件模型,即软件程序通过运行软硬件协同仿真模型,进而对测试信息进行处理,并得到第一计算处理结果; 55、软件程序调用功能函数,进而对测试信息进行处理,并得到第二计算处理结果,步骤S4中所述的软件程序和步骤S5中所述的软件程序为同一软件程序;
56、判断第一计算处理结果和第二计算处理结果是否一致,并且当判断的结果为是时,则表示由寄存器传输级硬件电路代码生成的硬件电路实现的功能与功能函数实现的功能是一致的,即由寄存器传输级硬件电路代码生成的硬件电路与功能函数是等价的;反之,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是不等价的。而若高层次综合工具是设计完备的,并且所述的功能函数是有用户设计的,那么当第一计算处理结果和第二计算处理结果不一致时,则表明用户设计的功能函数是有误的。而若所述的功能函数为基准函数,由于基准函数是确定无误的,那么当第一计算处理结果和第二计算处理结果不一致时,则表明高层次综合工具是有问题的。由上述可得,通过使用本发明的方法,能够加速验证平台仿真的速度,从而极大提高了高层次综合设计中仿真验证由寄存器传输级硬件电路代码生成的硬件电路与功能函数之间等价性的效率,而且还能检测高层次综合工具是否存在漏洞。另外上述的步骤Si只要设置在步骤S4之前即可,也就是说上述的步骤SI可设置在步骤S3和步骤S4之间。由图2所示,一种软硬件协同仿真的验证平台,包括:
测试信息获取模块,用于对输入的测试信息进行获取;
硬件模型生成模块,用于对由功能函数综合输出的寄存器传输级硬件电路代码进行获取,并对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型;
软硬件接口层生成模块,用于根据所述的硬件模型,进而生成与所述硬件模型相适配对应的软硬件接口层;
第一计算模块,用于通过生成的软硬件接口层调用所述的硬件模型,进而对测试信息进行处理,并得到第一计算处理结果;
第二计算模块,用于调用功能函数,进而对测试信息进行处理,并得到第二计算处理结
果;
判断结果输出模块,用于判断第一计算处理结果和第二计算处理结果是否一致,并且根据判断的结果进而验证由寄存器传输级硬件电路代码生成的硬件电路与功能函数之间的等价性。进一步作为优选的实施方式,所述的硬件模型生成模块用于对由功能函数经高层次综合工具综合输出的寄存器传输级硬件电路代码进行获取,并运行开源工具对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型。进一步作为优选的实施方式,所述的判断结果输出模块用于判断第一计算处理结果和第二计算处理结果是否一致,并且当判断的结果为是时,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是等价的;反之,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是不等价的。进一步作为优选的实施方式,所述的功能函数为基准函数或者由用户设计的功能函数。当高层次综合工具是设计完备无误的,并且所述的功能函数为由用户设计的功能函数时,判断第一计算处理结果和第二计算处理结果是否一致,并且当判断的结果为是时,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是等价的;反之,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是不等价的,也就是说,用户设计的功能函数是有误的。例如,用户在设计功能函数时,使用了未定义的变量从而导致了未定义的行为,这样就会使得高层次综合工具不能综合出等价的电路,因此通过使用本发明来验证由寄存器传输级硬件电路代码生成的硬件电路与功能函数之间的等价性,用户就能快速地了解到自己设计的功能函数是否有误的,而若有误,那么用户就会对自己设计的功能函数进行修改。由此可得,这样能够大大提高了利用高层次综合工具设计硬件电路的效率,为用户利用高层次综合工具设计硬件电路带来了极大的便利。另外,当所述的功能函数为基准函数时,判断第一计算处理结果和第二计算处理结果是否一致,并且当判断的结果为是时,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是等价的;反之,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是不等价的,而由于所述的功能函数为基准函数,并且基准函数的行为功能是准确无误的,因此,此时就能判断出高层次综合工具是有问题的。进一步作为优选的实施方式,所述的软硬件接口层用于对系统总线和通信设备进行了模拟,使软件程序和所述的硬件模型进行通信。上述本发明的方法部分中所提到的所有技术特征均适用于本发明的系统部分中。以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
权利要求
1.一种软硬件协同仿真的验证平台构建方法,其特征在于:该方法包括: 对输入的测试信息进行获取; 对由功能函数综合输出的寄存器传输级硬件电路代码进行获取,并对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型; 根据所述的硬件模型,进而生成与所述硬件模型相适配对应的软硬件接口层; 通过生成的软硬件接口层调用所述的硬件模型,进而对测试信息进行处理,并得到第一计算处理结果; 调用功能函数,进而对测试信息进行处理,并得到第二计算处理结果; 判断第一计算处理结果和第二计算处理结果是否一致,并且根据判断的结果进而验证由寄存器传输级硬件电路代码生成的硬件电路与功能函数之间的等价性。
2.根据权利要求1所述一种软硬件协同仿真的验证平台构建方法,其特征在于:所述对由功能函数综合输出的寄存器传输级硬件电路代码进行获取,并对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型这一步骤,其具体为: 对由功能函数经高层次综合工具综合输出的寄存器传输级硬件电路代码进行获取,并运行开源工具对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型。
3.根据权利要求1所述一种软硬件协同仿真的验证平台构建方法,其特征在于:所述判断第一计算处理结果和第二计算处理结果是否一致,并且根据判断的结果进而验证由寄存器传输级硬件电路代码生成的硬件电路与功能函数之间的等价性这一步骤,其具体为: 判断第一计算处理结果和第二计算处理结果是否一致,并且当判断的结果为是时,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是等价的;反之,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是不等价的。
4.根据权利要求1所述一种软硬件协同仿真的验证平台构建方法,其特征在于:所述的功能函数为基准函数或者由用户设计的功能函数。
5.根据权利要求1所述一种软硬件协同仿真的验证平台构建方法,其特征在于:所述的软硬件接口层用于对系统总线和通信设备进行了模拟,使软件程序和所述的硬件模型进行通信。
6.一种软硬件协同仿真的验证平台,其特征在于:包括: 测试信息获取模块,用于对输入的测试信息进行获取; 硬件模型生成模块,用于对由功能函数综合输出的寄存器传输级硬件电路代码进行获取,并对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型; 软硬件接口层生成模块,用于根据所述的硬件模型,进而生成与所述硬件模型相适配对应的软硬件接口层; 第一计算模块,用于通过生成的软硬件接口层调用所述的硬件模型,进而对测试信息进行处理,并得到第一计算处理结果; 第二计算模块,用于调用功能函数,进而对测试信息进行处理,并得到第二计算处理结果;判断结果输出模块,用于判断第一计算处理结果和第二计算处理结果是否一致,并且根据判断的结果进而验证由寄存器传输级硬件电路代码生成的硬件电路与功能函数之间的等价性。
7.根据权利要求6所述一种软硬件协同仿真的验证平台,其特征在于:所述的硬件模型生成模块用于对由功能函数经高层次综合工具综合输出的寄存器传输级硬件电路代码进行获取,并运行开源工具对获取的寄存器传输级硬件电路代码进行反编译,进而得到基于SystemC的周期精度的硬件模型。
8.根据权利要求6所述一种软硬件协同仿真的验证平台,其特征在于:所述的判断结果输出模块用于判断第一计算处理结果和第二计算处理结果是否一致,并且当判断的结果为是时,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是等价的;反之,则表示由寄存器传输级硬件电路代码生成的硬件电路与功能函数是不等价的。
9.根据权利要求6所述一种软硬件协同仿真的验证平台,其特征在于:所述的功能函数为基准函数或者由用户设计的功能函数。
10.根据权利要求6所述一种软硬件协同仿真的验证平台,其特征在于:所述的软硬件接口层用于对系 统总线和通信设备进行了模拟,使软件程序和所述的硬件模型进行通信。
全文摘要
本发明公开了一种软硬件协同仿真的验证平台及其构建方法,该验证平台包括测试信息获取模块、硬件模型生成模块、软硬件接口层生成模块、第一计算模块、第二计算模块以及判断结果输出模块。该方法包括对由功能函数综合输出的寄存器传输级硬件电路代码进行获取,并对获取的寄存器传输级硬件电路代码进行反编译后,得到基于SystemC的周期精度的硬件模型;生成软硬件接口层;通过生成的软硬件接口层调用所述的硬件模型进而对测试信息进行处理;调用功能函数对测试信息进行处理;判断第一计算处理结果和第二计算处理结果是否一致。本发明提高了高层次综合设计的仿真验证效率,而且还能检验高层次综合工具的正确性。本发明广泛应用于系统级设计中。
文档编号G06F17/50GK103150441SQ201310082569
公开日2013年6月12日 申请日期2013年3月14日 优先权日2013年3月14日
发明者陈弟虎, 郑洪滨, 刘倾瑞, 涂玏 申请人:中山大学