基于接口的验证环境生成方法及装置、设备和存储介质与流程

文档序号:32886400发布日期:2023-01-12 21:51阅读:33来源:国知局
1.本发明涉及仿真验证
技术领域
:,尤其涉及基于接口的验证环境生成方法及装置、设备和存储介质。
背景技术
::2.目前关于验证环境的产生主要通过代码编写的方式。以uvm(universalverificationmethodology,通用验证方法学)验证环境为例,通过代码编写产生验证环境主要存在以下缺陷:验证工程师手动编写验证环境代码,正确率难以保证,需要后期投入编译调试,使得编码人力投入和时间成本高;验证环境搭建后需要投入相当精力进行编译调试,编译检查语法错误,仿真检查运行错误,重复编译调试会消耗一定时间和人力;不同工作经验及经历的工程师搭建环境的风格往往不同,在同一个项目中会出现不便于管理、甚至前后不一致互相矛盾的代码。技术实现要素:3.鉴于现有技术的以上问题,本技术实施例提供一种基于接口的验证环境生成方法及装置、设备和存储介质,根据接口文档中预先定义的接口信息自动化生成基于验证方法学的验证环境,编码风格统一,可集成性强,便于复用、管理,可减少搭建环境及调试时间,减少编码量和人力时间投入,提高项目的开发效率。4.达到上述目的,本技术第一方面提供了一种基于接口的验证环境生成方法,包括:5.从预先配置的接口文档中获取接口信息;所述接口信息是构成待验证芯片的各模块的接口信息;6.基于验证方法学和所述接口信息,生成与所述接口信息相关的环境组件;7.基于用户需求的接口时序信息,根据所述接口信息生成接口时序控制文件;8.将所述接口时序控制文件添加到所述环境组件中,构成所述待验证芯片的验证环境。9.作为第一方面的一种可能的实现方式,所述接口信息包括信号名称、端口方向、信号的位宽、时钟域、复位后初始值、注册信息、驱动信息和采样信息中的至少一种。10.作为第一方面的一种可能的实现方式,所述验证方法学包括uvm、vmm和ovm中的至少一种。11.作为第一方面的一种可能的实现方式,所述将所述接口时序控制文件添加到所述环境组件中,包括:12.利用包含指令将所述接口时序控制文件添加到所述环境组件中。13.作为第一方面的一种可能的实现方式,所述方法还包括:14.在用户修改所述接口信息之后,根据用户修改的接口信息重新生成接口时序控制文件。15.作为第一方面的一种可能的实现方式,所述利用包含指令将所述接口时序控制文件添加到所述环境组件中,还包括:16.根据用户修改的接口信息,替换所述包含指令中的文件的内容。17.作为第一方面的一种可能的实现方式,所述接口时序信息包括驱动时序和采样时序中的至少一种。18.本技术第二方面提供了一种基于接口的验证环境生成装置,包括:19.获取单元,用于从预先配置的接口文档中获取接口信息;所述接口信息是构成待验证芯片的各模块的接口信息;20.第一生成单元,用于基于验证方法学和所述接口信息,生成与所述接口信息相关的环境组件;21.第二生成单元,用于基于用户需求的接口时序信息,根据所述接口信息生成接口时序控制文件;22.添加单元,用于将所述接口时序控制文件添加到所述环境组件中,构成所述待验证芯片的验证环境。23.作为第二方面的一种可能的实现方式,所述接口信息包括信号名称、端口方向、信号的位宽、时钟域、复位后初始值、注册信息、驱动信息和采样信息中的至少一种。24.作为第二方面的一种可能的实现方式,所述验证方法学包括uvm、vmm和ovm中的至少一种。25.作为第二方面的一种可能的实现方式,所述添加单元用于:26.利用包含指令将所述接口时序控制文件添加到所述环境组件中。27.作为第二方面的一种可能的实现方式,所述第二生成单元还用于:28.在用户修改所述接口信息之后,根据用户修改的接口信息重新生成接口时序控制文件。29.作为第二方面的一种可能的实现方式,所述利添加单元还用于:30.根据用户修改的接口信息,替换所述包含指令中的文件的内容。31.作为第二方面的一种可能的实现方式,所述接口时序信息包括驱动时序和采样时序中的至少一种。32.本技术第三方面提供了一种计算设备,包括:33.通信接口;34.至少一个处理器,其与所述通信接口连接;以及35.至少一个存储器,其与所述处理器连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行上述第一方面任一所述的方法。36.本技术第四方面提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行上述第一方面任一所述的方法。37.本发明的这些和其它方面在以下(多个)实施例的描述中会更加简明易懂。附图说明38.以下参照附图来进一步说明本发明的各个特征和各个特征之间的联系。附图均为示例性的,一些特征并不以实际比例示出,并且一些附图中可能省略了本技术所涉及领域的惯常的且对于本技术非必要的特征,或是额外示出了对于本技术非必要的特征,附图所示的各个特征的组合并不用以限制本技术。另外,在本说明书全文中,相同的附图标记所指代的内容也是相同的。具体的附图说明如下:39.图1为本技术实施例提供的基于接口的验证环境生成方法的一实施例的示意图;40.图2为本技术实施例提供的基于接口的验证环境生成方法的一实施例的实现流程示意图;41.图3为本技术实施例提供的基于接口的验证环境生成方法的一实施例的接口文档示意图;42.图4为本技术实施例提供的基于接口的验证环境生成方法的一实施例的用户界面示意图;43.图5为本技术实施例提供的基于接口的验证环境生成方法的一实施例的流程图;44.图6为本技术实施例提供的基于接口的验证环境生成方法的一实施例的流程图;45.图7为本技术实施例提供的基于接口的验证环境生成方法的一实施例的流程图;46.图8为本技术实施例提供的基于接口的验证环境生成方法的一实施例的流程图;47.图9为本技术实施例提供的基于接口的验证环境生成装置的一实施例的示意图;48.图10为本技术实施例提供的计算设备的示意图。具体实施方式49.说明书和权利要求书中的词语“第一、第二、第三等”或模块a、模块b、模块c等类似用语,仅用于区别类似的对象,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。50.在以下的描述中,所涉及的表示步骤的标号,如s110、s120……等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。51.说明书和权利要求书中使用的术语“包括”不应解释为限制于其后列出的内容;它不排除其它的元件或步骤。因此,其应当诠释为指定所提到的所述特征、整体、步骤或部件的存在,但并不排除存在或添加一个或更多其它特征、整体、步骤或部件及其组群。因此,表述“包括装置a和b的设备”不应局限为仅由部件a和b组成的设备。52.本说明书中提到的“一个实施例”或“实施例”意味着与该实施例结合描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在本说明书各处出现的用语“在一个实施例中”或“在实施例中”并不一定都指同一实施例,但可以指同一实施例。此外,在一个或多个实施例中,能够以任何适当的方式组合各特定特征、结构或特性,如从本公开对本领域的普通技术人员显而易见的那样。53.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的
技术领域
:的技术人员通常理解的含义相同。如有不一致,以本说明书中所说明的含义或者根据本说明书中记载的内容得出的含义为准。另外,本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。为了准确地对本技术中的技术内容进行叙述,以及为了准确地理解本发明,在对具体实施方式进行说明之前先对本说明书中所使用的术语给出如下的解释说明或定义:54.1)verilog:一般指veriloghdl(hardwaredescriptionlanguage,硬件描述语言)。veriloghdl是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言。用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。55.2)systemverilog:systemverilog简称为sv语言。它建立在verilog语言的基础上,将硬件描述语言(hdl)与现代的高层级验证语言(hvl)结合了起来,并新近成为下一代硬件设计和验证的语言。56.3)uvm(universalverificationmethodology,通用验证方法学):是一个以systemverilog类库为主体的验证平台开发框架。验证工程师可以利用其可重用组件构建具有标准化层次结构和接口的功能验证环境。57.4)vmm(verificationmethodologymanual,验证方法学手册):vmm是大规模集成电路(ic)设计验证领域的一种高级验证方法学。vmm验证方法学的语言基础是systemverilog语言。它所有的方法学基础都是来自于systemverilog,并吸收了c语言的一些先进思想。vmm验证方法学主要描述如何使用systemverilog创建采用覆盖率主导、随机约束生成、基于断言验证技术的综合验证环境,同时为可互用验证组件指定了建库数据块。58.5)ovm(openverificationmethodology,开放式验证方法学):ovm是业界第一套开放的、语言可互用的systemverilog验证方法学。ovm提供了一套方法学和相应的库,让用户可以建立模块式、可复用的验证环境,其中的各个组件通过标准的事务处理级建模界面彼此交流。它还可以通过一种通用的方法学和虚拟序列的分类和系统的复用实现公司内部和公司之间的重用,并且全面集成到其他通常使用于生产流程的语言中。59.6)rtl(registertransferlevel,寄存器转换级电路,也叫暂存器转移层次):在集成电路设计中,rtl是用于描述同步数字电路操作的抽象级。在rtl级,ic(integratedcircuit,集成电路)是由一组寄存器以及寄存器之间的逻辑操作构成。之所以如此,是因为绝大多数的电路可以被看成由寄存器来存储二进制数据、由寄存器之间的逻辑操作来完成数据的处理,数据处理的流程由时序状态机来控制,这些处理和控制可以用硬件描述语言来描述。60.下面先对现有的方法进行介绍,然后再对本技术的技术方案进行详细介绍。61.目前关于验证环境的产生主要通过代码编写的方式。以uvm(universalverificationmethodology,通用验证方法学)验证环境为例,通过代码编写产生验证环境主要存在以下缺陷:62.1)手动编码人力投入和时间成本高。验证工程师手动编写验证环境代码,正确率难以保证,需要后期投入编译调试。63.2)uvm组件连接关系明确,机械性工作程度高。uvm平台使用tlm(transactionlevelmodeling事务级建模)端口进行组件间的通信。uvm的tml连接方式基本明确,环境的连接工作变得机械化。64.3)重复编译调试。验证环境搭建后需要投入相当精力进行编译调试,编译检查语法错误,仿真检查运行错误。重复编译调试会消耗一定时间和人力。65.4)不便于管理。不同工作经验及经历的工程师搭建环境的风格往往不同,在同一个项目中会出现不便于管理、甚至前后不一致互相矛盾的uvm代码。66.5)重复调试。当接口修改后,需要手动修改环境。这部分修改需要投入一定精力,且正确性不容易保证。在设计阶段,接口的修改相对来说是多次进行的。因此验证环境需要同步的情况也会随之产生,带来反复编译调试的问题。67.6)初级人员接受度低。uvm让行业在底层验证的结构化构建上有了统一标准,但对于一个初级验证工程师要入门这个标准,有一定难度且需要相当长的一段时间学习。68.对于上述问题,目前可能采用以下方法:基于uvm或其他验证方法学,编写专门的代码生成器,可以解决一部分问题。但生成的验证环境为空壳环境,与项目结合度低,上述问题依然存在。69.综上,现有技术存在着以下的缺陷:手动编码人力投入和时间成本高、机械性工作程度高、重复编译调试、不便于管理和接受度低、与项目结合度低。70.基于上述现有技术所存在的技术问题,本技术提供了一种基于接口的验证环境生成方法及装置、设备和存储介质,根据接口文档中预先定义的接口信息自动化生成基于验证方法学的验证环境,编码风格统一,可集成性强,便于复用、管理,可减少搭建环境及调试时间,减少编码量和人力时间投入,提高项目的开发效率。因此,采用本技术实施例提供的基于接口的验证环境生成方法,提升了自动化程度,可解决现有技术中存在的手动编码人力投入和时间成本高的技术问题;预先定义的接口信息不局限于事务级建模,可解决现有技术中存在的机械性工作程度高的技术问题;当接口修改后,只需重新自动化生成验证环境,不必重复调试,可解决现有技术中存在的重复编译调试的技术问题;根据设计工程师定义的接口信息,生成基于uvm的验证环境,与项目紧密结合,可更快投入具体验证工作,可解决现有技术中存在与项目结合度低的技术问题;自动化生成的编码风格统一,即使对于初级人员来说也没有接受难度,可解决现有技术中存在的不便于管理和接受度低的技术问题。71.图1为本技术实施例提供的基于接口的验证环境生成方法的一实施例的示意图。如图1所示,该方法可以包括:72.步骤s110,从预先配置的接口文档中获取接口信息;所述接口信息是构成待验证芯片的各模块的接口信息;73.步骤s120,基于验证方法学和所述接口信息,生成与所述接口信息相关的环境组件;74.步骤s130,基于用户需求的接口时序信息,根据所述接口信息生成接口时序控制文件;75.步骤s140,将所述接口时序控制文件添加到所述环境组件中,构成所述待验证芯片的验证环境。76.本发明实施例基于接口定义信息,自动化生成芯片前端仿真验证环境。在生成验证环境之前,可预先编写接口定义文件。在接口定义文件中描述接口基本信息。接口定义文件也称为接口文档。可由设计人员出统一格式的接口文档,用于描述本模块顶层接口信息。通常情况下ic(integratedcircuit,集成电路)设计的代码主要由多个verilog文件和一个顶层模块组成,其中顶层模块下所有的子模块都被实例化以实现所需的行为和功能。构成待验证芯片的各个模块之间通过接收和发送数据信号进行交互通信。77.在步骤s110中,访问预先配置的接口文档,从接口文档中获取接口信息。其中,接口信息是构成待验证芯片的各模块的接口信息,包括各个模块之间通过接收和发送的信号的相关描述信息。78.验证环境包括支持编译和仿真的配套脚本。本技术实施例中可以使用基于perl、python、vba等语言的脚本程序实现仿真验证环境。验证环境可以基于uvm、vmm、ovm等验证方法学,或者是verilog环境生成。在步骤s120中,在验证方法学提供的验证环境的框架中,按照具体编程语言的程序逻辑语法规范,将步骤s110中获取的接口信息作为程序的数据或参数,生成描述与接口信息相关的环境组件的程序代码。例如,可生成接口相关的agent组件、生成完整验证环境等。本技术实施例中,设置自动化转换器,用于生成组件或生成完整验证环境。自动化转换器可支持自定义配置,提供用户界面。以uvm为例,生成完整uvm架构的验证环境,可包括testbench顶层、各接口agent(driver、monitor、sequencer)、interface、item、env(含各组件的连接)、referencemodel、base_test、virtual_sequencer等组件。79.在一个示例中,自动化转换器可使用vba编写。vba可运行于windows系统。如果使用其他脚本语言实现,如perl、python等,可以运行于linux系统。80.通常设计电路都是根据事先定义好的设计规格,而设计规格中就包含了时序的规格。例如对时钟、复位、输出端口等信号进行一定的时序约束,包括时钟频率、时序检查、延迟等信息的设置,并用于逻辑综合。本技术实施例中,用户可以将符合需求的接口时序信息写入预先设置的描述时序信息的文件中。在步骤s130中,访问描述时序信息的文件,获取用户需求的接口时序信息。步骤s110中已获取到模块a和模块b之间进行交互的接口信息,包括若干个信号的相关描述信息。转换器根据接口时序信息以及模块a和模块b的接口信息,生成接口时序控制文件。接口时序控制文件是用户需求的接口时序信息的具体实现。接口时序控制文件中可包括若干个信号按照预定时序发送和接收的控制代码。81.在步骤s140中,将接口时序控制文件添加到步骤s120中生成的环境组件中,使得环境组件的设计文件中包含接口时序控制文件。接口时序控制文件的代码可由转换器根据接口定义文件生成。添加了接口时序控制文件的环境组件可实现时序控制逻辑,构成了待验证芯片的完整验证环境。82.本技术实施例根据接口文档中预先定义的接口信息自动化生成基于验证方法学的验证环境,编码风格统一,可集成性强,便于复用、管理,可减少搭建环境及调试时间,减少编码量和人力时间投入,提高项目的开发效率。83.图2为本技术实施例提供的基于接口的验证环境生成方法的一实施例的实现流程示意图。如图2所示,该方法的实现步骤为:84.步骤s1,接口定义。编写接口定义文件,描述接口信息。该文件可由设计人员完成,并保证其正确性。85.步骤s2,利用自动化转换器,初步生成验证环境。具体地,提供用户界面,根据需求配置转换器,将接口信息保存在预定的格式的接口定义文件中。转换器从接口定义文件获取接口信息,根据接口信息初步生成验证环境。86.步骤s3,根据用户配置完善验证环境。在初步生成验证环境的基础上,根据用户改写的接口文档或代码,完善基于不同验证方法学的验证环境。87.步骤s4,完善referencemodel、driver、monitor组件细节。88.步骤s5,编写测试用例。89.步骤s6,执行仿真验证。90.在一种实施方式中,所述接口信息包括信号名称、端口方向、信号的位宽、时钟域、复位后初始值、注册信息、驱动信息和采样信息中的至少一种。91.具体地,在步骤s1中,可预先设定统一格式的接口文档,用于描述本模块顶层接口信息。例如可以将接口信息填写到表格(sheet)中。接口信息可包括信号名称、端口方向、信号的位宽、时钟域、复位后初始值等。参见下表1,其中信号名称能够体现出模块连接关系,表1中数据体现了iqs与eqs两个模块之间的连接关系。为便于生成系统验证环境,可在接口文档中标记模块所在系统名称。表头体现模块所在系统名称,表1中数据相关的模块所在系统为sqs子系统。92.表1接口文档[0093][0094]表1描述了iqs模块到eqs模块的两根接口信号。从信号名称可以看出该信号从iqs模块输出,输入到eqs模块。两根接口信号的位宽均为1bit、都是在systemclk时钟域、复位后初始值为0。除此之外,还添加了信号功能的描述。iqs和eqs两个模块共用表1所示的同一份描述文档,保证了前后两个模块对接口理解的一致性。[0095]图3为本技术实施例提供的基于接口的验证环境生成方法的一实施例的接口文档示意图。如图3所示,sig_init表示信号初始值;registry_info表示uvm的注册信息;driver_info表示驱动信息;mon_info表示采样信息。[0096]在一种实施方式中,所述验证方法学包括uvm、vmm和ovm中的至少一种。[0097]参见图2,在步骤s2中,可基于uvm、vmm和ovm等验证方法学构建的验证环境框架生成验证环境。生成验证环境的工具可以是基于perl、python、vba(visualbasicforapplications,visualbasic宏语言)等语言的脚本程序。并提供用户界面,支持自定义配置。图4为本技术实施例提供的基于接口的验证环境生成方法的一实施例的用户界面示意图。如图4所示,在用户界面中,可以选择接口定义文本、选择验证环境代码存放路径、填写待测模块名称(也可以是系统名称)、可获取指定名称的接口信息、可以提取到不同的sheet(可以手动编写不同的sheet的内容,重新定义接口)、还可以选择只生成接口相关的agent组件或生成完整环境等。[0098]参见图2,在步骤s3中,根据用户配置和接口信息,生成环境组件,完善验证环境。验证环境可以是基于uvm、vmm和ovm等验证方法学,或者是verfilog环境。验证环境包括支持编译和仿真的配套脚本,可以是setup、makefile脚本形式。其中,setup脚本是环境配置文件。makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。本技术实施例中可使用perl脚本方式,以setup、makefile脚本形式生成验证环境。步骤s2中初步生成的验证环境可能不完全符合用户需求。在步骤s3中,根据用户配置和接口信息,对步骤s2中初步生成的验证环境进行完善。[0099]参见图2,在步骤s4中,编写referencemodel、driver、monitor具体实现,编写调试。[0100]在一种实施方式中,所述接口时序信息包括驱动时序和采样时序中的至少一种。例如,driver具体信号的驱动和monitor具体信号的采样。一个示例性的uvm验证平台可包括以下结构:[0101]1)序列产生器(sequencer)[0102]主要自动产生受约束的随机化激励数据。[0103]2)驱动器(driver)[0104]主要负责向sequencer请求队列,将队列根据特定的传输协议和接口时序转化为输入信号发送到dut(deviceundertest,待测试模块)的输入端口。[0105]3)监控器(monitor)[0106]负责从驱动器driver输出采集数据,传送到参考模型并转换成期望队列发送给记分板(scoreboard),从而完成功能数据结果的比对和覆盖率信息的收集。[0107]4)代理器(agent)[0108]通常用于发送端,可封装序列产生器(sequencer)、驱动器(driver)、监视器(monitor)。[0109]5)参考模型(referencemodel)[0110]referencemodel用于完成和dut相同的功能。referencemodel的输出发送给scoreboard,用于和dut的输出相比较。[0111]6)记分板(scoreboard)[0112]比较referencemodel和monitor采集到的dut输出信号,并给出比较结果。[0113]7)验证环境(env)[0114]uvm验证环境,使用uvm机制将代理器(agent)、参考模型(referencemodel)和记分板(scoreboard)配置在一起。[0115]8)测试用例(testcase)[0116]测试用例testcase用于例化env,不同的testcase用于对dut的不同功能进行验证。[0117]本技术实施例中,可基于验证方法学和两个模块间的接口信息,生成验证环境下的两个模块的驱动和采样逻辑。并且,基于用户需求的驱动时序和采样时序,结合接口信息生成接口时序控制文件。在一个示例中,用户需求的接口时序信息为:当控制信号的值为1时,开始驱动指定n个信号接入。则转换器根据用户需求的接口时序信息以及模块间的接口信息,在生成接口时序控制文件的代码,用于在验证环境中控制n个信号的接入时序。[0118]在一种实施方式中,所述将所述接口时序控制文件添加到所述环境组件中,包括:[0119]利用包含指令将所述接口时序控制文件添加到所述环境组件中。[0120]其中,包含指令可以是include结构,该指令通常用于将内含全局或公用定义的头文件包含在设计文件中。包含指令可以包含任何编译器能识别的代码文件。预处理器发现include指令后,会寻找指令后面的文件名,并把这个文件的内容包含到当前文件中。被包含文件中的文本将替换源代码文件中的include指令,如同把被包含文件中的全部内容键入到源文件中的这个位置一样。[0121]在接口文档的sheet表格中未体现接口时序信息的情况下,仿真验证环境可能不能达到预期目的。这种情况下用户可根据验证的实际需求编写接口时序信息的具体实现细节,以实现接口时序控制、完善组件细节。在完善组件细节的代码中,可编写在模块之间交互信号的预设条件,例如预设条件可以是指定时间或者指定控制量的预设阈值。在满足预设条件时所具体执行的在模块之间交互信号的控制代码,体现了信号在各模块间的连接关系。这部分控制代码与接口信息相关,可以另外创建接口时序控制文件,存储这部分控制代码。然后以包含接口时序控制文件的形式将其添加到完善组件细节的代码中。例如,driver具体信号的驱动和monitor具体信号的采样,使用include的方式将信号连接关系添加到组件中。在相应驱动或采样逻辑中,include指令由转化器根据接口定义文件生成对应的部分文件即可。[0122]以dirver为例,使用include的方式添加用户需求的接口时序信息的伪代码如下:[0123]if预设条件成立;[0124]include“接口时序控制文件:文件路径+文件名”。[0125]其中该接口时序控制文件可以包括采样时序控制逻辑,include语句行由转换器根据接口文档生成。例如,在满足预设定条件时具体将上述表1和/或图3中的n个信号从模块a发送到模块b。[0126]在一种实施方式中,所述方法还包括:[0127]在用户修改所述接口信息之后,根据用户修改的接口信息重新生成接口时序控制文件。[0128]在一种实施方式中,所述利用包含指令将所述接口时序控制文件添加到所述环境组件中,还包括:[0129]根据用户修改的接口信息,替换所述包含指令中的文件的内容。[0130]如果在芯片设计的过程中修改了接口定义文件,只需修改include语句内具体包含的文件,只需重新生成include语句中包含的文件覆盖即可,driver代码无需修改。[0131]以上以dirver组件为例,monitor组件细节完善的方式大致同driver方式一致,在此不再赘述。[0132]参见图2,在步骤s5及步骤s6中,使用转换器生成的配套脚本、makefile,调用vcs(verilogcompilesimulator,编译型verilog模拟器)、ncverilog等工具进行编译仿真。[0133]以上为模块验证环境生成流程的示例。当开发流程进入到一定阶段,子系统或系统开始开展验证工作时,采用本技术实施例提供的验证环境生成方法可支持生成集成各个系统模块的验证环境。由于各模块均使用该方法产生验证环境,因此具有编码风格统一的优势。上述步骤中,在用户界面中填写“env_name”时填写系统名称,即可生成系统级验证环境,并且集成风格符合uvm复用性。例如可实现从ut(unittest,单元测试)到it(intergrationtest,集成测试)再到st(systemtest,系统测试)的复用。在项目迭代中也可以复用,下一个项目可基于当前项目进行升级开发。[0134]综上,以生成基于uvm验证法方法学的验证环境为例,一个具体实施例可包括以下步骤:[0135]步骤一、设计人员编写接口定义文件。[0136]步骤二、验证人员配置转换器。例如,将接口信息填写到sheet表格中。[0137]步骤三、运行自动化转换器。[0138]步骤四、生成验证环境。[0139]步骤五、完善referencemodel实现、driver驱动时序、monitor采样时序。[0140]步骤六、编写测试用例。[0141]步骤七、编译、执行仿真。[0142]图5为本技术实施例提供的基于接口的验证环境生成方法的一实施例的流程图。如图5所示,验证环境生成的步骤可包括:s10:输入接口定义文件;s20:获取接口信息到汇总sheet;s30:编辑汇总sheet;s40:拆分接口到不同sheet;s50:编辑各分sheet;s60:生成环境组件。图5中的虚线表示非必须的步骤。[0143]再参见图6,其中,s20:获取接口信息到汇总sheet,包括:利用循环结构遍历每个table(表格),在每个table中跳过第一行表头,从第二行开始遍历每一行和每一列,获取上下级模块名,输出到汇总sheet。[0144]再参见图7,其中,s40:拆分接口到不同sheet,包括:[0145]s41:读取“汇总”sheet[0146]1.获取接口分组数量;[0147]2.记录每组接口开始行号。[0148]s42:将“汇总”sheet中不同分组接口,分散到不同sheet,保留信号名称、信号宽度、信号初始值信息。[0149]s43:[0150]1.增加sig_width(信号宽度)、sig_init(信号初始值)、registry_info(uvm的注册信息)、driver_info(驱动信息)、mon_info(驱动信息)、表头信息;[0151]2.增加user_defined_param(用户定义参数)。[0152]再参见图8,其中,s60:生成环境组件,包括:[0153]获取各个分sheet内信号信息,存储到三维数组arr_inf_info。其中:[0154]第一维表示分组索引;[0155]第二维表示信号索引;[0156]第三维表示信号信息,包括sig_name、sig_width、sig_init、registry_info、driver_info、mon_info、信号类型、分组名称。[0157]根据三维数组:[0158]1.生成接口item;[0159]2.生成接口interface;[0160]3.生成driver组件;[0161]4.生成monitor组件;[0162]5.生成sequencer组件;[0163]6.生成agent组件;[0164]7.生成dut_test_top顶层;[0165]8.生成env组件;[0166]9.生成设计顶层.v文件;[0167]10.生成base_test文件;[0168]11.生成refrence_modle文件;[0169]12.生成filelist(文件列表)文件;[0170]13.生成makefile文件;[0171]14.生成各个组件的include文件。[0172]本技术实施例提供的基于接口的验证环境生成方法具有以下有益效果:[0173](1)自动化生成[0174]自动化生成验证环境,减少编码量和人力时间投入。[0175](2)提高项目的开发效率[0176]减少搭建环境及调试时间。验证工程师只需将接口信息填写到sheet表格中,即可以直接编译通过。使得验证工程师集中精力到具体验证工作,提前释放代码风险,提高项目的开发效率。[0177](3)编码风格统一,便于管理[0178]不同验证工程师搭建环境风格一致,方便管理,释放风险。[0179](4)可集成性强[0180]由于风格统一、可集成性强,便于从ut到it再到st的复用。[0181](5)初级人员接受度高[0182]对于新人而言,可快速开展具体工作,而不必关注环境结构。对于新入行的验证工程师,也不会因为uvm的难度而被拒之门外。[0183](6)项目结合度高[0184]根据设计工程师定义的接口信息,生成基于uvm的验证环境,与项目紧密结合,可更快投入具体验证工作,释放环境搭建和调试的人力、时间投入。[0185](7)接口变化,无需手动编码[0186]接口信息变化后,只需要重新生成相关组件文件,不需要手动编码,保证了环境代码正确性、以及验证环境与rtl(registertransferlevel,寄存器转换级电路)的一致性。[0187]如图9所示,本技术还提供了相应的一种基于接口的验证环境生成装置的实施例。关于该装置的有益效果或解决的技术问题,可以参见与各装置分别对应的方法中的描述,或者参见
发明内容中的描述,此处不再一一赘述。[0188]在该基于接口的验证环境生成装置的实施例中,该装置包括:[0189]获取单元100,用于从预先配置的接口文档中获取接口信息;所述接口信息是构成待验证芯片的各模块的接口信息;[0190]第一生成单元200,用于基于验证方法学和所述接口信息,生成与所述接口信息相关的环境组件;[0191]第二生成单元300,用于基于用户需求的接口时序信息,根据所述接口信息生成接口时序控制文件;[0192]添加单元400,用于将所述接口时序控制文件添加到所述环境组件中,构成所述待验证芯片的验证环境。[0193]在一种实施方式中,所述接口信息包括信号名称、端口方向、信号的位宽、时钟域、复位后初始值、注册信息、驱动信息和采样信息中的至少一种。[0194]在一种实施方式中,所述验证方法学包括uvm、vmm和ovm中的至少一种。[0195]在一种实施方式中,所述添加单元400用于:[0196]利用包含指令将所述接口时序控制文件添加到所述环境组件中。[0197]在一种实施方式中,所述第二生成单元300还用于:[0198]在用户修改所述接口信息之后,根据用户修改的接口信息重新生成接口时序控制文件。[0199]在一种实施方式中,所述利添加单元400还用于:[0200]根据用户修改的接口信息,替换所述包含指令中的文件的内容。[0201]在一种实施方式中,所述接口时序信息包括驱动时序和采样时序中的至少一种。[0202]图10是本技术实施例提供的一种计算设备900的结构性示意性图。该计算设备900包括:处理器910、存储器920、通信接口930。[0203]应理解,图10中所示的计算设备900中的通信接口930可以用于与其他设备之间进行通信。[0204]其中,该处理器910可以与存储器920连接。该存储器920可以用于存储该程序代码和数据。因此,该存储器920可以是处理器910内部的存储单元,也可以是与处理器910独立的外部存储单元,还可以是包括处理器910内部的存储单元和与处理器910独立的外部存储单元的部件。[0205]可选的,计算设备900还可以包括总线。其中,存储器920、通信接口930可以通过总线与处理器910连接。总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。所述总线可以分为地址总线、数据总线、控制总线等。[0206]应理解,在本技术实施例中,该处理器910可以采用中央处理单元(centralprocessingunit,cpu)。该处理器还可以是其它通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门矩阵(fieldprogrammablegatearray,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器910采用一个或多个集成电路,用于执行相关程序,以实现本技术实施例所提供的技术方案。[0207]该存储器920可以包括只读存储器和随机存取存储器,并向处理器910提供指令和数据。处理器910的一部分还可以包括非易失性随机存取存储器。例如,处理器910还可以存储设备类型的信息。[0208]在计算设备900运行时,所述处理器910执行所述存储器920中的计算机执行指令执行上述方法的操作步骤。[0209]应理解,根据本技术实施例的计算设备900可以对应于执行根据本技术各实施例的方法中的相应主体,并且计算设备900中的各个模块的上述和其它操作和/或功能分别为了实现本实施例各方法的相应流程,为了简洁,在此不再赘述。[0210]本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。[0211]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0212]在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。[0213]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0214]另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。[0215]所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。[0216]本技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行一种多样化问题生成方法,该方法包括上述各个实施例所描述的方案中的至少之一。[0217]本技术实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。[0218]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。[0219]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。[0220]可以以一种或多种程序设计语言或其组合来编写用于执行本技术操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。[0221]注意,上述仅为本技术的较佳实施例及所运用的技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本技术进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明的构思的情况下,还可以包括更多其他等效实施例,均属于本发明的保护范畴。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1