用于重传部件模块级验证的报文自动比对正确性检查方法及装置与流程

文档序号:21318310发布日期:2020-06-30 20:48阅读:241来源:国知局
用于重传部件模块级验证的报文自动比对正确性检查方法及装置与流程

本发明涉及众核处理器验证领域,具体涉及一种用于重传部件模块级验证的报文自动比对正确性检查方法及装置。



背景技术:

随着集成物理尺寸的缩小,众核处理器的设计复杂度不断增加,面市时间不断缩短。功能验证已成为设计开发周期中的瓶颈。众核处理器验证通常采用层次化的方法进行,以保证验证结果的精确度和工作效率。在自底向上的验证方法中,子模块是整个系统的基础,子模块的正确性是最终整个设计正确工作的基础。

在集成电路技术的迅猛发展和应用需求的强力推动下,基于片上网络的众核处理器体系结构发展日益成熟。如何提供高效的存储管理和可靠的互连通信协议,是设计和实现高性能众核处理器的重要内容。重传机制主要用于实现无差错的链路层通信,在数据传输系统中应用十分广泛,意义重大。在采用二维mesh(2d-mesh)片上网络的众核处理器中,重传部件的主要原理是基于后退n帧重传协议的重传机制,采用请求自动重传思想和信用动态重传的流控方式,对于在网络层传输过程中丢失的请求报文进行自动重发,以实现片上网络节点之间报文的高效高可靠收发控制。



技术实现要素:

本发明要解决的技术问题:针对现有技术的上述问题,提供一种用于重传部件模块级验证的报文自动比对正确性检查方法及装置,本发明具有计算量小、占用资源少、定位迅速、检测效率高、通用性好的特点,可加快重传部件的验证速度和设计收敛。

为了解决上述技术问题,本发明采用的技术方案为:

一种用于重传部件模块级验证的报文自动比对正确性检查方法,所述重传部件由重传发送端和重传接收端组成,且重传接收端的实施步骤包括:

1)预先构造一组空闲请求队列、一组重传计数器和一个映射队列;

2)当有从重传发送端发来的动态请求报文在到达重传接收端之后被丢弃需要被重传时,跳转执行步骤3);当需要被重传的静态请求报文从重传发送端重新发到重传接收端时,跳转执行步骤5);如果测试结束,跳转执行步骤6);

3)通过映射队列分配一个空闲请求队列且每次通过映射队列分配空闲请求队列后将对应的重传计数器加1;

4)将动态请求的报文关键信息存入分配到的空闲请求队列中并设置有效位,并将动态请求的重传发送端id号存入分配到的映射队列中进行标记;否则跳转执行步骤2);

5)通过查询分配到的映射队列分配信息,将该静态请求的报文关键信息与分配的空闲请求队列中所有有效项记录的关键信息进行对比,如果比对成功则将对应的空闲请求队列清空并将有效位清零、重传计数器减1;否则跳转执行步骤2);

6)判断所有的空闲请求队列清空且有效位清零、重传计数器均已归零是否已经成立,如果成立则判定重传部件已通过模块级验证;否则,判定重传部件未通过模块级验证。

可选地,步骤1)中预先构造一组空闲请求队列、一组重传计数器和一个映射队列时,所述空闲请求队列为以自然数为索引,所述重传计数器以空闲请求序列号为索引,所述映射队列以重传发送端id号为索引;所述空闲请求队列的数目根据实际使用指定地址映射模式配置成与实际发出请求到同一重传接收端的重传部件发送端数目相同,根据请求报文中的重传发送端id号信息将来自不同重传发送端的请求报文分配到不同的空闲请求队列进行处理;每个空闲请求队列的大小与单个重传发送端最多能发送的待重传请求数目相同,所有待重传请求的部分信息将被记录在空闲请求队列中,每个待重传请求占用一项;所述重传计数器的个数与空闲请求队列数目一致,同步记录各对应的空闲请求队列中的待重传请求个数;所述映射队列的大小与空闲请求队列的数目相同,映射队列用于保存重传发送端的id号信息,每个不同的重传发送端id号占用一项。

可选地,步骤3)的详细步骤包括:根据该动态请求报文的重传发送端id号查询所述映射队列,如果映射队列中已能查询到该重传发送端id号映射的空闲请求队列号,则分配该空闲请求队列给请求报文;如果映射队列中未能查询到该重传id号映射的空闲请求队列,则从映射队列中分配当前最小的空闲项号索引到的空闲请求队列给请求报文,并将该重传发送端id号存入映射队列中当前分配的最小空闲项中进行标记,同时打印请求类型标请求事务id号和请求地址信息,对应的重传计数器加1。

