一种AXI从机乱序传输的验证方法与流程

文档序号:26405803发布日期:2021-08-24 16:20阅读:766来源:国知局
一种AXI从机乱序传输的验证方法与流程

本发明涉及一种axi从机乱序传输的验证方法,属于片上系统(systemonachip:soc)芯片功能验证技术领域。

axi(advancedextensibleinterface)总线是soc系统广泛使用的amba总线的新一代高性能系统互联架构。axi总线之所以能够实现高性能的数据传输,是由于其支持5通道并行传输,outstanding传输,乱序传输,interleave传输等关键特性。所谓乱序传输,就是在数据传输过程中,传输较快的transaction可以不必等待前面的传输较慢的transaction传完即可提前完成。乱序传输大大提高了axi系统的传输性能,但其设计和验证的复杂度也相应增加。

对于axi从机乱序传输的验证,一般需要包含3种testcase(测试用例),其一为同一主机对从机使用不同awid/arid发起传输,其二为不同主机对同一从机发起传输,其三为同一主机对从机使用相同awid/arid发起传输。对前两种case,从机可以采用乱序响应,验证时需要检查从机乱序传输数据是否正确。而对于第三种case,则要求从机不得使用乱序响应,只能采用顺序响应,验证时则需要检查从机有没有将传输顺序打乱。这3种testcase如果分别去验证,需要耗费较多的验证资源和仿真时间,尤其第二种case,更是需要在验证平台中例化多个axi主机model去验证。



技术实现要素:

为了将验证case简化,本发明提出了一种axi从机乱序传输的验证方法,将现在技术中的3种testcase集成到了一个case中。

为了实现所述技术方案,本发明采样的技术方案是:一种axi从机乱序传输的验证方法,本方法通过一个测试用例完成对axi从机乱序传输的验证,实现过程为:对axi写命令id(awid)和axi读命令id(arid)进行随机和约束,由验证平台有选择地发起相同或不同axi写命令id、axi读命令id的传输,写传输时先将写命令存入一个写命令队列,并将写数据暂时缓存,写传输返回写响应bid和bresp后,通过遍历写命令队列检验bid是否正确,判断写响应正确后才将缓存的写数据存入goldenmemory;读传输也将读命令存入读命令队列,待从机返回读响应rid和rresp后,遍历读命令队列检验rid是否正确,并将读数据暂时缓存,待所有回复的rid全正确后,再将缓存的读数据与goldenmemory中的数据进行比对,验证乱序传输是否真的成功。

进一步的,axi总线向待验证的axi从机同时发起axi写传输和axi读传输,读写传输并行进行,每次写传输的空间与读传输的空间独立。

进一步的,axi写传输包括3个并行运行的通道:axi写命令通道、axi写数据通道、axi写回复通道;

axi写传输的写命令通道以outstanding方式向axi从机发出n次axi写命令,每次写命令使用的axi写命令id随机取值,但约束这n个axi写命令id既要有不同值也要有相同值,将每次写命令中的关键控制信息打包成结构体类型awcmd_s的包,并将该包压入队列awcmd_q中;

axi写传输的写数据通道从队列awcmd_q中依次取得每次写命令的控制信息,包括起始地址awaddr、写长度awlen、写数据单位awsize、写模式awburst,根据这些控制信息发出每个写命令所需要的写数据wdata,同时将写数据和写地址暂存于一个临时的写关联数组里;

axi写传输的写回复通道接收从axi从机的bresp通道返回的bid和bresp,对于收到的bid,从队列awcmd_q中遍历其axi写命令id,若有与bid相同者,并且根据bresp得出写传输正常访问成功,则将awcmd_q队列中此axi写命令id对应的结构体元素删除;若在awcmd_q中所有的axi写命令id都不与接收到的bid一致,则axi从机返回的此条bresp有误,表明axi从机的乱序响应出错,则仿真报错并终止;

