一种存储单元的仿真验证方法、装置和设备与流程

文档序号:14836047发布日期:2018-06-30 12:26阅读:189来源:国知局
一种存储单元的仿真验证方法、装置和设备与流程

本发明涉及仿真验证技术领域,尤其涉及一种存储单元的仿真验证方法、装置和设备。



背景技术:

在芯片设计过程中,通常情况下设计代码采用分层级、多模块设计,不同的模块会设置有至少一个存储单元,例如存储器memory。故在芯片设计过程中,不仅需要编写各个模块的代码,还需要编写各个存储单元的代码,以实现各个存储单元的功能,而存储单元通常用于实现存储数据,或从其内读出数据等功能。芯片开发过程通常包含编写设计代码和仿真验证设计代码两个步骤,因此,在设计人员编写完设计代码时,需要验证人员对设计代码进行验证,例如,在对各个模块的存储单元进行验证时,需要验证存储单元的写入和读出功能是否正常,以及写入和读出数据是否正确等。

现有技术中在对各个模块的存储单元进行验证时,需要为各个模块的存储单元单独设计验证环境,即针对任一存储单元需要单独为该存储单元单独编写测试代码,然后将该存储单元的设计代码和测试代码进行编译处理得到可执行文件,基于此对该存储单元的设计代码进行仿真验证,如此操作会存在以下缺点:(1)人工编码繁琐且重复,耗时较多,自动化程度低且造成验证人员工作效率低;(2)由于为各个模块的存储单元单独设计了验证环境,导致各个验证环境需要单独仿真,且仿真时间较长,尤其当多个仿真验证环境同时运行时,还会加大机器资源的开销;(3)验证环境需要单独维护,维护工作繁琐且容易出错,人工干预度较高。

综上所述,在对存储单元进行仿真验证时,如何避免设计单独的验证环境,减少仿真验证时间,以及避免多个模块的存储单元同时仿真时导致的机器资源开销较大问题的发生,同时减少验证人员的编写负担和提高验证人员的工作效率是亟待解决的技术问题之一。



技术实现要素:

本发明实施例提供一种存储单元的仿真验证方法、装置和设备,用以解决现有技术中存在的需要为各个存储单元单独设计验证环境、仿真验证时间较长及验证人员的工作效率低等问题。

第一方面,本发明实施例提供一种存储单元的仿真验证方法,包括:

在设计代码层级结构中确定待测试存储模块,所述待测试存储模块包括存储模型的设计代码和测试代码,所述存储模型适用于芯片设计中所有存储单元;所述待测试存储模块还包括用于指示所述测试代码与所述设计代码之间是否连接的选择语句;

对所述待测试存储模块进行实例化;

对所述选择语句进行配置使所述设计代码与所述测试代码连接,并根据配置结果,对实例化后的所述存储模型的设计代码进行仿真验证。

较佳地,所述待测试存储模块包括存储模型设计模块和存储模型测试模块以及用于指示测试代码与设计代码之间是否连接的选择语句,所述存储模型设计模块包括存储模型的设计代码,所述存储模型测试模块包括存储模型的测试代码,在设计代码层级结构中确定待测试存储模块之前,所述方法还包括:

将所述存储模型设计模块和所述存储模型测试模块以及用于指示测试代码与设计代码之间是否连接的选择语句封装成所述待测试存储模块。

优选地,所述待测试存储模块为所述存储模型设计模块,所述存储模型设计模块包括存储模型的设计代码和存储模型的测试代码以及用于控制测试代码与设计代码是否连接的选择语句;在设计代码层级结构中确定待测试存储模块之前,所述方法还包括:

将所述存储模型的测试代码以及用于控制测试代码与设计代码是否连接的选择语句添加到所述存储模型的设计代码中。

可选地,所述待测试存储模块还包括用于配置存储模型设计模块和存储模型测试模块包含的参数的参数配置接口,在设计代码层级结构中确定待测试存储模块之前,所述方法还包括:

将所述参数配置接口封装到所述待测试存储模块中。

可选地,所述存储模型设计模块包括用于配置存储模型设计模块和存储模型测试模块包含的参数的参数配置接口,在设计代码层级结构中确定待测试存储模块之前,所述方法还包括:

将所述参数配置接口添加到所述存储模型的设计代码中。

第二方面,本发明实施例提供一种存储单元的仿真验证装置,包括:

确定单元,用于在设计代码层级结构中确定待测试存储模块,所述待测试存储模块包括存储模型的设计代码和测试代码,所述存储模型适用于芯片设计中所有存储单元;所述待测试存储模块还包括用于指示所述测试代码与所述设计代码之间是否连接的选择语句;

处理单元,用于对所述待测试存储模块进行实例化;

仿真验证单元,用于对所述选择语句进行配置使所述设计代码与所述测试代码连接,并根据配置结果,对实例化后的所述存储模型的设计代码进行仿真验证。