可选地,步骤4)的详细步骤包括:将该请求报文的关键信息包括请求类型标识、请求事务id号、请求地址等记录到上述分配的空闲请求队列中当前项号最小的空闲项中,同时将该空闲项的有效位置为1。

可选地,步骤5)的详细步骤包括:

5.1)根据该静态请求报文的重传发送端id号查询映射队列找到对应的请求队列,将该静态报文的请求类型标识、请求事务id号、请求地址信息,与该请求队列中有效位为1的所有有效项所记录的报文请求类型标识、请求事务id号、请求地址信息进行对比;如果能和其中的一项完全匹配,则表明该静态请求报文为设计需要的正确请求报文,则跳转执行步骤5.2);否则如果该请求队列中没有任何一项有效项能与静态请求报文的信息相匹配,则表明该静态报文不是设计需要的正确请求报文,则跳转执行步骤5.3);

5.2)清空该匹配项信息并将其有效位清零,将对应的重传计数器减1,跳转执行步骤2);

5.3)判定设计有逻辑错误,终止程序并退出。

可选地,步骤5.2)中清空该匹配项信息并将其有效位清零时还包括打印输出成功信息。

可选地,步骤5.3)中终止程序时还包括打印错误信息,以及打印出静态请求报文的请求类型标识、请求事务id号、请求地址信息以便于追查和定位设计错误原因。

本发明还提供一种用于重传部件模块级验证的报文自动比对正确性检查装置,包括:

数据结构构造程序模块,用于预先构造一组空闲请求队列、一组重传计数器和一个映射队列;

判断处理程序模块,用于当有从重传发送端发来的动态请求报文在到达重传接收端之后被丢弃需要被重传时,跳转执行空闲请求队列分配程序模块;当需要被重传的静态请求报文从重传发送端重新发到重传接收端时,跳转执行静态报文处理程序模块;如果测试结束,跳转执行测试结束处理程序模块;

动态请求报文处理程序模块,用于通过映射队列分配一个空闲请求队列且每次通过映射队列分配空闲请求队列后将对应的重传计数器加1;

报文关键信息保存程序模块,用于将动态请求的报文关键信息存入分配到的空闲请求队列中并设置有效位,并将动态请求的重传发送端id号存入分配到的映射队列中进行标记;否则跳转执行判断处理程序模块;

静态报文处理程序模块,用于通过查询分配到的映射队列分配信息,将该静态请求的报文关键信息与分配的空闲请求队列中所有有效项记录的关键信息进行对比,如果比对成功则将对应的空闲请求队列清空并将有效位清零、重传计数器减1;否则跳转执行判断处理程序模块;

测试结束处理程序模块,用于判断所有的空闲请求队列清空且有效位清零、重传计数器均已归零是否已经成立,如果成立则判定重传部件已通过模块级验证;否则,判定重传部件未通过模块级验证。

本发明还提供一种用于重传部件模块级验证的报文自动比对正确性检查装置,包括计算机设备,该计算机设备被编程或配置以执行所述用于重传部件模块级验证的报文自动比对正确性检查方法的步骤,或该计算机设备的存储器上存储有被编程或配置以执行所述用于重传部件模块级验证的报文自动比对正确性检查方法的计算机程序。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行所述用于重传部件模块级验证的报文自动比对正确性检查方法的计算机程序。

和现有技术相比,本发明具有下述优点:

1)本发明计算量小,占用资源少,不需要经过复杂运算,只需要实时监控并修改队列的内容即可模拟真实的请求重传收发过程。

2)具有较好的通用性和扩展性。由于该报文自动比对正确性检验模型和重传部件发送端的接口一致,在子系统级和全系统级的验证和调试中也能发挥作用;同时,空闲请求队列的数目、映射队列的深度和重传计数器的数目都可支持参数配置,在不同的地址映射模式下,能改变模型占用的资源,精确满足验证需求。

附图说明

图1为本发明实施例方法的基本流程示意图。

图2为本发明实施例中的空闲请求队列示意图。

图3为本发明实施例中的映射队列示意图。

图4为本发明实施例中的动态请求处理基本流程示意图。

图5为本发明实施例中的静态请求处理基本流程示意图。

