CN109739766B - 一种快速搭建fpga数字仿真模型的系统及方法 - Google Patents
一种快速搭建fpga数字仿真模型的系统及方法 Download PDFInfo
- Publication number
- CN109739766B CN109739766B CN201811644686.2A CN201811644686A CN109739766B CN 109739766 B CN109739766 B CN 109739766B CN 201811644686 A CN201811644686 A CN 201811644686A CN 109739766 B CN109739766 B CN 109739766B
- Authority
- CN
- China
- Prior art keywords
- tested piece
- code
- module
- port
- name
- 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
Abstract
本发明公开了一种快速搭建FPGA数字仿真模型的系统及方法,涉及FPGA软件验证技术领域。本发明通过读取被测件的RTL代码,提取被测件名称、被测件端口的名称、位宽、传输方向;根据获取的信息生成仿真模型的顶层代码文件;在仿真模型的顶层代码文件中,例化被测件模块、激励发生器模块、验证结果检测器,并实现被测件端口与激励发生器模块、结果检测器模块的端口连接,再创建框架运行的脚本文件。通过该方案能自动实现FPGA数字仿真模型的建立,缓解目前FPGA软件数字仿真模型的搭建需要通过人工手动完成。产生的仿真模型遵循固定的模式,在帮助验证人员快速搭建数值仿真模型的同时还有助于项目间代码的一致性,保证代码的可重用性。
Description
技术领域
本发明涉及FPGA软件验证技术领域,具体是涉及一种快速搭建FPGA数字仿真模型的系统及方法。
背景技术
FPGA数字仿真分为前仿真和后仿真,主要目的是确认设计规格说明书的功能是否被完全实现,以及所有功能是否正确。这个环节会有两个目标需要确定:1.功能的有效性:在一个复杂的设计中,功能通常会比较复杂,是不是所编写的代码功能完全符合设计规格说明书的要求。这需要验证工程师在验证过程中对设计进行充分的证明。2.功能的完备性:是否所有的功能都被验证过。当功能比较复杂时,是否所有功能都被验证到是非常重要的。
数字仿真模型是运行于数字仿真软件上,产生激励信号,并检查被测件的输出是否符合设计要求。它具备相对固定的文件组织模式。验证人员遵照平台定义的文件组织模式,编写激励文件,并输入被测方提交的RTL代码文件,借助该软件的覆盖率及波形等手段实现对FPGA硬件设计的仿真与功能验证,确保设计功能的正确有效实现。
邓庆勇在电子科学技术上发表的“UVM测试平台代码自动生成方法研究”(刊次Vol.04 No.04 Jul.2017),主要描述的是通过预先编写接口模板、通用模板、管脚列表文件,以及DUT文件和相关文件目录,结合Perl脚本文件,生成UVM仿真验证平台。该方法要求必须在安装Perl语言运行环境下使用,Perl脚本文件更多的是将仿真工具逐步操作的步骤进行集中调用,该方法针对具体项目需逐一更改配置和更新模板文件,对于端口提取分析等工作依旧依靠人工完成,而本发明生成的仿真模型无需UVM支撑,在导入被测文件后,从被测件提取、端口分析与提取、相关参数配置、仿真平台生成等操作完全通用化和更加自动化。
目前并没有一种高效快速搭建FPGA仿真模型的方法,这使得FPGA项目验证与测试人力时间成本高,因此急需设计一种快速构建FPGA软件数字仿真模型的方法。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种快速搭建FPGA数字仿真模型的系统及方法,实现仿真模型的全过程自动化快速搭建,且具有较高的通用性。
本发明提供一种快速搭建FPGA数字仿真模型的方法,包括以下步骤:
读取被测件的RTL代码,提取被测件名称、被测件端口的名称、位宽、传输方向;
根据获取的信息生成仿真模型的顶层代码文件;
在仿真模型的顶层代码文件中,例化被测件模块、激励发生器模块、验证结果检测模块,并实现被测件模块端口与激励发生器模块、结果检测器模块的端口连接;激励发生器模块用于产生激励信号,验证结果检测模块用于检查被测件的输出是否符合设计要求;
创建框架运行的脚本文件,其用于执行仿真过程。
在上述方案的基础上,所述读取被测件的RTL代码,分析和提取被测件名称、被测件端口的名称、位宽、传输方向,具体包括以下步骤:
读取被测件的RTL代码;
通过识别读取的代码是否包含被测件名称关键字,判断读取的代码中是否包含被测件名称信息;
识别到被测件名称关键字时,提取被测件名称;
通过识别读取的代码中是否包含被测件端口关键字,提取该被测件端口的名称、位宽、传输方向。
在上述方案的基础上,所述在仿真模型的顶层代码文件中,例化被测件模块、激励发生器模块、验证结果检测模块,并实现被测件端口与激励发生器模块、结果检测器模块的端口连接,具体包括以下步骤:
在验证框架程序的顶层代码文件中例化被测件模块、激励发生器模块和验证结果检测模块;
将被测件模块的输入端口和双向端口连接到激励发生器模块的端口,将被测件的全部端口连接到验证结果检测模块的端口上。
在上述方案的基础上,所述激励发生器模块的代码包括端口信号定义代码和时钟信号的产生代码。
在上述方案的基础上,所述验证结果检测模块的代码包括端口信号定义代码。
在上述方案的基础上,所述框架运行的脚本文件的代码包括:创建仿真库、编译被测件源代码、编译仿真代码,启动仿真、记录波形、运行仿真程序、生成覆盖率数据库、生成覆盖率报告的代码。
本发明还提供一种快速搭建FPGA数字仿真模型的系统,包括:
信息提取模块,其用于:读取被测件的RTL代码,分析和提取被测件名称、被测件端口的名称、位宽、传输方向;
仿真模型搭建模块,其用于:根据获取的信息例化仿真模型的顶层代码文件;在仿真模型的顶层代码文件中,例化被测件模块、激励发生器模块、验证结果检测模块,并实现被测件模块端口与激励发生器模块、结果检测器模块的端口连接;激励发生器模块用于产生激励信号,验证结果检测模块用于检查被测件的输出是否符合设计要求;创建框架运行的脚本文件,其用于执行仿真过程。
在上述方案的基础上,所述激励发生器模块的代码包括端口信号定义代码和时钟信号的产生代码。
在上述方案的基础上,所述验证结果检测模块的代码包括端口信号定义代码。
在上述方案的基础上,所述框架运行的脚本文件具体用于:创建仿真库,编译被测件源代码,编译仿真代码,启动仿真,记录波形,运行仿真程序,生成覆盖率数据库,生成覆盖率报告。
与现有技术相比,本发明的优点如下:
本发明提供一种通过自动化的方式快速构建FPGA数字仿真模型的系统及方法。通过该方案能自动实现FPGA数字仿真模型的建立,缓解目前FPGA软件数字仿真模型的搭建需要通过人工手动完成。同时,产生的仿真模型遵循固定的模式,在帮助验证人员快速搭建数值仿真模型的同时还有助于项目间代码的一致性,从而在保证代码的可重用性,使验证工程师能将更多的工作精力专注于验证激励的设计,增强了工作的协作性,应用前景良好。
附图说明
图1是本发明实施例的快速搭建FPGA数字仿真模型的方法的流程示意图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
参见图1所示,本发明实施例提供一种快速搭建FPGA数字仿真模型的方法,包括以下步骤:
S1,读取被测件的RTL代码,提取被测件名称、被测件端口的名称、位宽、传输方向;
S2,根据获取的信息生成仿真模型的顶层代码文件;
S3,在仿真模型的顶层代码文件中,例化被测件模块、激励发生器模块、验证结果检测模块,实现被测件模块端口与激励发生器模块、结果检测器模块的端口连接;激励发生器模块用于产生激励信号,验证结果检测模块用于检查被测件的输出是否符合设计要求;
S4,创建框架运行的脚本文件,其用于执行仿真过程。
本方法通过读取被测件的RTL代码,通过识别读取的代码中是否包含被测件名称关键字(如Entity、module),判断读取的代码中是否包含被测件名称信息,若能识别到被测件名称关键字则按照被测件的语法规则(如verilog语言或VHDL语言)提取被测件名称。同样通过识别读取的代码中是否包含被测件端口关键字(如input、ouput、inout等内容),提取该被测件端口的名称、位宽、传输方向等信息。
信息获取完成后,根据获取的信息生成验证框架程序。验证框架程序主要包括顶层代码文件、激励发生器模块文件、验证结果检测模块文件和框架运行的脚本文件。顶层代码文件、激励发生器模块文件、验证结果检测模块文件均以采用标准systemverilog语言编写,采用其他语言编写顶层代码文件、激励发生器模块文件、验证结果检测模块文件,也在本发明的保护范围之内。
在验证框架程序的顶层代码文件中例化被测件、激励发生器模块和验证结果检测模块。同时将被测件的输入端口和双向端口连接到激励发生器模块的端口。将被测件的全部端口同时连接到验证结果检测模块的端口上。
被测件的输入端口(input)和双向端口(inout)将作为激励发生器模块的输出端口。在激励发生器模块的代码中主要包括端口信号定义和时钟信号的产生代码。
被测件的全部端口同时也作为验证结果检测模块的端口。验证结果检测模块的代码中主要包括端口信号定义。
框架运行的脚本文件使用TCL语言,采用其他语言编写框架运行的脚本文件(如python语言),也在本发明的保护范围之内。主要包括创建框架的各个子文件夹,创建仿真库,编译被测件源代码,编译仿真代码,启动仿真,记录波形,运行仿真程序,生成覆盖率数据库,生成覆盖率报告等TCL脚本语句。
本发明实施例能自动实现FPGA数字仿真模型的建立,缓解目前FPGA软件数字仿真模型的搭建需要通过人工手动完成。同时,产生的仿真模型遵循固定的模式,在帮助验证人员快速搭建数值仿真模型的同时还有助于项目间代码的一致性,从而在保证代码的可重用性。
本方法支持由verilog-1995、verilog-2001、VHDL-87、VHDL-93、VHDL-2002和systemverilog语言设计的可编程逻辑器件软件项目。
采用本发明实施例提供的方法搭建仿真模型,具体包括以下步骤:
步骤1、创建仿真项目
创建新项目标签中,在项目名所属编辑框中输入仿真模型的项目名称;点击存放位置选择按钮,打开文件夹选择对话框,设置仿真项目存放位置;点击选择按钮,打开文件夹选择对话框,选择被测件所存放的文件夹。最后点击创建新项目按钮,创建仿真验证项目文件夹,以及子文件夹。
步骤2、分析项目文件
该步骤中自动提取仿真验证项目存放文件夹中的RTL文件,并列表显示。
在列表中选择顶层文件后,双击该顶层文件。在列表中选中顶层文件后,需要双击该顶层文件。分析项目文件标签页中将自动列出选择的顶层文件的端口列表,并显示端口的名称,方向和位宽。
点击“下一步”按钮,进入生成仿真模型标签页。
步骤3、生成仿真模型
生成仿真模型标签页列表中已列出端口的名称、方向和位宽。可选择时钟信号,双击弹出时钟设置对话框。在时钟设置对话框中,设置时钟的频率。
点击“生成测试模型”按钮,此时将生成验证框架的顶层文件。在顶层文件中实现被测件端口与激励发生器、结果检测器的端口连接。
步骤4、创建框架运行的脚本文件
创建框架运行的脚本文件,脚本文件中包含了创建仿真库,编译被测件源代码,编译仿真代码,启动仿真,记录波形,运行仿真程序,生成覆盖率数据库,生成覆盖率报告等功能。通过执行该脚本文件实现上述功能的自动执行。
本发明实施例还提供一种快速搭建FPGA数字仿真模型的系统,包括:
信息提取模块,其用于:读取被测件的RTL代码,分析和提取被测件名称、被测件端口的名称、位宽、传输方向;
仿真模型搭建模块,其用于:根据获取的信息例化仿真模型的顶层代码文件;在仿真模型的顶层代码文件中,例化被测件模块、激励发生器模块、验证结果检测模块,实现被测件模块端口与激励发生器模块、结果检测器模块的端口连接;激励发生器模块用于产生激励信号;验证结果检测模块用于检查被测件的输出是否符合设计要求;再创建框架运行的脚本文件,其用于执行仿真过程。
所述激励发生器模块的代码包括端口信号定义代码和时钟信号的产生代码。所述验证结果检测模块的代码包括端口信号定义代码。
所述框架运行的脚本文件具体用于:创建仿真库,编译被测件源代码,编译仿真代码,启动仿真,记录波形,运行仿真程序,生成覆盖率数据库,生成覆盖率报告。
本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。说明书中未详细描述的内容为本领域技术人员公知的现有技术。
Claims (9)
1.一种快速搭建FPGA数字仿真模型的方法,其特征在于,包括以下步骤:
读取被测件的RTL代码,提取被测件名称、被测件端口的名称、位宽、传输方向;
根据获取的信息生成仿真模型的顶层代码文件;
在仿真模型的顶层代码文件中,例化被测件模块、激励发生器模块、验证结果检测模块,并实现被测件模块端口与激励发生器模块、结果检测器模块的端口连接;激励发生器模块用于产生激励信号,验证结果检测模块用于检查被测件的输出是否符合设计要求;
创建框架运行的脚本文件,其用于执行仿真过程;
所述读取被测件的RTL代码,分析和提取被测件名称、被测件端口的名称、位宽、传输方向,具体包括以下步骤:
读取被测件的RTL代码;
通过识别读取的代码是否包含被测件名称关键字,判断读取的代码中是否包含被测件名称信息;
识别到被测件名称关键字时,提取被测件名称;
通过识别读取的代码中是否包含被测件端口关键字,提取该被测件端口的名称、位宽、传输方向。
2.如权利要求1所述的方法,其特征在于:所述在仿真模型的顶层代码文件中,例化被测件模块、激励发生器模块、验证结果检测模块,并实现被测件端口与激励发生器模块、结果检测器模块的端口连接,具体包括以下步骤:
在验证框架程序的顶层代码文件中例化被测件模块、激励发生器模块和验证结果检测模块;
将被测件模块的输入端口和双向端口连接到激励发生器模块的端口,将被测件的全部端口连接到验证结果检测模块的端口上。
3.如权利要求2所述的方法,其特征在于:所述激励发生器模块的代码包括端口信号定义代码和时钟信号的产生代码。
4.如权利要求2所述的方法,其特征在于:所述验证结果检测模块的代码包括端口信号定义代码。
5.如权利要求2所述的方法,其特征在于:所述框架运行的脚本文件的代码包括:创建仿真库、编译被测件源代码、编译仿真代码,启动仿真、记录波形、运行仿真程序、生成覆盖率数据库、生成覆盖率报告的代码。
6.一种快速搭建FPGA数字仿真模型的系统,其特征在于,包括:
信息提取模块,其用于:读取被测件的RTL代码,分析和提取被测件名称、被测件端口的名称、位宽、传输方向;
仿真模型搭建模块,其用于:根据获取的信息例化仿真模型的顶层代码文件;在仿真模型的顶层代码文件中,例化被测件模块、激励发生器模块、验证结果检测模块,并实现被测件模块端口与激励发生器模块、结果检测器模块的端口连接;激励发生器模块用于产生激励信号,验证结果检测模块用于检查被测件的输出是否符合设计要求;创建框架运行的脚本文件,其用于执行仿真过程;
所述读取被测件的RTL代码,分析和提取被测件名称、被测件端口的名称、位宽、传输方向,具体包括以下步骤:
读取被测件的RTL代码;
通过识别读取的代码是否包含被测件名称关键字,判断读取的代码中是否包含被测件名称信息;
识别到被测件名称关键字时,提取被测件名称;
通过识别读取的代码中是否包含被测件端口关键字,提取该被测件端口的名称、位宽、传输方向。
7.如权利要求6所述的系统,其特征在于:所述激励发生器模块的代码包括端口信号定义代码和时钟信号的产生代码。
8.如权利要求6所述的系统,其特征在于:所述验证结果检测模块的代码包括端口信号定义代码。
9.如权利要求6所述的系统,其特征在于:所述框架运行的脚本文件具体用于:创建仿真库,编译被测件源代码,编译仿真代码,启动仿真,记录波形,运行仿真程序,生成覆盖率数据库,生成覆盖率报告。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811644686.2A CN109739766B (zh) | 2018-12-29 | 2018-12-29 | 一种快速搭建fpga数字仿真模型的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811644686.2A CN109739766B (zh) | 2018-12-29 | 2018-12-29 | 一种快速搭建fpga数字仿真模型的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109739766A CN109739766A (zh) | 2019-05-10 |
CN109739766B true CN109739766B (zh) | 2022-04-29 |
Family
ID=66362791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811644686.2A Active CN109739766B (zh) | 2018-12-29 | 2018-12-29 | 一种快速搭建fpga数字仿真模型的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109739766B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688269B (zh) * | 2019-09-12 | 2023-03-14 | 武汉极目智能技术有限公司 | 采用axi总线接口的rtl代码自动化验证装置及方法 |
CN110750462A (zh) * | 2019-10-29 | 2020-02-04 | 西安奇维科技有限公司 | 一种fpga白盒测试平台 |
CN111274750B (zh) * | 2020-03-05 | 2023-05-30 | 中国工程物理研究院计算机应用研究所 | 一种基于可视化建模的fpga仿真验证系统和方法 |
CN111400979A (zh) * | 2020-03-24 | 2020-07-10 | 杭州博雅鸿图视频技术有限公司 | Soc的仿真方法、系统、电子设备及存储介质 |
CN113553290A (zh) * | 2020-04-26 | 2021-10-26 | 江苏华创微系统有限公司 | 一种数字芯片模块链接的自动化设计方法 |
CN111680559B (zh) * | 2020-04-26 | 2023-10-17 | 广州明珞汽车装备有限公司 | 一种传感器信号名称快速同步方法、系统、装置及存储介质 |
CN111736490B (zh) * | 2020-07-22 | 2023-09-05 | 北京润科通用技术有限公司 | 联合仿真方法、装置、系统及电子设备 |
CN112100949A (zh) * | 2020-09-15 | 2020-12-18 | 北京士昌鼎科技有限公司 | 集成电路芯片的自动开发方法及装置、电子设备 |
CN112416760B (zh) * | 2020-11-11 | 2023-05-23 | 北京京航计算通讯研究所 | 一种通用的测试平台TestBench的模块封装方法及装置 |
CN112559264B (zh) * | 2020-12-08 | 2021-08-06 | 北京京航计算通讯研究所 | 基于uvm的验证平台实现fpga通用串口的仿真测试方法 |
CN113051167B (zh) * | 2021-03-31 | 2023-12-22 | 北京经纬恒润科技股份有限公司 | 一种模型与模型代码的测试方法及装置 |
CN113343628B (zh) * | 2021-06-24 | 2022-08-16 | 中国电子科技集团公司第五十八研究所 | 一种testbench自动生成方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1577274A (zh) * | 2003-07-01 | 2005-02-09 | 华为技术有限公司 | 自动化仿真方法及系统 |
CN101286182A (zh) * | 2008-05-16 | 2008-10-15 | 浙江大学 | 一种用于嵌入式处理器功能验证的动态仿真平台方法 |
CN102841950A (zh) * | 2011-06-21 | 2012-12-26 | 中兴通讯股份有限公司 | 一种逻辑存储单元自动验证的方法及装置 |
CN104536931A (zh) * | 2015-01-16 | 2015-04-22 | 盛科网络(苏州)有限公司 | 一种硬件仿真中多个fpga自动互联的方法及系统 |
EP2977894A1 (de) * | 2014-07-21 | 2016-01-27 | dSPACE digital signal processing and control engineering GmbH | Erstellen eines FPGA-Codes mit automatisch eingefügter Beeinflussungsstruktur |
-
2018
- 2018-12-29 CN CN201811644686.2A patent/CN109739766B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1577274A (zh) * | 2003-07-01 | 2005-02-09 | 华为技术有限公司 | 自动化仿真方法及系统 |
CN101286182A (zh) * | 2008-05-16 | 2008-10-15 | 浙江大学 | 一种用于嵌入式处理器功能验证的动态仿真平台方法 |
CN102841950A (zh) * | 2011-06-21 | 2012-12-26 | 中兴通讯股份有限公司 | 一种逻辑存储单元自动验证的方法及装置 |
EP2977894A1 (de) * | 2014-07-21 | 2016-01-27 | dSPACE digital signal processing and control engineering GmbH | Erstellen eines FPGA-Codes mit automatisch eingefügter Beeinflussungsstruktur |
CN104536931A (zh) * | 2015-01-16 | 2015-04-22 | 盛科网络(苏州)有限公司 | 一种硬件仿真中多个fpga自动互联的方法及系统 |
Non-Patent Citations (1)
Title |
---|
"基于FPGA的智能交通控制器的建模与仿真";唐敏;《电子测试》;20170331;第13-16页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109739766A (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109739766B (zh) | 一种快速搭建fpga数字仿真模型的系统及方法 | |
US9754059B2 (en) | Graphical design verification environment generator | |
US9064068B1 (en) | Debuggable opaque IP | |
CN101996131A (zh) | 基于xml封装关键字的gui自动测试方法及自动测试平台 | |
CN109032949A (zh) | 一种前端代码质量检测方法及装置 | |
CN104268310A (zh) | 使用专用图形界面调用uvm验证环境的方法 | |
US10019337B2 (en) | Class object handle tracking | |
US20070061641A1 (en) | Apparatus and method for generating test driver | |
WO2016026328A1 (zh) | 一种信息处理方法、装置及计算机存储介质 | |
JP3822044B2 (ja) | 設計検証システム、設計検証方法および設計検証プログラムを格納したコンピュータ読取り可能な記録媒体 | |
EP1626359A2 (en) | Methods and systems for electronic device modelling | |
US20080147372A1 (en) | Automatic method and system for identifying and recording transaction data generated from a computer simulation of an integrated circuit | |
US8140315B2 (en) | Test bench, method, and computer program product for performing a test case on an integrated circuit | |
US6272665B1 (en) | Method and tool for automatically generating engineering change order | |
TWI402705B (zh) | 積體電路元件之模擬實例產生方法與裝置 | |
US20060190882A1 (en) | System and method for generating assertions using waveforms | |
US9280627B1 (en) | GUI based verification at multiple abstraction levels | |
CN112567375A (zh) | 形式验证方法、信息识别方法、设备和存储介质 | |
CN110750462A (zh) | 一种fpga白盒测试平台 | |
CN109471637A (zh) | 电路图的审查脚本调试方法 | |
US20190163844A1 (en) | Checking equivalence between changes made in a circuit definition language and changes in post-synthesis nets | |
RU2729210C1 (ru) | Комплекс тестирования программного обеспечения электронных устройств | |
CN114297961A (zh) | 一种芯片测试用例处理方法及相关装置 | |
Karnane et al. | Automating root-cause analysis to reduce time to find bugs by up to 50% | |
KR100984049B1 (ko) | 응용업무관리 시스템 및 그 방법 |
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 |