CN115687108A - 基于uvm与fpv相结合的验证方法、平台、终端及存储介质 - Google Patents
基于uvm与fpv相结合的验证方法、平台、终端及存储介质 Download PDFInfo
- Publication number
- CN115687108A CN115687108A CN202211319403.3A CN202211319403A CN115687108A CN 115687108 A CN115687108 A CN 115687108A CN 202211319403 A CN202211319403 A CN 202211319403A CN 115687108 A CN115687108 A CN 115687108A
- Authority
- CN
- China
- Prior art keywords
- file
- fpv
- uvm
- verification platform
- verification
- 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
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明涉及芯片验证技术领域,具体涉及基于UVM与FPV相结合的验证方法、平台、终端及存储介质。该方法包括以下步骤:获取用户参数,根据获取的用户参数生成验证平台;其中,所述验证平台包括UVM验证平台和FPV验证平台;构造UVM测试用例,UVM验证平台根据UVM测试用例生成波形文件,根据所述波形文件自动生成FPV验证平台的assume property,对输入信号进行自动化约束;对待测试RTL代码的测试真值表使用所述验证平台中的脚本进行处理,自动生成assert property,对测试RTL代码进行验证;FPV验证平台对获得的assume property和assert property进行检查,输出检查报告。本发明极大地减少了验证人员的工作量,避免了因验证人员手动构造约束属性以及检查属性出现错误的问题。
Description
技术领域
本发明涉及芯片验证技术领域,尤其涉及基于UVM与FPV相结合的验证方法、平台、终端及存储介质。
背景技术
随着信息技术的发展,芯片行业高速发展,在芯片的开发过程中,芯片前端验证是芯片开发中极为重要的一环。当芯片设计人员根据设计方案开发完成RTL代码后,需要验证人员对RTL代码进行前端验证,以发现RTL代码中存在的漏洞。
在前端验证中,现有验证验证方法均单一采用UVM验证平台或FPV验证平台对待测试RTL代码进行验证。采用UVM验证平台对待测试RTL代码进行验证,需要开发人员手动搭建UVM验证平台,对于每一种激励信号的组合都需要构造测试用例以及断言,使得验证工作量大大增加。此外,由于激励信号为验证人员手动添加,一旦某组激励信号缺失,其对应输出的结果无法被验证,因此单纯采用UVM验证平台对待测试模块进行验证很难保证验证的完备性。采用FPV平台进行验证时,解决了单一采用UVM验证平台进行验证无法保证验证完备性的问题,并且不需要开发测试用例,极大地缩短了验证周期。但是,单一采用FPV验证平台进行验证工作还存在一些不足。验证人员往往需要手动搭建验证环境、添加约束和检查属性,增加了验证时间以及验证人员的工作量。此外,当约束属性(assume property)或检查属性(assert property)定义错误时,验证将会失败。
发明内容
为了解决上述现有技术中存在的技术问题,本发明提供了一种基于UVM与FPV相结合的验证方法、平台、终端及存储介质。
为实现上述目的,本发明实施例提供了如下的技术方案:
第一方面,在本发明提供的一个实施例中,提供了基于UVM与FPV相结合的验证方法,该方法包括以下步骤:
获取用户参数,根据获取的用户参数生成验证平台;
其中,所述验证平台包括UVM验证平台和FPV验证平台;
构造UVM测试用例,UVM验证平台根据UVM测试用例生成波形文件,根据所述波形文件自动生成FPV验证平台的assume property,对输入信号进行自动化约束;
对待测试RTL代码的测试真值表使用所述验证平台中的脚本进行处理,自动生成assert property,对测试RTL代码进行验证;
FPV验证平台对获得的assume property和assert property进行检查,输出检查报告。
作为本发明的进一步方案,所述验证平台,使用脚本开发。
第二方面,在本发明提供的又一个实施例中,提供了基于UVM与FPV相结合的验证平台,该验证平台包括:用户自定义文件、脚本处理文件、模板文件以及统一验证平台;
所述用户自定义文件内容包括项目名称,顶层模块名,DUT文件路径,真值表文件路径,波形文件路径;
所述脚本处理文件包括统一验证平台生成脚本Gentb.py、断言自动生成脚本文件Genassertion.py以及FPV约束自动生成脚本文件Genassume.py;
所述统一验证平台包括UVM_TB和FPV_TB两部分。
作为本发明的进一步方案,所述UVM_TB中包括uvm_tb.sv、uvm_env.sv、interface.svi、agent.sv、scoreboard.sv;UVM_TB还包括test文件夹用于用户存放构造的sequence以及测试用例。
作为本发明的进一步方案,所述FPV_TB包括tb、run以及tcl三个文件夹,其中tb文件夹下包括fpv_tb.sv文件,用于例化DUT以及构造assume property;
run文件夹下包括run.tcl文件,用于执行fpv脚本;
tcl文件夹下包括fpv脚本文件fpv.tcl,用于读取DUT文件、创建时钟和复位、执行断言检查以及输出报告。
作为本发明的进一步方案,所述Genassertion.py脚本的实现,包括:读取待测试RTL代码的测试真值表文件,通过正则匹配的方式匹配到全部输入信号与输出信号的取值对应关系,并以assert property的形式输出。
作为本发明的进一步方案,所述验证平台的产生流程包括如下步骤:
用户将参数填入用户自定义文件filelist中,脚本Gentb.py文件读取filelist中的project_name和top_name参数建立统一验证平台框架;
调用模板文件产生统一验证平台中所需文件并存放于对应框架目录下,并在顶层文件中生成各文件的连接关系;
Gentb.py文件根据DUT_path参数,提取DUT顶层文件的端口信号,并将提取到的端口信号用于完善uvm_tb.sv、interface.svi、fpv_tb.sv、sva.sv中的端口信号以及完成在uvm_tb.sv、fpv_tb.sv文件中对DUT的例化;
调用Genassume.py文件,根据fsdb_file_path参数找到文本格式的波形文件,提取DUT的输入信号的端口名与取值,转换为assume property用于约束状态空间;
调用Genassertion.py脚本,根据truth_table_file_path参数找到真值表文件,提取文件中的输入输出信息并转换为断言形式输出到sva.sv文件中。
作为本发明的进一步方案,所述验证平台进行验证方法,包括如下步骤:
构造UVM测试用例,编译UVM验证环境以及DUT代码;
对所述UVM测试用例进行仿真,并输出仿真波形;脚本文件读取仿真波形文件并转化为FPV环境的约束文件,完成对FPV输入信号的约束;
执行run.tcl文件来启动fpv.tcl脚本,对FPV环境中待测试的RTL代码进行编译、产生复位状态并运行检查机制对sva.sv文件中的assert property和cover property进行检查、输出报告并打开调试窗口。
第三方面,在本发明提供的又一个实施例中,提供了一种终端,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器加载并执行所述计算机程序时实现基于UVM与FPV相结合的验证方法的步骤。
第四方面,在本发明提供的再一个实施例中,提供了一种存储介质,存储有计算机程序,所述计算机程序被处理器加载并执行时实现所述基于UVM与FPV相结合的验证方法的步骤。
本发明提供的技术方案,具有如下有益效果:
本发明提供的基于UVM与FPV相结合的验证方法、平台、终端及存储介质,利用UVM与FPV相结合的验证平台对待测试RTL代码进行验证。验证人员只需要输入简单参数,就可以自动生成验证平台,并且约束属性可以通过波形文件自动产生,检查属性可以通过待测试真值表自动生成。极大地减少了验证人员的工作量,避免了因验证人员手动构造约束属性以及检查属性出现错误的问题。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明一个实施例的基于UVM与FPV相结合的验证方法的流程图;
图2为本发明一个实施例的基于UVM与FPV相结合的验证平台结构图;
图3为本发明一个实施例的基于UVM与FPV相结合的验证平台中用户自定义文件格式;
图4为本发明一个实施例的基于UVM与FPV相结合的验证平台的产生流程图;
图5为本发明一个实施例的基于UVM与FPV相结合的验证平台中波形文本文件格式;
图6为本发明一个实施例的基于UVM与FPV相结合的验证平台中约束属性格式;
图7为本发明一个实施例的基于UVM与FPV相结合的验证平台中检查属性格式;
图8为本发明一个实施例的基于UVM与FPV相结合的验证平台的验证流程;
图9为本发明一个实施例的终端结构图。
图中:处理器-501、通信接口-502、存储器-503、通信总线-504。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
具体地,下面结合附图,对本发明实施例作进一步阐述。
请参阅图1,图1是本发明实施例提供的一种基于UVM与FPV相结合的验证方法的流程图,如图1所示,该基于UVM与FPV相结合的验证方法包括步骤S10至步骤S40。
S10、获取用户参数,根据获取的用户参数生成验证平台;
其中,所述验证平台包括UVM验证平台和FPV验证平台;
S20、根据UVM验证平台生成的波形文件自动生成FPV验证平台的assumeproperty,对输入信号进行自动化约束;
S30、对待测试RTL代码的测试真值表使用脚本进行处理,自动生成assertproperty,对测试RTL代码进行验证。
S40、FPV验证平台对获得的assume property和assert property进行检查,输出检查报告。
在本发明实施例中,所述验证平台,使用脚本开发。
在本发明的实施例中,请参阅图2,所述验证平台包括用户自定义文件、脚本处理文件、模板文件以及统一验证平台。
其中,用户自定义文件格式如图3所示,所述用户自定义文件内容包括项目名称,顶层模块名,DUT文件路径,真值表文件路径,波形文件路径。
在本发明的实施例中,所述脚本处理文件包括统一验证平台生成脚本Gentb.py、断言自动生成脚本文件Genassertion.py以及FPV约束自动生成脚本文件Genassume.py。
在本发明的实施例中,所述统一验证平台包括UVM_TB和FPV_TB两部分。
UVM_TB中包括uvm_tb.sv、uvm_env.sv、interface.svi、agent.sv、scoreboard.sv。另外,UVM_TB还包括test文件夹用于用户存放构造的sequence以及测试用例。
FPV_TB包括tb、run以及tcl三个文件夹,其中tb文件夹下包括fpv_tb.sv文件,用于例化DUT以及构造assume property;sva.sv文件,用于构造assert property以及功能覆盖率属性(cover property)。
run文件夹下包括run.tcl文件,用于执行fpv脚本。
tcl文件夹下包括fpv脚本文件fpv.tcl,用于读取DUT文件、创建时钟和复位、执行断言检查以及输出报告。
在本发明的实施例中,请参阅图4,所述验证平台的产生流程包括如下步骤:
步骤一、用户将参数填入用户自定义文件filelist中,脚本Gentb.py文件读取filelist中的project_name和top_name参数建立统一验证平台框架;
步骤二、调用模板文件产生统一验证平台中所需文件并存放于对应框架目录下,并在顶层文件中生成各文件的连接关系;
步骤三、Gentb.py文件根据DUT_path参数,提取DUT顶层文件的端口信号,并将提取到的端口信号用于完善uvm_tb.sv、interface.svi、fpv_tb.sv、sva.sv中的端口信号以及完成在uvm_tb.sv、fpv_tb.sv文件中对DUT的例化;
步骤四、调用Genassume.py文件,根据fsdb_file_path参数找到文本格式的波形文件,提取DUT的输入信号的端口名与取值,转换为assume property用于约束状态空间;
步骤五、调用Genassertion.py脚本,根据truth_table_file_path参数找到真值表文件,提取文件中的输入输出信息并转换为断言形式输出到sva.sv文件中。
在本发明的实施例中,Genassume.py脚本的实现:在采用FPV平台对待测试RTL代码进行验证时,验证人员往往需要为输入信号添加约束,使其符合DUT逻辑。例如某一模块某种激励的仿真输出的二进值波形文件如图5所示,该模块有三个输入信号A_i[3:0]、B_i、C_i以及一个输出信号D_o,其输出信号D_o的值在三个时刻发生翻转,此时脚本通过找到D_o信号发生翻转时刻输入信号的取值变化,并将其转化为assume的格式输出。
在本发明的实施例中,当脚本匹配到当前时间为Time=0000000001,脚本检测到输出信号D_o发生上升沿翻转,并且此时匹配到三个输入信号的取值为A_i=3、B_i=0、C_i=1,并且在下一个仿真时间A_i的取值变为5,此时脚本提取上述输入输出取值的变化信息,将其转化为assume property。输出约束格式如图6所示。这样通过Genassume.py脚本,在输出信号发生变化时,将所有输入信号的取值进行约束,保证FPV验证的正确性。
Genassertion.py脚本的实现:该脚本文件通过读取测试真值表文件,通过正则匹配的方式匹配到全部输入信号与输出信号的取值对应关系,并以assert property的形式输出,assert property检查机制的格式如图7所示。
所述验证平台进行验证的流程如图8所示,具体包括如下步骤:
步骤一、构造UVM测试用例,编译UVM验证环境以及DUT代码;
步骤二、对所述UVM测试用例进行仿真,并输出仿真波形;脚本文件读取仿真波形文件并转化为FPV环境的约束文件,完成对FPV输入信号的约束;
步骤三、执行run.tcl文件来启动fpv.tcl脚本,对FPV环境中待测试的RTL代码进行编译、产生复位状态并运行检查机制对sva.sv文件中的assert property和coverproperty进行检查、输出报告并打开调试窗口。
本发明利用UVM与FPV相结合的验证平台对待测试RTL代码进行验证。验证人员只需要输入简单参数,就可以自动生成验证平台,并且约束属性可以通过波形文件自动产生,检查属性可以通过待测试真值表自动生成。极大地减少了验证人员的工作量,避免了因验证人员手动构造约束属性以及检查属性出现错误的问题。
本发明通过脚本文件与模板文件,能够自动生成验证平台的框架与所需文件,极大地缩短了验证平台的搭建时间,使得验证效率提高。其次,本发明提出UVM与FPV相结合的验证平台,解决了传统UVM验证时需要构造测试用例与断言数量较多,验证不完备的不足。最后本发明提出的约束属性与检查属性的自动生成,解决了传统FPV验证因验证人员对约束属性和检查属性的错误构造造成验证失败的问题,以及因检查属性构造数量较多,占用时间较长的问题。
应该理解的是,上述虽然是按照某一顺序描述的,但是这些步骤并不是必然按照上述顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,本实施例的一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,参见图9所示,在本发明的实施例中还提供了一种终端,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信。
存储器503,用于存放计算机程序;
处理器501,用于执行存储器503上所存放的计算机程序时,执行所述的基于UVM与FPV相结合的验证方法,该处理器执行指令时实现上述方法实施例中的步骤:
S10、获取用户参数,根据获取的用户参数生成验证平台;
其中,所述验证平台包括UVM验证平台和FPV验证平台;
S20、根据UVM验证平台生成的波形文件自动生成FPV验证平台的assumeproperty,对输入信号进行自动化约束;
S30、对待测试RTL代码的测试真值表使用脚本进行处理,自动生成assertproperty,对测试RTL代码进行验证。
S40、FPV验证平台对获得的assume property和assert property进行检查,输出检查报告。
在本发明实施例中,所述验证平台,使用脚本开发。
在本发明的实施例中,请参阅图2,所述验证平台包括用户自定义文件、脚本处理文件、模板文件以及统一验证平台。
其中,用户自定义文件格式如图3所示,所述用户自定义文件内容包括项目名称,顶层模块名,DUT文件路径,真值表文件路径,波形文件路径。
在本发明的实施例中,所述脚本处理文件包括统一验证平台生成脚本Gentb.py、断言自动生成脚本文件Genassertion.py以及FPV约束自动生成脚本文件Genassume.py。
在本发明的实施例中,所述统一验证平台包括UVM_TB和FPV_TB两部分。
UVM_TB中包括uvm_tb.sv、uvm_env.sv、interface.svi、agent.sv、scoreboard.sv。另外,UVM_TB还包括test文件夹用于用户存放构造的sequence以及测试用例。
FPV_TB包括tb、run以及tcl三个文件夹,其中tb文件夹下包括fpv_tb.sv文件,用于例化DUT以及构造assume property;sva.sv文件,用于构造assert property以及功能覆盖率属性(cover property)。
run文件夹下包括run.tcl文件,用于执行fpv脚本。
tcl文件夹下包括fpv脚本文件fpv.tcl,用于读取DUT文件、创建时钟和复位、执行断言检查以及输出报告。
在本发明的实施例中,请参阅图4,所述验证平台的产生流程包括如下步骤:
步骤一、用户将参数填入用户自定义文件filelist中,脚本Gentb.py文件读取filelist中的project_name和top_name参数建立统一验证平台框架;
步骤二、调用模板文件产生统一验证平台中所需文件并存放于对应框架目录下,并在顶层文件中生成各文件的连接关系;
步骤三、Gentb.py文件根据DUT_path参数,提取DUT顶层文件的端口信号,并将提取到的端口信号用于完善uvm_tb.sv、interface.svi、fpv_tb.sv、sva.sv中的端口信号以及完成在uvm_tb.sv、fpv_tb.sv文件中对DUT的例化;
步骤四、调用Genassume.py文件,根据fsdb_file_path参数找到文本格式的波形文件,提取DUT的输入信号的端口名与取值,转换为assume property用于约束状态空间;
步骤五、调用Genassertion.py脚本,根据truth_table_file_path参数找到真值表文件,提取文件中的输入输出信息并转换为断言形式输出到sva.sv文件中。
在本发明的实施例中,Genassume.py脚本的实现:在采用FPV平台对待测试RTL代码进行验证时,验证人员往往需要为输入信号添加约束,使其符合DUT逻辑。例如某一模块某种激励的仿真输出的二进值波形文件如图5所示,该模块有三个输入信号A_i[3:0]、B_i、C_i以及一个输出信号D_o,其输出信号D_o的值在三个时刻发生翻转,此时脚本通过找到D_o信号发生翻转时刻输入信号的取值变化,并将其转化为assume的格式输出。
在本发明的实施例中,当脚本匹配到当前时间为Time=0000000001,脚本检测到输出信号D_o发生上升沿翻转,并且此时匹配到三个输入信号的取值为A_i=3、B_i=0、C_i=1,并且在下一个仿真时间A_i的取值变为5,此时脚本提取上述输入输出取值的变化信息,将其转化为assume property。输出约束格式如图6所示。这样通过Genassume.py脚本,在输出信号发生变化时,将所有输入信号的取值进行约束,保证FPV验证的正确性。
Genassertion.py脚本的实现:该脚本文件通过读取测试真值表文件,通过正则匹配的方式匹配到全部输入信号与输出信号的取值对应关系,并以assert property的形式输出,assert property检查机制的格式如图7所示。
所述验证平台进行验证的流程如图8所示,具体包括如下步骤:
步骤一、构造UVM测试用例,编译UVM验证环境以及DUT代码;
步骤二、对所述UVM测试用例进行仿真,并输出仿真波形;脚本文件读取仿真波形文件并转化为FPV环境的约束文件,完成对FPV输入信号的约束;
步骤三、执行run.tcl文件来启动fpv.tcl脚本,对FPV环境中待测试的RTL代码进行编译、产生复位状态并运行检查机制对sva.sv文件中的assert property和coverproperty进行检查、输出报告并打开调试窗口。
本发明利用UVM与FPV相结合的验证平台对待测试RTL代码进行验证。验证人员只需要输入简单参数,就可以自动生成验证平台,并且约束属性可以通过波形文件自动产生,检查属性可以通过待测试真值表自动生成。极大地减少了验证人员的工作量,避免了因验证人员手动构造约束属性以及检查属性出现错误的问题。
本发明通过脚本文件与模板文件,能够自动生成验证平台的框架与所需文件,极大地缩短了验证平台的搭建时间,使得验证效率提高。其次,本发明提出UVM与FPV相结合的验证平台,解决了传统UVM验证时需要构造测试用例与断言数量较多,验证不完备的不足。最后本发明提出的约束属性与检查属性的自动生成,解决了传统FPV验证因验证人员对约束属性和检查属性的错误构造造成验证失败的问题,以及因检查属性构造数量较多,占用时间较长的问题。
上述终端提到的通信总线可以是外设部件互连标准(PeripheralComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(ApplicationSpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-ProgrammableGate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
所述终端包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述终端可单独运行来实现本发明,也可接入网络并通过与网络中的其他终端的交互操作来实现本发明。其中,所述终端所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
所述终端包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述终端可单独运行来实现本发明,也可接入网络并通过与网络中的其他终端的交互操作来实现本发明。其中,所述终端所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
还应当进理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
在本发明的一个实施例中还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法实施例中的步骤:
S10、获取用户参数,根据获取的用户参数生成验证平台;
其中,所述验证平台包括UVM验证平台和FPV验证平台;
S20、根据UVM验证平台生成的波形文件自动生成FPV验证平台的assumeproperty,对输入信号进行自动化约束;
S30、对待测试RTL代码的测试真值表使用脚本进行处理,自动生成assertproperty,对测试RTL代码进行验证。
S40、FPV验证平台对获得的assume property和assert property进行检查,输出检查报告。
在本发明实施例中,所述验证平台,使用脚本开发。
在本发明的实施例中,请参阅图2,所述验证平台包括用户自定义文件、脚本处理文件、模板文件以及统一验证平台。
其中,用户自定义文件格式如图3所示,所述用户自定义文件内容包括项目名称,顶层模块名,DUT文件路径,真值表文件路径,波形文件路径。
在本发明的实施例中,所述脚本处理文件包括统一验证平台生成脚本Gentb.py、断言自动生成脚本文件Genassertion.py以及FPV约束自动生成脚本文件Genassume.py。
在本发明的实施例中,所述统一验证平台包括UVM_TB和FPV_TB两部分。
UVM_TB中包括uvm_tb.sv、uvm_env.sv、interface.svi、agent.sv、scoreboard.sv。另外,UVM_TB还包括test文件夹用于用户存放构造的sequence以及测试用例。
FPV_TB包括tb、run以及tcl三个文件夹,其中tb文件夹下包括fpv_tb.sv文件,用于例化DUT以及构造assume property;sva.sv文件,用于构造assert property以及功能覆盖率属性(cover property)。
run文件夹下包括run.tcl文件,用于执行fpv脚本。
tcl文件夹下包括fpv脚本文件fpv.tcl,用于读取DUT文件、创建时钟和复位、执行断言检查以及输出报告。
在本发明的实施例中,请参阅图4,所述验证平台的产生流程包括如下步骤:
步骤一、用户将参数填入用户自定义文件filelist中,脚本Gentb.py文件读取filelist中的project_name和top_name参数建立统一验证平台框架;
步骤二、调用模板文件产生统一验证平台中所需文件并存放于对应框架目录下,并在顶层文件中生成各文件的连接关系;
步骤三、Gentb.py文件根据DUT_path参数,提取DUT顶层文件的端口信号,并将提取到的端口信号用于完善uvm_tb.sv、interface.svi、fpv_tb.sv、sva.sv中的端口信号以及完成在uvm_tb.sv、fpv_tb.sv文件中对DUT的例化;
步骤四、调用Genassume.py文件,根据fsdb_file_path参数找到文本格式的波形文件,提取DUT的输入信号的端口名与取值,转换为assume property用于约束状态空间;
步骤五、调用Genassertion.py脚本,根据truth_table_file_path参数找到真值表文件,提取文件中的输入输出信息并转换为断言形式输出到sva.sv文件中。
在本发明的实施例中,Genassume.py脚本的实现:在采用FPV平台对待测试RTL代码进行验证时,验证人员往往需要为输入信号添加约束,使其符合DUT逻辑。例如某一模块某种激励的仿真输出的二进值波形文件如图5所示,该模块有三个输入信号A_i[3:0]、B_i、C_i以及一个输出信号D_o,其输出信号D_o的值在三个时刻发生翻转,此时脚本通过找到D_o信号发生翻转时刻输入信号的取值变化,并将其转化为assume的格式输出。
在本发明的实施例中,当脚本匹配到当前时间为Time=0000000001,脚本检测到输出信号D_o发生上升沿翻转,并且此时匹配到三个输入信号的取值为A_i=3、B_i=0、C_i=1,并且在下一个仿真时间A_i的取值变为5,此时脚本提取上述输入输出取值的变化信息,将其转化为assume property。输出约束格式如图6所示。这样通过Genassume.py脚本,在输出信号发生变化时,将所有输入信号的取值进行约束,保证FPV验证的正确性。
Genassertion.py脚本的实现:该脚本文件通过读取测试真值表文件,通过正则匹配的方式匹配到全部输入信号与输出信号的取值对应关系,并以assert property的形式输出,assert property检查机制的格式如图7所示。
所述验证平台进行验证的流程如图8所示,具体包括如下步骤:
步骤一、构造UVM测试用例,编译UVM验证环境以及DUT代码;
步骤二、对所述UVM测试用例进行仿真,并输出仿真波形;脚本文件读取仿真波形文件并转化为FPV环境的约束文件,完成对FPV输入信号的约束;
步骤三、执行run.tcl文件来启动fpv.tcl脚本,对FPV环境中待测试的RTL代码进行编译、产生复位状态并运行检查机制对sva.sv文件中的assert property和coverproperty进行检查、输出报告并打开调试窗口。
本发明利用UVM与FPV相结合的验证平台对待测试RTL代码进行验证。验证人员只需要输入简单参数,就可以自动生成验证平台,并且约束属性可以通过波形文件自动产生,检查属性可以通过待测试真值表自动生成。极大地减少了验证人员的工作量,避免了因验证人员手动构造约束属性以及检查属性出现错误的问题。
本发明通过脚本文件与模板文件,能够自动生成验证平台的框架与所需文件,极大地缩短了验证平台的搭建时间,使得验证效率提高。其次,本发明提出UVM与FPV相结合的验证平台,解决了传统UVM验证时需要构造测试用例与断言数量较多,验证不完备的不足。最后本发明提出的约束属性与检查属性的自动生成,解决了传统FPV验证因验证人员对约束属性和检查属性的错误构造造成验证失败的问题,以及因检查属性构造数量较多,占用时间较长的问题。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (10)
1.一种基于UVM与FPV相结合的验证方法,其特征在于,该方法包括:
获取用户参数,根据获取的用户参数生成验证平台;
其中,所述验证平台包括UVM验证平台和FPV验证平台;
构造UVM测试用例,UVM验证平台根据UVM测试用例生成波形文件,根据所述波形文件自动生成FPV验证平台的assume property;
对待测试RTL代码的测试真值表使用所述验证平台中的脚本进行处理,自动生成assert property;
FPV验证平台对获得的assume property和assert property进行检查,输出检查报告。
2.如权利要求1所述的基于UVM与FPV相结合的验证方法,其特征在于,所述验证平台,使用脚本开发。
3.一种基于UVM与FPV相结合的验证平台,其特征在于,所述验证平台包括用户自定义文件、脚本处理文件、模板文件以及统一验证平台;
所述用户自定义文件内容包括项目名称,顶层模块名,DUT文件路径,真值表文件路径,波形文件路径;
所述脚本处理文件包括统一验证平台生成脚本Gentb.py、断言自动生成脚本文件Genassertion.py以及FPV约束自动生成脚本文件Genassume.py;
所述统一验证平台包括UVM_TB和FPV_TB两部分。
4.如权利要求3所述的基于UVM与FPV相结合的验证平台,其特征在于,所述UVM_TB中包括uvm_tb.sv、uvm_env.sv、interface.svi、agent.sv、scoreboard.sv;UVM_TB还包括test文件夹用于用户存放构造的sequence以及测试用例。
5.如权利要求3所述的基于UVM与FPV相结合的验证平台,其特征在于,所述FPV_TB包括tb、run以及tcl三个文件夹,其中tb文件夹下包括fpv_tb.sv文件,用于例化DUT以及构造assume property;
run文件夹下包括run.tcl文件,用于执行fpv脚本;
tcl文件夹下包括fpv脚本文件fpv.tcl,用于读取DUT文件、创建时钟和复位、执行断言检查以及输出报告。
6.如权利要求3所述的基于UVM与FPV相结合的验证平台,其特征在于,所述Genassertion.py脚本的实现,包括:读取待测试RTL代码的测试真值表文件,通过正则匹配的方式匹配到全部输入信号与输出信号的取值对应关系,并以assert property的形式输出。
7.如权利要求3所述的基于UVM与FPV相结合的验证平台,其特征在于,所述验证平台的产生流程包括如下步骤:
用户将参数填入用户自定义文件filelist中,脚本Gentb.py文件读取filelist中的project_name和top_name参数建立统一验证平台框架;
调用模板文件产生统一验证平台中所需文件并存放于对应框架目录下,并在顶层文件中生成各文件的连接关系;
Gentb.py文件根据DUT_path参数,提取DUT顶层文件的端口信号,并将提取到的端口信号用于完善uvm_tb.sv、interface.svi、fpv_tb.sv、sva.sv中的端口信号以及完成在uvm_tb.sv、fpv_tb.sv文件中对DUT的例化;
调用Genassume.py文件,根据fsdb_file_path参数找到文本格式的波形文件,提取DUT的输入信号的端口名与取值,转换为assume property用于约束状态空间;
调用Genassertion.py脚本,根据truth_table_file_path参数找到真值表文件,提取文件中的输入输出信息并转换为断言形式输出到sva.sv文件中。
8.如权利要求3所述的基于UVM与FPV相结合的验证平台,其特征在于,所述验证平台进行验证方法,包括如下步骤:
构造UVM测试用例,编译UVM验证环境以及DUT代码;
对所述UVM测试用例进行仿真,并输出仿真波形;脚本文件读取仿真波形文件并转化为FPV环境的约束文件,完成对FPV输入信号的约束;
执行run.tcl文件来启动fpv.tcl脚本,对FPV环境中待测试的RTL代码进行编译、产生复位状态并运行检查机制对sva.sv文件中的assert property和cover property进行检查、输出报告并打开调试窗口。
9.一种终端,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器加载并执行所述计算机程序时实现如权利要求1-2任一项所述的基于UVM与FPV相结合的验证方法的步骤。
10.一种存储介质,存储有计算机程序,所述计算机程序被处理器加载并执行时实现如权利要求1-2任一项所述的基于UVM与FPV相结合的验证方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211319403.3A CN115687108A (zh) | 2022-10-26 | 2022-10-26 | 基于uvm与fpv相结合的验证方法、平台、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211319403.3A CN115687108A (zh) | 2022-10-26 | 2022-10-26 | 基于uvm与fpv相结合的验证方法、平台、终端及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115687108A true CN115687108A (zh) | 2023-02-03 |
Family
ID=85098462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211319403.3A Pending CN115687108A (zh) | 2022-10-26 | 2022-10-26 | 基于uvm与fpv相结合的验证方法、平台、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115687108A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116306388A (zh) * | 2023-05-23 | 2023-06-23 | 苇创微电子(上海)有限公司 | 一种免除路径连接的自动化uvm验证平台及其搭建方法 |
-
2022
- 2022-10-26 CN CN202211319403.3A patent/CN115687108A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116306388A (zh) * | 2023-05-23 | 2023-06-23 | 苇创微电子(上海)有限公司 | 一种免除路径连接的自动化uvm验证平台及其搭建方法 |
CN116306388B (zh) * | 2023-05-23 | 2023-07-28 | 苇创微电子(上海)有限公司 | 一种免除路径连接的自动化uvm验证平台及其搭建方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10108536B2 (en) | Integrated automated test case generation for safety-critical software | |
CN109189479B (zh) | 一种用于处理器指令集的并行自动化验证方法 | |
WO2016026328A1 (zh) | 一种信息处理方法、装置及计算机存储介质 | |
CN110489812B (zh) | 多层层级网表处理方法、装置、计算机设备及存储介质 | |
CN112417798B (zh) | 一种时序测试方法、装置、电子设备及存储介质 | |
CN114546738B (zh) | 服务器通用测试方法、系统、终端及存储介质 | |
JP2009087354A (ja) | ウェブアプリケーションの自動テスト生成システム及び方法 | |
CN113255258B (zh) | 逻辑综合方法、装置、电子设备及存储介质 | |
CN111965530A (zh) | 一种基于jtag的fpga芯片自动化测试方法 | |
CN111767226A (zh) | 一种云计算平台资源的测试方法、系统及设备 | |
Tiwari et al. | Reuse: reducing test effort | |
CN115952758A (zh) | 芯片验证方法、装置、电子设备及存储介质 | |
CN115687108A (zh) | 基于uvm与fpv相结合的验证方法、平台、终端及存储介质 | |
CN106649110B (zh) | 软件测试方法及系统 | |
CN112860587B (zh) | Ui自动测试方法和装置 | |
CN114356683A (zh) | 覆盖率融合方法、装置、计算机设备及存储介质 | |
CN112731117A (zh) | 芯片的自动验证方法和系统,及存储介质 | |
CN113407449A (zh) | 一种接口测试方法以及装置 | |
CN111624475A (zh) | 大规模集成电路的测试方法及系统 | |
Huggi et al. | Design and verification of memory elements using python | |
CN115577673A (zh) | 一种面向5g基带芯片系统管脚的高效验证方法 | |
KR100777103B1 (ko) | 테스트 드라이버 생성 장치 및 방법 | |
CN113868046A (zh) | 一种pad控制单元的功能验证方法、系统及相关组件 | |
CN115176233B (zh) | 以确定性顺序执行测试 | |
CN115033434A (zh) | 一种内核性能理论值计算方法、装置及存储介质 |
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 |