一种可重用的仿真验证平台及仿真验证方法与流程

文档序号:17131327发布日期:2019-03-16 01:16阅读:491来源:国知局
一种可重用的仿真验证平台及仿真验证方法与流程

本发明涉及fpga产品功能仿真验证技术领域,尤其涉及一种可重用的仿真验证平台及仿真验证方法。



背景技术:

由于fpga具有超越微处理器和软件系统的优势,国内外多家核电仪控厂商将fpga技术用于多样性驱动系统。当前基于fpga技术的仪控系统在国内核电领域尚无成熟应用经验,为此核电业主和核监管机构都要求对fpga技术的仪控产品进行严格的验证与确认,以保证其质量和可靠性。

对fpga产品进行功能仿真是验证其正确性及安全性的重要手段。功能仿真验证是fpga研发流程中最复杂、耗时的环节,平均约占整个研发周期的60-70%,加之产品上线需求的紧迫性,功能仿真验证己成为当下制约fpga设计流程的瓶颈。因此,如何高效、全面地对fpga产品功能进行测试,是本领域技术人员需要解决的问题。传统的仿真验证方法存在验证周期长、验证平台重用性低、自动化水平不高等问题。accellera组织推出的通用验证方法学uvm(universalverificationmethodology)是验证领域一种新兴的验证方法学,它综合了以往众多验证方法学的优点,代表验证界的最新发展。uvm对传统仿真验证方法进行了改进,它采用层次化建模方法,通过组件重用,缩短验证平台搭建时间;采用受约束随机激励,便于实现自动化测试,提高验证效率。

核电仪控系统中的fpga器件,在系统中发挥着重要作用,因此需要搭建基于uvm的可重用的验证平台来对其进行高效、完备的验证。



技术实现要素:

鉴于上述的分析,本发明旨在提供一种可重用仿真验证平台及仿真验证方法,用以解决现有定向测试中存在的人工介入过多、工作量大、验证平台重用性低的问题。

本发明的目的主要是通过以下技术方案实现的:

一种可重用的仿真验证平台,包括dut以及验证组件,所述验证组件包括参数配置模块、测试用例模块、外存储代理器、通道代理器和mpu功能模型,

所述参数配置模块,用于配置测试用例模块中所需的环境参数;还用于初始化所述外存储代理器、通道代理器、mpu功能模型中的参数;

所述测试用例模块,用于接收所述参数配置模块发送的环境参数,完成随机化序列的构建,并统一调度所述外存储代理器、通道代理器、mpu功能模型的激励序列;

所述外存储代理器,用于存储dut内部的寄存器配置数据;

所述dut,在接收到外存储代理器发送的配置数据后,进行dut内部相应寄存器的配置;还用于实现通道采集或输出及与mpu功能模型的通信。

所述通道代理器,用于模拟dut的外部通道,协助dut完成采集或完成输出评价;

所述mpu功能模型,用于根据测试用例模型的测试需求与dut进行交互。

本发明有益效果如下:本发明设计的仿真验证平台,采用模块化结构,便于验证组件复用。既可横向复用,供其它项目使用;也可纵向复用,满足同项目中更高层级的集成。具有可重用、易扩展特点,可以快速搭建验证平台,通过约束产生随机激励,验证不同配置或不同类型io产品的fpga器件的功能,可显著提高fpga产品验证的效率和质量。

在上述方案的基础上,本发明还做了如下改进:

进一步,所述测试用例模块包括序列产生器、虚拟定序器,

所述序列产生器,用于产生所述外存储代理器、mpu功能模块、通道代理器所需的激励序列;

所述虚拟定序器,用于将所述外存储代理器的激励序列发送至所述外存储代理器中的第一定序器,还用于将所述mpu功能模块的激励序列发送至所述mpu功能模块中的应用层序列生成器,还用于将所述通道代理器的激励序列发送至所述通道代理器中的第二定序器。

采用上述进一步方案的有益效果是:通过测试用例模块生成激励序列,对验证组件中的其他模块进行调度,不同的测试场景使用不同的序列组合,用于验证不同的功能。

进一步,所述外存储代理器包括第一定序器、第一驱动器、第一监视器,

所述第一定序器,用于将接收自测试用例模块中虚拟定序器的激励序列发送至第一驱动器;

所述第一驱动器,用于将所接收的激励序列由事务转化成逻辑信号,并通过总线将所述逻辑信号发送至dut;