axi写传输结束后,判断队列awcmd_q是否为空,若为空,则表明axi从机的写乱序响应正确,则将临时写关联数组中的所有元素写入一个golden关联数组,作为读传输进行数据比对的goldendata,若队列awcmd_q非空,则仿真报错并终止。

进一步的,axi读传输包括2个并行运行的通道:axi读命令通道、axi读数据通道;

axi读传输的读命令通道以outstanding方式向axi从机发出n次axi读命令,每次读命令使用的axi读命令id随机取值,但约束这n个axi读命令id既要有不同值也要有相同值,并将每次读命令中的关键控制信息打包成结构体类型arcmd_s的包,并将该包压入队列arcmd_q中;

axi读传输的读数据通道接收axi从机的rresp通道返回的rid、rresp和rdata,对于收到的rid,从队列arcmd_q中遍历其axi读命令id,若有与rid相同者,并且根据rresp得出读传输正常访问成功,则表明此次乱序读操作的返回数据rdata有效,进而从队列arcmd_q中读取该次读命令的控制信息,包括该次读命令的起始地址araddr、读长度arlen、读数据单位arsize、读模式arburst,根据这些控制信息将读数据通道返回的读数据rdata写入一个临时的读关联数组里;反之,对于收到的rid,若从arcmd_q中遍历不到数值相同的axi读命令id,表明axi从机的读乱序响应出错,则仿真报错并终止,每次从读数据通道接收到一个成功的rlast后,将arcmd_q中对应的结构体元素删除;

axi读传输结束后,判断队列arcmd_q是否为空,若为空,则表明axi从机的读乱序响应正确,则将临时读关联数组中的所有元素与写传输的golden关联数组中对应的goldendata进行比对,判断读回的rdata是否全部正确,进而判断乱序读传输是否真的成功;反之,若队列arcmd_q非空,则仿真报错并终止。

进一步的,结构体类型awcmd_s包括axi写命令id、写命令的起始地址awaddr、写长度awlen、写数据单位awsize和写模式awburst。

进一步的,结构体类型arcmd_s包括axi读命令id、读命令的起始地址araddr、读长度arlen、读数据单位arsize、读模式arburst。

进一步的,n的取值范围为不大于axi从机支持的乱序深度。

本发明的有益效果:本发明提出的axi从机乱序传输的验证方法,使用了随机加约束的awid和arid,对乱序响应的检查采用了遍历命令传输时所保存队列的方法,可在一个验证平台中同时实现多个testcase的功能验证,能够快速完成axi从机乱序传输的验证目标。

附图说明

图1为axi从机写传输乱序响应验证流程图;

图2为axi从机读传输乱序响应验证流程图。

具体实施方式

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

实施例1

本实施例提供一种axi从机乱序传输的验证方法,本方法将现有技术的3种testcase集成到了一个case中,通过对axi写命令id即awid和axi读命令id即arid的随机和约束,由验证平台有选择地发起相同或不同awid/arid的传输,写传输时先将写命令存入一个写命令队列,并将写数据暂时缓存。写传输返回写响应bid和bresp后,通过遍历写命令队列检验bid是否正确,判断写响应正确后才将缓存的写数据存入goldenmemory。类似地,读传输也要将读命令存入读命令队列,待从机返回读响应rid和rresp后,遍历读命令队列检验rid是否正确,并将读数据暂时缓存。待所有回复的rid全正确后,再将缓存的读数据与goldenmemory中的数据进行比对。

如图1、2所示,本实施例所述方法的具体实现步骤为:

1)通过axi总线向axi从机(待测模块)同时发起axi写传输和axi读传输,读写传输并行进行,每次写传输的空间与读传输的空间独立。

2)axi写传输,包括3个并行运行的通道:axi写命令通道,axi写数据通道,axi写回复通道。

3)axi读传输,包括2个并行运行的通道:axi读命令通道,axi读数据通道。

