发明内容
本发明旨在至少在一定程度上解决上述相关技术中的技术问题之一。
为此,本发明的一个目的在于提出一种ECC功能验证方法,该方法具有可控性强、随机性强、验证灵活性高及验证功能全面的优点。
为了实现上述目的,本发明的实施例提出了一种ECC功能验证方法,包括以下步骤:构建验证平台,并接收所述验证平台发送的读/写请求信号;根据所述读/写请求信号,获取当前地址及对应于所述当前地址的原始数据;利用随机函数得到随机数,并将所述随机数作为注入的错误个数,其中,所述错误个数小于或等于所述原始数据的宽度;以及根据所述注入的错误个数对设备进行ECC功能校验。
根据本发明实施例的ECC功能验证方法,在ECC功能验证的过程中,通过获取内存中的正确数据,在将正确数据修改为错误数据后,直接赋值到内存中相应的地址上,从而使得ERROR注入的过程简单化,并可任意修改数据中的任意个比特的值,也可以不做修改,因而随机性强;另外,在进行ECC功能验证的同时,也可以进行正常功能验证,即方便又贴近真实场景该方法具有可控性强、随机性强、验证灵活性高及验证功能全面的优点。
另外,根据本发明上述实施例的ECC功能验证方法还可以具有如下附加的技术特征:
在一些示例中,根据所述注入的错误个数对设备进行ECC功能校验,进一步包括:判断所述注入的错误个数是否为0;以及如果所述注入的错误个数为0,则判定系统正常运行,不进行ECC功能校验。
在一些示例中,还包括:如果所述注入的错误个数为N,则根据所述注入的错误个数N随机得到N个整数A1,…,AN,其中,N≥1;将原始数据队列中第A1至第AN位数据分别与“1”进行异或操作,以对所述第A1至第AN位数据进行修改;以及将修改后的第A1至第AN位数据存入所述原始数据队列中第A1至第AN位数据对应的地址。
在一些示例中,还包括:读取发生数据修改的地址对应的数据,并统计其中的错误个数;如果所述错误个数为1,则将所述发生数据修改的地址对应的数据与原始数据队列中相应地址对应的数据进行比对,并根据所述比对结果进行ECC功能校验。
在一些示例中,所述根据所述比对结果进行ECC功能校验,包括:如果比对结果正确,则判定ECC功能正常;如果比对结果错误,则判定ECC功能异常。
在一些示例中,还包括:如果所述错误个数大于1,则判定ECC功能异常。
在一些示例中,在进行ECC功能校验之后,还包括:依次用原始数据队列中相应地址对应的数据替换发生数据修改的地址对应的数据,并退出验证平台。
在一些示例中,所述验证平台根据时钟周期发送读/写请求信号,其中,当处于时钟上升沿时,发送所述读/写请求信号。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
以下结合附图描述根据本发明实施例的ECC功能验证方法。
图1是根据本发明一个实施例的ECC功能验证方法的流程图。如图1所示,该方法包括以下步骤:
步骤S1:构建验证平台,并接收验证平台发送的读/写请求信号。
具体地说,首先需要构建基础的验证平台,在进行ECC功能验证前,需要保证正常读/写操作的正确性,这样才能判定后续发现的错误是否是由于ECC功能校验引起的。作为具体的示例,验证平台的结构例如图2所示,该验证平台例如由激励模块、参考模型、DUT(Design Under Test,试验设计)和对比模块四部分组成。其中,激励模块用于产生读/写请求信号;参考模型与DUT对应,两者具有相同的功能,通过获取激励,进行相应的操作,并将操作结果传输到对比模块,进而在对比模块中进行该次激励运行的最终结果的正确性判断。
步骤S2:根据读/写请求信号,获取当前地址及对应于当前地址的原始数据。其中,在本发明的一个实施例中,例如验证平台根据时钟周期发送读/写请求信号,其中,当处于时钟上升沿时,发送读/写请求信号。
结合图3所示,例如预先定义三个队列,分别为Addr,Data和Shift_bit,并将获取到的当前地址存储于Addr队列中,将对应于当前地址的原始数据存储于Data队列中。
步骤S3:利用随机函数得到随机数,并将随机数作为注入的错误个数,其中,错误个数小于或等于原始数据的宽度。
结合图3所示,即利用random随机函数,对将要注入的错误(ERROR)的个数进行随机,得到一个随机数,并将该随机数作为最终注入的错误个数,其中,该最终注入的错误个数小于原始数据的宽度。更为具体地,在一些示例中,原始数据的宽度例如为40bit。
步骤S4:根据注入的错误个数对设备进行ECC功能校验。
在本发明的一个实施例中,步骤S4进一步包括:
S202:首先判断注入的错误个数(即得到的随机数的值)是否为0,如果注入的错误个数为0,则跳转至后续步骤S206,即判定系统运行正常,ECC功能正常,不进行ECC功能校验。另一方面,如果随机出的错误个数不为0,则跳转至下述步骤S203。
步骤S203:如果注入的错误个数为N,则根据注入的错误个数N随机得到N个整数A1,…,AN,其中,N≥1。举例说明如下:如果错误(ERROR)个数为1,则随机出1个整数值A0,该值范围小于原始数据宽度40bit。若ERROR个数为N,N大于1,则随机出N个不重复的整数值A0…AN。
步骤S204:将原始数据队列中第A1至第AN位数据分别与“1”进行异或操作,以对第A1至第AN位数据进行修改,并将修改后的第A1至第AN位数据存入所述原始数据队列中第A1至第AN位数据对应的地址。举例说明如下:若ERROR个数为1,则将原始数据第A0位数据与“1”进行异或操作,若原始数据为0,异或操作后的结果为1;若原始数据为1,异或操作后的结果为0,从而实现了数据修改,并将修改后的数据直接通过赋值的方式存入内存中。当ERROR个数为N(N>1)时,与ERROR个数为1时类似,在此不再重复说明。
进一步地,在一些示例中,该方法还包括:
步骤S205:读取发生数据修改的地址对应的数据,并统计其中的错误个数,即检测实际ERROR的个数,并进一步据此进行ECC功能的验证。
步骤S206:如果错误个数为1,则将发生数据修改的地址对应的数据与原始数据队列中相应地址对应的数据进行比对,并根据比对结果进行ECC功能校验。具体地说,如果比对结果正确,则判定ECC功能正常;如果比对结果错误,则判定ECC功能异常。换言之,结合图3,即验证平台发送的激励再次读取修改过数据的地址,当ERROR个数为1时,ECC校验功能被触发,将读取到的ECC纠正后的数据与队列Data中的原始数据进行对比,若对比正确,则证明ECC功能正确性,同时删除对应三个队列中的地址,数据及Shift_bit,然后跳转步骤S207;若对比错误,或系统出现蓝屏,死锁情况,则说明ECC校验功能失败,Shift_bit可以辅助进行调试,Shift_bit可以对调试起到关键性用途。
进一步地,如图3所示,如果错误个数大于1,则判定ECC无法修复,则判定ECC功能异常,系统异常。
步骤S207:在进行ECC功能校验之后,还包括:依次用原始数据队列中相应地址对应的数据替换发生数据修改的地址对应的数据,并退出验证平台。换言之,即在激励发送结束后,验证平台退出前,如果Addr,Data及Shift_bit这三个队列不为空,则说明随机激励没有再次读取被修改过的地址,则依次将原始数据赋值到内存相应地址中,并退出验证平台。此处还原数据的目的是当验证环境最后还有全地址内存空间的对比操作时,可以避免验证的错误,保证对比的正确性。另外,通过直接赋值的方式修改内存中的值,具有简单便捷的优点。
综上,本发明的实施例一方面利用内存的读/写通道上的读/写使能信号作为注入时机,获取当前操作下的地址,以及地址上对应的数据,将获取到的数据修改后直接赋值到内存中,解决了需要占用总线资源的问题。
另一方面,在修改数据前,加入了一个随机数,根据该随机数的值判定是否本次操作需要ERROR注入,以及ERROR注入的个数为多少,解决了正常功能测试与ECC功能测试的混合问题,增强了随机性。
进一步地,本发明的实施例中设置有一个独立于中断的比较模型,使得DUT能够随机加入中断,充分验证中断对DUT的影响,能够不受中断的影响进行数据对比,保证验证结果的正确性。
根据本发明实施例的ECC功能验证方法,在ECC功能验证的过程中,通过获取内存中的正确数据,在将正确数据修改为错误数据后,直接赋值到内存中相应的地址上,从而使得ERROR注入的过程简单化,并可任意修改数据中的任意个比特的值,也可以不做修改,因而随机性强;另外,在进行ECC功能验证的同时,也可以进行正常功能验证,即方便又贴近真实场景该方法具有可控性强、随机性强、验证灵活性高及验证功能全面的优点。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。