具体实施方式

本实施例用于重传部件模块级验证的报文自动比对正确性检查方法中,重传部件由重传发送端和重传接收端组成,如图1所示,重传接收端的实施步骤包括:

1)预先构造一组空闲请求队列、一组重传计数器和一个映射队列;本实施例中具体构造的是一组以自然数为索引的空闲请求队列、一组以空闲请求队列号为索引的重传请求计数器b、和一个以重传发送端id号为索引的映射队列(该队列初始状态为空)。

2)当有从重传发送端发来的动态请求报文在到达重传接收端之后被丢弃需要被重传时,跳转执行步骤3);当需要被重传的静态请求报文从重传发送端重新发到重传接收端时,跳转执行步骤5);如果测试结束,跳转执行步骤6);

3)通过映射队列分配一个空闲请求队列且每次通过映射队列分配空闲请求队列后将对应的重传计数器加1;

4)将动态请求的报文关键信息存入分配到的空闲请求队列中并设置有效位,并将动态请求的重传发送端id号存入分配到的映射队列中进行标记;否则跳转执行步骤2);

5)通过查询分配到的映射队列分配信息,将该静态请求的报文关键信息与分配的空闲请求队列中所有有效项记录的关键信息进行对比,如果比对成功则将对应的空闲请求队列清空并将有效位清零、重传计数器减1;否则跳转执行步骤2);

6)判断所有的空闲请求队列清空且有效位清零、重传计数器均已归零是否已经成立,如果成立则判定重传部件已通过模块级验证;否则,判定重传部件未通过模块级验证。

本实施例中,步骤1)中预先构造一组空闲请求队列、一组重传计数器和一个映射队列时,空闲请求队列为以自然数为索引,重传计数器以空闲请求序列号为索引,映射队列以重传发送端id号为索引。

空闲请求队列的数目根据实际使用指定地址映射模式配置成与实际发出请求到同一重传接收端的重传部件发送端数目相同,根据请求报文中的重传发送端id号信息将来自不同重传发送端的请求报文分配到不同的空闲请求队列进行处理;每个空闲请求队列的大小与单个重传发送端最多能发送的待重传请求数目相同,所有待重传请求的部分信息将被记录在空闲请求队列中,每个待重传请求占用一项;重传计数器的个数与空闲请求队列数目一致,同步记录各对应的空闲请求队列中的待重传请求个数;映射队列(该队列初始状态为空)的大小与空闲请求队列的数目相同;映射队列用于保存重传发送端的id号信息,每个不同的重传发送端id号占用一项。

本实施例中,一组空闲请求队列、一组重传计数器和一个映射队列的数目都可支持参数配置:通过参数配置每个空闲请求队列的大小与单个重传部件发送端最多能发送的待重传请求数目相同,所有待重传动态请求的请求类型标识、请求事务id号、请求地址信息将被记录在空闲请求队列中,每个请求占用一项。参数配置重传请求计数器b的最大值与空闲请求队列的大小相同,映射队列的大小与空闲请求队列的数目相同。以及所述映射队列的大小与空闲请求队列的数目相同,映射队列用于保存重传发送端的id号信息,每个不同的重传发送端id号占用一项。

如图2所示,本实施例中构造了一组空闲请求队列freequeue_0、freequeue_1、freequeue_2、freequeue_3、……freequeue_15,共16个,与实际发出请求到同一重传接收端的重传发送端数量相同(全系统共有32个重传发送端,每个发送端的id号均不相同,但实际能发送到同一接收端的重传发送端数量不超过16个)。其中,每个空闲请求队列的大小为64项,与单个重传发送端最多能发送的待重传请求数目相同,所有待重传请求的部分信息将被记录在空闲请求队列中,每个请求占用一项。

如图3所示,本实施例中构造了一个以重传发送端id号为索引的映射队列sendermap_q。该映射队列的大小为16,与空闲请求队列的数目相同,映射队列的每一项保存一份不同的重传发送端id信息,如sendermid、senderxid等。在各重传发送端第一次有动态请求在接收端被丢弃需重传时,记录该报文中的重传发送端id号信息到映射队列中的最小空闲项中,同时为后续的静态请求和需重传的动态请求提供映射关系,根据该映射关系可查询请求对应的空闲请求队列。

