CN111460759A - 一种基于Python语言的EDA验证平台及其使用方法 - Google Patents
一种基于Python语言的EDA验证平台及其使用方法 Download PDFInfo
- Publication number
- CN111460759A CN111460759A CN202010196459.9A CN202010196459A CN111460759A CN 111460759 A CN111460759 A CN 111460759A CN 202010196459 A CN202010196459 A CN 202010196459A CN 111460759 A CN111460759 A CN 111460759A
- Authority
- CN
- China
- Prior art keywords
- verification
- uvm
- layer
- python
- monitor
- 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.)
- Pending
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开了一种基于Python语言的EDA验证平台及其使用方法,涉及FPGA逻辑验证技术,通过对标准UVM验证框架进行封装,提供了一种充分利用Python高级语言特性的方式来使用复杂的UVM验证环境。所述验证平台由Python脚本和UVM验证组件组成。UVM验证组件用于构建UVM基本验证环境。本发明通过使用Python脚本向上提供用户接口,向下转化UVM验证组件,使得能够直接用Python语言进行硬件验证设计,该方法充分利用Python高级语言灵活数据结构,面向对象,运算符重载和多态多继承等特点,不需要掌握复杂的底层语法,极大简化硬件验证工程师工作,在降低UVM验证环境的使用门槛的同时,大大提高了硬件验证的质量和效率。
Description
技术领域
本发明涉及FPGA验证的技术领域,尤其是指一种基于Python语言的EDA 验证平台及其使用方法。
背景技术
随着半导体工艺和集成电路技术不断发展,数字IC设计扮演着越来越重要的角色。在早期设计中,由于硬件规模较小,功能较单一,验证工程师通常采用编写teshbanch测试文件以模拟的方式来验证逻辑时序的正确性,它以源的方式来激励用户编写的逻辑功能模块,并将实际输出与期望输出作对比,以验证模块正确性和完善性。随着FPGA资源和容量不断提升,硬件设计也变的越来大规模和复杂,越来越多的功能模块被集成到同一颗IC上,容易出现复杂且不易发现的缺陷,其功能上的完备性和正确性越来越难以保证,往往需要花大量的精力在硬件验证阶段。据统计,硬件验证的工作量占据整个设计周期的70%以上。传统定向激励的方式逐渐暴露出低效率、覆盖率不足等缺点,难以快速定位逻辑问题,已无法满足硬件验证的需求。
为了克服传统验证方法的缺陷,业界开始采用高级语言如C/C++来描述越来越复杂的测试激励,但是由于多数验证对象DUT仍是RTL代码,将会带来兼容性问题,另外高级语言一般没有时序的概念。后来又相继出现了SystemC和 SystemVerilog(SV)语言,SV语言很好的解决了这些问题,成为了现代验证技术中较为常用的验证语言。
在硬件验证工作中,因不同验证人员思维习惯上的不同,导致使用SV语言设计出的验证平台点的框架和组件也不尽相同,导致使用验证平台的交流成本增加,平台可移植性降低。因此,引入了验证方法学用于制定一种统一的标准规范。2006年Synopsys公司推出了VMM验证方法学,其逻辑层次清晰,代码简洁的优点大大提高了验证效率。2008年Cadence公司和Mentor公司又推出了 OVM验证方法学,引入了factory机制和phase机制等,是验证平台更为灵活。 2011年,UVM出现,它吸收了OVM与VMM以及早期验证方法学的优点,具有更好的可重用性,更清晰的层次感,成为了业界通用的验证方法学。
在越来越高的抽象层次上进行硬件验证是当前验证方法学的主要趋势,虽然UVM属于TLM级验证,相比于传统的RTL级验证有着更高的效率,但是其本身具备众多的组件与机制,语法规则也有一定的学习门槛,对硬件验证工程师的要求较高,不利于用户快速使用和推广。
Python作为当今主流高级语言,其学习成本低,简洁优美的特点成为了编程设计的不二之选,灵活的数据结构和运算符重载、多态多继承等特性使编程更加灵活简单,同时具备丰富的软件库。硬件构造语言PyHCL的出现更是打破了顶层与底层的界限,根据UVM各组件层次清晰的特点,结合PyHCL,使用 Python对其封装实现敏捷开发硬件验证平台成为了可能。
发明内容
本发明的目的在于克服现有技术的不足与缺点,提出了一种基于Python语言的EDA验证平台及其使用方法,通过使用Python脚本向上提供用户接口,向下转化UVM验证组件,使得能够直接用Python语言进行硬件验证设计,该方法充分利用Python高级语言灵活数据结构,面向对象,运算符重载和多态多继承等特点,不需要掌握复杂的底层语法,极大简化硬件验证工程师工作,在降低UVM验证环境的使用门槛的同时,大大提高了硬件验证的质量和效率。
为实现上述目的,本发明所提供的技术方案如下:
一种基于Python语言的EDA验证平台,包括:
UVM验证组件,用于构建UVM基本验证环境;
Python脚本,用于实现向上提供用户接口,向下转化UVM验证组件;所述Python脚本根据用户接口信息进行字符串分析与处理,将UVM验证组件中的特定参数进行替换;其中,仅需定义特定的用户接口,调用Python脚本即可生成相应的UVM验证SystemVerilog文件,最终生成的SyetemVerilog文件能够直接传递到仿真验证工具中。
进一步,所述UVM验证组件包括包抽象层、序列层、序列发生层、代理类、驱动器、监视器、接口层、环境层、参考模型、计分牌、测试基类和测试顶层,其中:
所述包抽象层负责transaction的定义与约束,将数据进行抽象;
所述序列层能够定义不同类型的sequence序列来应对不同种类的测试激励,序列由transaction数据构成,输送至序列发生层;
所述序列发生层负责接收序列层transaction数据,输送至驱动器输出;
所述代理类包含i_agent和o_agent,通过uvm_agent自带方法定义,i_agent 为ACTIVE模式,内部会例化序列发生器sequencer、驱动器driver和监视器 monitor,o_agent为PASSIVE模式,仅例化监视器monitor;
所述驱动器负责将从序列发生器中获得transaction数据驱动至待验证模块 DUT中;
所述监视器包括输入监视器i_monitor和输出监视器o_monitor,负责监视接口层transaction数据,i_monitor收集DUT输入数据传送至参考模型,o_monitor 收集DUT输出数据传送至计分牌;
所述接口层定义了DUT和验证平台的接口,通过使用interface接口实现验证平台的可移植性;
所述环境层内部实例化代理类、参考模型和计分牌,并定义互相之间通信的analysis port用于传输transaction数据;
所述参考模型负责实现与DUT功能相同的行为,其输出结果将作为验证的期望值;
所述计分牌通过调用compare方法比较期望值和实际值是否一致,同时记录命中数和不匹配数;
所述测试基类用于实现一些测试框架的基础用法,包括定义验证平台最长运行时间和定义测试结束后打印的结果,子类能够继承测试基类的方法;
所述测试顶层负责例化测试激励,定义三个interface接口与激励相连,三组信号与DUT输入输出互不干扰。
进一步,所述Python脚本提供的用户接口包括数据包定义与约束、数据包驱动方式、数据包监视方式及参考模型功能,其中:
所述数据包定义与约束负责对UVM验证组件中序列层的transaction进行定义与约束,同时加入field_automation机制对所有字段进行注册,在调用Python 脚本时写入UVM验证组件的序列层;
所述数据包驱动方式负责实现UVM验证组件中驱动器的transaction驱动输出,在调用Python脚本时写入UVM验证组件的驱动器;
所述数据包监视方式负责实现UVM验证组件中监视器的transaction输入输出监视,在调用Python脚本时写入UVM验证组件的监视器;
所述参考模型功能负责实现与DUT相同的功能行为,在调用Python脚本时写入UVM验证组件的参考模型。
进一步,所述仿真验证工具有ModelSim、VCS。
本发明也提供了上述基于Python语言的EDA验证平台的使用方法,包括以下步骤:
1)定义Python脚本提供的用户接口,包括数据包定义与约束、数据包驱动方式、数据包监视方式和参考模型功能;
2)调用Python脚本,将用户接口信息传入UVM验证组件中,生成 SyetemVerilog代码;
3)导出SyetemVerilog代码并保存;
4)调用仿真软件进行SyetemVerilog代码UVM验证。
本发明与现有技术相比,具有如下优点与有益效果:
通过Python语言对UVM各组件进行封装并制作脚本,使得能够直接用 Python语言进行硬件验证,充分利用Python语言的面向对象,支持多态,运算符重载和多继承等特点,不需要掌握复杂的底层语法,降低了UVM验证环境使用门槛,简化硬件工程师验证工作,大大提高了硬件验证的质量和效率。
附图说明
图1为验证平台的框架示意图,其中:Python User Interface为Python脚本提供的用户接口;Python Script为Python脚本;Sequence为UVM验证组件中的序列层,transaction为数据包;Driver为UVM验证组件中的驱动器, driver_one_pkt为transaction驱动输出任务;Monitor为UVM验证组件中的监视器,collect_one_pkt为transaction输入输出监视任务;Reference Model为UVM 验证组件中的参考模型,main_phase为与DUT相同功能行为的任务;Interface 为UVM验证组件中的接口层,logic signal为逻辑端口信号;TopTB为UVM验证组件中的测试顶层,wires®s为相关连接线与寄存器,DUT instance为DUT 实例化。
图2为UVM验证组件关系示意图。
图3为验证平台使用流程示意图。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
如图1所示,本实施例所提供的基于Python语言的EDA验证平台,是一种充分利用Python高级语言特点,降低UVM验证环境使用门槛,简化硬件工程师验证工作的EDA验证平台,包括Python脚本和UVM验证组件。
所述Python脚本用于实现向上提供用户接口,向下转化UVM验证组件。所述用户接口包括数据包定义与约束,数据包驱动方式,数据包监视方式,参考模型功能。Python脚本根据用户接口信息进行字符串分析与处理,将UVM验证组件中的特定参数进行替换。其中:
所述数据包定义与约束负责对UVM验证组件中序列层(Sequence)的 transaction进行定义与约束,同时加入field_automation机制对所有字段进行注册,在调用Python脚本时写入Sequence;
所述数据包驱动方式负责实现UVM验证组件中驱动器(Driver)的 transaction驱动输出(在drive_one_pkt任务中),在调用Python脚本时写入UVM 验证组件的Driver;
所述数据包监视方式负责实现UVM验证组件中监视器(Monitor)的transaction输入输出监视(在collect_one_pkt任务中),在调用Python脚本时写入UVM验证组件的Monitor;所述参考模型(Reference Model)功能负责实现与DUT相同的功能行为(在main_phase任务中),在调用Python脚本时写入 UVM验证组件的Reference Model;
所述Python脚本还将综合上述用户接口信息在UVM验证组件接口层 (Interface)中添加逻辑端口信号(logic signal),并在UVM验证组件测试顶层(TopTB)中添加相关连接线Wires与寄存器Regs并实例化DUT。
如图2所示,UVM验证组件主要包抽象层、序列层、序列发生层、代理类、驱动器、监视器、接口层、环境层、参考模型、计分牌、测试基类和测试顶层。
所述UVM验证组件自顶向下分为测试顶层,测试基类,环境层。其中:
所述测试顶层选择测试用例,测试用例继承所述测试基类。
所述环境层包括了序列层、参考模型、计分牌、代理层、接口层和待验证模块DUT。代理层由i_agent和o_agent组成,i_agent中例化了序列发生器、驱动器和监视器,o_agent中仅例化监视器。序列层负责产生出transaction送入序列发生器,最终由驱动器通过接口层将transaction灌入DUT中。同时,i_agent 监视器收集相同输入transaction传入参考模型计算期望值,o_agent监视器收集 DUT实际输出transaction传入计分牌与期望值比较。
如图3所示,本实施例也提供了上述基于Python语言的EDA验证平台的使用方法,使用流程步骤如下:
1)定义Python脚本提供的用户接口,包括数据包(transaction)定义与约束,数据包(transaction)驱动方式,数据包(transaction)监视方式,参考模型功能;
2)调用Python脚本,将用户接口信息传入UVM验证组件中,生成 SyetemVerilog代码;
3)导出SyetemVerilog代码并保存;
4)调用仿真软件进行SyetemVerilog代码UVM验证。
以上实施方式仅用于说明本发明,而非对本发明的限制,有关技术的普通技术人员,再不脱离本发明的精神和范畴情况下,还可以做出变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (5)
1.一种基于Python语言的EDA验证平台,其特征在于,包括:
UVM验证组件,用于构建UVM基本验证环境;
Python脚本,用于实现向上提供用户接口,向下转化UVM验证组件;所述Python脚本根据用户接口信息进行字符串分析与处理,将UVM验证组件中的特定参数进行替换;其中,仅需定义特定的用户接口,调用Python脚本即可生成相应的UVM验证SystemVerilog文件,最终生成的SyetemVerilog文件能够直接传递到仿真验证工具中。
2.根据权利要求1所述的一种基于Python语言的EDA验证平台,其特征在于:所述UVM验证组件包括包抽象层、序列层、序列发生层、代理类、驱动器、监视器、接口层、环境层、参考模型、计分牌、测试基类和测试顶层,其中:
所述包抽象层负责transaction的定义与约束,将数据进行抽象;
所述序列层能够定义不同类型的sequence序列来应对不同种类的测试激励,序列由transaction数据构成,输送至序列发生层;
所述序列发生层负责接收序列层transaction数据,输送至驱动器输出;
所述代理类包含i_agent和o_agent,通过uvm_agent自带方法定义,i_agent为ACTIVE模式,内部会例化序列发生器sequencer、驱动器driver和监视器monitor,o_agent为PASSIVE模式,仅例化监视器monitor;
所述驱动器负责将从序列发生器中获得transaction数据驱动至待验证模块DUT中;
所述监视器包括输入监视器i_monitor和输出监视器o_monitor,负责监视接口层transaction数据,i_monitor收集DUT输入数据传送至参考模型,o_monitor收集DUT输出数据传送至计分牌;
所述接口层定义了DUT和验证平台的接口,通过使用interface接口实现验证平台的可移植性;
所述环境层内部实例化代理类、参考模型和计分牌,并定义互相之间通信的analysisport用于传输transaction数据;
所述参考模型负责实现与DUT功能相同的行为,其输出结果将作为验证的期望值;
所述计分牌通过调用compare方法比较期望值和实际值是否一致,同时记录命中数和不匹配数;
所述测试基类用于实现一些测试框架的基础用法,包括定义验证平台最长运行时间和定义测试结束后打印的结果,子类能够继承测试基类的方法;
所述测试顶层负责例化测试激励,定义三个interface接口与激励相连,三组信号与DUT输入输出互不干扰。
3.根据权利要求1所述的一种基于Python语言的EDA验证平台,其特征在于:所述Python脚本提供的用户接口包括数据包定义与约束、数据包驱动方式、数据包监视方式及参考模型功能,其中:
所述数据包定义与约束负责对UVM验证组件中序列层的transaction进行定义与约束,同时加入field_automation机制对所有字段进行注册,在调用Python脚本时写入UVM验证组件的序列层;
所述数据包驱动方式负责实现UVM验证组件中驱动器的transaction驱动输出,在调用Python脚本时写入UVM验证组件的驱动器;
所述数据包监视方式负责实现UVM验证组件中监视器的transaction输入输出监视,在调用Python脚本时写入UVM验证组件的监视器;
所述参考模型功能负责实现与DUT相同的功能行为,在调用Python脚本时写入UVM验证组件的参考模型;
所述Python脚本还将综合上述用户接口信息在UVM验证组件接口层中添加逻辑端口信号,并在UVM验证组件测试顶层中添加相关连接线Wires与寄存器Regs并实例化DUT。
4.根据权利要求1所述的一种基于Python语言的EDA验证平台,其特征在于:所述仿真验证工具有ModelSim、VCS。
5.一种权利要求1至4任何一项所述基于Python语言的EDA验证平台的使用方法,其特征在于,包括以下步骤:
1)定义Python脚本提供的用户接口,包括数据包定义与约束、数据包驱动方式、数据包监视方式和参考模型功能;
2)调用Python脚本,将用户接口信息传入UVM验证组件中,生成SyetemVerilog代码;
3)导出SyetemVerilog代码并保存;
4)调用仿真软件进行SyetemVerilog代码UVM验证。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010196459.9A CN111460759A (zh) | 2020-03-19 | 2020-03-19 | 一种基于Python语言的EDA验证平台及其使用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010196459.9A CN111460759A (zh) | 2020-03-19 | 2020-03-19 | 一种基于Python语言的EDA验证平台及其使用方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111460759A true CN111460759A (zh) | 2020-07-28 |
Family
ID=71680804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010196459.9A Pending CN111460759A (zh) | 2020-03-19 | 2020-03-19 | 一种基于Python语言的EDA验证平台及其使用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111460759A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115190030A (zh) * | 2022-06-30 | 2022-10-14 | 东风汽车集团股份有限公司 | 一种实现can fd的硬件装置和uvm验证平台 |
CN116090376A (zh) * | 2023-04-10 | 2023-05-09 | 芯来智融半导体科技(上海)有限公司 | 芯片集成验证组件开发方法、装置及计算机设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104965750A (zh) * | 2015-06-05 | 2015-10-07 | 浪潮集团有限公司 | 基于Python语言的Rapidio切换器逻辑仿真验证平台及方法 |
CN107463473A (zh) * | 2017-09-01 | 2017-12-12 | 珠海泰芯半导体有限公司 | 基于uvm和fpga的芯片软硬件仿真环境 |
US20180341723A1 (en) * | 2017-05-25 | 2018-11-29 | Sandisk Technologies Llc | Triggering untriggered assertions in design verification |
CN109885902A (zh) * | 2019-01-29 | 2019-06-14 | 华南理工大学 | 一种基于Python语言的EDA开发平台及其使用方法 |
CN110674616A (zh) * | 2019-09-19 | 2020-01-10 | 北京智联安科技有限公司 | 一种基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法 |
-
2020
- 2020-03-19 CN CN202010196459.9A patent/CN111460759A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104965750A (zh) * | 2015-06-05 | 2015-10-07 | 浪潮集团有限公司 | 基于Python语言的Rapidio切换器逻辑仿真验证平台及方法 |
US20180341723A1 (en) * | 2017-05-25 | 2018-11-29 | Sandisk Technologies Llc | Triggering untriggered assertions in design verification |
CN107463473A (zh) * | 2017-09-01 | 2017-12-12 | 珠海泰芯半导体有限公司 | 基于uvm和fpga的芯片软硬件仿真环境 |
CN109885902A (zh) * | 2019-01-29 | 2019-06-14 | 华南理工大学 | 一种基于Python语言的EDA开发平台及其使用方法 |
CN110674616A (zh) * | 2019-09-19 | 2020-01-10 | 北京智联安科技有限公司 | 一种基于Systemverilog和Matlab算法可扩展的全随机全自动验证方法 |
Non-Patent Citations (2)
Title |
---|
张瑞: ""基于断言的形式化验证与UVM的综合应用"", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
蒋心祝: ""软硬件协同仿真的自动化验证平台设计"", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115190030A (zh) * | 2022-06-30 | 2022-10-14 | 东风汽车集团股份有限公司 | 一种实现can fd的硬件装置和uvm验证平台 |
CN116090376A (zh) * | 2023-04-10 | 2023-05-09 | 芯来智融半导体科技(上海)有限公司 | 芯片集成验证组件开发方法、装置及计算机设备 |
CN116090376B (zh) * | 2023-04-10 | 2023-08-15 | 芯来智融半导体科技(上海)有限公司 | 芯片集成验证组件开发方法、装置及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110046387B (zh) | 一种基于uvm的sm2模块验证平台及验证方法 | |
US6530054B2 (en) | Method and apparatus for test generation during circuit design | |
CN108038294B (zh) | Uvm环境搭建方法和系统 | |
US6192504B1 (en) | Methods and systems for functionally describing a digital hardware design and for converting a functional specification of same into a netlist | |
US20030093764A1 (en) | Automated system-on-chip integrated circuit design verification system | |
US6920418B2 (en) | Detecting events within simulation models | |
US8214195B2 (en) | Testing in a hardware emulation environment | |
US7584456B1 (en) | Method and apparatus for debugging embedded systems having read only memory | |
US20080183458A1 (en) | Method, system and program product supporting print events in the simulation of a digital system | |
CN109885902B (zh) | 一种基于Python语言的EDA开发平台系统及其使用方法 | |
CN114236359B (zh) | 面向ate测试设备的集成电路测试激励生成方法 | |
Palnitkar | Design Verification with e | |
US8108199B2 (en) | Phase events in a simulation model of a digital system | |
CN107992428A (zh) | 一种Python实现的自动化测试平台 | |
CN111460759A (zh) | 一种基于Python语言的EDA验证平台及其使用方法 | |
US7437282B2 (en) | Method and apparatus to provide alternative stimulus to signals internal to a model actively running on a logic simulation hardware emulator | |
CN102480467A (zh) | 一种基于网络通讯协议的soc软硬件协同仿真验证方法 | |
Bunker et al. | Formal hardware specification languages for protocol compliance verification | |
Gao et al. | Software and hardware co-verification technology based on virtual prototyping of RF SOC | |
US7092864B2 (en) | Signal override for simulation models | |
CN116340150A (zh) | 一种基于uvm的可重用的寄存器性能交互验证系统及其应用 | |
CN107526585B (zh) | 基于Scala的FPGA开发平台及其调试、测试方法 | |
US10635766B2 (en) | Simulation employing level-dependent multitype events | |
Navabi | A high-level language for design and modeling of hardware | |
US7424703B1 (en) | Method and system for simulation of mixed-language circuit designs |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200728 |