ram访问
冲突的验证方法及验证装置
技术领域
1.本发明涉及芯片仿真验证技术领域,尤其涉及ram访问冲突的验证方法及验证装置。
背景技术:
2.单端口随机存储器(singleportrandomaccessmemory,spram)只有一个读写可访问端口,在每个时钟周期,互斥地响应读
操作或写操作。另一方面,单端口ram响应读操作时存在延迟。因此,单端口ram存在访问冲突场景。
3.目前,数字电路验证工程师在利用eda进行数字芯片验证时,往往需要花费大量的精力编写参考模型,并利用参考模型对芯片进行验证。但是,针对单端口ram访问冲突场景的仿真验证,一般认为,参考模型提供的验证大部分都是行为级的,不方便实现在发生时序冲突时的检查能力,因此,不适合针对单端口ram访问冲突场景进行仿真验证。
4.另一方面,目前没有通用的方式对单端口ram访问冲突时业务逻辑的正确性进行验证。因而针对多种单端口ram的各个冲突场景需要分别制作对应的测试用例进行访问冲突验证。针对各个访问冲突场景分别制作测试用例,不仅步骤繁琐,工作量大,验证效率偏低,而且,因生成的测试用例的通用性不足,而导致测试用例的复用性不强。
技术实现要素:
5.有鉴于此,本发明提供ram访问冲突的验证方法及验证装置,以解决现有技术中单端口ram访问冲突验证的效率偏低、测试用例的通用性不足的问题。
6.第一方面,本技术提供一种ram访问冲突的验证方法,包括:
7.确认待测ram的读延迟,
所述读延迟包括所述ram的读使能信号到读返回数据信号的n个时钟周期;选取待测ram的测试
地址;
8.针对所述测试地址随机产生读操作或写操作;
9.当所述写操作在所述读操作的读延迟上发生时,获得读返回数据与写操作的数据、读操作的地址与写操作的地址的对应关系;
10.当所述对应关系包括指定情况时,确定所述待测ram的访问冲突已验证。
11.进一步地,所述指定情况,包括:
12.当对所述待测ram的第一地址进行写操作,且所述写操作在对所述第一地址的读操作的读延迟上发生时,所述读返回数据与所述写操作的数据相同。
13.进一步地,所述指定情况,包括:
14.当对所述待测ram的第二地址进行写操作,且所述写操作在对所述待测ram的第一地址的读操作的读延迟上发生时,所述读返回数据与所述第一地址存储的数据相同。
15.进一步地,所述指定情况,包括:
16.当对所述待测ram的第一地址的读操作的读延迟上未发生写操作时,所述读返回数据与所述第一地址存储的数据相同。
17.第二方面,本技术提供一种ram访问冲突的验证装置,包括:
18.用例参数确定单元,用于确认待测ram的读延迟,所述读延迟包括所述ram的读使能信号到读返回数据信号的n个时钟周期;选取待测ram的测试地址;
19.用例生成单元,用于针对所述测试地址随机产生读操作或写操作;
20.冲突验证单元,用于当所述写操作在所述读操作的读延迟上发生时,获得读返回数据与写操作的数据、读操作的地址与写操作的地址的对应关系;在所述对应关系包括指定情况时,确定所述待测ram的访问冲突已验证。
21.进一步地,所述指定情况,包括:
22.当对所述待测ram的第一地址进行写操作,且所述写操作在对所述第一地址的读操作的读延迟上发生时,所述读返回数据与所述写操作的数据相同。
23.进一步地,所述指定情况,包括:
24.当对所述待测ram的第二地址进行写操作,且所述写操作在对所述待测ram的第一地址的读操作的读延迟上发生时,所述读返回数据与所述第一地址存储的数据相同。
25.进一步地,所述指定情况,包括:
26.当对所述待测ram的第一地址的读操作的读延迟上未发生写操作时,所述读返回数据与所述第一地址存储的数据相同。
27.第三方面,本技术提供一种计算设备,包括:处理器,以及存储器,其上存储有程序指令,程序指令当被处理器执行时使得处理器执行如第一方面说明的ram访问冲突的验证方法。
28.第四方面,本技术提供一种计算机可读存储介质,其上存储有程序指令,程序指令当被处理器执行时使得处理器执行如第一方面说明的ram访问冲突的验证方法。
29.本技术的这些和其它方面在以下(多个)实施例的描述中会更加简明易懂。
附图说明
30.下面参照附图来进一步说明本技术的各个技术特征和它们之间的关系。附图为示例性的,一些技术特征并不以实际比例示出,并且一些附图中可能省略了本技术所属技术领域中惯用的且对于理解和实现本技术并非必不可少的技术特征,或是额外示出了对于理解和实现本技术并非必不可少的技术特征,也就是说,附图所示的各个技术特征的组合并不用于限制本技术。另外,在本技术全文中,相同的附图标记所指代的内容也是相同的。具体的附图说明如下:
31.图1是本发明实施例的ram访问冲突的验证方法的流程示意图;
32.图2是本发明实施例的ram访问冲突的验证装置的组成示意图;
33.图3a是本发明实施例的单端口ram访问冲突的验证装置的第一应用示意图;
34.图3b是本发明实施例的单端口ram访问冲突的验证装置的第二应用示意图;
35.图4是本发明实施例的ram访问冲突的验证方法生成的访问冲突的信号波形图;
36.图5是本发明实施例的ram访问冲突的验证方法对应的计算设备的组成示意图。
具体实施方式
37.下面,参照附图对本发明的具体实施方式进行详细的说明。
38.除非另有定义,本技术全文所使用的所有技术和科学术语与本技术所属技术领域的技术人员通常理解的含义相同。如有不一致,以本技术全文中所说明的含义或者根据本技术全文中记载的内容得出的含义为准。另外,本说明中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
39.为了准确地对本技术中的技术内容进行叙述,以及为了准确地理解本技术,在对具体实施方式进行说明之前先对本说明书中所使用的术语给出如下的解释说明或定义。
40.电子设计自动化(electronicdesignautomation,eda)是指利用计算机辅助设计软件,来完成超大规模集成电路(vlsi)芯片的功能设计、综合、验证、物理设计(包括布局、布线、版图、设计规则检查等)等流程的设计方式。
41.目前eda软件(如quartusii8.0、cadence、synopsys、mentor)作为数字电路芯片研发的底层基础技术平台,在设计环节,可以将芯片涉及的复杂物理问题用数学模型高度精确化表述,在虚拟环境中仿真出芯片预期的业务逻辑。在验证环节,可以实现逻辑功能一致性,也即,在验证环节运行与设计环节一致的业务逻辑。
42.断言(systemverilogassertion,sva)是systemverilog引入的重要特性,在功能仿真及形式验证中有着重要的作用。
43.网络芯片作为网络中的一个节点,与网络中的其他节点相互传递数据,如设置在路由器(router)中的网络芯片、设置在交换机(switch)中的网络芯片。
44.如图1所示,本发明实施例的ram访问冲突的验证方法,包括以下步骤:
45.s10:确认待测ram的读延迟,所述读延迟包括所述ram的读使能信号到读返回数据信号的n个时钟周期;选取待测ram的测试地址;
46.s20:针对所述测试地址随机产生读操作或写操作;
47.s30:当所述写操作在所述读操作的读延迟上发生时,获得读返回数据与写操作的数据、读操作的地址与写操作的地址的对应关系;当所述对应关系包括指定情况时,确定所述待测ram的访问冲突已验证。
48.以上,首先确定用例参数,包括确认待测ram的读延迟,如图4所示,所述读延迟包括所述ram的读使能信号到读返回数据信号的n个时钟周期,这里n为3;选取待测ram的测试地址,如图4所示,为addr0和addr1;其次,针对所述测试地址随机产生读操作或写操作,也即生成测试用例;在该测试用例运行过程中,执行冲突验证,包括:当检测到所述写操作在所述读操作的读延迟上发生时,获得读返回数据与写操作的数据、读操作的地址与写操作的地址的对应关系;当检测到所述对应关系包括指定情况时,确定所述待测ram的访问冲突已验证。
49.以上,在提取多个参数之后,就可以方便地生成ram访问冲突验证测试用例,由此提供了生成测试用例的通用方法;通过检测读返回数据与写操作的数据、读操作的地址与写操作的地址的对应关系并在在对应关系包括指定情况时,即可确定所述待测ram的访问冲突已验证,由此提供了标准且统一的访问冲突验证流程。
50.利用该实施例的ram访问冲突的验证方法,可以简单方便地制作测试用例,复用性好,验证过程标准且统一,因此易调试,有利于提高验证效率。
51.在一些实施例中,所述指定情况,包括:
52.当对所述待测ram的第一地址进行写操作,且所述写操作在对所述第一地址的读
操作的读延迟上发生时,所述读返回数据与所述写操作的数据相同。
53.具体地,在以上步骤s20生成测试用例后,当检测到对所述待测ram的第一地址进行写操作,且所述写操作在对所述第一地址的读操作的读延迟上发生时,可以确定发生了图4中所示的第i种场景。随即,获取读返回数据与写操作的数据、读操作的地址与写操作的地址的对应关系,如所述对应关系包括:所述读返回数据与所述写操作的数据相同。这时,可以确定发生了图4中所示的第i种场景,且冲突验证通过。也即,如图4的左侧所示,对地址addr0的读操作,读返回数据是在其读延迟上发生的写操作向地址addr0写入的数据data1,而不是读操作使能时,存储在地址addr0的数据data0。因此,针对地址addr0的读操作受到了在该读操作之后,返回数据之前,发生的这次写操作的影响。如此,符合单口ram的访问冲突业务逻辑,可以确定针对指定情况下所述待测ram的访问冲突已验证通过。
54.在一些实施例中,所述指定情况,包括:
55.当对所述待测ram的第二地址进行写操作,且所述写操作在对所述待测ram的第一地址的读操作的读延迟上发生时,所述读返回数据与所述第一地址存储的数据相同。
56.在一些实施例中,具体地,在以上步骤s20生成测试用例后,当检测到对所述待测ram的第二地址进行写操作,且所述写操作在对所述第一地址的读操作的读延迟上发生时,可以确定发生了图4中所示的第ii种场景。随即,获取读返回数据与写操作的数据、读操作的地址与写操作的地址的对应关系,如所述对应关系包括:所述读返回数据与所述第一地址存储的数据相同。这时,可以确定发生了图4中所示的第ii种场景,且冲突验证通过。也即,如图4的中部所示,对地址addr0的读操作,读返回数据是data1,并没有受到读操作之后,返回数据之前,针对地址addr1发生的这次写操作的影响,也即,读返回数据并不是这次写操作的数据data0。如此,符合单口ram的访问冲突业务逻辑,可以确定针对指定情况下所述待测ram的访问冲突已验证通过。
57.在一些实施例中,所述指定情况,包括:
58.当对所述待测ram的第一地址的读操作的读延迟上未发生写操作时,所述读返回数据与所述第一地址存储的数据相同。
59.在一些实施例中,具体地,在以上步骤s20生成测试用例后,当检测到在对所述第一地址的读操作的读延迟上未发生写操作时,可以确定发生了图4中所示的第iii种场景。随即,获取读返回数据与写操作的数据、读操作的地址与写操作的地址的对应关系,如所述对应关系包括:所述读返回数据与所述第一地址存储的数据相同。这时,可以确定发生了图4中所示的第iii种场景,且冲突验证通过。也即,如图4的右侧所示,对地址addr1的读操作,读返回数据是data3,也即读操作使能时,存储在地址addr1的数据data3。如此,符合单口ram的访问冲突业务逻辑,可以确定针对指定情况下所述待测ram的访问冲突已验证通过。
60.以上的3种指定情况,分别覆盖了单口ram访问冲突的典型场景。如此,验证过程标准且统一,有利于提高验证效率。
61.如此,该实施例的ram访问冲突的验证方法,生成的测试用例通用性强,复用性好。可以通过标准且统一的验证过程,准确提取到测试用例中覆盖的针对单口ram访问冲突的典型场景,验证效率高。
62.如图2所示,本发明实施例的ram访问冲突的验证装置,包括:
63.用例参数确定单元210,用于确认待测ram的读延迟,所述读延迟包括所述ram的读
使能信号到读返回数据信号的n个时钟周期;选取待测ram的测试地址;
64.用例生成单元220,用于针对所述测试地址随机产生读操作或写操作;
65.冲突验证单元230,用于当所述写操作在所述读操作的读延迟上发生时,获得读返回数据与写操作的数据、读操作的地址与写操作的地址的对应关系;在所述对应关系包括指定情况时,确定所述待测ram的访问冲突已验证。
66.在一些实施例中,所述指定情况,包括:
67.当对所述待测ram的第一地址进行写操作,且所述写操作在对所述第一地址的读操作的读延迟上发生时,所述读返回数据与所述写操作的数据相同。
68.在一些实施例中,所述指定情况,包括:
69.当对所述待测ram的第二地址进行写操作,且所述写操作在对所述待测ram的第一地址的读操作的读延迟上发生时,所述读返回数据与所述第一地址存储的数据相同。
70.在一些实施例中,所述指定情况,包括:
71.当对所述待测ram的第一地址的读操作的读延迟上未发生写操作时,所述读返回数据与所述第一地址存储的数据相同。
72.以上,用例参数确定单元210、用例生成单元220、冲突验证单元230具体执行的步骤,可以分别参考前述或后述的步骤s10、s20或s30,不再赘述。
73.参考图1和图2,使用本发明实施例的验证装置,按照标准的、统一的通用验证流程进行单端口ram访问冲突进行验证时,具体可以包括以下步骤:
74.1)针对待测ram进行参数化。
75.对应于前述的步骤s10,可以配置用例参数确定单元210,用于获取待测ram的配置参数。具体地,获取待测ram的配置参数,包括:确定其执行读操作的读延迟n。如,根据网络芯片的specification确定读操作的读延迟n。如根据如图4所示的信号波形图,确认待测ram的读使能信号rd_en到读返回数据信号rd_data获取到读返回数据需要的节拍数,如,n个时钟周期。
76.具体地,获取待测ram的配置参数,还包括:确定其存储深度,以确定测试用例中的读操作或写操作针对的单一地址的数量或全部地址对应的范围。如,确定存储位宽,以确定针对所述单端口ram可读写的数据的上限位宽,或指定任一路写操作访问的数据,如指定其位宽不大于前述的上限位宽。
77.具体地,获取待测ram的配置参数,还包括:选取待测ram的测试地址。根据前述的存储深度、前述的读操作的读延迟n,确定测试地址中单一地址的数量、或对应的范围。后续生的测试用例中,读操作的地址或写操作的地址为所述测试地址中的任一个。
78.2)生成测试用例
79.对应于前述的步骤s20,可以配置用例生成单元220,用于根据获取的配置参数,随机地生成测试用例。如此,在生成的测试用例对应的针对ram的访问序列中,随机地发生读操作或写操作。也即,在待测ram的一个时钟周期内,随机地发生读操作或写操作或空操作中的任一种。以及,读操作的地址或写操作的地址在前述的测试地址内随机地确定。
80.以及,向随机确定的地址写入的数据是根据前述的存储位宽随机产生的。应该理解为,随机产生的数据写入到一地址后,再从该地址中读出数据时,读返回数据是确定的。如此,不需要预先向各测试地址内写入设定的数据,增加了测试用例生成方法的通用性。
81.以上,还包括采用现有技术中的方法,在生成随机的测试用例时,使得测试用例对应的访问序列中包括的读操作不小于预设的最少次数或包括的写操作不小于预设的最小次数,不再赘述。
82.如图4所示,在一些实施例中,单端口ram读操作的latency为2clk;在地址1~100之间,随机选取2个地址作为地址0和地址1,将地址0和地址1作为cpu或逻辑单元读操作或写操作的地址,以及在预设的m个时钟周期内,cpu针对地址0和地址1随机地发生写操作或读操作及逻辑单元针对地址0和地址1随机地发生写操作或读操作,并且,进一步可以简化为写入的数据在data0、data1、data2、data3中随机地选择。
83.通常,每个测试用例分别独立地执行。测试用例开始执行和停止执行的方法,参考现有技术,不再赘述。以及,在任一个测试用例针对单端口ram访问冲突的情况不满足预设要求时,可以参考前述说明,随机生成新的测试用例。以及,针对待测ram,可以多次随机生成测试用例,直到已经执行的多个测试用例的情况满足预设要求时停止。
84.以上,步骤1)和步骤2)提供了针对不同配置参数的单端口ram的通用的测试用例生成方法。
85.对应于前述的步骤s30,可以配置冲突验证单元230包括:访问冲突检查模块cover、访问冲突验证模块checker。
86.3)根据分析的ram访问冲突的典型场景,构造采用通用代码实现的assertioncover,该assertioncover用于监测多种ram访问冲突场景。
87.配置访问冲突检查模块cover,用于用于监测多种ram访问冲突场景。
88.如,构建第一冲突检测组件cover1,用于检测在读操作的latency上发生了与读操作针对的地址相同的写操作;
89.如,构建第二冲突检测组件cover2,用于检测在读操作的latency上发生了与读操作针对的地址不同的写操作。
90.4)根据前述分析的访问冲突场景,以及前述的通用代码实现的assertioncover,构造通用代码实现的checker,以进行assertion的检查。
91.配置访问冲突验证模块checker,用于验证多种ram访问冲突场景。
92.如,构建第一冲突验证组件sva1,用于:如果在任一笔读操作的latency上发生了针对相同地址的一笔写操作,则该笔读操作的返回数据一定是该笔写操作针对的数据;
93.如,构建第二冲突验证组件sva2,用于:如果在任一笔读操作的latency上发生了针对不同地址的写操作,则该笔读操作的返回数据一定是该笔读操作之前的那次写操作针对的数据;
94.如,构建第三冲突验证组件sva3,用于:如果仅发生了一笔读操作,也即,在该笔读操作的latency上没有发生针对相同地址或不同地址的写操作,则该笔读操作的返回数据一定是该笔读操作之前的那次写操作针对的数据。
95.以上,步骤3)和步骤4),提供了单端口ram运行在仿真环境中,响应前述测试用例对应的访问序列时,利用assertioncover或checker,根据从仿真环境中获取的指定访问序列或输出时序,检查、验证或统计访问冲突的发生(也即覆盖情况),以及访问冲突发生后业务逻辑能够正确地响应(也即验证是否通过)。
96.对于单端口ram而言,如图4所示,响应于写操作,待写入的数据可以在同一个时钟
周期(clock,clk)写入到目标地址,无延迟或延迟(的节拍数)为0。响应于读操作,从发生读操作到获取到读返回数据通常需要至少两个时钟周期,也即写操作的读延迟(latency)(的节拍数)为2。
97.如图3b所示,对于某型网络芯片内的任一个单端口ram而言,在仿真环境1000运行的仿真实例中,可能存在两类对单端口ram的访问来源,其中,一类访问为来自中央处理器(centralprocessingunit,cpu)的软件访问,另一类访问为来自网络芯片内的逻辑单元的访问。这两类访问对于单端口ram都可以是读操作或写操作。也即,网络芯片内的任一个单端口ram可能需要响应分别来自逻辑单元或cpu的读操作或写操作。
98.参考以上单端口ram响应读操作和写操作的时序特性,如果在单端口ram响应某次针对目标地址的读操作期间,也即在该读操作的latency上,针对同一个目标地址发生了一次写操作,根据单端口ram的业务逻辑,则单端口ram响应本次读操作后,针对该目标地址的读出数据应该是在后这次写操作写入到目标地址的数据,也即新数据,而不是在前这次读操作触发时已经存储在目标地址内的数据,也即旧数据。
99.图3b所示的单端口ram芯片发生读写冲突的典型场景或业务逻辑如图4中的8个信号波形图所示。图4中,第一个信号波形为该单端口ram的时钟周期信号clk的时序。以下以该单端口ram的一个时钟周期为1个节拍进行说明。
100.第二个信号波形为该单端口ram的控制信号clk_2的时序,其为clk的2分频,读写访问的控制周期的节拍数为2,为时钟周期的两倍,如此,在每一个控制周期中,读操作和写操作交替且互斥地进行。图4中,控制周期内的第一拍为读相位rd_phase,第二拍为写相位wr_phase。自然地,也可以是第二拍为读相位rd_phase,第一拍为写相位wr_phase,可以参考图4得到对应的信号波形图,不再赘述。
101.第三个信号波形为该单端口ram的地址信号addr的时序,其更新周期与时钟周期相同,用于指示当前时钟周期内访问的地址。图4中展示有针对地址0或地址1的访问占用。
102.第四个信号波形为该单端口ram的读使能信号rd_en的时序,其更新周期与时钟周期相同,其中,低电平表示读使能无效,高电平表示读使能有效。图4中展示有3个高电平的读使能,分别对应3个有效的读操作。
103.第五个信号波形为该单端口ram的写使能信号wr_en的时序。其更新周期与时钟周期相同,其中,低电平表示写使能无效,高电平表示写使能有效。图4中展示有4个高电平的写使能,分别对应4个有效的写操作。
104.第六个信号波形为该单端口ram的写数据信号wr_data的时序,其更新周期与时钟周期相同,用于指示当前时钟周期内写操作的数据。图4中展示有针对数据data0、data1、data2、data3的写操作。
105.第七个信号波形为该单端口ram的读返回数据信号rd_data的时序,其更新周期与时钟周期相同,用于指示当前时钟周期内预期的读返回数据。图4中展示有预期的读返回数据data0、data1、data3。
106.第八个信号波形为该单端口ram的附加有冲突处理业务逻辑之后的读返回信号rd_data_fanal的时序,其更新周期与时钟周期相同,用于指示实际的读返回数据。图4中展示有实际的读返回数据data1、data1、data3。
107.根据以上的单端口ram的读返回数据信号rd_data的时序、读返回信号rd_data_
fanal的时序及读使能信号rd_en的时序,可以确定该单端口ram的读操作的读延迟为2。
108.以下结合图4展示的该单端口ram的3类读写访问场景及对应的业务逻辑,说明该单端口ram的读写逻辑及处理访问冲突时的业务逻辑。图4中,自左向右,依次为第一类访问冲突场景(如前述的cover1)、第二类访问冲突场景(如前述的cover2)、第三类访问场景(如前述的常规访问场景)。
109.在第一类访问冲突场景中,在第i+1拍,写使能信号wr_en保持为高电平,发生针对地址0及针对数据data0的写操作,如此,实现向地址0写入数据data0。在第i+2拍,读使能信号rd_en保持为高电平,发生针对地址0对应的数据data0的读操作。以及,预期在latency=2之后,也即第i+4拍,从读返回数据信号rd_data获取到预期的读返回数据data0。在第i+3拍,写使能信号wr_en保持为高电平,发生针对地址0针对数据data1的写操作。如此,实现向地址0写入数据data1。以及,因为写操作发生在读操作的读延迟上,发生了针对地址0的访问冲突。在第i+4拍,执行访问冲突对应的业务逻辑,将读返回数据信号rd_data获取的预期的读返回数据data0调整为在第i+3拍向地址0写入的数据data1,如此,读返回信号rd_data_fanal监测到的实际的读返回数据为data1。
110.随后,在第二类访问冲突场景中,在第j+1拍,写使能信号wr_en保持为高电平,发生针对地址1及针对数据data2的写操作,如此,实现向地址1写入数据data2。在第j+2拍,读使能信号rd_en保持为高电平,发生针对地址0对应的数据data1的读操作。以及,预期在latency=2之后,也即第j+4拍,从读返回数据信号rd_data获取到预期的读返回数据data1。在第j+3拍,写使能信号wr_en保持为高电平,发生针对地址1及针对数据data3的写操作,如此,实现向地址1写入数据data3。这时,尽管写操作发生在读操作的读延迟上,但读操作和写操作的地址不同,不会发生针对同一地址的访问冲突。在第j+4拍,读返回数据信号rd_data监测到预期的读返回数据data1读返回信号rd_data_fanal监测到的实际的读返回数据为data1。
111.随后,在第三类访问场景中,在第k+1拍,读使能信号rd_en保持为高电平,发生针对地址1对应的数据data3的读操作。以及,预期在latency=2之后,也即第k+3拍,从读返回数据信号rd_data获取到预期的读返回数据data3。在第k+2拍,写使能信号wr_en保持为低电平,不发生写操作。在第k+3拍,读使能信号rd_en保持为低电平,不发生读操作。
112.相应地,在开发针对单端口ram的访问冲突进行验证的验证装置时,可以包括以下步骤。
113.首先分析待测ram的访问冲突的典型场景。此阶段需要针对单端口ram在芯片内的使用情况进行分析,分析出冲突的场景。如,在网络芯片中存在很多配置表项,都是利用了单端口ram实现,此类单端口ram,一般读写时隙是分开进行的。如图3b和图4所示,第一种存在的访问冲突场景为在逻辑单元对某一地址进行读操作时,cpu对相同地址进行了写操作,这个写操作发生在了读的latency上,这时,逻辑读操作应该返回的是最新写入的数据,而不是ram中该地址在使能读操作时原本存储的数据。第二种存在的访问冲突场景为,在逻辑单元对某一地址进行读操作时,cpu对另外地址进行了写操作,这个写操作发生在了读的latency上,这时,逻辑读操作应该返回的是ram中存在的数据。
114.其次,根据分析的访问冲突的典型场景,构造简单并且可以覆盖大部分场景的测试用例。由图4可知,读操作的latency为2clk,因此,在地址1~100之间,随机选取2个地址,
作为cpu写操作和逻辑读操作的地址,随机发送cpu写操作和逻辑读操作,数据随机。
115.再次,根据分析的访问冲突的典型场景,构造以下的assertioncover:
116.cover1:读操作的latency上发生了相同地址的写操作;
117.cover2:读操作的latency上发生了不同地址的写操作;
118.又次,根据前述分析的访问冲突的典型场景及构造的assertioncover,进行以下的访问冲突的验证检查。
119.sva1:如果读操作的latency上发生了相同地址的写操作,读返回数据一定是该笔写操作的数据;
120.sva2:如果读操作的latency上发生了不同地址的写操作,读操作的返回值一定是上一次该地址的写操作的值;
121.sva3:如果仅发生了一笔读操作,读操作的返回值一定是上一次该地址的写操作的值;
122.以及,每个测试用例仿真完成后,分析assertioncover结果,并确定该测试用例的覆盖情况是否通过检查。检查通过的要求是在测试用例的执行过程中,针对待测ram的前述3个sva都没有报错,并且,前述的2个assertioncover已经全部覆盖。
123.以及,在检查通过后,得出验证结论。至此,针对待测ram的两种冲突场景已经得到了充分的验证。
124.以下结合图3a、图3b所示的仿真环境1000中的至少一个仿真实例及图4,对本发明实施例的验证装置及前述的ram访问冲突的验证方法具体进行说明。
125.如图3a所示,本发明另一个实施例的单端口ram访问冲突的验证装置,在运行时,包括:
126.仿真环境1000,用于执行前述的随机生成的测试用例;
127.访问冲突验证模块checker340,用于运行前述的判断所述对应关系是否包括指定情况的步骤,以验证所述单端口ram是否正确处理了访问冲突(以下简称验证指定情况的步骤)。
128.在一些实施例中,仿真环境1000由eda软件实现。如此,执行生成的测试用例,在仿真环境1000内发生针对单端口ram的访问冲突场景,并就单端口ram响应访问冲突的业务逻辑进行正确性验证。
129.如图3a所示,仿真环境1000自有的编译器(图中未示出)解析接收到的针对单端口ram120的测试用例,并根据运行在仿真环境1000中的仿真实例,如图3b所示的单核或多核cpu400,或网络芯片100包括的第一逻辑单元111或第二逻辑单元112,以及各实例分别针对单端口ram120(如第一单端口ram121或第二单端口ram122)的访问权限,生成分别针对运行在仿真环境中的至少一个仿真实例的激励信号;这些仿真实例响应于这些激励信号,发生针对该单端口ram120的多路操作,包括读操作和写操作。
130.相应地,运行在仿真环境1000中的单核或多核cpu400作为第一仿真实例,发生针对单端口ram120(如第一单端口ram121)的第一地址的第一路操作,如读操作,运行在仿真环境1000中的第一逻辑单元111作为第二仿真实例,发生针对单端口ram120(如第一单端口ram121)的第一地址的第二路操作,如写操作。并且,第一路操作在对单端口ram120(如第一单端口ram121)的第一地址进行读操作时,第二路操作对所述单端口ram120(如第一单端口
ram121)的第一地址进行写操作,并且,所述写操作发生在所述读操作的读延迟上。
131.参考前述说明,在每个时钟周期,单端口ram互斥地响应读操作或写操作。因此,根据所述读操作的读延迟,可以预测在所述读操作的读延迟上可能发生的读操作或写操作或空操作的次数。这时因为,读写交替发生,在读的读延迟上,写操作的次数与读操作的次数之和不大于所述读操作的读延迟。
132.相应地,在一些实施例中,运行在仿真环境1000中的该单端口ram120作为运行在该仿真环境中的一个仿真实例,响应于前述的读操作或写操作,生成或更新多组访问时序,如,读数据使能信号波形、写数据使能信号波形、读数据信号波形、写数据信号波形、地址访问信号波形、读返回数据信号波形等。以上,访问时序也可以认为是该仿真环境针对该单端口ram120的输出时序。
133.在一些实施例中,运行在仿真环境1000中的单核或多核cpu400作为第一仿真实例,发生针对单端口ram120(如第一单端口ram121)的第一地址的第一路操作,如读操作,运行在仿真环境1000中的第一逻辑单元111作为第二仿真实例,发生针对单端口ram120(如第一单端口ram121)的第二地址的第二路操作,如写操作。并且,第一路操作在对单端口ram120(如第一单端口ram121)的第一地址进行读操作时,第二路操作对所述单端口ram120(如第一单端口ram121)的第二地址进行写操作,并且,所述写操作发生在所述读操作的读延迟上。
134.在一些实施例中,运行在仿真环境1000中的该单端口ram120作为运行在该仿真环境中的另一个仿真实例,响应于前述的读操作或写操作,生成或更新多组访问时序,如,读数据使能信号波形、写数据使能信号波形、读数据信号波形、写数据信号波形、地址访问信号波形、读返回数据信号波形等。以上,访问时序也可以认为是该仿真环境针对该单端口ram120的输出时序。
135.在一些实施例中,运行在仿真环境1000中的单核或多核cpu400作为第一仿真实例,发生针对单端口ram120(如第一单端口ram121)的第一地址的第一路操作,如读操作,运行在仿真环境1000中的第一逻辑单元111作为第二仿真实例,发生针对单端口ram120(如第一单端口ram121)的空操作。并且,第一路操作在对单端口ram120(如第一单端口ram121)的第一地址进行读操作时,第二路操作对所述单端口ram120(如第一单端口ram121)进行空操作,也即,不针对单端口ram120的任意地址发生读操作或写操作,并且,所述空操作发生在所述读操作的读延迟上。
136.在一些实施例中,运行在仿真环境1000中的该单端口ram120作为运行在该仿真环境中的另一个仿真实例,响应于前述的读操作或空操作,生成或更新多组访问时序,如,读数据使能信号波形、写数据使能信号波形、读数据信号波形、写数据信号波形、地址访问信号波形、读返回数据信号波形等。以上,访问时序也可以认为是该仿真环境针对该单端口ram120的输出时序。
137.如图3a所示,作为与仿真环境具有时序获取接口的验证组件,访问冲突验证模块checker340运行前述的验证指定情况的步骤,以验证所述单端口ram是否正确处理了访问冲突。
138.在一些实施例中,访问冲突验证模块checker340从仿真环境1000中获取该单端口ram120响应来自第一路操作的读操作而更新的读数据使能信号波形、读数据信号波形、地
址访问信号波形、读返回数据信号波形等,并从读返回数据信号波形中提取出所述读返回数据;及从仿真环境中获取该单端口ram120响应来自第二路操作的该写操作而更新的写数据使能信号波形、写数据信号波形、地址访问信号波形等,并从写数据信号波形中提取出所述写操作所写入的数据。
139.随后,访问冲突验证模块checker340验证该读返回数据是否为所述写操作所写入的数据。在该读返回数据为所述写操作所写入的数据时,则确定所述该单端口ram120针对该第一类访问冲突场景的业务逻辑符合预设,冲突验证通过(或成功);在该读返回数据不是所述写操作所写入的数据时,则确定所述该单端口ram针对该第一类访问冲突场景(参考后述的cover330的定义)的业务逻辑不符合预设,冲突验证不通过(或失败)。
140.在一些实施例中,访问冲突验证模块checker340从仿真环境1000中获取该单端口ram120响应来自第一路操作的读操作而更新的读数据使能信号波形、读数据信号波形、地址访问信号波形、读返回数据信号波形等,并从读返回数据信号波形中提取出所述读返回数据;及从仿真环境中获取该单端口ram120响应来自第二路操作的该写操作而更新的写数据使能信号波形、写数据信号波形、地址访问信号波形等,并从写数据信号波形中提取出所述写操作所写入的数据。
141.随后,访问冲突验证模块checker340验证该读返回数据是否为所述ram第一地址所存储的数据。在该读返回数据为所述ram第一地址所存储的数据时,确定所述该单端口ram针对该第二类访问冲突场景(参考后述的cover330的定义)的业务逻辑符合预设,冲突验证通过(或成功);在该读返回数据不是所述ram第一地址所存储的数据时,则所述该单端口ram针对该第二类访问冲突场景的业务逻辑不符合预设,冲突验证不通过(或失败)。
142.在一些实施例中,访问冲突验证模块checker340从仿真环境1000中获取该单端口ram120响应来自第一路操作的读操作而更新的读数据使能信号波形、读数据信号波形、地址访问信号波形、读返回数据信号波形等,并从读返回数据信号波形中提取出所述读返回数据及从仿真环境中获取该单端口ram在响应对ram第一地址进行读操作时(如发生读操作所在的时钟周期内)所述ram第一地址所存储的数据。
143.随后,访问冲突验证模块checker340验证该读返回数据是否为所述ram第一地址所存储的数据。在该读返回数据为所述ram第一地址所存储的数据时,确定所述该单端口ram针对该常规访问场景的业务逻辑符合预设,验证通过(或成功);在该读返回数据不是所述ram第一地址所存储的数据时,则所述该单端口ram针对该常规访问场景的业务逻辑不符合预设,验证不通过(或失败)。
144.在一些实施例中,如图3a所示,该验证装置还包括:
145.访问冲突检查模块cover330,用于获取针对所述单端口ram的指定输出时序,并根据所述指定输出时序,检查是否针对所述单端口ram发生了访问冲突;
146.其中,所述指定输出时序包括针对所述单端口ram的读操作信号波形、针对所述单端口ram的写操作信号波形、针对所述单端口ram的地址访问信号波形。
147.如图3a所示,作为与仿真环境具有时序获取接口的验证组件,访问冲突检查模块cover330获取针对所述单端口ram的指定输出时序,并根据所述指定输出时序,检查是否针对所述单端口ram发生了访问冲突。
148.在一些实施例中,访问冲突检查模块cover330针对所述单端口ram的读操作信号
波形、针对所述单端口ram的写操作信号波形、针对所述单端口ram的地址访问信号波形,确定是否在读操作的latency上发生了针对相同地址的写操作,也即前述的针对所述该单端口ram的第一类访问冲突场景。
149.在一些实施例中,访问冲突检查模块cover330针对所述单端口ram的读操作信号波形、针对所述单端口ram的写操作信号波形、针对所述单端口ram的地址访问信号波形,确定是否在读操作的latency上发生了不同地址的写操作,也即前述的针对所述该单端口ram的第二类访问冲突场景。
150.在一些实施例中,如图3a所示,该验证装置还包括:
151.用例参数确定模块310,用于获取针对所述单端口ram的配置参数,所述配置参数包括:所述单端口ram响应读操作的读延迟;
152.相应地,所述访问冲突验证模块checker340用于根据所述单端口ram响应读操作的读延迟,验证所述单端口ram是否正确处理了访问冲突;
153.所述访问冲突检查模块cover330用于根据所述单端口ram响应读操作的读延迟,检查是否针对所述单端口ram发生了访问冲突。
154.在一些实施例中,用例参数确定模块310人机交互地(如,通过windows操作系统下的cmd命令行;或通过可接收输入值的对话框控件)获取所述单端口ram响应读操作的读延迟,作为针对访问冲突验证模块checker340及访问冲突检查模块cover330的配置参数。如此,可以针对不同型号的单端口ram,对其读操作的读延迟这一变量的值进行参数化地配置。
155.这里,所述单端口ram响应读操作的读延迟用于确定在所述读操作的读延迟上,最多可能产生的写操作的次数。这是因为,单端口ram的读写操作交替发生,在读的读延迟上,写操作的次数与读操作的次数之和不大于所述读操作的读延迟。
156.相应地,如图3b所示,所述访问冲突验证模块checker340根据所述单端口ram响应读操作的读延迟,来确定是否在读操作的latency上发生了相同地址的写操作,以验证所述单端口ram是否正确处理了访问冲突;所述访问冲突检查模块cover330则根据所述单端口ram响应读操作的读延迟,来确定读操作的latency上发生了相同地址的写操作,以检查是否针对所述单端口ram发生了访问冲突。
157.应该理解为,所述访问冲突验证模块checker340及所述访问冲突检查模块cover330解析前述的各输出时序时,还包括从所述仿真环境1000获取运行在仿真环境1000中的各实例的时钟周期,如单核或多核cpu400的时钟周期,单端口ram120的时钟周期,第一逻辑单元111的时钟周期,不再赘述。
158.在一些实施例中,如图3a、图3b所示,该验证装置还包括:
159.用例生成模块320,用于根据获取的所述配置参数,生成测试用例;
160.相应地,所述仿真环境1000根据解析后的所述测试用例,生成针对所述单端口ram的访问序列,以使得所述访问序列中包括第二路操作为写操作且发生在第一路操作为读操作的读延迟上。
161.在一些实施例中,所述用例生成模块320根据获取的所述单端口ram响应读操作的读延迟,生成测试用例,以使得所述仿真环境1000根据解析后的所述测试用例,生成针对所述单端口ram的访问序列时,所述访问序列中包括的第二路操作为写操作且发生在所述第
一路操作为读操作的读延迟上。
162.在一些实施例中,所述配置参数还包括所述单端口ram的存储深度、所述单端口ram的存储位宽;
163.所述用例生成模块320还用于根据所述单端口ram的存储深度,确定针对所述单端口ram可访问的地址范围,以指定所述访问序列中的任一路操作访问的地址;及
164.根据所述单端口ram的存储位宽,确定针对所述单端口ram可读写的数据的上限位宽(如,8bit或16bit),以指定所述访问序列中的任一路操作访问的数据的上限位宽。
165.在一些实施例中,用例参数确定模块310人机交互地(如,通过windows操作系统下的cmd命令行;或通过可接收输入值的对话框控件)获取所述单端口ram的存储深度、所述单端口ram的存储位宽,作为针对所述用例生成模块320的配置参数。
166.在一些实施例中,对于冲突验证需要的读操作的读延迟、存储位宽和存储深度,还可以通过输出装置2000在用户的操作界面上显示指定内容的相关字段,由用户对各字段进行赋值来实现。
167.在一些实施例中,用例参数确定模块310还可以人机交互地(如,通过windows操作系统下的cmd命令行;或通过可接收输入值的对话框控件)获取用于设置时序关系的参数。如,是上升沿触发还是下降沿触发;如一个控制周期内,是先读再写,或先写再读,不再赘述。
168.以上,使用用例参数确定单元来获取配置参数,利用少量的配置参数就可以生成或配置测试用例,制作测试用例的步骤直观、便于操作,生成测试用例的通用性好。
169.如此,针对访问序列实现了参数化,包括时序关系参数化、地址参数化、访问数据参数化。以及,实现了访问冲突验证模块checker340及访问冲突检查模块cover330可针对不同配置参数的单端口ram复用。
170.在一些实施例中,如图3a,该验证装置还包括:
171.输出装置2000;
172.所述访问冲突验证模块checker340,还用于根据验证的所述单端口ram正确处理了访问冲突的次数,确定所述测试用例针对所述单端口ram访问冲突正确处理的情况;
173.所述输出装置用于显示所述测试用例针对所述单端口ram访问冲突正确处理的情况。
174.如,访问冲突验证模块checker340将检测到的发生访问冲突且正确响应的次数与测试用例中全部的读访问的次数做除法,或将检测到的发生访问冲突且正确响应的次数与发生访问冲突次数做除法,确定该测试用例针对访问冲突的覆盖率;或者,人机交互地展示检测到的发生访问冲突且正确响应的次数、发生访问冲突的次数、检测到的全部的读访问的次数。
175.如此,不再需要人工地在人机交互界面上观察显示的在测试用例执行期间获取的输出时序图来确定测试用例针对访问冲突正确响应的情况,或观察打印的输出时序图来确定测试用例针对访问冲突正确响应的情况。
176.在一些实施例中,如图3a所示,该验证装置还包括:
177.所述访问冲突检查模块cover330,还用于根据检查的针对所述单端口ram发生了访问冲突的次数,确定所述仿真环境运行所述的执行测试用例的步骤中,所述测试用例针
对所述单端口ram发生访问冲突的情况;
178.所述输出装置用于显示所述测试用例针对所述单端口ram发生访问冲突的情况。
179.如,访问冲突检查模块cover330将检测到的发生访问冲突的次数与测试用例中全部的读访问的次数做除法,确定该测试用例针对访问冲突的覆盖率;或者,人机交互地展示检测到的发生访问冲突的次数、检测到的全部的读访问的次数。
180.如此,利用生成的测试用例,对单端口ram是否发生读写冲突进行检查,并就发生读写冲突时是否正确响应读写冲突进行验证,以确定测试用例的情况。
181.在一些实施例中,所述输出装置还用于输出验证报告,所述验证报告中至少包括前述的访问冲突检查模块cover330确定的所述测试用例针对所述单端口ram发生访问冲突的情况,及所述访问冲突验证模块checker340确定的所述测试用例针对所述单端口ram访问冲突正确处理的情况。
182.如此,不再需要人工地在人机交互界面上观察显示的在测试用例执行期间获取的输出时序图来确定测试用例针对访问冲突的情况,或观察打印的输出时序图来确定测试用例针对访问冲突的情况。
183.在一些实施例中,可以基于通用验证方法学(universalverificationmethodology,uvm)这个以systemverilog类库为主体的验证平台开发前述的访问冲突检查模块cover330及访问冲突验证模块checker340。
184.在一些实施例中,访问冲突验证模块checker340通过设置多种sva,在仿真环境1000执行测试用例过程中,对于发生冲突的时隙进行预期,并验证发生冲突时单端口ram的业务逻辑是否能正确响应访问冲突;访问冲突检查模块cover330使用assertioncover,在仿真环境1000执行测试用例过程中,对于发生冲突的时隙进行预期,并针对单端口ram是否发生访问冲突场景进行检查。
185.在一些实施例中,checker340在uvm中实现时,可以采用下述的sva1,以进行assertion检查:sva1:如果读操作的latency上发生了相同地址的写操作,读返回数据一定是该笔写操作的数据。
186.在一些实施例中,checker340在uvm中实现时,可以采用下述的sva2,以进行assertion检查:sva2:如果读操作的latency上发生了不同地址的写操作,读操作的返回值一定是上一次该地址的写操作的值。
187.在一些实施例中,checker340在uvm中实现时,可以采用下述的sva3,以进行assertion检查:sva3:如果仅发生了一笔读操作,读操作的返回值一定是上一次该地址的写操作的值。
188.在一些实施例中,cover330在uvm中实现时,可以采用下述的assertioncover1,构造针对单端口ram访问冲突检查的通用代码:cover1:读操作的latency上发生了相同地址的写操作。
189.在一些实施例中,cover330在uvm中实现时,可以采用下述的assertioncover2,构造针对单端口ram访问冲突检查的通用代码:cover2:读操作的latency上发生了不同地址的写操作。
190.如图3a和图3b所示,针对单端口ram的访问冲突问题,利用可编辑的用例参数确定模块310获取针对待测ram的配置参数后,用例生成模块320根据所述配置参数自动地生成
针对访问冲突验证的测试用例,随后,仿真环境根据解析后的测试用例,生成针对仿真环境中运行的至少一个可访问待测ram的仿真实例的激励信号,所述至少一个可访问待测ram的仿真实例响应于该激励信号,发生针对所述待测ram的访问序列,仿真环境中运行的待测ram响应所述访问序列,发生至少一次访问冲突场景;仿真环境中运行的访问冲突检查模块cover330检查是否针对所述待测ram发生了访问冲突;仿真环境中运行的访问冲突验证模块checker340验证就检测到的访问冲突所述待测ram是否正确响应了访问冲突。
191.如此,本发明实施例的验证装置,一方面实现了针对冲突场景验证的完备性(如,保证第一类访问冲突场景、第二类访问冲突场景,以及常规访问场景),另一方面,实现了各验证组件(包括访问冲突检查模块cover330、访问冲突验证模块checker340)的通用性。
192.如此,本发明实施例的验证装置,实现了针对单端口ram访问冲突验证的通用方法,能够快速准确地验证测试用例是否覆盖到访问冲突以及是否正确响应了访问冲突。
193.如此,本发明提供的ram访问冲突的验证方法及验证装置,实现了针对单端口ram访问冲突验证的通用方法,通过参数化及统一流程化,对单端口ram访问冲突的典型场景,提供了标准且统一的覆盖检查流程,能够快速准确地验证测试用例是否覆盖到访问冲突以及是否正确响应了访问冲突。并且,测试用例制作简单,验证过程简单,易调试。
194.在一些应用场景中,如图3b所示,仿真环境内运行的多个仿真实例可能包括多个单端口ram。如,某型网络芯片中设置有数百个单端口ram,这些单端口分别具有不同的地址范围。应用前述的验证装置可以分别针对仿真环境内运行的各单端口ram分别获取配置参数,并根据各单端口ram各自的配置参数分别生成对应的测试用例,并在仿真环境内运行与各测试用例对应的访问序列,并分别利用一个前述的checker340或cover330检测各单端口ram针对访问冲突的情况,不再赘述。
195.如图5所示,本发明实施例的计算设备700包括:处理器710、存储器720,还可以包括通信接口730。应理解,该图5中所示的计算设备700中的通信接口730可以用于与其他设备之间进行通信。其中,该处理器710可以与存储器720连接。该存储器720可以用于存储该程序代码和数据。因此,该存储器720可以是处理器710内部的存储单元,也可以是与处理器710独立的外部存储单元,还可以是包括处理器710内部的存储单元和与处理器710独立的外部存储单元的部件。
196.可选的,计算设备700还可以包括总线。其中,存储器720、通信接口730可以通过总线与处理器710连接。总线可以是外设部件互连标准(peripheralcomponent interconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。
197.应理解,在本发明实施例中,该处理器710可以采用中央处理单元(central processingunit,cpu)。该处理器还可以是其它通用处理器、数字信号处理器(digital signalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门矩阵(fieldprogrammablegatearray,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器710采用一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。
198.该存储器720可以包括只读存储器和随机存取存储器,并向处理器710提供指令和
数据。处理器710的一部分还可以包括非易失性随机存取存储器。例如,处理器710还可以存储设备类型的信息。
199.在计算设备700运行时,处理器710执行存储器720中的计算机执行指令执行前述的ram访问冲突的验证方法的操作步骤。
200.应理解,根据本发明实施例的计算设备700可以对应于执行根据本技术各实施例的方法中的相应主体,并且计算设备700中的各个模块的上述和其它操作和/或功能分别为了实现本实施例各方法的相应流程,为了简洁,在此不再赘述。
201.以上各装置的功能可以通过由处理器执行程序(软件)来实现,另外,也可以通过lsi(largescaleintegration,大规模集成电路)和asic(applicationspecificintegrated circuit,专用集成电路)等硬件来实现,或者还可以通过软件和硬件的结合来实现。
202.在本技术全文中使用的词语“第一、第二、第三等”或模块a、模块b、模块c等类似用语,仅用于区别类似的对象,不代表针对对象的特定排序,可以理解的是,在允许的情况下可以互换特定的顺序或先后次序。
203.在本技术全文中,所涉及的表示步骤的标号,如s10、s20
……
等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
204.在本技术的全文中使用的术语“包括”不应解释为限制于其后列出的内容;它不排除其它的结构要素或步骤。因此,其应当诠释为指定所提到的所述技术特征、整体、步骤或部件的存在,但并不排除存在或添加一个或更多其它技术特征、整体、步骤或部件及其组。
205.可以理解,本领域技术人员可以将本技术全文中提到的一个或多个实施例中提到的特征,以任何适当的方式与其他实施例中的特征进行组合来实施本技术。
206.注意,前述仅为本技术的较佳实施例及所运用的技术原理。本领域技术人员会理解,本技术不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本技术的保护范围。因此,虽然通过以上实施例对本技术进行了较为详细的说明,但是本技术不仅仅限于以上实施例,在不脱离本技术的技术构思的情况下,还可以包括更多其他等效实施例,均属于本技术的保护范畴。
技术特征:
1.一种ram访问冲突的验证方法,其特征在于,包括:确认待测ram的读延迟,所述读延迟包括所述ram的读使能信号到读返回数据信号的n个时钟周期;选取待测ram的测试地址;针对所述测试地址随机产生读操作或写操作;当所述写操作在所述读操作的读延迟上发生时,获得读返回数据与写操作的数据、读操作的地址与写操作的地址的对应关系;当所述对应关系包括指定情况时,确定所述待测ram的访问冲突已验证。2.根据权利要求1所述的验证方法,其特征在于,所述指定情况,包括:当对所述待测ram的第一地址进行写操作,且所述写操作在对所述第一地址的读操作的读延迟上发生时,所述读返回数据与所述写操作的数据相同。3.根据权利要求1所述的验证方法,其特征在于,所述指定情况,包括:当对所述待测ram的第二地址进行写操作,且所述写操作在对所述待测ram的第一地址的读操作的读延迟上发生时,所述读返回数据与所述第一地址存储的数据相同。4.根据权利要求1所述的验证方法,其特征在于,所述指定情况,包括:当对所述待测ram的第一地址的读操作的读延迟上未发生写操作时,所述读返回数据与所述第一地址存储的数据相同。5.一种ram访问冲突的验证装置,其特征在于,包括:用例参数确定单元,用于确认待测ram的读延迟,所述读延迟包括所述ram的读使能信号到读返回数据信号的n个时钟周期;选取待测ram的测试地址;用例生成单元,用于针对所述测试地址随机产生读操作或写操作;冲突验证单元,用于当所述写操作在所述读操作的读延迟上发生时,获得读返回数据与写操作的数据、读操作的地址与写操作的地址的对应关系;在所述对应关系包括指定情况时,确定所述待测ram的访问冲突已验证。6.根据权利要求5所述的验证装置,其特征在于,所述指定情况,包括:当对所述待测ram的第一地址进行写操作,且所述写操作在对所述第一地址的读操作的读延迟上发生时,所述读返回数据与所述写操作的数据相同。7.根据权利要求5所述的验证装置,其特征在于,所述指定情况,包括:当对所述待测ram的第二地址进行写操作,且所述写操作在对所述待测ram的第一地址的读操作的读延迟上发生时,所述读返回数据与所述第一地址存储的数据相同。8.根据权利要求5所述的验证装置,其特征在于,所述指定情况,包括:当对所述待测ram的第一地址的读操作的读延迟上未发生写操作时,所述读返回数据与所述第一地址存储的数据相同。9.一种计算设备,其特征在于,包括:处理器,以及存储器,其上存储有程序指令,程序指令当被处理器执行时使得处理器执行如权利要求1至4中任一项所述的ram访问冲突的验证方法。10.一种计算机可读存储介质,其特征在于,其上存储有程序指令,程序指令当被处理器执行时使得处理器执行如权利要求1至4中任一项所述的ram访问冲突的验证方法。
技术总结
本申请公开RAM访问冲突的验证方法及验证装置。该验证方法,确认待测RAM的读延迟,所述读延迟包括所述RAM的读使能信号到读返回数据信号的N个时钟周期;选取待测RAM的测试地址;针对所述测试地址随机产生读操作或写操作;当所述写操作在所述读操作的读延迟上发生时,获得读返回数据与写操作的数据、读操作的地址与写操作的地址的对应关系;当所述对应关系包括指定情况时,确定所述待测RAM的访问冲突已验证。如此,实现了针对RAM访问冲突的通用方法,提供了标准且统一的访问冲突验证流程,能够快速准确地验证访问冲突。速准确地验证访问冲突。速准确地验证访问冲突。
技术研发人员:
李光宇
受保护的技术使用者:
北京物芯科技有限责任公司
技术研发日:
2022.11.23
技术公布日:
2023/3/2