较佳地,所述待测试存储模块包括存储模型设计模块和存储模型测试模块以及用于指示测试代码与设计代码之间是否连接的选择语句,所述存储模型设计模块包括存储模型的设计代码,所述存储模型测试模块包括存储模型的测试代码,以及所述装置,还包括:

第一封装单元,用于在所述确定单元在设计代码层级结构中确定待测试存储模块之前,将所述存储模型设计模块和所述存储模型测试模块以及用于指示测试代码与设计代码之间是否连接的选择语句封装成所述待测试存储模块。

优选地,所述待测试存储模块为所述存储模型设计模块,所述存储模型设计模块包括存储模型的设计代码和存储模型的测试代码以及用于控制测试代码与设计代码是否连接的选择语句;以及所述装置,还包括:

第一添加单元,用于在所述确定单元在设计代码层级结构中确定待测试存储模块之前,将所述存储模型的测试代码以及用于控制测试代码与设计代码是否连接的选择语句添加到所述存储模型的设计代码中。

可选地,所述待测试存储模块还包括用于配置存储模型设计模块和存储模型测试模块包含的参数的参数配置接口,以及所述装置,还包括:

第二封装单元,用于在所述确定单元在设计代码层级结构中确定待测试存储模块之前,将所述参数配置接口封装到所述待测试存储模块中。

可选地,所述存储模型设计模块包括用于配置存储模型设计模块和存储模型测试模块包含的参数的参数配置接口,以及所述装置,还包括:

第二添加单元,用于在所述确定单元在设计代码层级结构中确定待测试存储模块之前,将所述参数配置接口添加到所述存储模型的设计代码中。

第三方面,本发明实施例提供一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行本申请提供的存储单元的仿真验证方法。

第四方面,本发明实施例提供一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请提供的存储单元的仿真验证方法。

本发明有益效果:

本发明实施例提供的存储单元的仿真验证方法、装置和设备,在设计代码层级结构中确定待测试存储模块,所述待测试存储模块包括存储模型的设计代码和测试代码,待测试存储模块适用于芯片设计中所有存储单元;所述待测试存储模块还包括用于指示所述测试代码与所述设计代码之间是否连接的选择语句;对所述待测试存储模块进行实例化;对所述选择语句进行配置使所述设计代码与所述测试代码连接,并根据配置结果,对实例化后的所述存储模型的设计代码进行仿真验证。采用本发明提供的方法,可以利用统一的、可重复利用的测试代码对所有的存储单元进行验证,不需要为每个存储单元编写设计代码和测试代码,存储模型的设计代码和测试代码适应于所有的存储单元不仅减少了仿真验证时间,还减少了验证人员的编写负担,同时提高了验证人员的工作效率。

由于本发明中的存储模型的设计代码适用于所有的存储单元,相应的,存储模型的测试代码也适于所有的存储单元,通过实例化可以得到不同存储单元的设计代码和相应存储单元的测试代码,由此可以将本发明中的存储模型的设计代码应用于不同的需要使用存储单元的模块中,进而基于实例化后的测试代码实现对实例化后的存储模型的设计代码的仿真验证,可移植性较强,同时验证效率得到了大大提升。

由于本发明中采用的测试代码适用于所有的存储单元,不需要设计人员或验证人员单独编写,本发明将存储模型的测试代码和存储模型的设计代码都封装到待测试存储模块中,只需要在使用存储单元的模块中将待测试存储模块进行实例化,具有较高的可重用性;同时也不需要设计人员或验证人员单独维护,维护时只需要修改一个测试代码即可实现对实例化后的存储模型的设计代码的仿真验证,有效降低了设计人员或验证人员的工作量。

进一步地,本发明在待测试存储模块中还包括用于指示存储模型的测试代码与存储模型的设计代码之间是否连接的选择语句,通过配置选择语句可以配置待测试存储模块的设计代码与测试代码,实现对待测试存储模块的验证;如果不需要对待存储模块验证,则通过配置选择语句还可以配置待测试存储模块的设计代码与测试代码不连接,而使待测试存储模块的设计代码与使用该待测试存储模块的模块连接,实现待测试存储模块与外部模块的正常连接。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1a为本发明实施例一提供的存储单元的仿真验证方法的流程示意图;

图1b为本发明实施例一提供的待测试存储模块的结构示意图之一;

图1c为本发明实施例一提供的所述待测试存储模块中选择语句的结构示意图;

图2a为本发明实施例一提供的采用第一种方式封装得到的待测试存储模块的结构示意图之一;

图2b为本发明实施例一提供的采用第一种方式封装得到的待测试存储模块的结构示意图之二;

图2c为本发明实施例一提供的采用第一种方式封装得到的待测试存储模块的结构示意图之三;

图3a为本发明实施例一提供的采用第二种方式封装得到的待测试存储模块的结构示意图之一;

图3b为本发明实施例一提供的采用第二种方式封装得到的待测试存储模块的结构示意图之二;

