基于Python语言的EDA验证平台及其使用方法.pdf
《基于Python语言的EDA验证平台及其使用方法.pdf》由会员分享,可在线阅读,更多相关《基于Python语言的EDA验证平台及其使用方法.pdf(10页完成版)》请在专利查询网上搜索。
1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 202010196459.9 (22)申请日 2020.03.19 (71)申请人 华南理工大学 地址 510640 广东省广州市天河区五山路 381号 (72)发明人 赖晓铮钟震宇陈若晖莫国艺 (74)专利代理机构 广州市华学知识产权代理有 限公司 44245 代理人 冯炳辉 (51)Int.Cl. G06F 30/398(2020.01) (54)发明名称 一种基于Python语言的EDA验证平台及其使 用方法 (57)摘要 本发明公开了一种基于Python语言的EDA验 证。
2、平台及其使用方法, 涉及FPGA逻辑验证技术, 通过对标准UVM验证框架进行封装, 提供了一种 充分利用Python高级语言特性的方式来使用复 杂的UVM验证环境。 所述验证平台由Python脚本 和UVM验证组件组成。 UVM验证组件用于构建UVM 基本验证环境。 本发明通过使用Python脚本向上 提供用户接口, 向下转化UVM验证组件, 使得能够 直接用Python语言进行硬件验证设计, 该方法充 分利用Python高级语言灵活数据结构, 面向对 象, 运算符重载和多态多继承等特点, 不需要掌 握复杂的底层语法, 极大简化硬件验证工程师工 作, 在降低UVM验证环境的使用门槛的同时, 大。
3、大 提高了硬件验证的质量和效率。 权利要求书2页 说明书4页 附图3页 CN 111460759 A 2020.07.28 CN 111460759 A 1.一种基于Python语言的EDA验证平台, 其特征在于, 包括: UVM验证组件, 用于构建UVM基本验证环境; Python脚本, 用于实现向上提供用户接口, 向下转化UVM验证组件; 所述Python脚本根 据用户接口信息进行字符串分析与处理, 将UVM验证组件中的特定参数进行替换; 其中, 仅 需定义特定的用户接口, 调用Python脚本即可生成相应的UVM验证SystemVerilog文件, 最 终生成的SyetemVerilog。
4、文件能够直接传递到仿真验证工具中。 2.根据权利要求1所述的一种基于Python语言的EDA验证平台, 其特征在于: 所述UVM验 证组件包括包抽象层、 序列层、 序列发生层、 代理类、 驱动器、 监视器、 接口层、 环境层、 参考 模型、 计分牌、 测试基类和测试顶层, 其中: 所述包抽象层负责transaction的定义与约束, 将数据进行抽象; 所述序列层能够定义不同类型的sequence序列来应对不同种类的测试激励, 序列由 transaction数据构成, 输送至序列发生层; 所述序列发生层负责接收序列层transaction数据, 输送至驱动器输出; 所述代理类包含i_agent和。
5、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和验证平台。
6、的接口, 通过使用interface接口实现验证平台的可 移植性; 所述环境层内部实例化代理类、 参考模型和计分牌, 并定义互相之间通信的analysis port用于传输transaction数据; 所述参考模型负责实现与DUT功能相同的行为, 其输出结果将作为验证的期望值; 所述计分牌通过调用compare方法比较期望值和实际值是否一致, 同时记录命中数和 不匹配数; 所述测试基类用于实现一些测试框架的基础用法, 包括定义验证平台最长运行时间和 定义测试结束后打印的结果, 子类能够继承测试基类的方法; 所述测试顶层负责例化测试激励, 定义三个interface接口与激励相连, 三组信号与 。
7、DUT输入输出互不干扰。 3.根据权利要求1所述的一种基于Python语言的EDA验证平台, 其特征在于: 所述 Python脚本提供的用户接口包括数据包定义与约束、 数据包驱动方式、 数据包监视方式及 参考模型功能, 其中: 所述数据包定义与约束负责对UVM验证组件中序列层的transaction进行定义与约束, 同时加入field_automation机制对所有字段进行注册, 在调用Python脚本时写入UVM验证 组件的序列层; 所述数据包驱动方式负责实现UVM验证组件中驱动器的transaction驱动输出, 在调用 Python脚本时写入UVM验证组件的驱动器; 权利要求书 1/2 。
8、页 2 CN 111460759 A 2 所述数据包监视方式负责实现UVM验证组件中监视器的transaction输入输出监视, 在 调用Python脚本时写入UVM验证组件的监视器; 所述参考模型功能负责实现与DUT相同的功能行为, 在调用Python脚本时写入UVM验证 组件的参考模型; 所述Python脚本还将综合上述用户接口信息在UVM验证组件接口层中添加逻辑端口信 号, 并在UVM验证组件测试顶层中添加相关连接线Wires与寄存器Regs并实例化DUT。 4.根据权利要求1所述的一种基于Python语言的EDA验证平台, 其特征在于: 所述仿真 验证工具有ModelSim、 VCS。。
9、 5.一种权利要求1至4任何一项所述基于Python语言的EDA验证平台的使用方法, 其特 征在于, 包括以下步骤: 1)定义Python脚本提供的用户接口, 包括数据包定义与约束、 数据包驱动方式、 数据包 监视方式和参考模型功能; 2)调用Python脚本, 将用户接口信息传入UVM验证组件中, 生成SyetemVerilog代码; 3)导出SyetemVerilog代码并保存; 4)调用仿真软件进行SyetemVerilog代码UVM验证。 权利要求书 2/2 页 3 CN 111460759 A 3 一种基于Python语言的EDA验证平台及其使用方法 技术领域 0001 本发明涉及F。
10、PGA验证的技术领域, 尤其是指一种基于Python语言的EDA 验证平台 及其使用方法。 背景技术 0002 随着半导体工艺和集成电路技术不断发展, 数字IC设计扮演着越来越重要的角 色。 在早期设计中, 由于硬件规模较小, 功能较单一, 验证工程师通常采用编写teshbanch测 试文件以模拟的方式来验证逻辑时序的正确性, 它以源的方式来激励用户编写的逻辑功能 模块, 并将实际输出与期望输出作对比, 以验证模块正确性和完善性。 随着FPGA资源和容量 不断提升, 硬件设计也变的越来大规模和复杂, 越来越多的功能模块被集成到同一颗IC上, 容易出现复杂且不易发现的缺陷, 其功能上的完备性和正。
11、确性越来越难以保证, 往往需要 花大量的精力在硬件验证阶段。 据统计, 硬件验证的工作量占据整个设计周期的70以上。 传统定向激励的方式逐渐暴露出低效率、 覆盖率不足等缺点, 难以快速定位逻辑问题, 已无 法满足硬件验证的需求。 0003 为了克服传统验证方法的缺陷, 业界开始采用高级语言如C/C+来描述越来越复 杂的测试激励, 但是由于多数验证对象DUT仍是RTL代码, 将会带来兼容性问题, 另外高级语 言一般没有时序的概念。 后来又相继出现了SystemC和 SystemVerilog(SV)语言, SV语言很 好的解决了这些问题, 成为了现代验证技术中较为常用的验证语言。 0004 在硬。
12、件验证工作中, 因不同验证人员思维习惯上的不同, 导致使用SV语言设计出 的验证平台点的框架和组件也不尽相同, 导致使用验证平台的交流成本增加, 平台可移植 性降低。 因此, 引入了验证方法学用于制定一种统一的标准规范。 2006年Synopsys公司推出 了VMM验证方法学, 其逻辑层次清晰, 代码简洁的优点大大提高了验证效率。 2008年Cadence 公司和Mentor公司又推出了 OVM验证方法学, 引入了factory机制和phase机制等, 是验证 平台更为灵活。 2011年, UVM出现, 它吸收了OVM与VMM以及早期验证方法学的优点, 具有更 好的可重用性, 更清晰的层次感,。
13、 成为了业界通用的验证方法学。 0005 在越来越高的抽象层次上进行硬件验证是当前验证方法学的主要趋势, 虽然UVM 属于TLM级验证, 相比于传统的RTL级验证有着更高的效率, 但是其本身具备众多的组件与 机制, 语法规则也有一定的学习门槛, 对硬件验证工程师的要求较高, 不利于用户快速使用 和推广。 0006 Python作为当今主流高级语言, 其学习成本低, 简洁优美的特点成为了编程设计 的不二之选, 灵活的数据结构和运算符重载、 多态多继承等特性使编程更加灵活简单, 同时 具备丰富的软件库。 硬件构造语言PyHCL的出现更是打破了顶层与底层的界限, 根据UVM各 组件层次清晰的特点, 。
14、结合PyHCL, 使用 Python对其封装实现敏捷开发硬件验证平台成为 了可能。 说明书 1/4 页 4 CN 111460759 A 4 发明内容 0007 本发明的目的在于克服现有技术的不足与缺点, 提出了一种基于Python语言的 EDA验证平台及其使用方法, 通过使用Python脚本向上提供用户接口, 向下转化UVM验证组 件, 使得能够直接用Python语言进行硬件验证设计, 该方法充分利用Python高级语言灵活 数据结构, 面向对象, 运算符重载和多态多继承等特点, 不需要掌握复杂的底层语法, 极大 简化硬件验证工程师工作, 在降低UVM验证环境的使用门槛的同时, 大大提高了硬。
15、件验证的 质量和效率。 0008 为实现上述目的, 本发明所提供的技术方案如下: 0009 一种基于Python语言的EDA验证平台, 包括: 0010 UVM验证组件, 用于构建UVM基本验证环境; 0011 Python脚本, 用于实现向上提供用户接口, 向下转化UVM验证组件; 所述Python脚 本根据用户接口信息进行字符串分析与处理, 将UVM验证组件中的特定参数进行替换; 其 中, 仅需定义特定的用户接口, 调用Python脚本即可生成相应的UVM验证SystemVerilog文 件, 最终生成的SyetemVerilog文件能够直接传递到仿真验证工具中。 0012 进一步, 所述。
16、UVM验证组件包括包抽象层、 序列层、 序列发生层、 代理类、 驱动器、 监 视器、 接口层、 环境层、 参考模型、 计分牌、 测试基类和测试顶层, 其中: 0013 所述包抽象层负责transaction的定义与约束, 将数据进行抽象; 0014 所述序列层能够定义不同类型的sequence序列来应对不同种类的测试激励, 序列 由transaction数据构成, 输送至序列发生层; 0015 所述序列发生层负责接收序列层transaction数据, 输送至驱动器输出; 0016 所述代理类包含i_agent和o_agent, 通过uvm_agent自带方法定义, i_agent 为 ACTI。
17、VE模式, 内部会例化序列发生器sequencer、 驱动器driver和监视器 monitor, o_agent 为PASSIVE模式, 仅例化监视器monitor; 0017 所述驱动器负责将从序列发生器中获得transaction数据驱动至待验证模块 DUT 中; 0018 所述监视器包括输入监视器i_monitor和输出监视器o_monitor, 负责监视接口层 transaction数据, i_monitor收集DUT输入数据传送至参考模型, o_monitor 收集DUT输出 数据传送至计分牌; 0019 所述接口层定义了DUT和验证平台的接口, 通过使用interface接口实现。
18、验证平台 的可移植性; 0020 所述环境层内部实例化代理类、 参考模型和计分牌, 并定义互相之间通信的 analysis port用于传输transaction数据; 0021 所述参考模型负责实现与DUT功能相同的行为, 其输出结果将作为验证的期望值; 0022 所述计分牌通过调用compare方法比较期望值和实际值是否一致, 同时记录命中 数和不匹配数; 0023 所述测试基类用于实现一些测试框架的基础用法, 包括定义验证平台最长运行时 间和定义测试结束后打印的结果, 子类能够继承测试基类的方法; 0024 所述测试顶层负责例化测试激励, 定义三个interface接口与激励相连, 三组。
19、信号 与DUT输入输出互不干扰。 说明书 2/4 页 5 CN 111460759 A 5 0025 进一步, 所述Python脚本提供的用户接口包括数据包定义与约束、 数据包驱动方 式、 数据包监视方式及参考模型功能, 其中: 0026 所述数据包定义与约束负责对UVM验证组件中序列层的transaction进行定义与 约束, 同时加入field_automation机制对所有字段进行注册, 在调用Python 脚本时写入 UVM验证组件的序列层; 0027 所述数据包驱动方式负责实现UVM验证组件中驱动器的transaction驱动输出, 在 调用Python脚本时写入UVM验证组件的驱动。
20、器; 0028 所述数据包监视方式负责实现UVM验证组件中监视器的transaction输入输出监 视, 在调用Python脚本时写入UVM验证组件的监视器; 0029 所述参考模型功能负责实现与DUT相同的功能行为, 在调用Python脚本时写入UVM 验证组件的参考模型。 0030 进一步, 所述仿真验证工具有ModelSim、 VCS。 0031 本发明也提供了上述基于Python语言的EDA验证平台的使用方法, 包括以下步骤: 0032 1)定义Python脚本提供的用户接口, 包括数据包定义与约束、 数据包驱动方式、 数 据包监视方式和参考模型功能; 0033 2)调用Python脚。
21、本, 将用户接口信息传入UVM验证组件中, 生成 SyetemVerilog代 码; 0034 3)导出SyetemVerilog代码并保存; 0035 4)调用仿真软件进行SyetemVerilog代码UVM验证。 0036 本发明与现有技术相比, 具有如下优点与有益效果: 0037 通过Python语言对UVM各组件进行封装并制作脚本, 使得能够直接用 Python语言 进行硬件验证, 充分利用Python语言的面向对象, 支持多态, 运算符重载和多继承等特点, 不需要掌握复杂的底层语法, 降低了UVM验证环境使用门槛, 简化硬件工程师验证工作, 大 大提高了硬件验证的质量和效率。 附图说。
22、明 0038 图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相同功能行为。
23、的任务; Interface 为UVM验证组件中的接口层, logic signal 为逻辑端口信号; TopTB为UVM验证组件中的测试顶层, wires®s为相关连接线与寄存器, DUT instance为DUT 实例化。 0039 图2为UVM验证组件关系示意图。 0040 图3为验证平台使用流程示意图。 具体实施方式 0041 下面结合具体实施例对本发明作进一步说明。 说明书 3/4 页 6 CN 111460759 A 6 0042 如图1所示, 本实施例所提供的基于Python语言的EDA验证平台, 是一种充分利用 Python高级语言特点, 降低UVM验证环境使用门槛, 简。
24、化硬件工程师验证工作的EDA验证平 台, 包括Python脚本和UVM验证组件。 0043 所述Python脚本用于实现向上提供用户接口, 向下转化UVM验证组件。 所述用户接 口包括数据包定义与约束, 数据包驱动方式, 数据包监视方式, 参考模型功能。 Python脚本 根据用户接口信息进行字符串分析与处理, 将UVM验证组件中的特定参数进行替换。 其中: 0044 所述数据包定义与约束负责对UVM验证组件中序列层(Sequence)的 transaction 进行定义与约束, 同时加入field_automation机制对所有字段进行注册, 在调用Python脚 本时写入Sequence;。
25、 0045 所述数据包驱动方式负责实现UVM验证组件中驱动器(Driver)的 transaction驱 动输出(在drive_one_pkt任务中), 在调用Python脚本时写入UVM 验证组件的Driver; 0046 所述数据包监视方式负责实现UVM验证组件中监视器(Monitor)的transaction输 入输出监视(在collect_one_pkt任务中), 在调用Python脚本时写入UVM验证组件的 Monitor; 所述参考模型(Reference Model)功能负责实现与DUT相同的功能行为(在main_ phase任务中), 在调用Python脚本时写入 UVM验证组。
26、件的Reference Model; 0047 所述Python脚本还将综合上述用户接口信息在UVM验证组件接口层 (Interface) 中添加逻辑端口信号(logic signal), 并在UVM验证组件测试顶层(TopTB)中添加相关连接 线Wires与寄存器Regs并实例化DUT。 0048 如图2所示, UVM验证组件主要包抽象层、 序列层、 序列发生层、 代理类、 驱动器、 监 视器、 接口层、 环境层、 参考模型、 计分牌、 测试基类和测试顶层。 0049 所述UVM验证组件自顶向下分为测试顶层, 测试基类, 环境层。 其中: 0050 所述测试顶层选择测试用例, 测试用例继承所。
27、述测试基类。 0051 所述环境层包括了序列层、 参考模型、 计分牌、 代理层、 接口层和待验证模块DUT。 代理层由i_agent和o_agent组成, i_agent中例化了序列发生器、 驱动器和监视器, o_agent 中仅例化监视器。 序列层负责产生出transaction送入序列发生器, 最终由驱动器通过接口 层将transaction灌入DUT中。 同时, i_agent 监视器收集相同输入transaction传入参考模 型计算期望值, o_agent监视器收集 DUT实际输出transaction传入计分牌与期望值比较。 0052 如图3所示, 本实施例也提供了上述基于Pyth。
28、on语言的EDA验证平台的使用方法, 使用流程步骤如下: 0053 1)定义Python脚本提供的用户接口, 包括数据包(transaction)定义与约束, 数据 包(transaction)驱动方式, 数据包(transaction)监视方式, 参考模型功能; 0054 2)调用Python脚本, 将用户接口信息传入UVM验证组件中, 生成 SyetemVerilog代 码; 0055 3)导出SyetemVerilog代码并保存; 0056 4)调用仿真软件进行SyetemVerilog代码UVM验证。 0057 以上实施方式仅用于说明本发明, 而非对本发明的限制, 有关技术的普通技术人 员, 再不脱离本发明的精神和范畴情况下, 还可以做出变化和变型, 因此所有等同的技术方 案也属于本发明的范畴, 本发明的专利保护范围应由权利要求限定。 说明书 4/4 页 7 CN 111460759 A 7 图1 说明书附图 1/3 页 8 CN 111460759 A 8 图2 说明书附图 2/3 页 9 CN 111460759 A 9 图3 说明书附图 3/3 页 10 CN 111460759 A 10 。
- 内容关键字: 基于 Python 语言 EDA 验证 平台 及其 使用方法
用于挤压片状弹簧的压簧装置.pdf
用于回收硫酸装置低温废热的热量回收塔.pdf
汽车零部件冲压定位机构.pdf
弹簧快速弹出的送料装置.pdf
输液杆的主供电箱排水结构.pdf
农业经济果树种植嫁接用防护装置.pdf
车用尿素溶液水解反应装置.pdf
可自由组合堆叠式户用储能电源.pdf
财务凭证卷绕器.pdf
建筑施工卸料平台.pdf
具有应急照明功能的户内多功能储能电源.pdf
多托板自动分离机构.pdf
发动机精密配件加工用稳定支架.pdf
便于清理的橡胶促进剂过滤装置.pdf
防偏移内衣点胶机.pdf
耐插拔动力信号混合式储能防水连接器.pdf
棋类设备的智能裁判器、对弈棋子及棋类设备.pdf
大杯可脱带两用式文胸.pdf
振动传感器及车载扬声器系统.pdf
无酒精的香水配方及其制备方法.pdf
石油勘探用三角异型管电池壳性能检测装置及其检测方法.pdf
耐高温陶瓷纤维毡.pdf
转向器摇臂轴花键相对齿形位置间隙测具.pdf
盐碱土壤改良用松土装置.pdf
铝粉生产线.pdf
用于臭氧催化剂生产的混料器.pdf
新能源锂电池材料高效研磨设备及其研磨方法.pdf
地质勘测样品粉碎机.pdf
管道支撑架.pdf
行星减速机的防松脱结构.pdf
带音响装置的操作模块.pdf
基于机器视觉的反射膜生产质控的方法及系统.pdf