所述第一监视器,用于接收所述逻辑信号,并转化成事务,进行协议检查和数据比对,监控总线行为。

采用上述进一步方案的有益效果是:通过采用uvm方法学设计外存储代理器,能够保证外存储代理器实现驱动存储数据到dut、监控总线行为的功能。

进一步,所述通道代理器包括第二定序器、第二驱动器、第二监视器,

所述第二定序器,用于当通道代理器为输出型时,将通道激励序列发送至第二驱动器;

所述第二驱动器,用于将来自第二定序器的激励序列由事务转化成逻辑信号,并驱动到所述被测dut的通道输入端口;

所述第二监视器,用于当通道代理器为输入型时,采集监视来自dut的通道信号。

采用上述进一步方案的有益效果是:通过采用uvm方法学设计通道代理器,能够保证通道代理器实现驱动信号、监控总线行为的功能。其中dut为输入类时,如ai及di类的dut,通道代理器主要由第二定序器及第二驱动器发挥作用;当dut为输出类时,如ao及do类的dut,通道代理器主要由监视器发挥作用。

进一步,所述通道代理器按照输入输出类型包括:外部dac代理器、外部adc代理器、外部di输入通道代理器、外部do输出通道代理器。

采用上述进一步方案的有益效果是:针对四类输入输出类型产品的应用场景,开发相应类型的外围通道代理器。在进行验证时,需在参数配置阶段进行通道代理器输入输出类型配置,选择相应产品类型的测试用例序列,进而开展相应类型产品的验证。

进一步,所述mpu功能模块包括物理层代理器、数据链路层模块、应用层模块,

其中,所述物理层代理器包括:总线定序器、总线驱动器、总线监视器;

所述数据链路层模块包括:数据链路层序列生成器、数据链路层序列、数据链路层定序器;

所述应用层模块包括:应用层序列生成器、应用层序列、应用层定序器。

采用上述进一步方案的有益效果是:mpu功能模块是复杂功能的器件,本发明提供的mpu功能模块可满足与fpga通信交互、采集或输出数据处理等功能,mpu功能模块的核心功能是模拟自定义协议,所述自定义协议具体指dut与mpu功能模块进行通信所需的自定义协议。

在本发明的另一具体实施例中,提供了一种使用所述仿真验证平台的仿真验证方法,所述方法步骤如下:

上电复位并初始化待测dut;

配置通道代理器,确定待测dut的外围通道模型;

完成mpu功能模型对dut的通信配置;

通信配置完成后,dut与mpu进行正常的周期通信,dut与通道代理器进行采集或输出交互,mpu接收dut的回传数据,并根据所述回传数据实现仿真验证。

本发明有益效果如下:本发明通过给出使用仿真验证平台使用方法,便于本领域的技术人员使用本发明设计的仿真验证平台,同时进一步验证了本发明仿真验证平台的可重用、易扩展特点,能够验证不同配置或不同类型io产品的fpga器件的功能,可显著提高fpga产品验证的效率和质量。

在上述方案的基础上,本发明还做了如下改进:

进一步,所述上电复位并初始化待测dut进一步包括:上电复位完成后,检查待测dut在位状态、机箱、槽位号是否初始化成功;若成功,由测试用例模块控制外存储代理器,将所述外存储代理器内部存储的寄存器配置数据发送至待测dut;

所述配置通道代理器,确定待测dut的外围通道模型进一步包括:利用参数配置模块将环境参数发送至测试用例模块,测试用例模块根据所述环境参数选择生成相应的通道代理器,完成通道代理器的配置,并由此确定待测dut的外围通道模型。

采用上述进一步方案的有益效果是:通过上电复位并初始化待测dut,通信配置阶段确保待测dut处于正常状态并完成相应寄存器的配置,验证通信配置阶段的器件功能,是后续步骤可靠实现的前提条件。

进一步,所述完成mpu功能模型对dut的通信配置包括:测试用例模块控制mpu功能模型通过通信总线向待测dut发送通信配置协议帧,待测dut接收所述通信配置协议帧,并向mpu功能模型发送回包信息,mpu功能模型根据所述回包信息判断通信配置是否成功。

采用上述进一步方案的有益效果是:通信配置是mpu功能模型对dut的通信的基础,通过测试用例模块的调度,能够实现mpu功能模型对dut的通信配置,保证后期二者之间的正常通信。