图3c为本发明实施例一提供的采用第二种方式封装得到的待测试存储模块的结构示意图之三;

图4a为本发明实施例一提供的基于系统级对存储单元进行仿真验证的结构示意图;

图4b为本发明实施例一提供的基于单元级对存储单元进行仿真验证的流程示意图;

图4c为本发明实施例一提供的基于单元级对存储单元进行仿真验证的原理示意图;

图5为本发明实施例二提供的存储单元的仿真验证装置的结构示意图;

图6为本发明实施例四提供的实施存储单元的仿真验证方法的电子设备的硬件结构示意图。

具体实施方式

本发明实施例提供的存储单元的仿真验证方法、装置和设备,用以解决现有技术中存在的需要为各个存储单元单独设计验证环境、仿真验证时间较长及验证人员的工作效率低等问题。

通常情况下,设计代码分层设计,设计代码分层设计后形成设计代码层级结构,层级结构中的一个节点,可以称为一个模块。一个模块,可以为功能模块如IP核,还可以为存储单元,如所有RAM等。设计代码文件可以将多个模块的代码或一个模块的代码存储在一个文件中,一个设计代码文件可以包括同一层的各个模块的代码,也可以包括不同层的模块的代码,也可以是只包括一个模块的代码,也可以包括相互之间没有连接关系的模块的代码。

本发明实施针对所有存储单元的设计代码编写了一段统一的存储模型的设计代码,然后通过实例化存储模型的方式得到不同存储单元的设计代码。易知,存储单元一般是为设计代码层级结构中模块提供存储功能,例如模块可以从存储单元中读取和/或写入数据。而存储单元由大小之分,故可能存在数据位宽、地址位宽以及深度等的不同。因此,为了得到不同的存储单元,本发明提供的存储模型中的设计代码中利用参数来代替具体值,然后通过对该参数赋值得到存储单元,即赋予不同的参数值可以得到不同的存储单元。而实例化是对存储模型的设计代码中参数进行赋值的步骤,由此可以对相同的存储模型的设计代码中的参数赋予不同的参数值,由此可以得到不同的存储单元的设计代码。所述参数值可以是存储模型的设计代码中输入端和/或输出端位宽的改变等,当然还可以改变其他参数,具体可以根据实际情况而定。

以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

实施例一

如图1a所示,为本发明实施例一提供的存储单元的仿真验证方法的流程示意图,包括以下步骤:

S11、在设计代码层级结构中确定待测试存储模块。

其中,所述待测试存储模块包括存储模型的设计代码和测试代码,存储模型适用于芯片设计中所有存储单元;所述待测试存储模块还包括用于指示所述存储模型的测试代码与所述存储模型的设计代码之间是否连接的选择语句。

具体地,本发明实施例中的存储模型的设计代码和测试代码是统一的,适用于所有存储单元。根据所有存储单元的特征建立一个存储模型,通过实例化时的参数配置,产生不同的存储单元,这样针对该存储模型编写的测试代码也适于所有存储单元。具体地,存储模型的设计代码和测试代码中,将存储单元的所有特征中可以通过配置或赋值得到具体值的特征采用参数形式替代,为存储模型的参数赋于不同的值或配置不同的值后,得到不同存储单元的设计代码和测试代码。通过对存储模型的设计代码中的参数赋予不同的参数值,可以得到不同的存储单元,也就是说存储单元是对存储模型的设计代码中的参数进行赋值之后得到的。同样测试代码也是统一的,也可以对测试代码中的参数赋予不同的参数值,但需要与验证的存储单元赋予相同的参数值,如该参数可以但不限于为数据位宽、地址位宽和深度等。在对某一存储单元进行验证时,需要对存储模型的设计代码和测试代码赋予相同的位宽值,进而可以实现利用该测试代码对该存储单元的仿真验证。本发明采用统一的存储模型的设计代码,对设计代码层级结构中的各个存储单元进行模型化设计,将设计代码层级结构中用到的存储单元都替换为存储模型的设计代码,由此可以避免设计人员或验证人员单独对各个存储单元进行设计和后期维护,大大减轻了设计人员和验证人员的工作量。

具体地,所述待测试存储模块的结构可以参考图1b所示,图1b中的选择语句用于指示所述测试代码与所述设计代码之间是否连接,较佳地,所述选择语句可以参考图1c所示,所述选择语句相当于一个条件选择开关,该语句包含select控制信号,当select的值被置为1时,则存储模型的设计代码与测试代码连接,即进入仿真验证模式,在该模式下可以实现对实例化后的存储模型的设计代码的仿真验证;当select的值被置为0时,则所述存储模型的设计代码与其它模块的接口信号相连(这里的其它模块指的是需要使用存储单元的模块),即进入正常工作模式即不对存储模型进行验证,在该模式下可以实现实例化后的存储模型的设计代码的功能,也即实现存储单元的功能,如实现从存储单元读取和/或写入数据等功能。

