预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN114239454A(43)申请公布日2022.03.25(21)申请号202111594297.5(22)申请日2021.12.24(71)申请人中国电子科技集团公司第十四研究所地址210039江苏省南京市雨花台区国睿路8号(72)发明人张临祥李品吴沁文凌元孙健吴甜韩文俊(74)专利代理机构北京铸成博信知识产权代理事务所(普通合伙)16016代理人张广宇(51)Int.Cl.G06F30/331(2020.01)G06F115/08(2020.01)权利要求书1页说明书3页附图3页(54)发明名称一种FPGA代码功能验证加速方法(57)摘要目前比较复杂的FPGA设计,一般在顶层模块之下总包含多个子模块,这些模块能确保功能实现正确,但却因为是设计的组成部分,在仿真时一并被进行了门级行为模拟。假如一个被测模块一共有一个顶层模块和九个子模块,其中七个都是库模块或成熟模块,只有两个是新设计模块,那么EDA工具进行的门级行为模拟计算只有30%的工作量是真正针对我们想要验证的部分。但是由于有顶层代码的存在以及模块间的接口关系验证的需求,又无法用子模块的验证来代替顶层模块的验证。如果我们可以使门级行为模拟跳过库模块和成熟模块,将大大减少门级行为模拟的计算量,提高FPGA代码功能仿真的速度。本发明对于包含有多个子模块的FPGA代码的功能验证,用C模型代替其中的库IP模块或成熟模块,使这些模块不参与功能仿真执行过程中的门级行为模拟,从而大幅度缩短功能仿真执行时间,加快CN114239454AFPGA代码功能验证速度。CN114239454A权利要求书1/1页1.一种FPGA代码功能验证加速方法,其特征在于:包括以下步骤:步骤一:确定需要被替代的FPGA子模块在仿真工程中,从被测FPGA顶层模块以下的各子模块中,选择FPGA厂商提供的库IP模块或已经得到充分验证的成熟模块,作为用C模型替代的目标模块;步骤二:创建或获取C模型针对目标模块,创建或获取与之匹配的C模型代码;步骤三:将C语言模型封装为DPI函数,并将其编译为dll库将C模型封装为DPI函数,并编译为dll库,使FPGA仿真工程能够直接调用,输入输出接口采用SV语言规定的DPI接口数据类型,将dll库挂接到仿真工程上,以便将C模型导入到SV语言编写的模块内;步骤四:导入DPI函数并封装为SV模块编写与目标模块同名的SV模块,导入该DPI函数,并进行输入输出接口匹配、时序匹配和DPI函数调用;步骤五:用SV模块代替仿真工程中的目标模块进行仿真将目标模块从仿真工程中移除,并向仿真工程中添加对应的SV模块,在仿真工程中链接dll库,完成对仿真工程的改造,执行仿真并验证未被替换的其余部分的功能。2CN114239454A说明书1/3页一种FPGA代码功能验证加速方法技术领域[0001]本发明属于FPGA功能验证领域,具体涉及一种基于C语言模型的FPGA代码功能验证加速方法。背景技术[0002]FPGA(FieldProgrammableGateArray,现场可编程逻辑门阵列)代码验证,包括布局布线之前的功能仿真、布局布线之后的时序仿真以及生成下载文件之后的软硬件结合实物测试。功能仿真作为FPGA代码验证的第一步,需要确保FPGA代码功能的实现正确,其测试用例需要覆盖全部功能点和所有工作场景,其测试对象可以是单个FPGA模块,也可以是包含多个FPGA子模块的上层模块。FPGA功能仿真一般采用Modelsim、VCS等EDA(ElectronicsDesignAutomation,电子设计自动化)仿真工具进行软仿真,执行仿真工程,对被测FPGA代码进行测试数据输入和测试结果输出获取。由于EDA仿真工具的原理为用软件对被测FPGA代码进行门级行为模拟,其计算量较大,尤其在被测FPGA代码包含复杂度高的计算例如浮点数计算时,或者被测FPGA代码包含较多的子模块时,其仿真速度会显著下降,使得FPGA代码的功能仿真非常耗时。目前比较复杂的FPGA设计,一般在顶层模块之下总包含多个子模块,其中有新设计的模块,也有FPGA厂商提供的各类库IP(IntellectualProperty,知识产权)模块,还可能有在以前的开发工作中已经得到充分验证的成熟模块。这些模块能确保功能实现正确,但却因为是设计的组成部分,在仿真时一并被进行了门级行为模拟。假如一个被测模块一共有一个顶层模块和九个子模块,其中七个都是库模块或成熟模块,只有两个是新设计模块,那么EDA工具进行的门级行为模拟计算只有30%的工作量是真正针对我们想要验证的部分。但是由于有顶层代码的存在以及模块间的接口关系验证的需求,又无法用子模块的验证来代替顶层模块的验证。如果我们可以使