一种基于RISC_V的嵌入式FLASH编程模块的验证方法与流程

文档序号:17989461发布日期:2019-06-22 00:40阅读:484来源:国知局
一种基于RISC_V的嵌入式FLASH编程模块的验证方法与流程

本发明涉及软件验证方法领域,尤其是涉及一种基于risc_v的嵌入式flash编程模块的验证方法。



背景技术:

现有技术中,常用基于risv_v的soc芯片都有使用嵌入式flash,对于这种含有嵌入式flash的soc芯片,通常flash作为软件image的存储设备而存在;那么在产品的生产期间就需要对soc内部的flash进行编程,另外当系统软件需要更新时,也需要对flash进行二次编程,传统uart验证模块来实现的通过uart对内嵌flash编程的验证方案均以uart的referencemodule模块和flash支持的编程指令强耦合,芯片使用不同厂家的内嵌式flash用于嵌入式flash的编程时,这些厂家的flash支持不同的编程指令,这时需要对uart验证模块的referencemodule模块做很大的修改,而且如果在一颗芯片中需要几个功能不同的uart接口验证模块的话,采用现有的uart验证模块要写几组不同的uart验证模块的代码,存放在不同的目录下,如果有通用的功能修改的话要同时改几个目录中的代码,这样代码的维护很不方便。

提供一种可重用性,扩展性强的通过uart对嵌入式flash进行编程的芯片功能模块的验证方法成为现有技术中的迫切需求。



技术实现要素:

本发明的目的在于提供一种基于risc_v的嵌入式flash编程模块的验证方法,本发明采用的技术方案是:构建实施芯片验证平台,并通过virtual_sequencer分层把共性的sequence功能集中在相应的sequencer中,把经常需要修改的testcase、不同flash的命令强耦合的referencemodule集中在uart验证模块的不同文件中,通过调用由各种sequence组成的taskuart_flash_command完成各种flash编程验证;

其中,实施芯片验证平台以下模块构成:

模块1--test_case;

模块2--待测设计usb_pd_dut;

模块3--virtual_sequencer,虚拟定序器;

模块4--flash_env;

模块5--flash_env的reference_module;

模块6--flash_env的scoreboard;

模块7--uart_env;

模块8--uart_env的发送agent;

模块9--uart_env发送agent的sequence;

模块10--uart_env发送agent的drive;

模块11--uart_env的接收agen;

模块12--uart_env的接收agent的监控模块monitor;

模块13--sequence库;

验证步骤为:

步骤1.test_case从sequence库中选取本次测试需要用到的sequence组成一个virtual_sequence并且把它发送给virtual_sequencer;

步骤2.vritual_sequencer按相关顺序把这些sequence发送给uart_sequencer。然后uart_sequencer把接收到的sequence送给相连的uart_driver;

步骤3.uart_driver产生符合uart协议的激励把数据发送给dut;

步骤4.uart_driver在把数据发送给dut的同时把同样的数据发送给flash_rm;

步骤5.flash_rm在接收到uart_driver送来的数据后根据flash指令定义产生期望的反馈值,并把这些反馈值发送给flash_scoreboard;

步骤6.是指dut在收到uart_driver发来的指令和数据后根据flash指令定义产生反馈值;

步骤7.是指dut并通过uart接口把反馈值发送给uart_monitor;

步骤8.uart_monitor把从dut接收到的反馈值发送给flash_scoreboard。最后期望数据和实际数据在flash_scoreboard模块进行比对。

具体的,实施芯片的内嵌flash编程功能验证能随机并且自动化的产生符合flash指令定义和uart协议要求的数据并施加给芯片;

具体的,所述方法实施芯片的内嵌flash编程功能验证能自动产生正确的芯片反馈期望数据。

具体的,所述方法实施芯片的内嵌flash编程功能验证能自动化的采集芯片发出的各种数据,并自动化的和验证环境产生的正确的期望数据进行比对。

本发明具有的有益效果是:提供了一种可重用性,扩展性强的通过uart对嵌入式flash进行编程的芯片功能模块的芯片验证平台,给用户的软件正常升级和使用带来极大的便利。

附图说明

图1为本发明的系统结构框图;

其中,模块1-测试用例层test;模块3-virtual_sequencer;模块4-flash_env;模块5-flash_rm;模块6-flash_scb,模块7-uart_env;模块9-uart_sequencer,模块10-uart_driver,模块12-uart_monitor,模块13-sequence库。

具体实施方式

下面将结合附图和实施例对本发明作进一步的说明。

本发明的一种基于risc_v的嵌入式flash编程模块的验证方法,构建实施芯片验证平台,并通过virtual_sequencer分层把共性的sequence功能集中在相应的sequencer中,把经常需要修改的testcase、不同flash的命令强耦合的referencemodule集中在uart验证模块的不同文件中,通过调用由各种sequence组成的taskuart_flash_command完成各种flash编程验证;

其中,实施芯片验证平台以下模块构成:

模块1--test_case;

模块2--待测设计usb_pd_dut;

模块3--virtual_sequencer,虚拟定序器;

模块4--flash_env;

模块5--flash_env的reference_module;

模块6--flash_env的scoreboard;

模块7--uart_env;

模块8--uart_env的发送agent;

模块9--uart_env发送agent的sequence;

