专利名称:一种RAM访问验证方法、设备及装置
专利类型:发明专利
专利申请号:CN202110431892.0
专利申请(专利权)人:北京物芯科技有限责任公司
权利人地址:北京市海淀区知春路1号1幢15层1514室
专利发明(设计)人:刘雕
专利摘要:本发明涉及一种RAM访问验证方法、设备及装置,该方法通过根据逻辑访问时序信号,执行对RAM的逻辑访问;将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给封装在RAM检查组件中的抽象RAM接口;所述RAM检查组件中的检查函数通过所述抽象RAM接口的逻辑访问时序信号,确定执行逻辑访问时,根据所述逻辑访问的数据和地址判断逻辑访问是否正确,实现有效提高IC验证过程中验证的完备性、加速验证的收敛、加速项目迭代的速度的技术效果。
主权利要求:
1.一种RAM访问验证方法,其特征在于,包括:根据逻辑访问时序信号,执行对RAM的逻辑访问;
将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给封装在RAM检查组件中的抽象RAM接口;
所述RAM检查组件中的检查函数通过所述抽象RAM接口的逻辑访问时序信号,确定执行逻辑访问时,根据所述逻辑访问的数据和地址判断逻辑访问是否正确;
所述抽象RAM接口的信号包括:
时钟信号、复位信号、读写控制信号、地址信号和数据信号;
将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给抽象RAM接口,包括:通过适配器执行实例化过程;
在实例化过程中,确定所述逻辑访问时序信号对应的时钟信号、复位信号、读写控制信号;
根据所述逻辑访问时序信号确定执行逻辑访问时,将逻辑访问的地址传递给所述地址信号,将逻辑访问的数据传递给所述数据信号;
所述抽象RAM接口被定义为所述RAM检查组件的类属性;
所述RAM检查组件中的函数通过读取所述类属性,获取所述抽象RAM接口中的信号;
所述RAM检查组件的类属性还包括关联数组,所述关联数组的索引Index为逻辑访问过的地址,所述关联数组内的元素为逻辑访问过的地址中的数据;
所述RAM检查组件中还包括读写函数,用于将逻辑访问过的地址赋值给关联数组的Index,将逻辑访问过的数据赋值给关联数组内的元素。
2.根据权利要求1所述的方法,其特征在于,所述RAM检查组件中还包括组件使能函数,其中:所述组件使能函数用于在每个时钟信号到来时,判断组件使能信号是否有效;
若有效,则执行所述RAM检查组件中的其他函数,否则不执行所述RAM检查组件中的其他函数。
3.根据权利要求1所述的方法,其特征在于,所述RAM检查组件中还包括读写使能函数,其中:所述读写使能函数用于在每个时钟信号到来时,判断读使能或判断写使能是否有效;
若读使能有效,则获取抽象RAM接口的读逻辑访问的数据和地址,否则不获取抽象RAM接口的读逻辑访问的数据和地址;
若写使能有效,则获取抽象RAM接口的写逻辑访问的数据和地址,否则不获取抽象RAM接口的写逻辑访问的数据和地址。
4.根据权利要求1所述的方法,其特征在于,所述RAM检查组件中的检查函数包括如下至少一个函数:读逻辑访问检查函数,用于检查读逻辑访问的数据,是否为之前写逻辑访问过的数据;
冲突检查函数,用于执行判定同时获取的读逻辑访问的地址与写逻辑访问的地址是否为同一地址的冲突检查;
访问越界检查函数,用于检查读写逻辑访问的地址,是否超出RAM地址范围。
5.根据权利要求1所述的方法,其特征在于,通过适配器执行实例化过程之前,还包括:在执行对RAM的逻辑访问的过程中,采集实体RAM接口上的信号,利用断言的方式判断接口上的信号是否出现X态。
6.根据权利要求1所述的方法,其特征在于,所述RAM检查组件中还包括:函数接口,用于提供在RAM检查组件中增加个性化检查函数的接口,所述个性化检查函数包括自定义函数或callback机制函数。
7.一种RAM访问验证设备,其特征在于,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1‑6中任一所述的RAM访问验证方法。
8.一种RAM访问验证装置,其特征在于,包括:逻辑访问模块,用于根据逻辑访问时序信号,执行对RAM的逻辑访问;
信号传递模块,用于将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给封装在RAM检查组件中的抽象RAM接口;
逻辑检查模块,用于所述RAM检查组件中的检查函数通过所述抽象RAM接口的逻辑访问时序信号,确定执行逻辑访问时,根据所述逻辑访问的数据和地址判断逻辑访问是否正确;
所述抽象RAM接口的信号包括:
时钟信号、复位信号、读写控制信号、地址信号和数据信号;
所述信号传递模块将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给抽象RAM接口,包括:通过适配器执行实例化过程;
在实例化过程中,确定所述逻辑访问时序信号对应的时钟信号、复位信号、读写控制信号;
根据所述逻辑访问时序信号确定执行逻辑访问时,将逻辑访问的地址传递给所述地址信号,将逻辑访问的数据传递给所述数据信号;
所述抽象RAM接口被定义为所述RAM检查组件的类属性;
所述RAM检查组件中的函数通过读取所述类属性,获取所述抽象RAM接口中的信号;
所述RAM检查组件的类属性还包括关联数组,所述关联数组的索引Index为逻辑访问过的地址,所述关联数组内的元素为逻辑访问过的地址中的数据;
所述RAM检查组件中还包括读写函数,用于将逻辑访问过多的地址赋值给关联数组的Index,将逻辑访问过的数据赋值给关联数组内的元素。 说明书 : 一种RAM访问验证方法、设备及装置技术领域[0001] 本发明涉及数据存储技术领域,尤其涉及一种RAM访问验证方法、设备及装置。背景技术[0002] 随机存取存储器(RandomAccessMemory,RAM)又称随机存储器,是与CPU(CentralProcessingUnit,中央处理单元)直接交换数据的内部存储器,也叫主存或内存。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。[0003] ASIC(ApplicationSpecificIntegratedCircuit,专门应用集成电路)芯片或SOC(SystemonChip,系统级芯片)等芯片中集成有软件,在软件运行过程中,会访问RAM进行数据读写。[0004] 对芯片上集成软件访问RAM的逻辑是否存在问题,可以通过RAM访问验证方式实现,但不同芯片对RAM的接口访问方式不同,访问逻辑也不同,需要提供一种适用于不同芯片类型的通用RAM访问验证方案。发明内容[0005] 本发明实施例的目的在于提出一种RAM访问验证方法、设备及装置,实现可以有效提高验证效率和验证完备性,而且有着很高的通用性的技术效果。[0006] 为实现上述目的,本发明实施例第一方面提供了一种RAM访问验证方法,包括:[0007] 根据逻辑访问时序信号,执行对RAM的逻辑访问;[0008] 将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给封装在RAM检查组件中的抽象RAM接口;[0009] 所述RAM检查组件中的检查函数通过所述抽象RAM接口的逻辑访问时序信号,确定执行逻辑访问时,根据所述逻辑访问的数据和地址判断逻辑访问是否正确。[0010] 作为一种可选的实施方式,所述抽象RAM接口的信号包括:[0011] 时钟信号、复位信号、读写控制信号、地址信号和数据信号。[0012] 作为一种可选的实施方式,将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给抽象RAM接口,包括:[0013] 通过适配器执行实例化过程;[0014] 在实例化过程中,确定所述逻辑访问时序信号对应的时钟信号、复位信号、读写控制信号;[0015] 根据所述逻辑访问时序信号确定执行逻辑访问时,将逻辑访问的地址传递给所述地址信号,将逻辑访问的数据传递给所述数据信号。[0016] 作为一种可选的实施方式,所述RAM检查组件中还包括组件使能函数,其中:[0017] 所述组件使能函数用于在每个时钟信号到来时,判断组件使能信号是否有效;[0018] 若有效,则执行所述RAM检查组件中的其他函数,否则不执行所述RAM检查组件中的其他函数。[0019] 作为一种可选的实施方式,所述抽象RAM接口被定义为所述RAM检查组件的类属性;[0020] 所述RAM检查组件中的函数通过读取所述类属性,获取所述抽象RAM接口中的信号。[0021] 作为一种可选的实施方式,所述RAM检查组件的类属性还包括关联数组,所述关联数组的索引Index为逻辑访问过的地址,所述关联数组内的元素为逻辑访问过的地址中的数据;[0022] 所述RAM检查组件中还包括读写函数,用于将逻辑访问过多的地址赋值给关联数组的Index,将逻辑访问过的数据赋值给关联数组内的元素。[0023] 作为一种可选的实施方式,所述RAM检查组件中还包括读写使能函数,其中:[0024] 所述读写使能函数用于在每个时钟信号到来时,判断读使能或判断写使能是否有效;[0025] 若读使能有效,则获取抽象RAM接口的读逻辑访问的数据和地址,否则不获取抽象RAM接口的读逻辑访问的数据和地址;[0026] 若写使能有效,则获取抽象RAM接口的写逻辑访问的数据和地址,否则不获取抽象RAM接口的写逻辑访问的数据和地址。[0027] 作为一种可选的实施方式,所述RAM检查组件中的检查函数包括如下至少一个函数:[0028] 读逻辑访问检查函数,用于检查读逻辑访问的数据,是否为之前写逻辑访问过的数据;[0029] 冲突检查函数,用于执行判定同时获取的读逻辑访问的地址与写逻辑访问的地址是否为同一地址的冲突检查;[0030] 访问越界检查函数,用于检查读写逻辑访问的地址,是否超出RAM地址范围。[0031] 作为一种可选的实施方式,通过适配器执行实例化过程之前,还包括:[0032] 在执行对RAM的逻辑访问的过程中,采集实体RAM接口上的信号,利用断言的方式判断接口上的信号是否出现X态。[0033] 作为一种可选的实施方式,所述RAM检查组件中还包括:[0034] 函数接口,用于提供在RAM检查组件中增加个性化检查函数的接口,所述个性化检查函数包括自定义函数或callback机制函数。[0035] 为实现上述目的,本发明实施例第二方面提供了一种RAM访问验证设备,包括:存储器以及一个或多个处理器;[0036] 所述存储器,用于存储一个或多个程序;[0037] 当所述一个或多个程序被所述一个或多个处理器实现如第一方面中任一所述的RAM访问验证方法。[0038] 为实现上述目的,本发明实施例第三方面提供了一种RAM访问验证装置,包括:[0039] 逻辑访问模块,用于根据逻辑访问时序信号,执行对RAM的逻辑访问;[0040] 信号传递模块,用于将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给封装在RAM检查组件中的抽象RAM接口;[0041] 逻辑检查模块,用于所述RAM检查组件中的检查函数通过所述抽象RAM接口的逻辑访问时序信号,确定执行逻辑访问时,根据所述逻辑访问的数据和地址判断逻辑访问是否正确。[0042] 为实现上述目的,本发明实施例第四方面提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面中任一所述的RAM访问验证方法。[0043] 由上可见,本发明实施例提供的技术方案,通过将实体RAM接口的信号传递到RAM检查组件中的抽象RAM接口,通过RAM检查组件的函数获取接口信号进行逻辑访问验证,解决了对RAM的逻辑访问验证效率低的问题,提高了逻辑访问验证的效率,不仅可以有效提高验证效率和验证完备性,而且可以将该RAM检查组件挂到不同的平台,有着很高的通用性,同时可以集成到子系统以及系统级验证环境中,另外在项目递归的阶段也可以实现项目间的复用,加速项目的迭代速度,保证了芯片的和质量的技术效果。附图说明[0044] 图1为本发明实施例1中提供的RAM访问验证方法的流程图;[0045] 图2为本发明实施例1提供的抽象RAM接口的信号示意图;[0046] 图3为本发明实施例2提供的RAM检查组件的信号结构示意图;[0047] 图4为本发明实施例2提供的RAM访问验证方法详细流程图;[0048] 图5为本发明实施例3提供的RAM访问设备的结构示意图;[0049] 图6为本发明实施例4提供的RAM访问验证装置结构示意图。具体实施方式[0050] 以下实施例用于说明本发明,但不用来限制本发明的范围。[0051] 实施例1[0052] 本发明实施例1提供一种RAM访问验证的方法,该方法可以由RAM访问验证装置来执行,该RAM访问验证装置可以通过软件和/或硬件的方式实现,并集成在可进行在RAM访问验证的设备中。可选的,该RAM访问验证的设备包括但不限定于电子设备、服务器等终端。本实施例中,以该RAM访问验证的设备为电子设备为例进行详细说明。[0053] 图1为本发明实施例1中提供的一种RAM访问验证方法的流程图,参照图1,该方法可以包括如下的步骤:[0054] S110、根据逻辑访问时序信号,执行对RAM的逻辑访问;[0055] 对于包括RAM的芯片,芯片的处理器中集成相应的软件,处理器运行软件时实现对RAM的逻辑访问,在对RAM的逻辑访问过程中,通过实体RAM接口访问RAM。[0056] 本发明实施例中RAM验证方法应用于对芯片中RAM的验证,该芯片可以是ASIC(ApplicationSpecificIntegratedCircuit,专门应用集成电路)芯片或SOC(SystemonChip,系统级芯片)。[0057] S111,将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给封装在RAM检查组件中的抽象RAM接口;[0058] 不管是那种类型的芯片,对RAM的逻辑访问仅有从RAM中读取数据的读逻辑访问和向RAM中写数据的写逻辑访问,因此实体RAM接口上的信号可以设计为一部分通用的代码,即抽象为一个RAM接口封装到RAM检查组件中,则RAM检查组件中执行逻辑访问验证的函数则可以获取到对应的RAM接口信号,进行逻辑访问验证。[0059] 组件可以理解被封装可以根据预先约束的用法去使用的模块,因组件都有明确的使用接口,以便能组合到某个框架里面。本发明实施例中提供了RAM检查组件,可以组合到验证平台的框架中,由验证平台在触发对RAM的逻辑访问验证时,通过接口调用RAM检查组件,即触发对RAM的逻辑访问验证时,一方面运行芯片中的软件来执行根据逻辑访问时序信号,执行对RAM的逻辑访问,一方面通过验证平台调用RAM检查组件,在RAM组件被调用时,将实体RAM接口的信号传递到抽象RAM接口中的信号。[0060] S112,所述RAM检查组件中的检查函数通过所述抽象RAM接口的逻辑访问时序信号,确定执行逻辑访问时,根据所述逻辑访问的数据和地址判断逻辑访问是否正确。[0061] 芯片采用的是时序逻辑电路,对RAM中数据的逻辑访问通过逻辑访问时序信号来控制,逻辑访问时序信号具体由多个信号共同确定的,例如时钟信号、复位信号、读写控制信号,复位信号的作用在于使处理器从初始指令开始运行,在一个时钟周期内包括多个时钟信号clock,读写控制信号包括读控制信号和写控制信号,在每个clock的上升沿到来时,可以判断读控制信号是否有效及写控制信号是否有效,若读控制信号有效则执行读逻辑访问,写控制信号有效则执行写逻辑访问。[0062] 本发明实施例中RAM检查组件可以获得抽象RAM接口的信号,根据抽象RAM接口的逻辑访问时序信号,确定执行逻辑访问即读控制信号或写控制信号有效时,从抽象RAM接口的信号获取传递过来的逻辑访问的数据和地址,从而进行相应的逻辑访问验证。上述逻辑访问的数据和地址具体是处理器根据逻辑访问请求确定的。[0063] 基于本发明提供的RAM访问验证方法,触发RAM访问验证时,一方面执行逻辑访问,并将RAM接口信号赋值到抽象RAM接口,另一方面RAM组件中的函数可以获得该抽象接口信号,从而进行访问逻辑验证,由于RAM接口信号具有通用性,因此可以将该RAM组件布置到各种框架中进行各种类型芯片的RAM访问验证,且通过RAM组件的检查函数,可以有效提高IC验证过程中验证的完备性、加速验证的收敛、加速项目迭代的速度。[0064] 如图2所示,本发明实施例中抽象RAM接口interface的信号包括:[0065] 时钟信号clk、复位信号rst、读写控制信号ctl、地址信号addr和数据信号data。其中,读写控制信号ctl包括读控制信号writeop和写控制信号readop,数据信号data包括写数据信号WrData和读数据信号RaData,地址信号addr包括写地址信号WrAddr和读地址信号RaAddr,如果写控制信号writeop有效,代表将写数据信号WrData写入写地址信号WrAddr;如果写控制信号readop有效,代表从读地址信号RaAddr读取读数据信号RaData;其中portb表示访问的端口号。[0066] 实施中,将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给抽象RAM接口,包括:[0067] 通过适配器执行实例化过程;[0068] 在实例化过程中,确定所述逻辑访问时序信号对应的时钟信号clk、复位信号rst、读写控制信号ctl;[0069] 根据所述逻辑访问时序信号确定执行逻辑访问时,将逻辑访问的地址传递给所述地址信号addr,将逻辑访问的数据传递给所述数据信号data。[0070] 本发明实施例中,通过适配器adapter执行实例化过程,在实例化过程中,将interface实例(实体RAM接口上的信号)传递到RAM检查组件RAMchecker组件中的抽象RAM接口virtualinterface。[0071] 通用验证方法学(UniversalVerificationMethodology,UVM)是一个以SystemVerilog类库为主体的验证平台开发框架,验证工程师可以利用其可重用组件构建具有标准化层次结构和接口的功能验证环境,本发明实施例提供的RAMchecker组件拓展自UVM内建组件uvm_monitor或者uvm_component,在内建组件uvm_monitor或者uvm_component基础上增加相应的函数,得到RAM检查组件。[0072] RAM组件封装后,它属于一个类,什么时候去调用这个类,需要进行实例化,验证的时候基于VM的验证环境中执行实例化,然后才能运行该RAM组件。[0073] 具体地,上述抽象RAM接口被定义为所述RAM检查组件的类属性;所述RAM检查组件中的函数通过读取所述类属性,获取所述抽象RAM接口中的信号。[0074] 本发明实施例基于UVM实现检查逻辑时,对于类需要获取数据的情况,目前UVM提供的方式为采用config_db的方式传递引用,config_db作为一个全局函数被设置set验证平台开发框架的某个位置,其他的类通过get的方式调用这个全局函数,来拿到相应的数据。本发明实施例中的RAM检查组件RAMchecker集成到芯片的各个模块时,通过config_db其实是拿不到数据的,因为每个RAM需要写一个config_db,这样就不通用。[0075] 本发明实施例中,上述抽象RAM接口被定义为所述RAM检查组件的类属性,也就是RAM检查组件的变量,因此可以通过直连的方式将interface实例传递到RAM检查组件RAMchecker组件中的virtualinterface,也就是说在实例化过程中,通过赋值的方式给这个类里面的变量,而类中的函数是可以直接获得变量的值,这样就相当于与提供了一个通用的接口,每个RAM都可以通过实例化过程得到对应的interface,具体可以通过RAMchecker的buildphase或者connectphase进行interface的引用传递。[0076] 作为一种可选的实施方式,所述RAM检查组件的类属性还包括关联数组,所述关联数组的索引Index为逻辑访问过的地址,所述关联数组内的元素为逻辑访问过的地址中的数据;[0077] 所述RAM检查组件中还包括读写函数,用于将逻辑访问过多的地址赋值给关联数组的Index,将逻辑访问过的数据赋值给关联数组内的元素。[0078] 上述关联数组也被定义在组件的类属性,因此可以作为变量被组件内的函数获取,RAM检查组件中的检查函数则可以根据关联数组中记录的地址和数据,进行访问逻辑验证。[0079] 本发明实施例中,RAM检查组件中的检查函数包括如下至少一个函数:[0080] 读逻辑访问检查函数,用于检查读逻辑访问的数据,是否为之前写逻辑访问过的数据,具体可以通过关联数组确定之前写逻辑访问过的数据,即已写入到RAM中的数据,每次确定执行独逻辑访问时,根据从抽象RAM接口获取的数据,判断该数据是否出现在关联数组中,若出现在关联数组中,则确定逻辑访问正确,否则进行报错;[0081] 冲突检查函数,用于执行判定同时获取的读逻辑访问的地址与写逻辑访问的地址是否为同一地址的冲突检查;当有双端口的RAM时,可以同时进行读逻辑访问和写逻辑访问,如果RAM接口处会出现写某一地址时恰好又要读该地址,说明发生地址冲突,需要进行报错,如果读逻辑访问的地址与写逻辑访问的地址不同,则说明未发生地址冲突;[0082] 访问越界检查函数,用于检查读写逻辑访问的地址,是否超出RAM地址范围。RAM都有自己的地址空间,根据逻辑需求配置访问RAM时所能访问的最大空间,当读写访问到最大空间外的地址时,上报访问错误,具体可以将RAM的地址范围配置在检查函数中,实现检查函数确定执行写逻辑时,判断写逻辑访问的地址是否超出RAM地址范围。[0083] 本发明的目的是提高IC验证过程中验证的完备性、加速验证的收敛、加速项目迭代的速度。提供了一种通用的验证方法,来实现包含RAM访问RTL逻辑验证,该方法基于UVM实现,与界主流验证方法兼容,更容易广泛应用。[0084] 实施例2[0085] 在上述实施例的基础上,本实施例进一步细化,如图3所示,本发明实施例中的RAM检查组件主要包括变量Property和方法函数method部分:[0086] 变量Property,作为RAM检查组件的类属性,主要包括抽象RAM接口interface和关联数组ram_mode。[0087] 抽象RAM接口interface包括时钟信号clk、复位信号rst、读写控制信号ctl、地址信号addr和数据信号data。其中,读写控制信号ctl包括读控制信号writeop和写控制信号readop,数据信号data包括写数据信号WrData和读数据信号RaData,地址信号addr包括写地址信号WrAddr和读地址信号RaAddr,具体信号意义的解释参见实施例1的描述,这里不再详述。[0088] 关联数组ram_mode的索引Index为逻辑访问过的地址addr,所述关联数组内的元素为逻辑访问过的地址中的数据data,可以增加相应的比特位标识是读逻辑访问过的地址/数据,还是写逻辑访问过的地址/数据。[0089] RAM检查组件在被调用过程中,RAM组件中的各个函数可以获得类属性,RAM检查组件中的函数主要包括三类函数:[0090] 第一类为使能函数,使能函数至少包括:[0091] 组件使能函数get_ram_cfg(),用于在每个时钟信号到来时,判断组件使能信号mem_enable是否有效,组件使能函数可以通过interface中的时钟信号clk,确定时钟信号是否到来;[0092] 若有效,则执行所述RAM检查组件中的其他函数,否则不执行所述RAM检查组件中的其他函数,组件使能信号为预先配置的数值,因此可以进行RAM访问验证的打开或关闭控制。[0093] 作为一种可选的实施方式,RAM检查组件中的使能函数还包括:[0094] 读写使能函数get_ram_vif(),用于在每个时钟信号到来时,判断读使能或判断写使能是否有效;读写使能函数可以通过interface中的时钟信号clk,确定时钟信号是否到来;[0095] 读写使能函数get_ram_vif()主要包括读写使能信号writeorreadenable,读写使能信号writeorreadenable包括写使能信号writeenable和读使能信号writeenable,若读使能信号writeenable有效,则获取抽象RAM接口的读逻辑访问的数据data和地址addr,否则不获取抽象RAM接口的读逻辑访问的数据data和地址addr;若写使能信号writeenable有效,则获取抽象RAM接口的写逻辑访问的数据data和地址addr,否则不获取抽象RAM接口的写逻辑访问的数据data和地址addr。在获取到读逻辑访问的数据data和地址addr,及写逻辑访问的数据data和地址addr,可以存储到对应的关联数组ram_mode,通过该使能信号,可以实现针对读逻辑访问或针对写逻辑访问控制进行打开或关闭。[0096] 第二类函数为内部方法函数,主要包含:RTLRAMinterface获取;配置哪些RAM的检查需要打开或者关闭;记录所有写访问过的地址Write2Mem();读逻辑访问检查函数ReadMem()和同一时刻出现读写相同地址的冲突检查ConflictChk(),具体如下:[0097] Write2Mem[],用于记录所有写过的地址和数据,该函数可以将所有写过的地址和数据通过关联数组进行记录;[0098] 读逻辑访问检查函数ReadMem[],用于检查读逻辑访问的数据,是否为之前写逻辑访问过的数据,具体可以根据关联数组记录的地址,确定读逻辑访问的数据,是否为之前写逻辑访问过的数据;[0099] 冲突检查函数ConflictCheck(),用于执行判定同时获取的读逻辑访问的地址与写逻辑访问的地址是否为同一地址的冲突检查,当有双端口的RAM时,可以在同一接口进行读逻辑访问和写逻辑访问,若读逻辑访问和写逻辑访问的地址一致,则说明出现冲突,进行报错。[0100] 访问越界检查函数,用于检查读写逻辑访问的地址,是否超出RAM地址范围。每个RAM都有自己的地址空间,根据逻辑需求配置访问RAM时所能访问的最大空间,当读写访问到最大空间外的地址时,报出访问错误。[0101] 本发明实施例中,复位完成后,所有的RAM都要求读的地址一定是写过的,因此Write2Mem[]首先记录所有写的地址,当写使能信号writeenable有效时,将写过的地址记录到一个池子中即ram_model[addr]。读使能信号writeenable有效时,用读操作所携带的地址,去查记录写地址的池子,若读地址存在,说明访问合法,若没有找到,说明本次读RAM是一次非法操作,可通过断言或者UVM_ERROR打印报告出本次非法操作。[0102] 第三类函数为可以通过函数接口进行自定义的函数,上述函数接口,用于提供在RAM检查组件中增加个性化检查函数的接口,所述个性化检查函数包括自定义函数user_check或callback机制函数。[0103] 具体可以在通过函数接口增加相应的个性化检查函数后,通过回调callback机制,执行callback机制函数,可以包括在Write2Mem之前增加的函数pre_Write2Mem()、在Write2Mem之后增加post_Write2Mem()、在ReadMem之前增加的函数pre_ReadMem()、在ReadMem之后增加post_ReadMem()、在ConflictCheck之前增加的函数pre_ConflictCheck()和在ConflictCheck之后增加的函数post_ConflictCheck()。[0104] 本发明实施例通过适配器执行实例化过程之前,还包括:[0105] 在执行对RAM的逻辑访问的过程中,采集实体RAM接口上的信号,利用断言的方式判断接口上的信号是否出现不定态即X态。[0106] 在复位完成后的每一个时钟都要对RAM接口的信号进行不定态检查,当出现不定态时,可以使用断言或者打印Error信息。[0107] 下面结合附图给出本发明RAM访问验证的详细流程,如图4所示,具体包括:[0108] 步骤S401,根据逻辑访问时序信号,在执行对RAM的逻辑访问的过程中,采集实体RAM接口上的信号;[0109] 步骤S402,利用断言的方式判断接口上的信号是否出现X态,若是,执行步骤S410,否则,执行步骤S403;[0110] 步骤S403,执行对RAM的逻辑访问,在访问过时通过适配器执行实例化过程;[0111] 步骤S404,在实例化过程中,通过适配器确定所述逻辑访问时序信号对应的时钟信号、复位信号、读写控制信号并传递到抽象RAM接口;[0112] 步骤S405,在实例化过程中,组件使能函数在每个时钟信号到来时,判断组件使能信号是否有效,如有效,同时执行步骤S406和S409使能其他函数,否则等待下一个时钟信号到来时重新检查;[0113] 步骤S406,读写使能函数在时钟信号到来时,判断读使能或写使能是否有效,若读使能有效,执行步骤S407,否则返回步骤S405,若写使能有效,执行步骤S408,否则返回步骤S407;[0114] 步骤S407,获取抽象RAM接口的读逻辑访问的数据和地址,并记录到关联数组;[0115] 步骤S408,获取抽象RAM接口的写逻辑访问的数据和地址,并记录到关联数组;[0116] 步骤S409,检查函数在时钟信号到来时,根据关联数组记录的地址和数据,断逻辑访问是否正确,若正确,返回步骤S405,否则执行步骤S410;[0117] 检查函数在时钟信号到来时,根据关联数组记录的地址和数据,断逻辑访问是否正确具体包括:[0118] 通过读逻辑访问检查函数,检查读逻辑访问的数据,是否为之前写逻辑访问过的数据;[0119] 通过冲突检查函数,执行判定同时获取的读逻辑访问的地址与写逻辑访问的地址是否为同一地址的冲突检查;[0120] 通过访问越界检查函数,用于检查读写逻辑访问的地址,是否超出RAM地址范围。[0121] 步骤S410,进行逻辑访问报错。[0122] 本发明实施例公开的一种RAM访问验证的方法,通过将RAM检查组件(RAMchecker)应用于验证平台框架中,可以应用于芯片功能验证中,检查RTL内部逻辑产生RAM访问时的读写访问是否合法、读写访问是否存在冲突和RAM访问接口信号是否产生不定态,并且会对整个芯片中任何有RAM访问的地方进行逻辑访问检查,提高了功能验证的完备性。该方法具有很高的通用性,主要体现在,一方面,该方法不仅适用于包含RAM访问的ASIC芯片验证,同时也适用于包含RAM访问的SOC芯片验证,并且可以由底层模块环境向子系统或者系统级验证集成;另一方面,在芯片功能迭代过程中,基本可以实现零改动移植,提高了验证效率。该方法基于验证方法学UVM的验证平台进行实现,适用于各种基于UVM进行芯片验证环境。该方法的产物RAMcheckerUVC实现逻辑不复杂,且易于维护,内部实现包含基本的RAM读写访问合法性检查,且利用OOP思想以及callback机制,方便用户进行个性化检查的加入。[0123] 实施例3[0124] 图5为本发明实施例3提供的一种RAM访问验证设备的结构示意图。如图5所示,该RAM访问验证设备包括:处理器50、存储器51、输入装置52以及输出装置53。该RAM访问验证设备中处理器50的数量可以是一个或者多个,图5中以一个处理器50为例。该RAM访问验证设备中存储器51的数量可以是一个或者多个,图5中以一个存储器51为例。该RAM访问验证设备的处理器50、存储器51、输入装置52以及输出装置53可以通过总线或者其他方式连接,图5中以通过总线连接为例。该RAM访问验证设备可以是电脑和服务器等。[0125] 存储器51作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明任意实施例所述的RAM访问验证方法对应的程序指令/模块(例如,RAM访问验证装置中的逻辑检查模块)。存储器51可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器51可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器51可进一步包括相对于处理器50远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。[0126] 输入装置52可用于接收输入的数字或者字符信息,以及产生与RAM访问验证设备的观众用户设置以及功能控制有关的键信号输入,还可以是用于获取图像的摄像头以及获取音频数据的拾音设备。输出装置53可以包括扬声器等音频设备。需要说明的是,输入装置52和输出装置53的具体组成可以根据实际情况设定。[0127] 处理器50通过运行存储在存储器51中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的RAM访问验证方法,具体实现如下方法:[0128] 根据逻辑访问时序信号,执行对RAM的逻辑访问;[0129] 将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给封装在RAM检查组件中的抽象RAM接口;[0130] 所述RAM检查组件中的检查函数通过所述抽象RAM接口的逻辑访问时序信号,确定执行逻辑访问时,根据所述逻辑访问的数据和地址判断逻辑访问是否正确。[0131] 作为一种可选的实施方式,所述抽象RAM接口的信号包括:[0132] 时钟信号、复位信号、读写控制信号、地址信号和数据信号。[0133] 作为一种可选的实施方式,处理器将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给抽象RAM接口,包括:[0134] 通过适配器执行实例化过程;[0135] 在实例化过程中,确定所述逻辑访问时序信号对应的时钟信号、复位信号、读写控制信号;[0136] 根据所述逻辑访问时序信号确定执行逻辑访问时,将逻辑访问的地址传递给所述地址信号,将逻辑访问的数据传递给所述数据信号。[0137] 作为一种可选的实施方式,所述RAM检查组件中还包括组件使能函数,其中:[0138] 所述组件使能函数用于在每个时钟信号到来时,判断组件使能信号是否有效;[0139] 若有效,则执行所述RAM检查组件中的其他函数,否则不执行所述RAM检查组件中的其他函数。[0140] 作为一种可选的实施方式,所述抽象RAM接口被定义为所述RAM检查组件的类属性;[0141] 所述RAM检查组件中的函数通过读取所述类属性,获取所述抽象RAM接口中的信号。[0142] 作为一种可选的实施方式,所述RAM检查组件的类属性还包括关联数组,所述关联数组的索引Index为逻辑访问过的地址,所述关联数组内的元素为逻辑访问过的地址中的数据;[0143] 所述RAM检查组件中还包括读写函数,用于将逻辑访问过多的地址赋值给关联数组的Index,将逻辑访问过的数据赋值给关联数组内的元素。[0144] 作为一种可选的实施方式,所述RAM检查组件中还包括读写使能函数,其中:[0145] 所述读写使能函数用于在每个时钟信号到来时,判断读使能或判断写使能是否有效;[0146] 若读使能有效,则获取抽象RAM接口的读逻辑访问的数据和地址,否则不获取抽象RAM接口的读逻辑访问的数据和地址;[0147] 若写使能有效,则获取抽象RAM接口的写逻辑访问的数据和地址,否则不获取抽象RAM接口的写逻辑访问的数据和地址。[0148] 作为一种可选的实施方式,所述RAM检查组件中的检查函数包括如下至少一个函数:[0149] 读逻辑访问检查函数,用于检查读逻辑访问的数据,是否为之前写逻辑访问过的数据;[0150] 冲突检查函数,用于执行判定同时获取的读逻辑访问的地址与写逻辑访问的地址是否为同一地址的冲突检查;[0151] 访问越界检查函数,用于检查读写逻辑访问的地址,是否超出RAM地址范围。[0152] 作为一种可选的实施方式,处理器通过适配器执行实例化过程之前,还包括:[0153] 在执行对RAM的逻辑访问的过程中,采集实体RAM接口上的信号,利用断言的方式判断接口上的信号是否出现X态。[0154] 作为一种可选的实施方式,所述RAM检查组件中还包括:[0155] 函数接口,用于提供在RAM检查组件中增加个性化检查函数的接口,所述个性化检查函数包括自定义函数或callback机制函数。[0156] 实施例4[0157] 本发明实施例还提供一种RAM访问验证装置,该RAM访问验证装置可以通过软件和/或硬件的方式实现,并集成在可进行在电子设备中。可选的,该电子设备包括但不限定于电脑、服务器等终端。[0158] 图6为本发明实施例4中提供的一种RAM访问验证装置的结构示意图,参照图6,该装置可以包括如下的结构:[0159] 逻辑访问模块601,用于根据逻辑访问时序信号,执行对RAM的逻辑访问;[0160] 信号传递模块602,用于将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给封装在RAM检查组件中的抽象RAM接口;[0161] 逻辑检查模块603,用于所述RAM检查组件中的检查函数通过所述抽象RAM接口的逻辑访问时序信号,确定执行逻辑访问时,根据所述逻辑访问的数据和地址判断逻辑访问是否正确。[0162] 作为一种可选的实施方式,所述抽象RAM接口的信号包括:[0163] 时钟信号、复位信号、读写控制信号、地址信号和数据信号。[0164] 作为一种可选的实施方式,所述信号传递模块将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给抽象RAM接口,包括:[0165] 通过适配器执行实例化过程;[0166] 在实例化过程中,确定所述逻辑访问时序信号对应的时钟信号、复位信号、读写控制信号;[0167] 根据所述逻辑访问时序信号确定执行逻辑访问时,将逻辑访问的地址传递给所述地址信号,将逻辑访问的数据传递给所述数据信号。[0168] 作为一种可选的实施方式,所述RAM检查组件中还包括组件使能函数,其中:[0169] 所述组件使能函数用于在每个时钟信号到来时,判断组件使能信号是否有效;[0170] 若有效,则执行所述RAM检查组件中的其他函数,否则不执行所述RAM检查组件中的其他函数。[0171] 作为一种可选的实施方式,所述抽象RAM接口被定义为所述RAM检查组件的类属性;[0172] 所述RAM检查组件中的函数通过读取所述类属性,获取所述抽象RAM接口中的信号。[0173] 作为一种可选的实施方式,所述RAM检查组件的类属性还包括关联数组,所述关联数组的索引Index为逻辑访问过的地址,所述关联数组内的元素为逻辑访问过的地址中的数据;[0174] 所述RAM检查组件中还包括读写函数,用于将逻辑访问过多的地址赋值给关联数组的Index,将逻辑访问过的数据赋值给关联数组内的元素。[0175] 作为一种可选的实施方式,所述RAM检查组件中还包括读写使能函数,其中:[0176] 所述读写使能函数用于在每个时钟信号到来时,判断读使能或判断写使能是否有效;[0177] 若读使能有效,则获取抽象RAM接口的读逻辑访问的数据和地址,否则不获取抽象RAM接口的读逻辑访问的数据和地址;[0178] 若写使能有效,则获取抽象RAM接口的写逻辑访问的数据和地址,否则不获取抽象RAM接口的写逻辑访问的数据和地址。[0179] 作为一种可选的实施方式,所述RAM检查组件中的检查函数包括如下至少一个函数:[0180] 读逻辑访问检查函数,用于检查读逻辑访问的数据,是否为之前写逻辑访问过的数据;[0181] 冲突检查函数,用于执行判定同时获取的读逻辑访问的地址与写逻辑访问的地址是否为同一地址的冲突检查;[0182] 访问越界检查函数,用于检查读写逻辑访问的地址,是否超出RAM地址范围。[0183] 作为一种可选的实施方式,所述信号传递模块通过适配器执行实例化过程之前,还用于:[0184] 在执行对RAM的逻辑访问的过程中,采集实体RAM接口上的信号,利用断言的方式判断接口上的信号是否出现X态。[0185] 作为一种可选的实施方式,所述RAM检查组件中还包括:[0186] 函数接口,用于提供在RAM检查组件中增加个性化检查函数的接口,所述个性化检查函数包括自定义函数或callback机制函数。[0187] 本发明提供了一种RAM访问的通用验证方法以及实现组件,该方法实现简单但效益很高,不仅可以有效提高验证效率和验证完备性,而且有着很高的通用性,在单个项目中可用于含有RAM访问的模块,同时可以集成到子系统以及系统级验证环境中,另外在项目递归的阶段也可以实现项目间的复用,加速项目的迭代速度,保证了芯片的和质量。[0188] 实施例5[0189] 本发明实施例5还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种RAM访问验证方法,包括:[0190] 根据逻辑访问时序信号,执行对RAM的逻辑访问;[0191] 将所述逻辑访问时序信号、逻辑访问的数据和地址,传递给封装在RAM检查组件中的抽象RAM接口;[0192] 所述RAM检查组件中的检查函数通过所述抽象RAM接口的逻辑访问时序信号,确定执行逻辑访问时,根据所述逻辑访问的数据和地址判断逻辑访问是否正确。[0193] 当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的RAM访问验证方法操作,还可以执行本发明任意实施例所提供的RAM访问验证方法中的相关操作,且具备相应的功能和有益效果。[0194] 通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read‑OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是机器人,个人计算机,服务器,或者网络设备等)执行本发明任意实施例所述的RAM访问验证方法。[0195] 值得注意的是,上述RAM访问验证装置中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。[0196] 应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。[0197] 在本说明书的描述中,参考术语“在一实施例中”、“在又一实施例中”、“示例性的”或“在具体的实施例中”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。[0198] 虽然,上文中已经用一般性说明、具体实施方式及试验,对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
专利地区:北京
专利申请日期:2021-04-21
专利公开日期:2024-07-26
专利公告号:CN113126926B