发明内容
本发明实施例的目的在于提供一种存储器控制器验证系统,旨在解决现有技术验证存储器控制器是否正常工作时存在验证不够充分、重用性较差和效率较低的问题。
本发明实施例是这样实现的,一种存储器控制器验证系统,系统包括:
测试用例产生器,用于产生至少一个测试用例;
总线驱动器,用于根据测试用例产生器产生的测试用例生成控制事务,同时将所述测试用例转换为存储器控制器接口总线时序发送给存储器控制器;
监测单元,用于监测所述存储器控制器根据接收的接口总线时序产生的监测事务;
记分板,用于根据所述总线驱动器生成的控制事务和所述监测单元监测的监测事务判断所述存储器控制器是否工作正常。
本发明实施例的另一目的在于提供一种根据上述存储器控制器验证系统验证存储器控制器的方法,包括以下步骤:
通过所述测试用例产生器产生至少一个测试用例;
所述总线驱动器根据所述测试用例生成控制事务,同时将所述测试用例转换为存储器控制器接口总线时序发送给存储器控制器;
所述监测单元监测所述存储器控制器根据接收的接口总线时序产生的监测事务;
所述记分板根据所述总线驱动器生成的控制事务和所述监测单元监测的监测事务判断所述存储器控制器是否工作正常。
本发明通过构建基于模块级的存储器控制器验证系统,系统包括:用于产生至少一个测试用例的测试用例产生器,用于根据测试用例产生器产生的测试用例生成控制事务,同时将测试用例转换为存储器控制器接口总线时序发送给存储器控制器的总线驱动器,用于监测存储器控制器根据接收的接口总线时序产生的监测事务的监测单元,用于根据总线驱动器生成的控制事务和监测单元监测的监测事务判断存储器控制器是否工作正常的记分板。实现了存储器控制器的多个通道并行验证,验证充分,重用性好,效率较高。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例构建了基于模块级的存储器控制器验证系统,系统包括:用于产生至少一个测试用例的测试用例产生器,用于根据测试用例产生器产生的测试用例生成控制事务,同时将测试用例转换为存储器控制器接口总线时序发送给存储器控制器的总线驱动器,用于监测存储器控制器根据接收的接口总线时序产生的监测事务的监测单元,用于根据总线驱动器生成的控制事务和监测单元监测的监测事务判断存储器控制器是否工作正常的记分板。
图2是本发明实施例提供的存储器控制器验证系统的结构图。为了便于说明,仅示出了本发明实施例相关的部分。该存储器控制器验证系统包括测试用例产生器21、总线驱动器22、监测单元23和记分板24。
测试用例产生器21产生至少一个测试用例,总线驱动器22根据测试用例产生器21产生的测试用例生成控制事务,同时将测试用例转换为存储器控制器接口总线时序发送给存储器控制器25,监测单元23监测存储器控制器25根据接收的接口总线时序产生的监测事务,记分板24根据总线驱动器22生成的控制事务和监测单元23监测的监测事务判断存储器控制器25是否工作正常。
在本发明第一实施例中,测试用例包括测试指令和测试数据,测试指令包括读指令和写指令,控制事务包括第一数据,总线驱动器22包括:
第一数据获取模块,用于当检测到测试用例产生器21产生的测试指令为写指令时,将测试数据作为第一数据,当检测到测试用例产生器21产生的测试指令为读指令时,将执行读指令读取的数据作为第一数据;
其中,接口总线时序包括总线指令,总线指令包括数据读写地址,监测事务包括第二数据,监测单元23包括:
第二数据获取模块,用于当监测到存储器控制器25开始回应总线驱动器22发送的总线指令时,从与存储器控制器25接收的数据读写地址相同的存储器26的存储地址中获取第二数据。
记分板24包括:
第一判断模块,用于当将第一数据获取模块获取的第一数据和第二数据获取模块获取的第二数据相同时,判断存储器控制器工作正常。
在本发明第二实施例中,控制事务不但包括第一数据,还包括第一指令,监测事务不但包括第二数据,还包括第二指令,此时,以本发明第一实施例的系统模块为基础,总线驱动器22还包括:
第一指令获取模块,用于将测试用例产生器21产生的测试指令作为第一指令;
监测单元23还包括:
第二指令获取模块,用于当监测到存储器控制器25开始回应总线驱动器22发送的总线指令时,将存储器控制器25接收的总线指令作为第二指令;
记分板24还包括:
第二判断模块,用于当第一数据获取模块获取的第一数据和第二数据获取模块获取的第二数据相同,且第一指令获取模块获取的第一指令和第二指令获取模块获取的第二指令相同时,判断存储器控制器工作正常。
具体实现时,可以依照本发明实施例在基于虚拟操作软件(Virtual Machine Monitor,VMM)验证平台建立了一个模块级的验证环境,运行时由验证环境直接发测试用例的激励给存储器控制器。
图3是本发明实施例提供的采用存储器控制器验证系统验证存储器控制器的流程图。
在步骤S301中,通过测试用例产生器产生至少一个测试用例。
在本发明实施例中,测试用例产生器产生的测试用例可以是预先设置的任意测试用例,包括测试指令和测试数据,为了验证多通道的存储器控制器,还可以定义多个测试用例产生器产生的测试用例中包括存储器控制器通道选择指令,存储器控制器通道选择指令使多个测试用例对应不同优先级的存储器控制器接口总线请求。
在步骤S302中,总线驱动器根据测试用例生成控制事务,同时将测试用例转换为存储器控制器接口总线时序发送给存储器控制器。
通常,测试用例产生器产生的测试用例和存储器控制器接口不兼容,测试用例需要转换为存储器控制器接口总线时序才能被存储器控制器响应,总线驱动器将测试用例传输给存储器控制器,并执行测试用例从而生成控制事务,具体见后文详述。
在步骤S303中,监测单元监测存储器控制器根据接收的接口总线时序产生的监测事务。
在步骤S304中,记分板根据总线驱动器生成的控制事务和监测单元监测的监测事务判断存储器控制器是否工作正常。
本发明实施例可以通过比对控制事务和监测事务的数据,也可以通过比对两者的数据和指令来验证存储器控制器是否工作正常。
在本发明第一实施例中,控制事务包括第一数据,监测事务包括第二数据,只需要判断第一数据和第二数据是否一致就可以判断存储器控制器是否工作正常。
具体应用时,测试用例包括测试指令和测试数据,测试指令包括读指令和写指令,总线驱动器根据测试用例生成控制事务的步骤具体为:当总线驱动器检测到测试用例产生器发送的测试指令为写指令时,将测试数据作为第一数据,当总线驱动器检测到测试用例产生器发送的测试指令为读指令时,将执行读指令读取的数据作为第一数据。
接口总线时序包括总线指令,总线指令包括数据读写地址,步骤S303具体为:监测单元监测到存储器控制器开始回应总线驱动器发送的总线指令时,从与存储器控制器接收的数据读写地址相同的存储器的存储地址中获取第二数据。
此时,步骤S304具体为:当总线驱动器获取的第一数据和监测单元获取的第二数据相同时,记分板判断存储器控制器工作正常。
在本发明第二实施例中,验证存储器控制器的工作是否正常在判断控制事务和监控事务的数据是否一致的同时还要判断指令是否一致,控制事务不但包括第一数据,还包括第一指令,监测事务不但包括第二数据,还包括第二指令,其中,第一数据和第二数据的获取方法和本发明第一实施例相同,不再赘述,总线驱动器根据测试用例生成控制事务的步骤进一步包括:总线驱动器将测试用例产生器产生的测试指令作为第一指令,步骤S303进一步包括:当监测到存储器控制器开始回应总线驱动器发送的总线指令时,监测单元将存储器控制器接收的总线指令作为第二指令。
此时,步骤S304具体为:当总线驱动器获取的第一数据和监测单元获取的第二数据相同,且总线驱动器获取的第一指令和监测单元获取的第二指令相同时,记分板判断存储器控制器工作正常。
在本发明实施例中,控制事务和监测事务以队列的形式保存,队列中存放的单位是预先设置类型的结构体,通过对两个队列中的结构体对应的数据或者数据和指令进行比对判断存储器控制器是否工作正常。
具体应用时,测试用例产生器产生的测试用例还可以包括存储器控制器通道选择指令,使测试用例转换为总线时序时对应不同优先级的存储器总线请求。其具体实施方式不再赘述。
按照本发明实施例可以建立存储器控制器的模块级验证环境,可对测试用例进行直接控制和重现,运行速度快,重用性高,可以根据模块间的传输数据及时对系统进行调整和相关调试,同时避免了系统级验证环境对存储器控制器间接产生测试用例时的效率和可控性很低的缺点,
另外,由于每次只能测试存储器控制器接口总线的任意一条通道,由测试用例产生器随机产生,测试用例产生器还会随机产生一些优先级低于所要测试的存储器控制器接口总线时序的其他请求一起驱动,这样就可测试存储器控制器是否正确处理并行的存储器总线请求,实现对多通道存储器的总线的模块级验证。
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。