具体地,所述选择语句中的select值是在仿真验证时编写的,当要对实例化后的存储模型的设计代码进行验证时,则在仿真验证环境中将选择语句中的select的值置为1;否则置为0。

具体地,存储模型的测试代码是针对存储模型的设计代码设计的,存储模型的设计代码在实例化后可产生不同的存储单元,存储模型的测试代码在实例后对实例化后的存储模型的设计代码所对应的存储单元仿真验证。

具体实施时,在执行本发明提供的验证方法之前,待测试存储模块的封装方式有两种,可以由设计人员封装也可以由验证人员封装,以下分别详细介绍之:

封装待测试存储模块的第一种方式:存储模型的设计代码可以封装为一个独立模块,存储模型的测试代码也封装为一个独立模块。

由于设计人员主要是编写设计代码,设计人员在编写各个存储单元时,利用存储模型的设计代码代替不可配置的存储单元,故设计人员很容易知道各个存储模型的设计代码的位置;此外,为了方便查看,设计人员还可以将设计代码层级结构中各个存储模型的设计代码的标识存储在一个文件列表中,该列表中可能存储有各个存储模型的设计代码的名称及其对应的模块的模块名称等,然后将文件列表交付给验证人员。

较佳地,验证人员编写存储模型的测试代码并将其封装成一个独立模块即存储模型测试模块,设计人编写存储模型的设计代码并封装成一个独立模块即存储模型设计模块,此种情况下,所述待测试存储模块中包括存储模型设计模块和存储模型测试模块以及用于指示测试代码与设计代码之间是否连接的选择语句,所述存储模型设计模块包括存储模型的设计代码,所述存储模型测试模块包括存储模型的测试代码。以及在执行步骤S11之前,即在设计代码层级结构中确定待测试存储模块之前,所述方法还包括:

将所述存储模型设计模块和所述存储模型测试模块以及用于指示测试代码与设计代码之间是否连接的选择语句封装成所述待测试存储模块。

具体实施时,所述待测试存储模块的结构可以参考图2a所示,图2a中的待测试存储模块中的存储模型设计模块包括存储模型的设计代码,所述存储模型的测试模块包括存储模型的测试代码。然后将所述存储模型设计模块和所述存储模型测试模块以及所述选择语句共同封装成所述待测试存储模块。

具体地,根据设计阶段交付的文件列表,可以获取设计代码层级结构中的存储模型的设计代码。较佳地,由于设计代码层级结构中用到的存储单元数目较多,可能存在多个模块用到同一种存储单元,而针对这种存储单元可能只需验证一个即可,因此为了减轻验证存储单元的工作量,可以将文件列表中需要进行验证的存储模型的设计代码进行标注,由此在封装存储模型测试模块时可以获知各个需要验证的存储模型的设计代码,现有的标注方法均适用于本发明。当某个模块需要使用存储单元时,只需要例化所述待测试存储模块并完成连线即可,而且对于整个设计代码层级结构来说,使用存储单元的模块并不关注存储单元的内部是否集成了测试代码,只需要在使用的地方例化连线即可。

测试代码为验证人员针对存储模型的设计代码预先编写好的,由于各个模块对应的存储单元的功能大多相同,因此只需设计一个可重复利用的测试代码,然后利用该测试代码对各个实例化后的存储模型的设计代码进行验证即可,由此可以避免验证人员编码繁琐和重复的问题发生,同时还能降低验证人员的编写负担。

较佳地,由于设计代码层级结构中各个模块使用的存储单元并不是完全相同,例如存储单元之间可能存在位宽等的不同,故本发明提出在所述待测试存储模块中设置参数配置接口,用于在实例化待测试模块时为存储模型配置参数。因此,所述待测试存储模块还包括用于配置存储模型设计模块和存储模型测试模块包含的参数的参数配置接口,在设计代码层级结构中确定待测试存储模块之前,所述方法还包括:

将所述存储模型设计模块和所述存储模型测试模块、参数配置接口以及用于指示测试代码与设计代码之间是否连接的选择语句封装成所述待测试存储模块。

具体实施时,可以参考图2b所示的具有参数配置接口的待测试存储模块的结构示意图,可以根据参数配置接口对各个存储模型的设计代码和测试代码中的参数进行配置,例如对位宽进行配置,操作简便。

参考图2c所示,图2c中的存储模型测试模块是对统一的测试代码进行实例化得到的,同样图2c中的存储模型设计模块是对设计人员编写的统一的存储模型的设计代码进行实例化得到的。图2c中module1模块中的m1模块、module2模块中的m2模块和module3模块中的m3模块均为待测试存储模块,且m1模块、m2模块和m3模块内部结构与图2c中待测试存储模块的结构相同。也就是说图2c中相当于设计代码层级结构中包含了四个存储单元。然后采用本发明提供的方法对存储单元进行验证之前,采用图2a所示的方式封装待测试存储模块得到四个相同的待测试存储模块,然后再对得到的待测试存储模块进行实例化,再执行步骤S13实现对四个存储单元的仿真验证。