进一步,所述通信配置完成后,dut与mpu进行正常的周期通信进一步包括:

测试用例模块控制mpu功能模型通过通信总线向待测dut发送仿真激励序列,待测dut接收所述激励序列,根据所述仿真激励序列的内容执行相应内部处理或通道操作,并向mpu功能模型反馈执行结果。

采用上述进一步方案的有益效果是:通过dut与mpu之间的通信交互,能够模拟mpu与i/o板卡之间的通信过程,实现仿真验证功能。

本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书、权利要求书以及附图中所特别指出的内容中来实现和获得。

附图说明

附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。

图1为本发明实施例中的可重用的仿真验证平台;

图2为本发明实施例中的mpu功能模块;

图3为本发明实施例中的仿真验证方法。

具体实施方式

下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。

本发明的一个具体实施例,公开了一种可重用的仿真验证平台,如图1所示,所述仿真验证平台包括待测dut以及验证组件,

所述dut(deviceundertest,测试中设备),一方面用于实现通道采集或输出(与现场传感或致动器交互),另一方面通过通信总线与主处理单元(mpu)进行通信。

所述验证组件进一步包括:参数配置模块、测试用例模块、外存储代理器、通道代理器、mpu功能模型,

其中,所述参数配置模块,用于配置测试用例模块中所需的环境参数,指导测试用例模块完成随机化序列的定义;还用于初始化所述外存储代理器、通道代理器、mpu功能模型中的参数;

所述测试用例模块,用于接收所述参数配置模块发送的环境参数,完成随机化序列的构建,并统一调度所述外存储代理器、通道代理器、mpu功能模型的激励序列;不同的测试场景使用不同的序列组合,用于验证不同的功能;

优选地,所述测试用例模块进一步包括:序列产生器、虚拟定序器,其中,所述序列产生器,用于产生所述外存储代理器、mpu功能模块、通道代理器所需的激励序列;

所述虚拟定序器,用于将所述外存储代理器的激励序列发送至所述外存储代理器中的第一定序器,还用于将所述mpu功能模块的激励序列发送至所述mpu功能模块中的应用层序列生成器,还用于将所述通道代理器的激励序列发送至所述通道代理器中的第二定序器。

所述外存储代理器,用于存储待测dut内部的寄存器配置数据,还用于在待测dut上电复位后,将所述配置数据通过iic协议输出至待测dut,以完成dut内部相应寄存器的配置;其中,本发明所述的外存储代理器模拟的是eeprom器件的功能;

优选地,所述外存储代理器进一步包括:第一定序器、第一驱动器、第一监视器,

其中,所述第一定序器,用于将接收自测试用例模块中虚拟定序器的激励序列发送至第一驱动器;

所述第一驱动器,用于将接收自第一定序器的激励序列由事务转化成逻辑信号,并通过总线将所述逻辑信号发送至dut;

所述第一监视器,用于接收所述逻辑信号,并转化成事务,进行协议检查和数据比对,监控总线行为。

所述通道代理器,用于根据输入输出的不同类型,为dut提供相应的输入或采集其输出的外围器件,用于模拟外部通道功能;

优选地,所述通道代理器进一步包括:第二定序器、第二驱动器、第二监视器,

其中,所述第二定序器,用于当通道代理器为输出型时,将通道激励序列发送至第二驱动器,此时对应dut为输入类;

所述第二驱动器,用于将来自第二定序器的激励序列由事务转化成逻辑信号,并驱动到接口所述被测dut的通道输入端口;

所述第二监视器,用于当通道代理器为输入型时,采集监视来自dut的通道信号,此时对应dut为输出类。

其中dut为输入类时,如ai及di类的dut,通道代理器主要由第二定序器及第二驱动器发挥作用;当dut为输出类时,如ao及do类的dut,主要由监视器发挥作用。

针对四类输入输出类型产品的应用场景,开发相应类型的外围通道模型。在进行验证时,需在参数配置阶段进行输入输出类型配置,选择相应产品类型的测试用例序列,进而开展相应类型产品的验证。

所述通道代理器按照输入输出类型进一步分为:外部dac代理器、外部adc代理器、外部di输入通道代理器、外部do输出通道代理器。

外部dac代理器,开发一个数模转换代理器,用于将待测的ao类型fpga输出端口的输出电流数据进行解析,将fpga输出的数字量转化为模拟量。此代理器为基于spi协议的总线代理器。