模块10--uart_env发送agent的drive;

模块11--uart_env的接收agen;

模块12--uart_env的接收agent的监控模块monitor;

模块13--sequence库;

验证步骤为:

步骤1.test_case从sequence库中选取本次测试需要用到的sequence组成一个virtual_sequence并且把它发送给virtual_sequencer;

步骤2.vritual_sequencer按相关顺序把这些sequence发送给uart_sequencer。然后uart_sequencer把接收到的sequence送给相连的uart_driver;

步骤3.uart_driver产生符合uart协议的激励把数据发送给dut;

步骤4.uart_driver在把数据发送给dut的同时把同样的数据发送给flash_rm;

步骤5.flash_rm在接收到uart_driver送来的数据后根据flash指令定义产生期望的反馈值,并把这些反馈值发送给flash_scoreboard;

步骤6.是指dut在收到uart_driver发来的指令和数据后根据flash指令定义产生反馈值;

步骤7.是指dut并通过uart接口把反馈值发送给uart_monitor;

步骤8.uart_monitor把从dut接收到的反馈值发送给flash_scoreboard。最后期望数据和实际数据在flash_scoreboard模块进行比对。

具体的,实施芯片的内嵌flash编程功能验证能随机并且自动化的产生符合flash指令定义和uart协议要求的数据并施加给芯片;

具体的,所述方法实施芯片的内嵌flash编程功能验证能自动产生正确的芯片反馈期望数据。

具体的,所述方法实施芯片的内嵌flash编程功能验证能自动化的采集芯片发出的各种数据,并自动化的和验证环境产生的正确的期望数据进行比对。

下面结合附图对本发明的具体实施方式做出简要说明。

本发明提供了一种基于risc_v的嵌入式flash编程模块的验证方法。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。

本发明芯片验证平台如附图1所示,芯片验证平台主要包括:模块1-测试用例层test;模块3-virtual_sequencer;模块4-flash_env;模块5-flash_rm;模块6-flash_scb;模块7-uart_env;模块9-uart_sequencer;模块10-uart_driver;模块12-uart_monitor;模块13-sequence库。

模块1-test_case层是测试用例层,每个test_case根据实际需求例化不同的验证环境env以及virtualsequence。不同的test可以通过修改config文件配置不同的参数给dut和验证环境,不同的test可以从sequencelib中选择出来的适合当前用例的sequence,组成virtualsequence,使用这个验证平台可以非常简单灵活的构造出不同的测试用例;

模块4-flash_env,包含模块6-flash_scoreboard,和模块5-flash_referencemodule两个模块,模块5-flash_referencemodule负责根据相对应flash的指令定义和从uart_driver接收到的指令产生预期数据并送给flash_scoreboard;模块6--flash_scoreboard,负责接收从flash_rm来的期望数据和从uart_mon来的dut发出的实际数据并进行比对;

模块7-uart_env,包含模块8-uart_tx_agent和模块11-uart_rx_agent,模块7主要负责接收sequence并把sequence中的数据转换成uart接口信号送给dut,并且接收dut的uart信号数据并把这些数据送给flash_scb;

模块8-uart_tx_agent,包含模块9-uart_tx_sequencer和模块10-uart_tx_driver两个模块,模块8-uart_tx_agent负责接收sequence并把sequence中的数据转换成uart接口信号送给dut;模块9-uart_tx_sequencer,负责接收来自virtual_sequencer的sequence并把sequence送给相连的uart_driver;

模块10-uart_tx_driver,负责产生符合uart协议的激励把数据发送给dut。

模块11-uart_rx_agent,负责接收dut的uart信号数据并把这些数据送给flash_scb;包含模块12-uart_monitor,负责接收dut的uart信号数据并把这些数据送给flash_scb;

模块3-virtualsequencer是用来集中管理平台内所有sequencer和virtualsequence的模块,集中管理的好处是可以在同一个函数体内先后执行不同的virtualsequence,从而避免了复杂用例带来的多个virtualsequence执行顺序的混乱,方便验证人员管理不同virtualsequence之间的先后顺序。

下面根据附图1中虚线所示解释一下芯片验证平台的工作过程:

步骤1.test_case从sequence库中选取本次测试需要用到的sequence组成一个virtual_sequence并且把它发送给virtual_sequencer。

步骤2.vritual_sequencer按相关顺序把这些sequence发送给uart_sequencer,然后uart_sequencer把接收到的sequence送给相连的uart_driver。

步骤3.uart_driver产生符合uart协议的激励把数据发送给dut。

步骤4.uart_driver在把数据发送给dut的同时把同样的数据发送给flash_rm。

步骤5.flash_rm在接收到uart_driver送来的数据后根据flash指令定义产生期望的反馈值,并把这些反馈值发送给flash_scoreboard。

步骤6.是指dut在收到uart_driver发来的指令和数据后根据flash指令定义产生反馈值。

步骤7.是指dut并通过uart接口把反馈值发送给uart_monitor。

步骤8.uart_monitor把从dut接收到的反馈值发送给flash_scoreboard。最后期望数据和实际数据在flash_scoreboard模块进行比对。

本发明不局限于上述实施方式,任何人应得知在本发明的启示下做出的与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。

本发明未详细描述的技术、形状、构造部分均为公知技术。

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