由于无需对存储模型的设计代码进行改变,由此避免了在存储模型的设计代码中添加测试代码和选择语句时发生错误等情况的发生;同时也减去了设计人员的工作负担。此外,虽然验证人员需要封装得到一个待测试存储模块,但相比于现有技术中需要单独为各个存储单元编写测试代码来说,验证人员的工作量也是大大减少的。

封装待测试存储模块的第二种方式:存储模型的设计代码和测试代码封装为一个模块:

设计人员将存储模型的设计代码和测试代码封装成一个模块即为所述存储模型设计模块,所述存储模型设计模块包括存储模型的设计代码和存储模型的测试代码以及用于控制测试代码与设计代码是否连接的选择语句;在设计代码层级结构中确定待测试存储模块之前,所述方法还包括:

将所述存储模型的测试代码以及用于控制测试代码与设计代码是否连接的选择语句添加到所述存储模型的设计代码中。

具体实施时,基于设计人员在代码设计阶段得到的待测试存储模块的结构示意图可参考图3a所示,将测试代码和选择语句添加到所述存储模型的设计代码中,得到的即为待测试存储模块,即添加了测试代码和选择语句的存储模型的设计代码。

具体实施时,基于设计人员在代码设计阶段得到的待测试存储模块,由于设计人员主要编写设计代码,包括编写存储模型的设计代码,在对存储单元进行验证时,相对于验证人员,设计人员对存储单元的了解较多,对整个层级结构的熟识度较高,故设计人员可以直接将编写的测试代码和选择语句添加至需要存储模型的设计代码中,验证人员只需要执行验证步骤即可,大大减少了验证人员的工作量。

较佳地,由于设计代码层级结构中各个模块对应的存储单元并不是完全相同,例如存储单元之间可能存在位宽等的不同,同样需要在所述待测试存储模块中设置一个参数配置接口,即:所述存储模型设计模块包括用于配置存储模型设计模块和存储模型测试模块包含的参数的参数配置接口,在设计代码层级结构中确定待测试存储模块之前,所述方法还包括:

将所述存储模型的测试代码、参数配置接口以及用于控制测试代码与设计代码是否连接的选择语句添加到所述存储模型的设计代码中。

参考图3b所示,在对各个存储单元进行仿真验证之前,在实例化时可以通过参数配置接口对各个存储模型的设计代码和测试代码中的参数的进行配置,例如对存储模型的设计代码和测试代码的位宽进行配置,操作简便。通过参数配置接口,只需赋予不同的参数值即可得到不同的存储单元,避免了设计人员对存储单元的单独设计,大大减少了设计人员的设计工作量。

参考图3c所示,其为基于设计人员在代码设计阶段的待测试存储模块的结构示意图,图3c中的存储模型设计模块即为待测试存储模块,且所述存储模型设计模块中的测试代码和存储模型的设计代码均由设计人员编写得到。此外,图3c中module1模块中的m1模块、module2模块中的m2模块和module3模块中的m3模块均为存储模型设计模块,且m1模块、m2模块和m3模块内部结构与图3c中存储模型设计模块的内部结构相同。也就是说图3c中相当于设计代码层级结构中包含了四个存储单元,在对这四个存储单元进行仿真验证时,采用本发明提供的方法对存储单元进行验证之前,基于第二种封装方式得到四个相同的待测试存储模块,然后再对得到的待测试存储模块进行实例化,再执行步骤S13实现对四个存储单元的仿真验证。

S12、对所述待测试存储模块进行实例化。

具体实施时,实例化是指对所述存储模型的设计代码和测试代码中的参数进行配置,例如对位宽进行赋值等。待测试存储模块通过实例化可以产生不同的存储单元的设计代码和测试代码。实例化可具体参见图2c和图3c部分的描述。

此外,在集成测试或系统测试阶段,使用待测试存储模块的模块即待存储模块的上一层模块也参加编译,因此,实例化还可用于对待存储模块的上一层模块所包括的各个模块进行布线连接。

S13、对所述选择语句进行配置使所述设计代码与所述测试代码连接,并根据配置结果,对实例化后的所述存储模型的设计代码进行仿真验证。

可以在仿真验证环境中编写配置语句,对待测试存储模块中用于指示存储模型的测试代码与存储模型的设计代码之间是否连接的选择语句进行配置,使得存储模型的测试代码与存储模型的设计代码连接,以用于对实例化后的存储模型仿真验证。具体地,仿真验证可以分为系统级验证、集成级验证和单元级验证。系统级验证,需要对芯片的整个设计代码执行编译处理。集成级验证是对多个测试对象验证,需要多个测试对象执行编译处理。单元级验证是对一个测试对象验证。需要对多个存储单元进行验证时可以采用集成级验证。如果对多个存储单元验证时还需要结合其它模块的设计代码执行情况,可以采用系统级验证。

