一种基于SystemVerilog实现的可编程逻辑算法块自动化验证平台的制作方法

文档序号:12466504阅读:569来源:国知局
一种基于System Verilog实现的可编程逻辑算法块自动化验证平台的制作方法与工艺

本发明涉及核电站FPGA仿真测试领域,特别是指一种基于System Verilog实现的可编程逻辑算法块自动化验证平台。



背景技术:

一般的核电站仪控设备会涉及到算法块的组态问题。为保证算法块的正确性,需要对算法块进行详尽的测试,组态算法图中涉及到的算法块较多,并且对各个模块尽可能穷举较多的例子,以保证算法块在多种情况下运行正确。如果用人工输入激励,再做检查的方法去做测试,会导致测试用例覆盖不全,浪费大量的人力资源等问题。

针对算法块的测试目前也有自动化的测试,通过随机测试激励的生成,参考模型搭建,最后采集到的结果与参考模型输出的结果进行实时的比较,实现自动化的检查。一般这种自动化的设置,是针对单一的被测对象开展测试,或被测对象有相同的输入、输出的接口,或是被测对象的功能相似。

但算法块的功能繁多,不同的算法块的输入接口的形式不一样,导致测试平台的重用性低,每测一个模块,需要制造不同的格式的输入数据,要计算出输入激励对应的预期值,大大降低自动化测试的效率。

传统的自动化测试平台测试的DUT对象是固定的,或是输入、输出接口相似,但对于接口变化多,功能变化大的测试对象进行仿真时,对平台进行大规模的修改,使平台的重用性较低,测试激励没有随机性,测试模块输入接口的形式多样性,导致自动化的程度降低。



技术实现要素:

本发明的目的就是针对上述现有技术的状况,提出了一种基于System Verilog实现的可编程逻辑算法块自动化验证平台,通过使用System Verilog虚接口的方式,实现平台的重用性,减少因测试对象的改变,平台的变化幅度过大,影响测试的效率的问题。

本发明的目的是通过以下技术方案来实现的:一种基于System Verilog实现的可编程逻辑算法块自动化验证平台,包括顶层测试模块、测试激励自动生成模块、虚接口连接模块、算法库、参考模型建立模块和自动检查模块;

所述顶层测试模块用于声明接口,并用于调用所述测试激励自动生成模块、虚接口连接模块、算法库、参考模型建立模块和自动检查模块;

所述虚接口连接模块用于声明测试激励自动生成模块、参考模型建立模块、自动检查模块和被测对象连接的虚接口,并把这些虚接口进行分类,与所述测试激励自动生成模块、参考模型建立模块和自动检查模块相连接,建立自动执行的任务;

所述测试激励自动生成模块用于测试激励的生成,对输入的数据进行随机化的生成或约束激励的范围,把测试激励的数据通过虚接口传递到被测对象和参考模型中;

所述算法库用于存储所述参考模型建立模块搭建参考模型常用的算法;

所述参考模型建立模块用于从所述算法库中调用算法建立与被测对象相对应的参考模型,进行预期数据的处理,并将处理后的数据通过虚接口传给自动检查模块;

所述自动检查模块用于自动对比被测对象输出的实时数据和参考模型输出的预期数据。

进一步地,所述的算法库还通过DPI接口与C语言连接,调用C语言里的数学函数。

进一步地,所述的算法库的算法根据被测试对象设定,包括取绝对值运算、二分查找法、数据整型实型的转换算法。

本发明的有益效果是:

本发明采用Systerm Verilog虚接口的方式,把测试平台与被测对象进行分离,测试平台内部的模块均采用虚接口连接,从而保证各个部分的独立性。避免了设计的改动,带给测试平台较大的变更。这种测试平台的搭建适应各种算法块的测试,提高了验证的效率,此外这种平台有很强的灵活性,比如应对核电站用到的模拟手操起算法aman,输入信号都受使能信号的影响,为提高验证效率,建立一个aman_interface,包括所有的输入信号和一个使能信号,当使能信号变化时,所有的输入信号随之变化。

采用上述平台,在对不同接口,不同功能的算法块进行验证时,只需要修改下参考模型的功能,及被测对象接口的类型,就完成单独模块的验证。

此外,对于算法块参考模型的搭建,利用Systerm Verilog与C语言库函数有DPI接口,调用C语言中常用的数学函数,如exp,power,log,abs搭建验证平台通用的算法库,辅助被测对象参考模型的建立。

附图说明

图1为本发明一种基于System Verilog实现的可编程逻辑算法块自动化验证平台的平台架构图;

图2为本发明一种基于System Verilog实现的可编程逻辑算法块自动化验证平台的数据流向图。

具体实施方式

下面结合附图对本发明一种基于System Verilog实现的可编程逻辑算法块自动化验证平台做进一步描述:该实施例仅用于说明本发明而不用于限制本发明的范围,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

如图1所示,为本发明所述的一种基于System Verilog实现的可编程逻辑算法块自动化验证平台,包括顶层测试模块、测试激励自动生成模块、虚接口连接模块、算法库、参考模型建立模块和自动检查模块;

所述顶层测试模块用于声明接口,将被测对象连接的接口接入到验证平台中,启动验证平台的运行;所述顶层测试模块调用测试激励自动生成模块、虚接口连接模块、算法库、参考模型建立模块和自动检查模块,如下所示:

Import alg_pkg::*;

`include"real_sig_if.sv"

`include"bool_sig_if.sv"

