专利名称:一种存储器控制器验证系统及方法
技术领域:
本发明属于验证领域,尤其涉及一种存储器控制器验证系统及方法。
背景技术:
在现代IC (Integrate Circuit)设计中,尤其是对数字图像的处理模块中,所需要 的数据往往大于片内的存储容量且运算复杂,实时性强。因此,对于片内存储资源有限的处 理系统来说,通常需要借用外部的存储空间。而为了提高系统的实时处理能力,就必须在设 计模块和外部存储器之间使用直接内存访问(Direct Memory Access, DMA)的方式进行数 据交换。DMA控制器就是控制数据在IC设计模块和外部存储器之间的传输,由于DMA控制 器在数据传输中的重要作用,它的错误有可能导致整个系统的崩溃,因此,对其进行充分的 验证也就显的尤为重要。请参考图1,为现有技术提供的DMA控制器与设计模块、外部存储器连接示意图, DMA控制器通常提供多个DMA通道,以并行支持多个模块的数据传输,DMA控制器接收所有 要进行数据传输模块的请求,通过优先级的仲裁机制,选择接受其中一个设计模块的请求, 将其所要上传到外部存储器的数据通过DMA总线传输到外部存储器,或是将其所要从外部 存储器中下载的数据通过DMA总线传输给该设计模块。现有的技术方案通常是将一个相对上传和下载数据都比较大量和复杂的设计模 块,一般是视频的编解码模块,和其中一个DMA总线通道连接,通过在系统级对该模块的 运行,来验证DMA控制器此一通道的正确性,如果该模块正确运行,则上传和下载的数据无 误,否则则可能在上传和下载数据上存在问题。其它的DMA通道则通过其它与之连接的模 块运行,来验证正确与否。即通过对设计模块的验证,达到间接测试DMA控制器的目的。综上可知,现有技术将DMA通道对应的设计模块是设定为固定的,当所有设计模 块的测试用例运行通过时则认为实际运行中DMA控制器是正常工作的,如果DMA只有一条 通道,理论上,这种想法是可以成立的,但是实际上DMA通常都是多通道并行的,例如图像 处理领域,测试用例是没有穷尽的,通常又不可能将所有存在的图片或是视频都测试一遍, 不可能将所有实际运用中可能遇到的情况全部测到,只能根据经验和覆盖率的结果,尽量 将可能出现的情况测试通过。现有技术还不能测试多个通道同时运行的情况,而且从验证 的角度讲,因为基于系统的验证环境还包括中央处理器(Central Processing Unit, CPU) 和系统控制模块(system control),不是对DMA控制器直接进行测试,很多测试情况是重 复的,在做下一个项目时,针对相同的模块还要再重新搭建环境进行验证,改动很大,另外, 由于测试用例是间接产生的,很多实际中出现的情况都无法进行重现进行验证,可控行很 低。所以现有技术的基于系统级的存储器控制器验证系统存在验证不够充分、重用性较差 和效率较低的问题。
发明内容
本发明实施例的目的在于提供一种存储器控制器验证系统,旨在解决现有技术验证存储器控制器是否正常工作时存在验证不够充分、重用性较差和效率较低的问题。本发明实施例是这样实现的,一种存储器控制器验证系统,系统包括测试用例产生器,用于产生至少一个测试用例;总线驱动器,用于根据测试用例产生器产生的测试用例生成控制事务,同时将所 述测试用例转换为存储器控制器接口总线时序发送给存储器控制器;监测单元,用于监测所述存储器控制器根据接收的接口总线时序产生的监测事 务;记分板,用于根据所述总线驱动器生成的控制事务和所述监测单元监测的监测事 务判断所述存储器控制器是否工作正常。本发明实施例的另一目的在于提供一种根据上述存储器控制器验证系统验证存 储器控制器的方法,包括以下步骤通过所述测试用例产生器产生至少一个测试用例;所述总线驱动器根据所述测试用例生成控制事务,同时将所述测试用例转换为存 储器控制器接口总线时序发送给存储器控制器;所述监测单元监测所述存储器控制器根据接收的接口总线时序产生的监测事 务;所述记分板根据所述总线驱动器生成的控制事务和所述监测单元监测的监测事 务判断所述存储器控制器是否工作正常。本发明通过构建基于模块级的存储器控制器验证系统,系统包括用于产生至少 一个测试用例的测试用例产生器,用于根据测试用例产生器产生的测试用例生成控制事 务,同时将测试用例转换为存储器控制器接口总线时序发送给存储器控制器的总线驱动 器,用于监测存储器控制器根据接收的接口总线时序产生的监测事务的监测单元,用于根 据总线驱动器生成的控制事务和监测单元监测的监测事务判断存储器控制器是否工作正 常的记分板。实现了存储器控制器的多个通道并行验证,验证充分,重用性好,效率较高。
图1是现有技术提供的DMA控制器与设计模块、外部存储器的连接示意图;图2是本发明实施例提供的存储器控制器验证系统的结构图;图3是本发明实施例提供的采用存储器控制器验证系统验证存储器控制器的流 程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。本发明实施例构建了基于模块级的存储器控制器验证系统,系统包括用于产生 至少一个测试用例的测试用例产生器,用于根据测试用例产生器产生的测试用例生成控制 事务,同时将测试用例转换为存储器控制器接口总线时序发送给存储器控制器的总线驱动 器,用于监测存储器控制器根据接收的接口总线时序产生的监测事务的监测单元,用于根据总线驱动器生成的控制事务和监测单元监测的监测事务判断存储器控制器是否工作正 常的记分板。图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具体为当总线驱动器获取的第一数据和监测单元获取的第二数 据相同,且总线驱动器获取的第一指令和监测单元获取的第二指令相同时,记分板判断存 储器控制器工作正常。在本发明实施例中,控制事务和监测事务以队列的形式保存,队列中存放的单位 是预先设置类型的结构体,通过对两个队列中的结构体对应的数据或者数据和指令进行比对判断存储器控制器是否工作正常。具体应用时,测试用例产生器产生的测试用例还可以包括存储器控制器通道选择 指令,使测试用例转换为总线时序时对应不同优先级的存储器总线请求。其具体实施方式
不再赘述。按照本发明实施例可以建立存储器控制器的模块级验证环境,可对测试用例进行 直接控制和重现,运行速度快,重用性高,可以根据模块间的传输数据及时对系统进行调整 和相关调试,同时避免了系统级验证环境对存储器控制器间接产生测试用例时的效率和可 控性很低的缺点,另外,由于每次只能测试存储器控制器接口总线的任意一条通道,由测试用例产 生器随机产生,测试用例产生器还会随机产生一些优先级低于所要测试的存储器控制器接 口总线时序的其他请求一起驱动,这样就可测试存储器控制器是否正确处理并行的存储器 总线请求,实现对多通道存储器的总线的模块级验证。以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和 原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种存储器控制器验证系统,其特征在于,所述系统包括 测试用例产生器,用于产生至少一个测试用例;总线驱动器,用于根据测试用例产生器产生的测试用例生成控制事务,同时将所述测 试用例转换为存储器控制器接口总线时序发送给存储器控制器;监测单元,用于监测所述存储器控制器根据接收的接口总线时序产生的监测事务; 记分板,用于根据所述总线驱动器生成的控制事务和所述监测单元监测的监测事务判 断所述存储器控制器是否工作正常。
2.如权利要求1所述的系统,其特征在于,所述测试用例包括测试指令和测试数据,所 述测试指令包括读指令和写指令,所述控制事务包括第一数据,所述总线驱动器包括第一数据获取模块,用于当检测到所述测试用例产生器产生的测试指令为写指令时, 将测试数据作为第一数据,当检测到所述测试用例产生器产生的测试指令为读指令时,将 执行读指令读取的数据作为第一数据;所述接口总线时序包括总线指令,所述总线指令包括数据读写地址,所述监测事务包 括第二数据,所述监测单元包括第二数据获取模块,用于当监测到所述存储器控制器开始回应所述总线驱动器发送的 总线指令时,从与所述存储器控制器接收的数据读写地址相同的存储器的存储地址中获取 第二数据。所述记分板包括第一判断模块,用于当将所述第一数据获取模块获取的第一数据和所述第二数据获取 模块获取的第二数据相同时,判断所述存储器控制器工作正常。
3.如权利要求2所述的系统,其特征在于,所述控制事务还包括第一指令,所述总线驱 动器还包括第一指令获取模块,用于将所述测试用例产生器产生的测试指令作为第一指令; 所述监测事务还包括第二指令,所述监测单元还包括第二指令获取模块,用于当监测到所述存储器控制器开始回应所述总线驱动器发送的 总线指令时,将所述存储器控制器接收的总线指令作为第二指令; 所述记分板还包括第二判断模块,用于当所述第一数据获取模块获取的第一数据和所述第二数据获取模 块获取的第二数据相同,且所述第一指令获取模块获取的第一指令和所述第二指令获取模 块获取的第二指令相同时,判断所述存储器控制器工作正常。
4.一种采用权利要求1所述的存储器控制器验证系统验证存储器控制器的方法,其特 征在于,所述方法包括以下步骤通过所述测试用例产生器产生至少一个测试用例;所述总线驱动器根据所述测试用例生成控制事务,同时将所述测试用例转换为存储器 控制器接口总线时序发送给存储器控制器;所述监测单元监测所述存储器控制器根据接收的接口总线时序产生的监测事务; 所述记分板根据所述总线驱动器生成的控制事务和所述监测单元监测的监测事务判 断所述存储器控制器是否工作正常。
5.如权利要求4所述的方法,其特征在于,所述测试用例包括测试指令和测试数据,所述测试指令包括读指令和写指令,所述控制事务包括第一数据,所述总线驱动器根据所述 测试用例生成控制事务的步骤具体为当所述总线驱动器检测到所述测试用例产生器发送的测试指令为写指令时,将测试数 据作为第一数据,当所述总线驱动器检测到所述测试用例产生器发送的测试指令为读指令 时,将执行读指令读取的数据作为第一数据;所述接口总线时序包括总线指令,所述总线指令包括数据读写地址,所述监测事务包 括第二数据,所述监测单元监测所述存储器控制器根据接收的接口总线时序产生的监测事 务的步骤具体为所述监测单元监测到所述存储器控制器开始回应所述总线驱动器发送的总线指令时, 从与所述存储器控制器接收的数据读写地址相同的存储器的存储地址中获取第二数据。
6.如权利要求5所述的方法,其特征在于,所述记分板根据所述总线驱动器生成的控 制事务和所述监测单元监测的监测事务判断所述存储器控制器是否工作正常的步骤具体 为当所述总线驱动器获取的第一数据和所述监测单元获取的第二数据相同时,所述记分 板判断所述存储器控制器工作正常。
7.如权利要求5所述的方法,其特征在于,所述控制事务还包括第一指令,所述总线驱 动器根据所述测试用例生成控制事务的步骤还包括所述总线驱动器将所述测试用例产生器产生的测试指令作为第一指令;所述监测事务还包括第二指令,所述监测单元监测所述存储器控制器根据接收的接口 总线时序产生的监测事务的步骤还包括当监测到所述存储器控制器开始回应所述总线驱动器发送的总线指令时,所述监测单 元将所述存储器控制器接收的总线指令作为第二指令。
8.如权利要求7所述的方法,其特征在于,所述记分板根据所述控制事务和监测事务 判断所述存储器控制器是否工作正常的步骤具体为当所述总线驱动器获取的第一数据和所述监测单元获取的第二数据相同,且所述总线 驱动器获取的第一指令和所述监测单元获取的第二指令相同时,所述记分板判断所述存储 器控制器工作正常。
9.如权利要求4所述的方法,其特征在于,所述测试用例还包括存储器控制器通道选 择指令。
全文摘要
本发明适用于验证领域,提供了一种存储器控制器验证系统及方法,该方法包括以下步骤测试用例产生器,用于产生至少一个测试用例;总线驱动器,用于根据测试用例产生器产生的测试用例生成控制事务,同时将所述测试用例转换为存储器控制器接口总线时序发送给存储器控制器;监测单元,用于监测所述存储器控制器根据接收的接口总线时序产生的监测事务;记分板,用于根据所述总线驱动器生成的控制事务和所述监测单元监测的监测事务判断所述存储器控制器是否工作正常。本发明通过构建基于模块级的存储器控制器验证系统实现了存储器控制器的多个通道并行验证,验证充分,重用性好,效率较高。
文档编号G06F17/50GK101996265SQ200910189739
公开日2011年3月30日 申请日期2009年8月25日 优先权日2009年8月25日
发明者徐骏宇, 王恒军, 胡胜发, 赵玉梅 申请人:安凯(广州)微电子技术有限公司