系统级和集成级仿真验证阶段:

在系统级或集成级仿真验证阶段验证存储单元时,以设计代码层级结构包含三个层级为例进行说明,且待测试存储模块均处于第三层级,在对存储单元进行仿真验证之前,参考图4a所示,在仿真验证环境中编写配置语句,对多个待测试存储模块中用于指示存储模型的测试代码与存储模型的设计代码之间是否连接的选择语句进行配置。

具体地,在系统级仿真验证阶段或集成级仿真验证,如果采用第一种封装方式得到的待测试存储模块,则图4a中的待测试存储模块的内部结构可以参考图2b所示,若采用第二种封装方式得到的待测试存储模块,则图4a中的待测试存储模块的内部结构可以参考图3b所示。

具体实施时,无论待测试存储模块采用哪种封装方式,将待测试存储模块实例化产生不同的存储单元,在对设计代码层级结构中各个存储单元进行仿真验证时,通过在仿真验证环境上,例如testbench中,为各个待测试存储模块编写配置语句来实现,所述配置语句用于对所述选择语句进行赋值,即对select进行赋值。

例如,当同时对图4a中n个存储单元进行仿真验证时,需要在仿真验证环境中编写n个配置语句,以实现将选择语句中的select的配置为1,然后通过接口传输至各个选择语句,由此当各个选择语句中的select值置为1后,相当于导通了测试代码与存储模型的设计代码之间的连线,由此即可通过测试代码实现对实例化后的所述存储模型的设计代码的仿真验证,也即实现对实例化后得到的存储单元的仿真验证。具体地,测试代码中包含driver、generator、checker、monitor和/或reference model。通过测试代码中的checker即可获知实例化后得到的存储单元的仿真验证结果。

具体地,在对多个存储单元进行系统级仿真验证或集成级仿真验证时,各个待测试存储模块的配置语句的撰写格式为:以任一待测试存储模块位于第i层级为例进行说明,则该待测试存储模块的配置语句的格式为:“待测试存储模块从属的第一层级模块名称.待测试存储模块从属的第二层级模块名称.…….所述待测试存储模块从属的第i-2层级模块名称.所述待测试存储模块从属的第i-1层级模块名称.待测试存储模块的模块名称.select=”。若要对存储单元进行仿真验证,则将等号后边写“1”;否则写“0”。

例如,对图4a所示的设计代码层级结构中的实例化后得到的存储单元1~3进行仿真验证时,待测试存储模块1~n分别记为m1~mn,则各个待测试存储模块对应的配置语句的格式如下所示:

module1.m1.select=1;

module1.m2.select=1;

module1.m3.select=1;

module1.m4.select=0;

……

module1.mn.select=0;

本发明实施例基于系统级或集成级对存储单元进行仿真验证时,只需要基于同一个仿真验证环境,通过设置各个需要验证的待测试存储模块的配置语句,即可实现对设计代码层级结构中各个存储单元的仿真验证,有效解决了现有技术中需要为各个存储单元单独设计仿真验证环境的问题,同时由于本发明只需基于一个仿真验证环境可以同时验证设计代码层级结构中至少一个存储单元,无需基于多个仿真验证环境,有效解决了现有技术中当多个仿真验证环境同时运行时所导致的机器资源的开销较大的问题;此外,由于测试代码是统一的,验证人员只需对配置语句进行操作,有效降低了验证人员的工作量,同时提供了验证人员的工作效率。

单元级验证阶段:

较佳地,本发明实施例一还提供了单独对存储单元进行仿真验证的方法,即基于单元级对存储单元进行仿真验证时,需要将待测试存储模块从设计代码层级结构中提取出来,然后按照图4b所示的流程对存储单元进行仿真验证,包括以下步骤:

S21、在仿真验证环境对待测试存储模块进行实例化。

S22、在仿真验证环境对所述待测试存储模块中用于指示测试代码与设计代码之间连接关系的选择语句进行配置。

S23、基于配置结果,对实例化后的所述存储模型的设计代码进行仿真验证。

参考图4c为基于单元级对存储单元进行仿真验证的原理示意图,在对存储单元进行仿真验证之前,需要在仿真验证环境中对编写用于对选择语句进行配置的配置语句,然后再对所述存储单元进行仿真验证。可以理解为,当对设计代码层级结构中的n个存储单元进行仿真验证时,需要得到n个如图4c所示的仿真验证环境,然后分别运行实现对n个存储单元的仿真验证,n小于基于单元级设置的预设存储单元数量。例如,当只需对设计代码层级结构中两个存储单元进行仿真验证时,由此验证的存储单元数量较少,如果执行系统级验证需要整个设计代码层级结构参与编译处理,这样可能会浪费时间,如果对这两个存储单元执行单元级的仿真验证,则只需将需要验证的两个待测试存储模块从设计代码层级结构中提取出来,然后分别执行步骤S21~S23的仿真验证过程,在此条件下只需要对待测试存储模块执行编译处理,相比于编译整个设计代码层级结构,大大减少了仿真验证时间。