此外,本实施例中构造的一组以空闲请求队列号为索引的重传请求计数器b,每个计数器b分别对应一个空闲请求队列,同步记录各队列中的待重传请求数目,大小为64,与每个空闲请求队列的大小相同。对于同一个请求队列,如果有动态请求需要被重传,记录完其请求的请求类型标识、请求事务id号、请求地址信息之后,该请求队列的计数器b加1,;如果有静态请求的请求类型标识、请求事务id号、请求地址信息与队列中的有效项记录信息匹配,该请求队列的计数器b减1。

本实施例中,步骤2)在验证环境实时监控输入重传接收端的所有请求,当重传标志为1,即有动态请求报文在到达重传接收端之后被丢弃需要被重传时,跳转执行步骤3);当重传标志为0,且有静态请求报文从重传发送端重新发到重传接收端时,跳转执行步骤5);这样可以简化判断处理,提高判断处理的效率。

参见图4,步骤3)的详细步骤包括:根据该动态请求报文的重传发送端id号查询映射队列,如果映射队列中已能查询到该重传发送端id号映射的空闲请求队列号,则分配该空闲请求队列给请求报文;如果映射队列中未能查询到该重传id号映射的空闲请求队列,则从映射队列中分配当前最小的空闲项号索引到的空闲请求队列给请求报文,并将该重传发送端id号存入映射队列中当前分配的最小空闲项中进行标记,同时打印请求类型标请求事务id号和请求地址信息,对应的重传计数器加1。

参见图4,步骤4)的详细步骤包括:将该请求报文的关键信息包括请求类型标识、请求事务id号、请求地址等记录到上述分配的空闲请求队列中当前项号最小的空闲项中,同时将该空闲项的有效位置为1。

参见图4,本实施例用于重传部件模块级验证的报文自动比对正确性检查方法,对于接收端动态请求处理的详细流程包括:(1)首先需要为该动态请求报文分配出一个空闲请求队列,分配的规则为:根据该动态请求报文的重传发送端id号查询映射队列,如果映射队列中已能查询到该重传发送端id号映射的空闲请求队列号,则分配该空闲请求队列给请求报文;如果映射队列中未能查询到该重传id号映射的空闲请求队列,则从映射队列中分配当前最小的空闲项号索引到的空闲请求队列给请求报文,并将该重传发送端id号存入映射队列中当前分配的最小空闲项中进行标记,同时打印请求类型标请求事务id号和请求地址信息,对应的重传计数器加1;(2)完成空闲请求队列分配之后,将该请求报文的关键信息包括请求类型标识、请求事务id号、请求地址等记录到上述分配的空闲请求队列中当前项号最小的空闲项中,同时将该空闲项的有效位置为1。

参见图5,步骤5)的详细步骤包括:

5.1)根据该静态请求报文的重传发送端id号查询映射队列找到对应的请求队列,将该静态报文的请求类型标识、请求事务id号、请求地址信息,与该请求队列中有效位为1的所有有效项所记录的报文请求类型标识、请求事务id号、请求地址信息进行对比;如果能和其中的一项完全匹配,则表明该静态请求报文为设计需要的正确请求报文,则跳转执行步骤5.2);否则如果该请求队列中没有任何一项有效项能与静态请求报文的信息相匹配,则表明该静态报文不是设计需要的正确请求报文,则跳转执行步骤5.3);

5.2)清空该匹配项信息并将其有效位清零,将对应的重传计数器减1,跳转执行步骤2);

5.3)判定设计有逻辑错误,终止程序并退出。

参见图5,步骤5.2)中清空该匹配项信息并将其有效位清零时还包括打印输出成功信息。

参见图5,步骤5.3)中终止程序时还包括打印错误信息,以及打印出静态请求报文的请求类型标识、请求事务id号、请求地址信息以便于追查和定位设计错误原因。

参见图5,本实施例用于重传部件模块级验证的报文自动比对正确性检查方法,对于接收端静态请求处理的详细流程包括:

(1)根据该静态请求报文的重传发送端id号查询映射队列找到对应的请求队列,将该静态报文的请求类型标识、请求事务id号、请求地址信息,与该请求队列中有效位为1的所有有效项所记录的报文请求类型标识、请求事务id号、请求地址信息进行对比;(2)如果能和其中的一项完全匹配,则表明该静态请求报文为设计需要的正确请求报文,打印“success”信息(成功信息)的同时清空该匹配项信息以及将其有效位清零,对应的重传计数器减1;如果该请求队列中没有任何一项有效项能与静态请求报文的信息相匹配,则表明该静态报文不是设计需要的正确请求报文,设计有逻辑错误,打印“error”信息(错误信息)并终止程序,同时可打印出静态请求报文的请求类型标识、请求事务id号、请求地址信息,便于追查和定位设计错误原因;(3)如果测试程序顺利结束,所有重传计数器都归零,所有空闲请求列表继续恢复到初始空闲状态,且有效位都清零,则说明设计通过了检验模型的检测,报文的收发结果正确。