4)axi写传输的写命令通道,以outstanding方式向axi从机发出n(n<=axi从机能支持的乱序深度)次axi写命令,每次写命令使用的awid随机取值,但要约束这n个awid既要有不同值也要有相同值。将每次写命令中的关键控制信息打包成结构体类型awcmd_s的包,并将该包压入队列awcmd_q中。结构体类型awcmd_s包括axi写命令id、写命令的起始地址awaddr、写长度awlen、写数据单位awsize和写模式awburst。可通过以下这段程序完成对写结构体的定义:

typedefstruct{

logic[idwidth-1:0]awid;

logic[awidth-1:0]awaddr;

logic[7:0]awlen;

logic2:0]awsize;

logic[1:0]awburst;

}awcmd_s;

5)axi写传输的写数据通道,从步骤4中的awcmd_q中依次取得每次写命令的起始地址awaddr,写长度awlen,写数据单位awsize,写模式awburst等控制信息,根据这些控制信息发出每个写命令所需要的写数据wdata。其中wdata数值随机,写数据与写命令的先后关系随机。同时,将写数据和写地址暂存于一个临时的写关联数组里。

6)axi写传输的写回复通道,接收从axi从机的bresp通道返回的bid和bresp。对于收到的bid,从步骤4的awcmd_q中遍历其awid,若有与bid相同者,并且bresp=okay,即写传输正常访问成功,则将awcmd_q队列中此awid对应的结构体元素删除;若在awcmd_q中所有的awid都不与接收到的bid一致,则axi从机返回的此条bresp有误,表明axi从机的乱序响应出错,则仿真报错并终止。

7)axi写传输结束后,判断队列awcmd_q是否为空,若为空,则表明axi从机的写乱序响应正确,则将步骤5中的临时写关联数组中的所有元素写入一个golden关联数组,作为读传输进行数据比对的goldendata。若队列awcmd_q非空,则仿真报错并终止。

8)axi读传输的读命令通道,类似步骤4的axi写传输的写命令通道,axi从机发出n次axi读命令,同样地,每次读命令使用的arid随机取值,但要约束这n个arid既要有不同值也要有相同值。并将每次读命令中的关键控制信息打包成结构体类型arcmd_s的包,并将该包压入队列arcmd_q中。结构体类型arcmd_s包括axi读命令id、读命令的起始地址araddr、读长度arlen、读数据单位arsize、读模式arburst。

可通过以下这段程序完成对读结构体的定义:

typedefstruct{

logic[idwidth-1:0]arid;

logic[awidth-1:0]araddr;

logic[7:0]arwlen;

logic2:0]arsize;

logic[1:0]arburst;

}awcmd_s;

9)axi读传输的读数据通道,接收axi从机的rresp通道返回的rid、rresp和rdata。对于收到的rid,从步骤8的arcmd_q中遍历其arid,若有与rid相同者,并且rresp=okay,即读传输正常访问成功,则表明此次乱序读操作的返回数据rdata有效,进而从arcmd_q中读取该次读命令的起始地址araddr,读长度arlen,读数据单位arsize,读模式arburst等控制信息,根据这些控制信息将读数据通道返回的读数据rdata写入一个临时的读关联数组里。反之,对于收到的rid,若从arcmd_q中遍历不到数值相同的arid,表明axi从机的读乱序响应出错,则仿真报错并终止。每次从读数据通道接收到一个成功的rlast后,将arcmd_q中对应的结构体元素删除。

10)axi读传输结束后,判断队列arcmd_q是否为空,若为空,则表明axi从机的读乱序响应正确,则将步骤9中的临时读关联数组中的所有元素与步骤7的golden关联数组中对应的goldendata进行比对,判断读回的rdata是否全部正确,进而判断乱序读传输是否真的成功。反之,若队列arcmd_q非空,则仿真报错并终止。

本发明提出的axi从机乱序传输的验证方法,使用了随机加约束的awid和arid,对乱序响应的检查采用了遍历命令传输时所保存队列的方法,可在一个验证平台中同时实现多个testcase的功能验证,能够快速完成axi从机乱序传输的验证目标。

以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。

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