外部adc代理器,开发一个模数转换代理器。用于ai类型的fpga验证,完成通道电流采集。此功能模型检查fpga下发的adc配置数据正确性;确定adc配置成功后,产生电流数据并通过spi协议写入dut的读取接口。此模型产生受约束的随机电流输入数据。

外部di输入通道代理器,产生受约束的随机数字量输入信号,用于对di类型fpga进行验证。

外部do输出通道代理器,用于接收do板卡fpga输出的数字量,具备监视功能。

所述mpu功能模型,用于进行通信协议的数据帧的组包及解析,根据测试用例模型的测试需求与dut进行交互,具体包括:向dut下发通信指令,并接收来自dut上传的信息。

优选地,mpu功能模块是复杂功能的器件,本发明提供的mpu功能模块可满足与fpga通信交互、采集或输出处理相关功能,mpu功能模块的核心功能是模拟自定义协议,所述自定义协议具体指dut与mpu功能模块进行通信所需的自定义协议。

优选地,所述mpu功能模块内的通信协议部分进一步包括物理层代理器、数据链路层模块、应用层模块,

其中,所述物理层代理器进一步包括:总线定序器、总线驱动器、总线监视器;

所述数据链路层模块进一步包括:数据链路层序列生成器、数据链路层序列、数据链路层定序器;

所述应用层模块进一步包括:应用层序列生成器、应用层序列、应用层定序器;

如图2所示,其中,所述总线定序器用于接收数据链路层定序器发来的数据包,还用于将总线监视器收集到的总线响应数据上传到数据链路层代理器。总线驱动器用于将数据链路层数据以符合uart总线协议的事务单元打包,并将事务单元通过总线接口发送到待测dut的uart接收信号端;总线监视器用于收集dut的uart总线信号端输出的响应数据包。

物理层代理器,其数据格式由开始位、数据、校验位和停止位组成。物理层代理器还用于配置波特率、奇偶校验等参数。

数据链路层序列在应用层数据包基础上,通过数据链路层序列生成器添加上同步字节、定界符、帧长度、源地址、目的地址、冗余校验等信息,组成完整的数据链路层数据帧。数据链路层序列用于根据协议定义组成数据链路层数据包,还用于将数据链路层定序器接收到的物理层代理器响应数据包发送至应用层模块;数据链路层定序器还用于将数据链路层数据发送到物理层代理器的总线定序器上,还用于接收总线定序器传输来的响应数据事务。

应用层序列生成器根据选用的测试用例约束情况及应用层事务单元的参数配置情况,自动生成对应的应用层序列,由特定组包函数生成应用层数据包;应用层序列,主要由测试用例统一调度其序列生成器,适用于产生不同的应用层事务单元;应用层定序器用于将应用层数据包发送给数据链路层,还用于接收数据链路层传输来的响应数据包;所述应用层序列还有比较计分板,用于判断接收到的响应数据包是否合理。应用层数据包,包含如包序号、机箱、槽位、板卡类型、通道值、crc等信息。具体到不同i/o类型,进行相应的扩展得到包含具体i/o特点的子类。应用层模块按dut工作的通信阶段,将先后用于配置阶段和正常通信阶段。

将三个层次模型,集成到uvm_env基类形成一个命名为master_agent集成环境的组件,用来整体完成自定义协议的功能,完成通信数据下发及上传数据的接收。将master_agent组件集成到testbech中,同时在testbench中包含主控机箱和槽位号、主控地址、i/o类型、i/o槽位、i/o地址等配置参数,形成mpu仿真模型。

通过uvm方法搭建可重用的验证平台,可极大地提高验证的效率。本发明采用uvm进行验证的主要优点为:

1.采用模块化结构,便于验证组件复用。既可横向复用,供其它项目使用;也可纵向复用,满足同项目中更高层级的集成。

2.结合受约束随机激励、自动检查以及覆盖指标,可节省验证时间。

3.便于测试维护,在不修改testbench情况下,通过修改testcase的方式来改变测试用例,提高测试灵活性和效率。

传统的验证平台和方法在新的测试用例时往往需重新修改测试平台,代码修改量大、工作重复度高,不便于维护和扩展。本验证平台testcase库是相对独立的,具有良好的可重用性、可扩展性。在验证平台搭建好之后,测试人员可将精力集中于开发testcase上,更易于发现有价值的缺陷,提高测试的效率和产品质量。随着验证的深入,testcase库会越来越完善,进而达到更高的功能覆盖率,提高fpga的可靠性。在后续测试维护,如回归测试时,可以调用相应的testcase编号,方便的进行回归验证。如需增加测试用例,仅需在测试用例模块产生相应序列,即可形成新的测试用例。