最终,如果测试程序顺利结束,所有重传计数器都归零,所有空闲请求列表继续恢复到初始空闲状态,且有效位都清零,则说明设计通过了检验模型的检测,报文的收发结果正确。因此,步骤6)通过判断所有的空闲请求队列清空且有效位清零、重传计数器均已归零是否已经成立即可得到验证结果:如果成立则判定重传部件已通过模块级验证;否则,判定重传部件未通过模块级验证。

本实施例所适用的众核处理器重传部件由重传发送端和重传接收端组成,其发送端连接到系统的一致性协议控制部件,接收端连接到系统的访存部件,通过片上网络与各网络节点、网络接口及存储设备之间的联系非常紧密。另一方面,重传部件设计的协议规则比较复杂,当出现错误时人工定位将耗费大量的时间和精力。因此,在将重传部件进入系统级验证之前需要构造一个尽可能完备、充分的子模块验证环境进行全方位的验证。此时,开发一个自动化程度较高的重传功能检验模型,监控发送端发出的请求报文和接收端接收到的请求报文以进行正确性比较,将有助于高效地发现和定位子模块中的报文错误,减少因为人工检查带来的失误,加速重传部件的验证速度和设计收敛。对于本实施例所适用的众核处理器重传部件,着重说明以下两个设计规则:(1)对重传发送端的请求进行标记,第一次从重传发送端发出的请求标记为动态请求(dynamicrequest);到达重传接收端由于某些原因无法接收被丢弃后第二次由重传发送端发出的请求标记为静态请求(staticrequest),重传发送端发出的静态请求一定可以被重传接收端接收;(2)全芯片系统的重传发送端的数目一共有32个,在不同的地址映射模式下,同一个重传接收端实际将接收不同数目的重传发送端发出的请求,最多的情况将接收来自16个不同重传发送端发出的请求。不同的重传接收端每次所收到的请求来自不同的重传发送端。因此,检验模型也根据实际情况对到达接收端的请求报文信息中的重传发送端id号进行记录。

此外,本实施例还提供一种用于重传部件模块级验证的报文自动比对正确性检查装置,包括:

数据结构构造程序模块,用于预先构造一组空闲请求队列、一组重传计数器和一个映射队列;

判断处理程序模块,用于当有从重传发送端发来的动态请求报文在到达重传接收端之后被丢弃需要被重传时,跳转执行空闲请求队列分配程序模块;当需要被重传的静态请求报文从重传发送端重新发到重传接收端时,跳转执行静态报文处理程序模块;如果测试结束,跳转执行测试结束处理程序模块;

动态请求报文处理程序模块,用于通过映射队列分配一个空闲请求队列且每次通过映射队列分配空闲请求队列后将对应的重传计数器加1;

报文关键信息保存程序模块,用于将动态请求的报文关键信息存入分配到的空闲请求队列中并设置有效位,并将动态请求的重传发送端id号存入分配到的映射队列中进行标记;否则跳转执行判断处理程序模块;

静态报文处理程序模块,用于通过查询分配到的映射队列分配信息,将该静态请求的报文关键信息与分配的空闲请求队列中所有有效项记录的关键信息进行对比,如果比对成功则将对应的空闲请求队列清空并将有效位清零、重传计数器减1;否则跳转执行判断处理程序模块;

测试结束处理程序模块,用于判断所有的空闲请求队列清空且有效位清零、重传计数器均已归零是否已经成立,如果成立则判定重传部件已通过模块级验证;否则,判定重传部件未通过模块级验证。

此外,本实施例还提供一种用于重传部件模块级验证的报文自动比对正确性检查装置,包括计算机设备,该计算机设备被编程或配置以执行前述用于重传部件模块级验证的报文自动比对正确性检查方法的步骤,或该计算机设备的存储器上存储有被编程或配置以执行前述用于重传部件模块级验证的报文自动比对正确性检查方法的计算机程序。此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行前述用于重传部件模块级验证的报文自动比对正确性检查方法的计算机程序。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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