1.本发明涉及多核验证技术领域,具体涉及一种二级缓存接口协议的验证方法及系统。
背景技术:
2.在多核系统中,二级缓存的验证至关重要,在多核验证中,通常会有一个全局检查器,在访存指令数据出现错误时报错,而这时的数据,已经经过了三级缓存,二级缓存和一级缓存,想要追溯到最初出错的地方,需要耗费大量的时间和精力,调试效率低下,影响项目进度。
3.本文针对二级缓存的接口协议进行验证,包括二级缓存与核之间的自定义协议,二级缓存与三级缓存/内存之间的tilelink总线协议。对于接口协议的验证,能够有效且快速地报出错误,且能迅速定位到错误代码,大大缩短了多核验证的调试时间,提高调试效率。
技术实现要素:
4.针对现有技术的不足,本发明公开了一种二级缓存接口协议的验证方法及系统,用于解决在多核验证中,通常会有一个全局检查器,在访存指令数据出现错误时报错,而这时的数据,已经经过了三级缓存,二级缓存和一级缓存,想要追溯到最初出错的地方,需要耗费大量的时间和精力,调试效率低下,影响项目进度的问题。
5.本发明通过以下技术方案予以实现:
6.第一方面,本发明提供了一种二级缓存接口协议的验证方法,所述方法对读数据检查时,记录每次读请求的关键信息,并在读数据返回时将内存模型的数据与dut数据进行比较,进行唤醒请求检查时通过协议约定进行检查;所述方法对d或c通道数据检查时,将内存模型的数据与dut数据进行比较,对b/c通道进行合理性检查时,根据二级缓存内容判定。
7.更进一步的,所述方法中,对读数据的检查,记录每次读请求的地址,标志位等关键信息,当读数据返回时,通过标志位查询记录的读请求信息,根据查询到的地址读取内存模型的数据,并与dut数据进行比较;
8.对唤醒请求的检查,对唤醒请求与读数据之间的协议约定进行检查。
9.更进一步的,所述方法中,对d通道数据的检查,记录每次a通道请求的地址,标志位等关键信息,当d通道数据返回时,通过标志位查询记录的a通道请求信息,根据查询到的地址读取内存模型的数据,并与dut数据进行比较;
10.对c通道数据的检查,根据c通道请求的地址,读取内存模型中的数据,并与dut数据进行比较;
11.对b/c通道的合理性检查,若二级缓存收到b通道的probeblock请求,说明二级缓存有这条cacheline,c通道不能回probeack类型。
12.更进一步的,所述方法中,对读数据的检查流程如下:
13.当核发送读请求信号到二级缓存时,检查器将读地址,读标志位,读请求类型存入读请求队列;
14.当二级缓存返回读数据时,监测返回信息的标志位,同时遍历读请求队列,若在读请求队列中存在有效请求的标志位与返回信息的标志位相同,说明该返回数据对应的是该读请求;
15.从标志位一致的读请求中获得地址和读请求类型信息,如果读请求类型是写升级请求,则不需要返回数据,只需要写权限,所以不需要比较数据正确性,如果读请求类型是其他类型,则需要比较数据正确性;
16.通过获得的读请求地址,读取内存参考模型中的数据,该内存参考模型会根据多核验证系统实时更新写数据;
17.比较从内存参考模型中读取的数据和dut的读回数据,若不一致,则报错;
18.将已经比较过的读请求从队列中删除。
19.更进一步的,所述方法中,唤醒请求的检查流程如下:
20.当核收到唤醒请求时,将唤醒标志位和时钟计数位存入唤醒请求队列;
21.在每个时钟周期对唤醒请求队列中有效请求的时钟计数位加1,同时检查每个有效请求的时钟计数位是否大于3,若大于3,则报错;
22.当二级缓存返回读数据时,监测返回信息的标志位,同时遍历唤醒请求队列,若在唤醒请求队列中存在有效请求的标志位与返回信息的标志位相同,将该唤醒请求从队列中删除。
23.更进一步的,所述方法中,对d通道数据的检查流程如下:
24.当二级缓存向a通道发送读请求时,检查器将读地址和源标志位存入a通道队列;
25.当三级缓存/内存返回d通道数据时,监测d通道的源标志位,同时遍历a通道队列,若在a通道队列中存在有效请求的源标志位与d通道的源标志位相同,说明该d通道数据对应的是该a通道读请求;
26.从源标志位一致的a通道请求中获得地址,读取内存参考模型中的数据;
27.比较从内存参考模型中读取的数据和dut的读回数据,若不一致,则报错;
28.将已经比较过的a通道读请求从队列中删除。
29.更进一步的,所述方法中,对c通道数据的检查流程如下:
30.当二级缓存向c通道发送传输时,检查器监测传输的类型和数据;
31.当传输类型是probeackdata或者releasedata时,通过传输的地址读取内存参考模型中的数据;
32.比较从内存参考模型中读取的数据和dut的读回数据,若不一致,则报错。
33.更进一步的,所述方法中,对b/c通道的合理性检查流程如下:
34.当二级缓存向c通道发出响应时,若响应类型为releasedata,检查器将地址信息存入c通道队列;
35.当二级缓存收到b通道请求时,判断该请求是否为probeblock请求,若是,检查器将地址和源标志位存入b通道队列;同时遍历c通道队列,若c通道队列存在地址相同的传输,则表明该cacheline已经被二级缓存踢出,对于当前b通道请求,c通道可以回probeack;
36.当二级缓存向c通道发出响应时,遍历b通道队列,若存在地址相同的b通道请求,
并且该请求期望的不是probeack响应,若c通道响应类型为probeack,则报错;
37.将比较过的b通道请求从队列中删除。
38.第二方面,本发明提供了一种二级缓存接口协议的验证系统,所述系统用于实现第一方面所述的二级缓存接口协议的验证方法,其特征在于,包括自定义接口检查器和tilelink协议检查器。
39.更进一步的,所述自定义接口检查器用于监测自定义接口信号的正确性;所述tilelink协议检查器用于监测tilelink协议信号的正确性。
40.本发明的有益效果为:
41.本发明针对二级缓存接口协议进行验证,当协议中的数据出错时,实时报出错误信息,不用等到全局检查器报错,能够更有效快速的定位错误代码,提高调试效率。
附图说明
42.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
43.图1是本发明实施例二级缓存接口结构图;
44.图2是本发明实施例二级缓存接口检查器结构图。
具体实施方式
45.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
46.实施例1
47.本实施例提供一种二级缓存接口协议的验证方法,所述方法对读数据检查时,记录每次读请求的关键信息,并在读数据返回时将内存模型的数据与dut数据进行比较,进行唤醒请求检查时通过协议约定进行检查;所述方法对d或c通道数据检查时,将内存模型的数据与dut数据进行比较,对b/c通道进行合理性检查时,根据二级缓存内容判定。
48.本实施例对读数据的检查,记录每次读请求的地址,标志位等关键信息,当读数据返回时,通过标志位查询记录的读请求信息,根据查询到的地址读取内存模型的数据,并与dut数据进行比较。
49.本实施例唤醒请求的检查,对唤醒请求与读数据之间的协议约定进行检查。
50.本实施例对d通道数据的检查,记录每次a通道请求的地址,标志位等关键信息,当d通道数据返回时,通过标志位查询记录的a通道请求信息,根据查询到的地址读取内存模型的数据,并与dut数据进行比较。
51.本实施例对c通道数据的检查,根据c通道请求的地址,读取内存模型中的数据,并与dut数据进行比较。
52.本实施例对b/c通道的合理性检查,若二级缓存收到b通道的probeblock请求,说
明二级缓存有这条cacheline,c通道不能回probeack类型。
53.本实施例针对二级缓存的接口协议进行验证,包括二级缓存与核之间的自定义协议,二级缓存与三级缓存/内存之间的tilelink总线协议。对于接口协议的验证,能够有效且快速地报出错误,且能迅速定位到错误代码,大大缩短了多核验证的调试时间,提高调试效率。
54.实施例2
55.在具体实施层面,本实施例提供一种二级缓存接口结构,如图1所示:
56.本实施例二级缓存与核的接口为自定义协议,包括从核发出的读请求信号,写请求信号,二级缓存返回的唤醒信号,读回数据信号。二级缓存可连接多个核,核的数量可配。
57.本实施例二级缓存与三级缓存或内存的接口为tilelink总线协议接口,该协议主要用于riscv架构,包括a/b/c/d/e五个通道。
58.本实施例a通道为读写请求通道,包含读写地址,写数据,请求类型等信息。
59.本实施例b通道为snoop请求通道,包含请求地址,请求类型等信息。
60.本实施例c通道为snoop数据返回通道,包含地址,数据,返回类型等信息。
61.本实施例d通道为读数据返回通道,包含读数据,返回类型等信息。
62.本实施例e通道为d通道的反馈通道,表示master收到了d通道的数据。
63.本实施例针对二级缓存的自定义接口和tilelink协议接口,实现了对接口关键信号的检查,能够提早报出数据错误,大大缩短了多核验证的调试时间。
64.实施例3
65.在具体实施层面,本实施例提供一种检查器结构,如图2所示:
66.本实施例自定义接口检查器,该检查器用于监测自定义接口信号的正确性。
67.本实施例对读数据的检查流程:
68.a.当核发送读请求信号到二级缓存时,检查器将读地址,读标志位,读请求类型存入读请求队列;
69.b.当二级缓存返回读数据时,监测返回信息的标志位,同时遍历读请求队列,若在读请求队列中存在有效请求的标志位与返回信息的标志位相同,说明该返回数据对应的是该读请求;
70.c.从标志位一致的读请求中获得地址和读请求类型信息,如果读请求类型是写升级请求,则不需要返回数据,只需要写权限,所以不需要比较数据正确性,如果读请求类型是其他类型,则需要比较数据正确性;
71.d.通过获得的读请求地址,读取内存参考模型中的数据,该内存参考模型会根据多核验证系统实时更新写数据;
72.e.比较从内存参考模型中读取的数据和dut的读回数据,若不一致,则报错;
73.f.将已经比较过的读请求从队列中删除。
74.更进一步实施时,本实例二级缓存发给核的唤醒请求用来提前唤醒核内的访存指令,自定义协议规定在发送唤醒请求3个时钟周期后,二级缓存必须发出读数据信号。
75.本实施例唤醒请求的检查流程如下:
76.a.当核收到唤醒请求时,将唤醒标志位和时钟计数位存入唤醒请求队列;
77.b.在每个时钟周期对唤醒请求队列中有效请求的时钟计数位加1,同时检查每个
有效请求的时钟计数位是否大于3,若大于3,则报错;
78.c.当二级缓存返回读数据时,监测返回信息的标志位,同时遍历唤醒请求队列,若在唤醒请求队列中存在有效请求的标志位与返回信息的标志位相同,说明该返回数据对应的是该唤醒请求,将该唤醒请求从队列中删除。
79.实施例4
80.在具体实施层面,本实施例提供一种检查器结构,如图2所示:
81.本实施例tilelink协议检查器,该检查器用于监测tilelink协议信号的正确性。
82.本实施例对d通道数据的检查流程:
83.a.当二级缓存向a通道发送读请求时,检查器将读地址和源标志位存入a通道队列;
84.b.当三级缓存/内存返回d通道数据时,监测d通道的源标志位,同时遍历a通道队列,若在a通道队列中存在有效请求的源标志位与d通道的源标志位相同,说明该d通道数据对应的是该a通道读请求;
85.c.从源标志位一致的a通道请求中获得地址,读取内存参考模型中的数据;
86.d.比较从内存参考模型中读取的数据和dut的读回数据,若不一致,则报错;
87.e.将已经比较过的a通道读请求从队列中删除。
88.本实施例c通道有两个作用:将二级缓存踢出的数据写入内存,对于b通道请求的响应。
89.本实施例对c通道数据的检查流程:
90.a.当二级缓存向c通道发送传输时,检查器监测传输的类型和数据;
91.b.当传输类型是probeackdata或者releasedata时,通过传输的地址读取内存参考模型中的数据;
92.c.比较从内存参考模型中读取的数据和dut的读回数据,若不一致,则报错。
93.本实施例中,若二级缓存收到b通道的probeblock请求,说明二级缓存有这条cacheline,c通道不能回probeack类型。
94.本实施例对b/c通道的合理性检查流程如下:
95.a.当二级缓存向c通道发出响应时,若响应类型为releasedata,检查器将地址信息存入c通道队列;
96.b.当二级缓存收到b通道请求时,判断该请求是否为probeblock请求,若是,检查器将地址和源标志位存入b通道队列;同时遍历c通道队列,若c通道队列存在地址相同的传输,则表明该cacheline已经被二级缓存踢出,对于当前b通道请求,c通道可以回probeack;
97.c.当二级缓存向c通道发出响应时,遍历b通道队列,若存在地址相同的b通道请求,并且该请求期望的不是probeack响应,若c通道响应类型为probeack,则报错;
98.d.将比较过的b通道请求从队列中删除。
99.实施例5
100.本实施例提供一种二级缓存接口协议的验证系统,包括自定义接口检查器和tilelink协议检查器。
101.本实施例自定义接口检查器用于监测自定义接口信号的正确性;所述tilelink协议检查器用于监测tilelink协议信号的正确性。
102.综上,本发明针对二级缓存接口协议进行验证,当协议中的数据出错时,实时报出错误信息,不用等到全局检查器报错,能够更有效快速的定位错误代码,提高调试效率
103.以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
技术特征:
1.一种二级缓存接口协议的验证方法,其特征在于,所述方法对读数据检查时,记录每次读请求的关键信息,并在读数据返回时将内存模型的数据与dut数据进行比较,进行唤醒请求检查时通过协议约定进行检查;所述方法对d或c通道数据检查时,将内存模型的数据与dut数据进行比较,对b/c通道进行合理性检查时,根据二级缓存内容判定。2.根据权利要求1所述的一种二级缓存接口协议的验证方法,其特征在于,所述方法中,对读数据的检查,记录每次读请求的地址,标志位等关键信息,当读数据返回时,通过标志位查询记录的读请求信息,根据查询到的地址读取内存模型的数据,并与dut数据进行比较;对唤醒请求的检查,对唤醒请求与读数据之间的协议约定进行检查。3.根据权利要求1所述的一种二级缓存接口协议的验证方法,其特征在于,所述方法中,对d通道数据的检查,记录每次a通道请求的地址,标志位等关键信息,当d通道数据返回时,通过标志位查询记录的a通道请求信息,根据查询到的地址读取内存模型的数据,并与dut数据进行比较;对c通道数据的检查,根据c通道请求的地址,读取内存模型中的数据,并与dut数据进行比较;对b/c通道的合理性检查,若二级缓存收到b通道的probeblock请求,说明二级缓存有这条cacheline,c通道不能回probeack类型。4.根据权利要求2所述的一种二级缓存接口协议的验证方法,其特征在于,所述方法中,对读数据的检查流程如下:当核发送读请求信号到二级缓存时,检查器将读地址,读标志位,读请求类型存入读请求队列;当二级缓存返回读数据时,监测返回信息的标志位,同时遍历读请求队列,若在读请求队列中存在有效请求的标志位与返回信息的标志位相同,说明该返回数据对应的是该读请求;从标志位一致的读请求中获得地址和读请求类型信息,如果读请求类型是写升级请求,则不需要返回数据,只需要写权限,所以不需要比较数据正确性,如果读请求类型是其他类型,则需要比较数据正确性;通过获得的读请求地址,读取内存参考模型中的数据,该内存参考模型会根据多核验证系统实时更新写数据;比较从内存参考模型中读取的数据和dut的读回数据,若不一致,则报错;将已经比较过的读请求从队列中删除。5.根据权利要求2所述的一种二级缓存接口协议的验证方法,其特征在于,所述方法中,唤醒请求的检查流程如下:当核收到唤醒请求时,将唤醒标志位和时钟计数位存入唤醒请求队列;在每个时钟周期对唤醒请求队列中有效请求的时钟计数位加1,同时检查每个有效请求的时钟计数位是否大于3,若大于3,则报错;当二级缓存返回读数据时,监测返回信息的标志位,同时遍历唤醒请求队列,若在唤醒请求队列中存在有效请求的标志位与返回信息的标志位相同,将该唤醒请求从队列中删除。
6.根据权利要求3所述的一种二级缓存接口协议的验证方法,其特征在于,所述方法中,对d通道数据的检查流程如下:当二级缓存向a通道发送读请求时,检查器将读地址和源标志位存入a通道队列;当三级缓存/内存返回d通道数据时,监测d通道的源标志位,同时遍历a通道队列,若在a通道队列中存在有效请求的源标志位与d通道的源标志位相同,说明该d通道数据对应的是该a通道读请求;从源标志位一致的a通道请求中获得地址,读取内存参考模型中的数据;比较从内存参考模型中读取的数据和dut的读回数据,若不一致,则报错;将已经比较过的a通道读请求从队列中删除。7.根据权利要求3所述的一种二级缓存接口协议的验证方法,其特征在于,所述方法中,对c通道数据的检查流程如下:当二级缓存向c通道发送传输时,检查器监测传输的类型和数据;当传输类型是probeackdata或者releasedata时,通过传输的地址读取内存参考模型中的数据;比较从内存参考模型中读取的数据和dut的读回数据,若不一致,则报错。8.根据权利要求3所述的一种二级缓存接口协议的验证方法,其特征在于,所述方法中,对b/c通道的合理性检查流程如下:当二级缓存向c通道发出响应时,若响应类型为releasedata,检查器将地址信息存入c通道队列;当二级缓存收到b通道请求时,判断该请求是否为probeblock请求,若是,检查器将地址和源标志位存入b通道队列;同时遍历c通道队列,若c通道队列存在地址相同的传输,则表明该cacheline已经被二级缓存踢出,对于当前b通道请求,c通道可以回probeack;当二级缓存向c通道发出响应时,遍历b通道队列,若存在地址相同的b通道请求,并且该请求期望的不是probeack响应,若c通道响应类型为probeack,则报错;将比较过的b通道请求从队列中删除。9.一种二级缓存接口协议的验证系统,所述系统用于实现如权利要求1-8任一项所述的二级缓存接口协议的验证方法,其特征在于,包括自定义接口检查器和tilelink协议检查器。10.根据权利要求9所述的一种二级缓存接口协议的验证系统,其特征在于,所述自定义接口检查器用于监测自定义接口信号的正确性;所述tilelink协议检查器用于监测tilelink协议信号的正确性。
技术总结
本发明涉及多核验证技术领域,具体涉及一种二级缓存接口协议的验证方法及系统,本发明对读数据检查时,记录每次读请求的关键信息,并在读数据返回时将内存模型的数据与DUT数据进行比较,进行唤醒请求检查时通过协议约定进行检查;所述方法对D或C通道数据检查时,将内存模型的数据与DUT数据进行比较,对B/C通道进行合理性检查时,根据二级缓存内容判定。本发明针对二级缓存接口协议进行验证,当协议中的数据出错时,实时报出错误信息,不用等到全局检查器报错,能够更有效快速的定位错误代码,提高调试效率。提高调试效率。提高调试效率。
技术研发人员:沈秀红
受保护的技术使用者:广东赛昉科技有限公司
技术研发日:2021.12.14
技术公布日:2022/3/8