具体地,在单元级仿真验证阶段,采用第一种封装方式,则图4c中的待测试存储模块的内部结构可以参考图2b所示,采用第二种封装方式,则图4c中的待测试存储模块的内部结构可以参考图3b所示。

具体地,在对图4c所示的存储单元进行仿真验证时,通过编写配置语句即可实现,其格式如下:“待测试存储模块.select=”。例如,图4c所示的待测试存储模块的模块名称记为m0,则在对图4c中的存储单元进行仿真验证时,需要将配置语句设置为:m0.select=1。

本发明实施例提供的存储单元的仿真验证方法,在设计代码层级结构中确定待测试存储模块,所述待测试存储模块包括存储模型的设计代码和测试代码,待测试存储模块适用于芯片设计中所有存储单元;所述待测试存储模块还包括用于指示所述测试代码与所述设计代码之间是否连接的选择语句;对所述待测试存储模块进行实例化;对所述选择语句进行配置使所述设计代码与所述测试代码连接,并根据配置结果,对实例化后的所述存储模型的设计代码进行仿真验证。采用本发明提供的方法,可以利用统一的、可重复利用的测试代码对所有的存储单元进行验证,不需要为每个存储单元编写设计代码和测试代码,存储模型的设计代码和测试代码适应于所有的存储单元不仅减少了仿真验证时间,还减少了验证人员的编写负担,同时提高了验证人员的工作效率。

由于本发明中的存储模型的设计代码适用于所有的存储单元,相应的,存储模型的测试代码也适于所有的存储单元,通过实例化可以得到不同存储单元的设计代码和相应存储单元的测试代码,由此可以将本发明中的存储模型的设计代码应用于不同的需要使用存储单元的模块中,进而基于实例化后的测试代码实现对实例化后的存储模型的设计代码的仿真验证,可移植性较强,同时验证效率得到了大大提升。

由于本发明中采用的测试代码适用于所有的存储单元,不需要设计人员或验证人员单独编写,本发明将存储模型的测试代码和存储模型的设计代码都封装到待测试存储模块中,只需要在使用存储单元的模块中将待测试存储模块进行实例化,具有较高的可重用性;同时也不需要设计人员或验证人员单独维护,维护时只需要修改一个测试代码即可实现对实例化后的存储模型的设计代码的仿真验证,有效降低了设计人员或验证人员的工作量。

进一步地,本发明在待测试存储模块中还包括用于指示存储模型的测试代码与存储模型的设计代码之间是否连接的选择语句,通过配置选择语句可以配置待测试存储模块的设计代码与测试代码,实现对待测试存储模块的验证;如果不需要对待存储模块验证,则通过配置选择语句还可以配置待测试存储模块的设计代码与测试代码不连接,而使待测试存储模块的设计代码与使用该待测试存储模块的模块连接,实现待测试存储模块与外部模块的正常连接。

实施例二

基于同一发明构思,本发明实施例中还提供了一种存储单元的仿真验证装置,由于上述装置解决问题的原理与存储单元的仿真验证方法相似,因此上述装置的实施可以参见方法的实施,重复之处不再赘述。

如图5所示,为本发明实施例提供的存储单元的仿真验证装置的结构示意图,包括确定单元41、处理单元42和仿真验证单元43,其中:

确定单元41,用于在设计代码层级结构中确定待测试存储模块,所述待测试存储模块包括存储模型的设计代码和测试代码,待测试存储模块适用于芯片设计中所有存储单元;所述待测试存储模块还包括用于指示所述测试代码与所述设计代码之间是否连接的选择语句;

处理单元42,用于对所述待测试存储模块进行实例化;

仿真验证单元43,用于对所述选择语句进行配置使所述设计代码与所述测试代码连接,并根据配置结果,对实例化后的所述存储模型的设计代码进行仿真验证。

较佳地,所述待测试存储模块包括存储模型设计模块和存储模型测试模块以及用于指示测试代码与设计代码之间是否连接的选择语句,所述存储模型设计模块包括存储模型的设计代码,所述存储模型测试模块包括存储模型的测试代码,以及所述装置,还包括:

第一封装单元,用于在所述确定单元41在设计代码层级结构中确定待测试存储模块之前,将所述存储模型设计模块和所述存储模型测试模块以及用于指示测试代码与设计代码之间是否连接的选择语句封装成所述待测试存储模块。

优选地,所述待测试存储模块为所述存储模型设计模块,所述存储模型设计模块包括存储模型的设计代码和存储模型的测试代码以及用于控制测试代码与设计代码是否连接的选择语句;以及所述装置,还包括:

第一添加单元,用于在所述确定单元41在设计代码层级结构中确定待测试存储模块之前,将所述存储模型的测试代码以及用于控制测试代码与设计代码是否连接的选择语句添加到所述存储模型的设计代码中。