在本发明的另一具体实施例中,还提供了一种仿真验证方法,如图3所示,所述仿真方法包括以下步骤:

步骤s1:上电复位并初始化待测dut;

步骤s11:上电复位完成后,待测dut检查包括在位状态、机箱、槽位号在内的单元是否初始化成功;

步骤s12:若成功,由测试用例模块控制外存储代理器,将所述外存储代理器内部存储的寄存器配置数据发送至待测dut;

在此过程中,测试用例模块的序列产生器,按照外存储代理器配置数据的顺序,指导生成外存储代理器所需的激励序列;并通过测试用例模块中的虚拟定序器,将所述激励序列发送到外存储模型的第一定序器上;外存储代理器的第一定序器将所述激励序列传递给外存储代理器中的第一驱动器,所述第一驱动器通过虚拟接口,将所述激励序列通过存储器传输总线,发送到待测dut中;

步骤s2:配置通道代理器,确定待测dut的外围通道模型;

利用参数配置模块将环境参数发送至测试用例模块,测试用例模块根据所述环境参数选择生成相应的通道代理器,完成通道代理器的配置,并由此确定待测dut的外围通道模型;

步骤s3:完成mpu功能模型对dut的通信配置;

测试用例模块控制mpu功能模型通过通信总线向待测dut发送通信配置协议帧,待测dut接收所述通信配置协议帧,并向mpu功能模型发送回包信息,mpu功能模型根据所述回包信息判断通信配置是否成功;

此过程中,测试用例模块的序列产生器产生mpu功能环境模型的应用层所需的激励序列,将所述激励序列发送到应用层,并经由数据链路层处理添加同步字节、冗余校验等信息,最终通过物理层的驱动器驱动到待测dut;

待测dut接收所述激励序列并生成回包信息,所述回包信息被物理层代理器的监视器接收,并经数据链路层发送至应用层,由应用层解析回包信息,进而判断通信配置是否成功;若成功,则进入正常通信阶段,否则在下一周期重新进行通信配置。

步骤s4:通信配置完成后,dut与mpu进行正常的周期通信,dut与通道代理器进行采集或输出交互,mpu接收dut的回传数据,并根据所述回传数据实现仿真验证:

dut与通道代理器进行采集或输出交互,由通道代理器进行dut输出评价或由通道代理器提供dut所需的采集信号;mpu对dut回传的数据完成解析,并将数据期望值与接收到的回传数据进行对比,对仿真验证结果进行评价;

通信配置阶段成功后,进入正常通信周期阶段。此过程的数据下发及回传过程与配置过程类似。

测试用例模块控制mpu功能模型通过通信总线向待测dut发送仿真激励序列,待测dut接收所述激励序列,根据所述仿真激励序列的内容执行相应内部处理或通道操作,并向mpu功能模型反馈执行结果。

当待测dut为输出型,如do或ao型,mpu功能模型发送的仿真激励序列内包含mpu设备状态、输出信息及输出通道的相应要求,此时待测dut执行相应的数据处理操作,并向通道代理器输出通道数据,通道代理器监视通道状态并对dut输出的通道数值进行评价;同时待测dut生成包含本设备故障状态及通道数据回读等内容的回包信息并反馈至mpu功能模型;

当待测dut为输入型,如di或ai型,mpu功能模型发送的激励序列内主要为mpu设备状态信息,此时待测dut采集通道数据;通道数据由通道代理器产生,并由通道代理器驱动到dut的通道采集接口。待测dut采集到通道数据,进行内部处理,生成包含本设备故障状态、通道采集值、通道状态评价等内容的回包信息,并反馈至mpu功能模型。

该仿真验证方法实施例与仿真验证平台实施例基于相同的发明构思,其相通之处可相互借鉴,此处不再赘述。

本发明通过给出使用仿真验证平台使用方法,便于本领域的技术人员使用本发明设计的仿真验证平台,同时进一步验证了本发明仿真验证平台的可重用、易扩展特点,能够验证不同配置或不同类型io产品的fpga器件的功能,可显著提高fpga产品验证的效率和质量。

本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

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