一种存储器控制器验证系统、方法及记分板的制作方法

文档序号:6576416阅读:169来源:国知局
专利名称:一种存储器控制器验证系统、方法及记分板的制作方法
技术领域
本发明属于存储器控制器技术领域,尤其涉及一种存储器控制器验证系统、方法 及记分板。
背景技术
随着集成电路芯片的规模越来越大,在基于知识产权(Intellectual Property, IP)复用的片上系统(System On Chip, S0C)设计中,片上总线设计成为了最关键的问题。 为此,业界出现了很多片上总线标准。其中由ARM公司推出的AMBA片上总线结构已经成为 一种流行的工业标准。AMBA规范主要包括了 AHB系统总线和APB(Advanced Peripheral Bus)外围总线。图1是主模块、存储器控制器和存储器的连接示意图,主模块与存储器控制器通 过AHB总线连接,存储器控制器和存储器之间通过存储器接口连接。现有的存储器控制器 接收由主模块master module (发出AHB总线读/写操作的模块)通过AHB总线发出的读 /写操作,再转换为存储器接口的读写操作,实现对存储器的读写操作。此外,AHB总线读或写操作还可能被另一个读或写操作在任意时刻打断,即就 是,AHB总线上某一读或写操作在进行中被另一个读或写操作打断继而执行后一个读或写 操作,待后一操作完成后再继续执行前一读或写操作。这使得动态随机存储器(Dynamic Random Access Memory,DRAM)控制器的验证情况更为复杂,要充分的验证存储器控制器的 正确性也更为困难。图2是现有技术提供的验证存储器控制器的正确性流程图,具体过程是在步骤 S201中,发出总线写操作,写数据至写操作中指定的存储器的写入地址中。在步骤S202中, 发出总线读操作,从上述写入地址中读取数据。在步骤S203中,将上述写入至存储器中的 写入地址中的数据与读操作从该地址读取的数据进行比较,如果相同,则存储器控制器工 作正常。现有的验证存储器控制器的正确性的方案中,必须先进行写操作,再进行读操作, 且读写操作必须是在相同情况,即读写地址,大小等条件必须完全相同才可以验证正确性。这种验证方法对于单纯的AHB总线读写操作可以进行基本测试,但是不能建立与 实际运行时完全相同的环境,因为实际中对AHB总线操作是随机的,不会按照这种先写后 读的硬性要求来运行,例如连续进行两次写操作,若后一个写操作会对前一个写操作产生 影响,并导致错误,现有的测试方法就可能测不出来。而且,对于AHB总线的读写打断情况 则更没有办法进行测试,如一个写操作打断一个读操作时,我们没办法制作一个相反方向 的操作,来验证其存储器控制器的正确性。只能制作一个读操作来测试上一个写操作是否 正确,但读操作是否正确运行则没有办法验证。因此,现有技术提供的存储器控制器验证方法在读写操作不一致时,无法成功验 证存储器控制器是否工作正常。

发明内容
本发明的目的在于提供一种存储器控制器验证方法,旨在解决现有技术在读写操 作不一致时,无法成功验证存储器控制器是否工作正常的问题。本发明是这样实现的,一种存储器控制器验证方法,所述方法包括下述步骤记分板根据监测存储器控制器产生的监测事务和测试用例产生器产生的控制事 务检测总线操作;当所述总线操作中有写操作时,将所述写操作中的地址和该地址对应的数据写入 预先设置类型的结构体中;将生成的结构体存储在队列中;当所述总线操作中有读操作时,将从队列中存储的结构体中或者从存储器中读取 的与所述读操作中的读取地址相同的地址中存储的数据与通过所述读操作读取的数据进 行比较,如果两者相同,表示存储器控制器工作正常。本发明的另一目的在于提供一种记分板,所述记分板包括总线操作检测单元,用于根据监测存储器控制器产生的监测事务和测试用例产生 器产生的控制事务检测总线操作;结构体生成单元,用于当所述总线操作中有写操作时,将所述写操作中的地址和 该地址对应的数据写入预先设置类型的结构体中;队列生成单元,用于将生成的结构体存储在队列中;验证结果生成单元,用于将从队列中存储的结构体中或者从存储器中读取的与所 述读操作中的读取地址相同的地址中存储的数据与通过所述读操作读取的数据进行比较, 如果两者相同,表示存储器控制器工作正常。本发明的另一目的在于提供一种存储器控制器验证系统,所述系统包括如上所述 的记分板,所述系统还包括测试用例产生器、主模块模拟器、存储器控制器以及存储器。在本发明中,当记分板接收到测试用例产生器产生的控制事务是将对存储器进行 写操作时,存储即将写入到存储器中的数据以及该数据的存储地址至预先设置类型的结构 体中,并添加到预先设置的队列中,当记分板接收到测试用例产生器产生的控制事务是将 对存储器进行读操作时,将从队列中存储的结构体中或者从存储器中读取的与所述读操作 中的读取地址相同的地址中存储的数据与通过所述读操作读取的数据进行比对,若数据相 同,则测试通过,该验证方法在完成一次总线写操作以后,记住该写操作写入存储器中的数 据以及该数据的存储地址,在检测到总线操作是读操作时,将读操作读取的数据与写操作 写入的数据进行比较,不一定总线操作一定满足先写后读的时序,可以在各种总线时序下 验证存储器控制器的正确性。


