一种基于Python语言的EDA验证平台及其使用方法技术

技术编号:25043314 阅读:63 留言:0更新日期:2020-07-29 05:33
本发明专利技术公开了一种基于Python语言的EDA验证平台及其使用方法,涉及FPGA逻辑验证技术,通过对标准UVM验证框架进行封装,提供了一种充分利用Python高级语言特性的方式来使用复杂的UVM验证环境。所述验证平台由Python脚本和UVM验证组件组成。UVM验证组件用于构建UVM基本验证环境。本发明专利技术通过使用Python脚本向上提供用户接口,向下转化UVM验证组件,使得能够直接用Python语言进行硬件验证设计,该方法充分利用Python高级语言灵活数据结构,面向对象,运算符重载和多态多继承等特点,不需要掌握复杂的底层语法,极大简化硬件验证工程师工作,在降低UVM验证环境的使用门槛的同时,大大提高了硬件验证的质量和效率。

【技术实现步骤摘要】
一种基于Python语言的EDA验证平台及其使用方法
本专利技术涉及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接口实现验证平台的可移植性;所述环境层内部实例化代理类、参考模型和计分牌,并定义互相之间通信的analysisport用于传输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脚本提供的用户接口,包括本文档来自技高网
...

【技术保护点】
1.一种基于Python语言的EDA验证平台,其特征在于,包括:/nUVM验证组件,用于构建UVM基本验证环境;/nPython脚本,用于实现向上提供用户接口,向下转化UVM验证组件;所述Python脚本根据用户接口信息进行字符串分析与处理,将UVM验证组件中的特定参数进行替换;其中,仅需定义特定的用户接口,调用Python脚本即可生成相应的UVM验证SystemVerilog文件,最终生成的SyetemVerilog文件能够直接传递到仿真验证工具中。/n

【技术特征摘要】
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功能相同的行为,其输出结果将作为验证的期望值;
所述计分牌通过调用com...

【专利技术属性】
技术研发人员:赖晓铮钟震宇陈若晖莫国艺
申请(专利权)人:华南理工大学
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1