较佳地,所述待测试存储模块还包括用于配置存储模型设计模块和存储模型测试模块包含的参数的参数配置接口,以及所述装置,还包括:

第二封装单元,用于在所述确定单元41在设计代码层级结构中确定待测试存储模块之前,将所述参数配置接口封装到所述待测试存储模块中。

优选地,所述存储模型设计模块包括用于配置存储模型设计模块和存储模型测试模块包含的参数的参数配置接口,以及所述装置,还包括:

第二添加单元,用于在所述确定单元41在设计代码层级结构中确定待测试存储模块之前,将所述参数配置接口添加到所述存储模型的设计代码中。

为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。

实施例三

本申请实施例三提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的存储单元的仿真验证方法。

实施例四

图6是本发明实施例四提供的实施存储单元的仿真验证方法的电子设备的硬件结构示意图,如图6所示,该电子设备包括:

一个或多个处理器510以及存储器520,图6中以一个处理器510为例。

执行存储单元的仿真验证方法的电子设备还可以包括:输入装置530和输出装置540。

处理器510、存储器520、输入装置530和输出装置540可以通过总线或者其他方式连接,图6中以通过总线连接为例。

存储器520作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的存储单元的仿真验证方法对应的程序指令/模块/单元(例如,附图5所示的确定单元41、处理单元42和仿真验证单元43)。处理器510通过运行存储在存储器520中的非易失性软件程序、指令以及模块/单元,从而执行服务器或者智能终端的各种功能应用以及数据处理,即实现上述方法实施例提供的存储单元的仿真验证方法。

存储器520可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据存储单元的仿真验证装置的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器520可选包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至存储单元的仿真验证装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置530可接收输入的数字或字符信息,以及产生与存储单元的仿真验证装置的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。

所述一个或者多个模块存储在所述存储器520中,当被所述一个或者多个处理器510执行时,执行上述任意方法实施例中的存储单元的仿真验证方法。

上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。

本申请实施例的电子设备以多种形式存在,包括但不限于:

(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。

(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。

(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。

(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

(5)其他具有数据交互功能的电子装置。

实施例五

本申请实施例五提供了一种计算机程序产品,其中,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,其中,当所述程序指令被计算机执行时,使所述计算机执行本申请上述方法实施例中任一项存储单元的仿真验证方法。

本发明实施例提供的存储单元的仿真验证装置和设备,在设计代码层级结构中确定待测试存储模块,所述待测试存储模块包括存储模型的设计代码和测试代码,待测试存储模块适用于芯片设计中所有存储单元;所述待测试存储模块还包括用于指示所述测试代码与所述设计代码之间是否连接的选择语句;对所述待测试存储模块进行实例化;对所述选择语句进行配置使所述设计代码与所述测试代码连接,并根据配置结果,对实例化后的所述存储模型的设计代码进行仿真验证。采用本发明提供的方法,可以利用统一的、可重复利用的测试代码对所有的存储单元进行验证,不需要为每个存储单元编写设计代码和测试代码,存储模型的设计代码和测试代码适应于所有的存储单元不仅减少了仿真验证时间,还减少了验证人员的编写负担,同时提高了验证人员的工作效率。

由于本发明中的存储模型的设计代码适用于所有的存储单元,相应的,存储模型的测试代码也适于所有的存储单元,通过实例化可以得到不同存储单元的设计代码和相应存储单元的测试代码,由此可以将本发明中的存储模型的设计代码应用于不同的需要使用存储单元的模块中,进而基于实例化后的测试代码实现对实例化后的存储模型的设计代码的仿真验证,可移植性较强,同时验证效率得到了大大提升。

由于本发明中采用的测试代码适用于所有的存储单元,不需要设计人员或验证人员单独编写,本发明将存储模型的测试代码和存储模型的设计代码都封装到待测试存储模块中,只需要在使用存储单元的模块中将待测试存储模块进行实例化,具有较高的可重用性;同时也不需要设计人员或验证人员单独维护,维护时只需要修改一个测试代码即可实现对实例化后的存储模型的设计代码的仿真验证,有效降低了设计人员或验证人员的工作量。

进一步地,本发明在待测试存储模块中还包括用于指示存储模型的测试代码与存储模型的设计代码之间是否连接的选择语句,通过配置选择语句可以配置待测试存储模块的设计代码与测试代码,实现对待测试存储模块的验证;如果不需要对待存储模块验证,则通过配置选择语句还可以配置待测试存储模块的设计代码与测试代码不连接,而使待测试存储模块的设计代码与使用该待测试存储模块的模块连接,实现待测试存储模块与外部模块的正常连接。

本申请的实施例所提供的存储单元的仿真验证装置可通过计算机程序实现。本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分方式中的一种,如果划分为其他模块或不划分模块,只要存储单元的仿真验证装置具有上述功能,都应该在本申请的保护范围之内。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1