图1是现有技术提供的主模块、存储器控制器和存储器的连接示意图;图2是现有技术提供的验证存储器控制器的正确性的实现流程图;图3是本发明实施例提供的存储器控制器验证的实现流程图;图4是本发明实施例提供的存储器控制器验证系统的结构示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不 用于限定本发明。在本发明实施例中,当记分板接收到测试用例产生器产生的控制事务是将通过总 线对存储器进行写操作时,存储即将写入到存储器中的数据以及该数据的存储地址至预先 设置类型的结构体中,并添加到预先设置的队列中,当记分板接收到测试用例产生器产生 的控制事务是将通过总线对存储器进行读操作时,将从队列中存储的结构体中或者从存储 器中读取的与所述读操作中的读取地址相同的地址中存储的数据与通过所述读操作读取 的数据进行比对,若数据相同,则测试通过,该验证方法可以验证在各种总线时序情况下, 存储器控制器能否对存储器进行正确控制。图3示出了本发明实施例提供的存储器控制器验证方法的实现流程,详述如下在步骤S301中,记分板根据监测存储器控制器产生的监测事务和测试用例产生 器产生的控制事务检测总线操作。作为本发明的一个实施例,记分板先根据监测存储器控制器产生的监测事务以及 测试用例产生器传输的控制事务检测主模块模拟器是否正确发出总线操作,然后根据流程 判断存储器控制器是否正确执行总线操作,在本实施例中,主模块模拟器通过总线发送总 线操作命令至存储器控制器,存储器控制器接收所述主模块模拟器发送的总线操作,所述 总线操作包括写操作、读操作。其中,在步骤S301之前,存储器控制器验证方法还包括下 面的步骤,第一步测试用例产生器发送控制事务至主模块模拟器和记分板,该控制事务是 对主模块模拟器要传输给存储器控制器的总线操作的一个描述,例如主模块模拟器要传 输给存储器控制器的总线操作是读还是写,是否会被另一个操作打断等;第二步主模块 模拟器根据所述控制事务产生符合总线时序的操作并将其传送至存储器控制器,例如,主 模块模拟器接收测试用例产生器传输的控制事务,根据该控制事务产生符合总线时序的操 作,再通过总线传输给存储器控制器;第三步通过存储器控制器的接口总线时序监测存 储器控制器生成监测事务并传送至记分板,所述监测事务是由监测存储器控制器的接口总 线时序所解析出来的总线操作描述。最后,记分板根据监测存储器控制器产生的监测事务 按照一系列的流程对存储器控制器是否正确执行总线操作进行判断。在本发明实施例中, 总线是AHB总线,存储器控制器是DRAM控制器,存储器是DRAM。在步骤S302中,判断接收到测试用例产生器产生的控制事务中的总线操作中是 否有写操作,当所述总线操作中有写操作时,将所述写操作中的地址和该地址对应的数据 写入预先设置类型的结构体中,并一一进行存储。作为本发明的一个实施例,判断主模块模拟器发出的总线操作(打断和被打断的 操作)中是否有写操作,当所述总线操作中有写操作时,将所述写操作中的地址和该地址 对应的数据写入预先设置好类型的结构体中,并一一进行存储,其中结构体的类型预先设 置,包括以字节为单位的写操作存储地址和该写操作存储地址中存储的相应的以字节为单 位的数据。在步骤S303中,将生成的结构体存储在队列中。作为本发明的一个实施例,检查生成的结构体中存储的地址是否与队列中存放的
6结构体中存储的地址相同,如果相同,则用新生成的结构体替换队列中原来存储的结构体; 否则直接将新生成的结构体添加到队列中,其中,队列是预先设置的,队列中存放的单位是 预先设置类型的结构体。在步骤S304中,判断接收到测试用例产生器产生的控制事务中的总线操作中是 否有读操作,当所述总线操作中有读操作时,则从队列中存储的结构体中或者直接从存储 器中读取与该读操作中的读取地址对应的存储地址中存储的数据。作为本发明的一个实施例,判断主模块模拟器发出的总线操作(打断和被打断的 操作)中是否有读操作,当所述总线操作中有读操作时,则首先检查队列中是否有与该读 操作的读取地址相同的结构体,如果有,则从该结构体中取出与该读取地址相应的数据与 主模块模拟器通过读操作从总线上读出的数据进行比对,否则,直接读取存储器中的与该 读取地址相应的数据,与主模块模拟器通过读操作从总线上读出的数据进行比对。在步骤S305中,将从队列中存储的结构体中或者直接从存储器中读取的与该读 操作中的读取地址对应的存储地址中存储的数据与主模块模拟器通过读操作从总线上读 取的数据进行比较,如果两者相同,则表示存储器控制器工作正常。作为本发明的一个实施例,首先检查队列中是否有与该读操作的读取地址相同的 结构体,如果有,则从该结构体中取出与该读取地址相应的数据与主模块模拟器通过读操 作从总线上读出的数据进行比对,如果两者相同,则表示存储器控制器工作正常;否则,直 接读取存储器中的与该读取地址相应的数据,与主模块模拟器通过读操作从总线上读出的 数据进行比对,如果两者相同,则表示存储器控制器工作正常。图4示出了本发明实施例提供的存储器控制器验证系统的结构,为了便于说明, 仅示出了本发明实施例相关的部分。该存储器控制器验证系统包括主模块模拟器41、存 储器控制器42、存储器43、测试用例产生器44、记分板45。其中,所述记分板45包括结构体类型设置单元451、队列设置单元452、总线操作 检测单元453、结构体生成单元454、队列生成单元455以及验证结果生成单元456。结构体类型设置单元451用于预先设置结构体类型,所述结构体类型包括一写操 作时写入存储器的数据和一所述数据在存储器中的存储地址,所述数据和存储地址均以字 节为单位。队列设置单元452用于预先设置队列,所述队列的存放单位是预先设置类型的结 构体。整个存储器控制器验证系统的工作过程详述如下测试用例产生器44发送控制事务至主模块模拟器41和记分板45,该控制事务是 对主模块模拟器41要传输给存储器控制器42的总线操作的一个描述,例如主模块模拟 器41要传输给存储器控制器42的总线操作是读还是写,是否会被另一个操作打断等;第二 步主模块模拟器41根据所述控制事务产生符合总线时序的操作并将其传送至存储器控 制器42,例如,主模块模拟器41接收测试用例产生器44传输的控制事务,根据该控制事务 产生符合总线时序的操作,再通过总线传输给存储器控制器42 ;第三步通过存储器控制 器42的接口总线时序监测存储器控制器42生成监测事务并传送至记分板45,所述监测事 务是由监测存储器控制器的接口总线时序所解析出来的总线操作描述。记分板45的总线操作检测单元453根据监测存储器控制器42产生的监测事务以及测试用例产生器传输的控制事务检测主模块模拟器是否正确发出总线操作,然后根据流 程判断存储器控制器是否正确执行总线操作。当接收到测试用例产生器产生的控制事务中 的总线操作中有写操作时,通过结构体生成单元454将所述写操作中的地址和该地址对应 的数据写入预先设置类型的结构体中,并一一进行存储,其中结构体的类型由结构体类型 设置单元451预先设置,包括以字节为单位的写操作存储地址和该写操作存储地址中存储 的相应的以字节为单位的数据,在本发明实施例中,总线是AHB总线,存储器控制器是DRAM 控制器,存储器是DRAM。队列生成单元455用于将生成的结构体存储在队列中。作为本发明的一个实施 例,首先检查新生成的结构体中存储的地址是否与队列中存放的结构体中存储的地址相 同,如果两者相同,则用新生成的结构体替换队列中原来存储的结构体;否则直接将新生成 的结构体添加到队列中,其中,队列是通过队列设置单元452预先设置的,队列中存放的单 位是结构体,该结构体的类型通过结构体类型设置单元451预先设置。验证结果生成单元456根据监测存储器控制器42所产生的监测事务以及测试用 例产生器传输的控制事务检测存储器控制器42是否正确执行总线操作,当接收到测试用 例产生器产生的控制事务中的总线操作中有读操作时,将从队列中存储的结构体中或者从 存储器中读取的与所述读操作中的读取地址相同的地址中存储的数据与通过所述读操作 读取的数据进行比较,如果两者相同,表示存储器控制器工作正常。具体过程如下,检测测 试用例产生器产生的总线操作(打断和被打断的操作)中是否有读操作,当所述总线操作 有读操作时,则首先通过验证结果生成单元456的地址判断子单元检查队列中是否有与所 述读操作的读取地址相同的结构体,如果队列中有与所述读操作的读取地址相同的结构 体,则通过第一验证结果生成子单元从所述结构体中取出与所述读取地址相应的数据与通 过所述读操作读出的数据进行比对,如果两者相同,表示存储器控制器工作正常;如果队列 中没有与所述读操作的读取地址相同的结构体,则通过第二验证结果生成子单元读取存储 器中的与该读取地址相应的数据,与主模块模拟器通过所述读操作读出的数据进行比对, 如果两者相同,表示存储器控制器工作正常。另外,由于结构体是以字节为单位的,所以进 行读操作时可能只有一部分数据可在队列的结构体中找到,另一部分要与直接读取存储器 中的相应地址的数据进行拼接,才能完成所有的读操作数据比对,因此验证结果生成单元 456还包括数据拼接子单元,用于将从队列中存储的结构体中读取的与所述读操作中的读 取地址相同的地址中存储的数据与从存储器中相应的地址读取的数据进行拼接。在本发明实施例中,当记分板接收到测试用例产生器产生的控制事务是将对存储 器进行写操作时,存储即将写入到存储器中的数据以及该数据的存储地址至预先设置类型 的结构体中,并添加到预先设置的队列中,当记分板接收到测试用例产生器产生的控制事 务是将对存储器进行读操作时,将从队列中存储的结构体中或者从存储器中读取的与所述 读操作指令中的读取地址相同的地址中存储的数据与通过所述读操作指令读取的数据进 行比对,若数据相同,则测试通过,该验证方法可以验证在各种总线时序情况下,存储器控 制器能否对存储器进行正确控制。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
一种存储器控制器验证方法,其特征在于,所述方法包括下述步骤记分板根据监测存储器控制器产生的监测事务和测试用例产生器产生的控制事务检测总线操作;当所述总线操作中有写操作时,将所述写操作中的地址和该地址对应的数据写入预先设置类型的结构体中;将生成的结构体存储在队列中;当所述总线操作中有读操作时,将从队列中存储的结构体中或者从存储器中读取的与所述读操作中的读取地址相同的地址中存储的数据与通过所述读操作读取的数据进行比较,如果两者相同,表示存储器控制器工作正常。
2.如权利要求1所述的方法,其特征在于,在所述记分板根据监测存储器控制器产生 的监测事务检测测试用例产生器产生的控制事务中的总线操作的步骤之前,所述方法还包 括下述步骤预先设置结构体类型,所述结构体类型包括一写操作时写入存储器的数据和一所述数 据在存储器中的存储地址,所述数据和存储地址均以字节为单位;预先设置队列,所述队列的存放单位是预先设置类型的结构体。
3.如权利要求1所述的方法,其特征在于,在所述记分板根据监测存储器控制器产生 的监测事务检测测试用例产生器产生的控制事务中的总线操作的步骤之前,所述方法还包 括下述步骤测试用例产生器发送控制事务至主模块模拟器和记分板;主模块模拟器根据所述控制事务产生符合总线时序的操作并将其传送至存储器控制器;通过存储器控制器的接口总线时序监测存储器控制器的总线操作,生成监测事务并传 送至记分板。
4.如权利要求1所述的方法,其特征在于,所述当所述总线操作中有读操作时,将从队 列中存储的结构体中或者从存储器中读取的与所述读操作中的读取地址相同的地址中存 储的数据与通过所述读操作读取的数据进行比较,如果相同,表示存储器控制器工作正常 的步骤具体为检查队列中是否有与所述读操作的读取地址相同的结构体;当队列中有与所述读操作的读取地址相同的结构体时,从所述结构体中取出与所述读 取地址相应的数据与通过所述读操作读出的数据进行比对,如果两者相同,表示存储器控 制器工作正常;当队列中没有与所述读操作的读取地址相同的结构体时,读取存储器中的与该读取地 址相应的数据,与主模块模拟器通过所述读操作读出的数据进行比对,如果两者相同,表示 存储器控制器工作正常。
5.如权利要求1所述的方法,其特征在于,所述将从队列中存储的结构体中或者从存 储器中读取的与所述读操作中的读取地址相同的地址中存储的数据与通过所述读操作读 取的数据进行比较的步骤还包括将从队列中存储的结构体中读取的与所述读操作中的读取地址相同的地址中存储的 数据与从存储器中相应的地址读取的数据进行拼接。
6.一种记分板,其特征在于,所述记分板包括总线操作检测单元,用于根据监测存储器控制器产生的监测事务和测试用例产生器产 生的控制事务检测总线操作;结构体生成单元,用于当所述总线操作中有写操作时,将所述写操作中的地址和该地 址对应的数据写入预先设置类型的结构体中;队列生成单元,用于将生成的结构体存储在队列中;验证结果生成单元,用于将从队列中存储的结构体中或者从存储器中读取的与所述读 操作中的读取地址相同的地址中存储的数据与通过所述读操作读取的数据进行比较,如果 两者相同,表示存储器控制器工作正常。
7.如权利要求6所述的记分板,其特征在于,所述记分板还包括结构体类型设置单元,用于预先设置结构体类型,所述结构体类型包括一写操作时写 入存储器的数据和一所述数据在存储器中的存储地址,所述数据和存储地址均以字节为单 位;队列设置单元,用于预先设置队列,所述队列的存放单位是预先设置类型的结构体。
8.如权利要求6所述的记分板,其特征在于,所述验证结果生成单元包括 地址判断子单元,用于检查队列中是否有与所述读操作的读取地址相同的结构体; 第一验证结果生成子单元,用于当队列中有与所述读操作的读取地址相同的结构体时,从所述结构体中取出与所述读取地址相应的数据与通过所述读操作读出的数据进行比 对,如果两者相同,表示存储器控制器工作正常;第二验证结果生成子单元,用于当队列中没有与所述读操作的读取地址相同的结构体 时,读取存储器中的与该读取地址相应的数据,与主模块模拟器通过所述读操作读出的数 据进行比对,如果两者相同,表示存储器控制器工作正常。
9.如权利要求6所述的记分板,其特征在于,所述验证结果生成单元还包括数据拼接子单元,用于将从队列中存储的结构体中读取的与所述读操作中的读取地址 相同的地址中存储的数据与从存储器中相应的地址读取的数据进行拼接。
10.一种存储器控制器验证系统,其特征在于,所述系统包括权利要求6至9任一项所 述的记分板,所述系统还包括测试用例产生器、主模块模拟器、存储器控制器以及存储器。
全文摘要
本发明适用于存储器控制器技术领域,提供了一种存储器控制器验证系统、方法及记分板,所述存储器控制器验证方法包括下述步骤记分板根据监测存储器控制器产生的监测事务和测试用例产生器产生的控制事务检测总线操作;当所述总线操作中有写操作时,将所述写操作中的地址和该地址对应的数据写入预先设置类型的结构体中;将生成的结构体存储在队列中;当所述总线操作中有读操作时,当从队列中存储的结构体中或者从存储器中读取的数据与从通过所述读操作读取的数据相同时,存储器控制器工作正常。在本发明中,提供的验证方法可以验证在各种总线时序情况下,存储器控制器能否对存储器进行正确控制。
文档编号G06F13/16GK101923494SQ20091010832
公开日2010年12月22日 申请日期2009年6月17日 优先权日2009年6月17日
发明者卿梅, 王恒军, 胡胜发, 赵玉梅 申请人:安凯(广州)微电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1