`include"real_sig.sv"

`include"bool_sig.sv"

`include"bool_aman_if.sv"

`include"bool_aman_sig.sv"

`include"autocheck.sv"

`include"auto_stimula.sv"

`include"test_bench.sv"

....

所述虚接口连接模块用于声明测试激励自动生成模块、参考模型建立模块、自动检查模块和被测对象连接的虚接口,并把这些虚接口进行分类,与测试激励生成模块、参考模型建立模块和自动检查模块相连接,建立自动执行的任务,如下所示:

所述测试激励自动生成模块用于测试激励的生成,对输入的数据进行随机化的生成或约束激励的范围,把测试激励的数据通过虚接口传递到被测对象和参考模型中。

所述算法库用于存储搭建参考模型常用的算法,该算法是针对被测试对象的特点而设定,如取绝对值运算、二分查找法、数据整型实型的转换算法等;所述的算法库还通过DPI接口与C语言连接,调用C语言里的数学函数。

输入到被测对象的数据类型一般是设计人员自己定义的,在参考模型中需要把这种数据类型转换成实数,方便后期数据的处理,把这种算法写入到算法库中,参考模型中直接调用使用;此外还可以把算法块中用到的二分查找法,用System Verilog写入到算法库中。如下所示:

Class math_alg;

static function real bits_to_real(bit[29:0]bits);

........

Endfuntcion

Endclass

所述参考模型建立模块用于从所述算法库中调用数据建立与被测对象相对应的参考模型,进行预期数据的处理,并将处理后的数据通过虚接口传给自动检查模块。

所述自动检查模块用于自动对比被测对象输出的实时数据和参考模型输出的预期数据。

在顶层测试模块进行接口声明,统计被测试的算法块,其用到的数据类型有两种,一种是real_sig,一种是bool_sig,real_sig数据类型包含数据的使能位ena,质量位quality,量程选择位select,数值位value,bool_sig数据类型包括使能信号ena_l,质量位quality_l,数值位value_l,建立如下的接口声明:

建立接口驱动的事务处理器,便于测试激励自动生成模块的调用,如bool_sig:

本发明使用虚接口将验证平台和被测对象分隔出来,降低测试平台受设计改动的影响。测试的算法块的种类繁多,接口也是各不相同,当接口名字发生改动,利用该平台,用户无须修改驱动这个端口的方法,只要在顶层测试模块,将虚接口绑定到对应连接的实体接口,并修改参考模型即可。在测试过程中数据流向如图2所示。

测试执行时,由顶层测试模块开启测试执行,首先数据在激励自动生成模块产生,通过虚接口连接模块传递到被测对象DUT和参考模型。被测对象DUT接收到数据后进行处理,参考模型也对数据进行处理,最后被测对象DUT、参考模型将产生的数据通过虚口连接模块传递到自动检查模块做比对处理,检查模块输出比对的结果,测试完成。

本发明的关键点是在测试平台与被测对象中使用虚接口的连接方式,本发明的优点:

(1)采用Systerm Verilog的虚接口的方式,将测试平台与被测对象分离,使测试平台不随测试对象的改变大幅度的变化;

(2)本测试平台较为灵活,针对不同算法块测试只需要修改被测对象,和检查的功能就能实现算法块的测试,实验中,应用该测试平台完成了96个算法块的测试,测试效果比较理想;

(3)本验证平台含有算法库,对不同模块的测试,编写参考模型或检查功能,调用相关的算法库即可,提高验证效率。

实施例1:POW(幂函数)算法块的验证

POW算法块有两个输入分别是底数和幂,一个输出。三种输入的类型为long real格式,首先定义接口为real_sig_if,在虚接口连接模块中声明虚接口类型的输入,输出,输入信号分别与测试激励自动生成模块,自动检查模块相连,输出信号与自动检查模块相连,顶层测试模块声明输入输出的接口信号,分别连接到被测对象和虚接口连接模块对应的信号上。调用测试激励自动生成模块,该模块调用随机生成函数randomize产生符合要求的输入数据类型,在参考模型建立模块中按照数据格式的要求,调用算法库中bits_to_real函数,把输入数据转成对应的实数,再利用DPI接口,调用C语言中的POW函数,完成POW模块参考模型的建立,计算出预期的输出值,在自动检查模块将该值与被测对象DUT输出值进行比较,误差在要求的范围内,则测试通过,不在要求的范围内,不通过。

实施例2:模拟手操算法块的验证

模拟手操算法块包含6个bool_signal类型的输入,10个real类型的参数输入及5个bool_signal类型的输出,6个输入信号由信号ena控制,当ena变化,6个输入信号一同发生变化。根据该特点,建立一个bool_aman_if的接口声明,包含一个bool类型使能信号,和6个输入信号。在顶层测试模块声明bool_aman_if的输入信号,real_sig_if类型的实参输入,及bool_sig_if的输出信号。在顶层模块调用虚接口连接模块,实现被测对象的接口与虚接口连接模块相连,调用测试激励自动生成模块与自动检查模块,通过虚接口连接模块将两个模块相连。在测试激励生成模块调用随机函数,产生随机测试用例;参考模型建立模块调用算法库中预先编写好的函数,组建与aman模块功能一致的参考模型;aman_alg::av_alg函数实现核心功能,阀位的输出按照设置速率的要求输出。自动检查模块接收被测对象和参考模型建立模块输出的结果进行自动对比处理,输出比对的结果,测试完成。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1