
1.本技术涉及集成电路技术领域,并且更为具体地,涉及一种通用总线模型和仿真测试的方法。
背景技术:2.随着大规模集成电路(integrated circuit,ic)技术的发展,芯片的逻辑规模和电路的复杂程度越来越高,为了保证芯片质量以及上市时间,需要对芯片进行准确快速的仿真测试。硬件仿真加速(emulation)技术通过将待测设计(design under test,dut)映射到硬件仿真器(emulator)的硬件平台上,能够提高dut的逻辑规模和运行速度。但是,由于dut输入信号的产生以及输出信号的处理都需要在软件环境中进行,导致芯片仿真测试的速度受限于软件侧的运行速度。因此,如何提高芯片仿真测试的效率成为亟需解决的技术问题。
技术实现要素:3.本技术实施例提供一种通用总线模型和仿真测试的方法,使得对待测设计进行的仿真测试能够在硬件环境中实现,提高仿真测试的效率。
4.第一方面,提供一种通用总线模型,用于在硬件环境中对待测设计进行仿真测试,该通用总线模型包括:解码模块,用于解码激励向量,以产生激励信号,激励信号用于指示对待测设计进行的操作;控制模块,用于通过待测设计的输入通道向待测设计发送激励信号;记录模块,用于通过待测设计的输出通道接收响应信号,响应信号是待测设计根据激励信号反馈的信号。
5.根据本技术提供的技术方案,通用总线模型能够在硬件环境中解析激励向量并实现与待测设计的信号交互,使得所有仿真行为均在硬件环境中完成,避免硬件与软件的频繁交互,提高仿真测试的运算速度,同时实现软件与硬件的解耦,提高可仿真测试的逻辑规模,从而提高仿真测试的效率。
6.结合第一方面,在第一方面的某些实现方式中,激励向量包括写激励向量,激励信号包括写地址通道信号和写数据通道信号,用于指示对待测设计进行写操作,响应信号包括写响应通道信号,解码模块包括,写通道解码模块,用于解码写激励向量,以产生写地址通道信号和写数据通道信号,其中,写地址通道信号用于指示向待测设计写入数据的写地址,写数据通道信号用于指示向待测设计写入的写数据;控制模块包括,写地址控制模块,用于向待测设计发送写地址通道信号;控制模块还包括,写数据控制模块,用于向待测设计发送写数据通道信号;记录模块包括,写响应记录模块,用于接收写响应通道信号,写响应通道信号用于指示写操作是否成功。
7.根据本技术提供的技术方案,通用总线模型能够在硬件环境中解析写激励向量,并利用标准协议提供的硬件接口与dut进行信号交互,从而由硬件实现写操作的仿真测试,验证dut写操作的正确性。
8.结合第一方面,在第一方面的某些实现方式中,通用总线模型,还包括:写激励存储模块,用于存储写激励向量。
9.根据本技术提供的技术方案,通用总线模型能够接收并存储外部设备提供的写激励向量,从而丰富通用总线模型能够应用的场景。
10.结合第一方面,在第一方面的某些实现方式中,写激励存储模块,还用于:当满足写激励向量的触发条件时,向写通道解码模块发送写激励向量。
11.根据本技术提供的技术方案,通用总线模型能够调度写激励向量的触发时机与顺序,从而提高可仿真场景的多样性与真实性,提高仿真测试的效果。
12.结合第一方面,在第一方面的某些实现方式中,写地址控制模块,还用于:根据写数据的位宽,调整写地址。
13.根据本技术提供的技术方案,通用总线模型能够根据写数据的位宽对齐写地址,从而修正写激励向量中不符合待测设计所用的总线标准的写地址,提高测试的成功率。
14.结合第一方面,在第一方面的某些实现方式中,写地址控制模块,还用于:接收写地址通道的写地址握手信号,写地址握手信号用于指示写地址信号被待测设计成功接收。
15.根据本技术提供的技术方案,通用总线模型能够确认写地址信号发送成功,从而为分析待测设计的写操作性能提供数据,此外基于写地址握手信号能够调度下一个写地址信号的发送时机,从而实现连续的自动测试。
16.结合第一方面,在第一方面的某些实现方式中,写数据控制模块,还用于:接收写数据通道的写数据握手信号,写数据握手信号用于指示写数据信号被待测设计成功接收。
17.根据本技术提供的技术方案,通用总线模型能够确认写数据信号发送成功,从而为分析待测设计的写操作性能提供数据,此外基于写数据握手信号能够调度下一个写数据信号的发送时机,从而实现连续的自动测试。
18.结合第一方面,在第一方面的某些实现方式中,写响应记录模块,还用于:根据写响应通道信号,确定并记录待测设计的写操作性能数据。
19.根据本技术提供的技术方案,通用总线模型能够计算写过程中的一些基础传输性能,从而分析并记录待测设计的写操作性能,为仿真测试提供更全面的功能。
20.结合第一方面,在第一方面的某些实现方式中,激励向量包括读激励向量,激励信号包括读地址通道信号,用于指示对待测设计进行读操作,响应信号包括读响应通道信号,解码模块包括,读通道解码模块,用于解码读激励向量,以产生读地址通道信号,其中,读地址通道信号用于指示从待测设计读取读数据的读地址;控制模块包括,读地址控制模块,用于向待测设计发送读地址通道信号;记录模块包括,读响应记录模块,用于接收读响应通道信号,读响应通道信号用于指示读操作是否成功。
21.根据本技术提供的技术方案,通用总线模型能够在硬件环境中解析读激励向量,并利用标准协议提供的硬件接口与dut进行信号交互,从而由硬件实现读操作的仿真测试,验证dut读操作的正确性。
22.结合第一方面,在第一方面的某些实现方式中,通用总线模型,还包括:读激励存储模块,用于存储读激励向量。
23.根据本技术提供的技术方案,通用总线模型能够接收并存储外部设备提供的读激励向量,从而丰富通用总线模型能够应用的场景。
24.结合第一方面,在第一方面的某些实现方式中,读激励存储模块,还用于:当满足读激励向量的触发条件时,向读通道解码模块发送读激励向量。
25.根据本技术提供的技术方案,通用总线模型能够调度读激励向量的触发时机与顺序,从而提高可仿真场景的多样性与真实性,提高仿真测试的效果。
26.结合第一方面,在第一方面的某些实现方式中,读地址控制模块,还用于:根据读数据的位宽,调整读地址。
27.根据本技术提供的技术方案,通用总线模型能够根据读数据的位宽对齐读地址,从而修正读激励向量中不符合待测设计所用的总线标准的读地址,提高测试的成功率。
28.结合第一方面,在第一方面的某些实现方式中,读地址控制模块,还用于:接收读地址通道的读地址握手信号,读地址握手信号用于指示读地址信号被待测设计成功接收。
29.根据本技术提供的技术方案,通用总线模型能够确认读地址信号发送成功,从而为分析待测设计的读操作性能提供数据,此外基于读地址握手信号能够调度下一个读地址信号的发送时机,从而实现连续的自动测试。
30.结合第一方面,在第一方面的某些实现方式中,读响应记录模块,还用于:根据读响应通道信号,确定并记录待测设计的读操作性能数据。
31.根据本技术提供的技术方案,通用总线模型能够计算读过程中的一些基础传输性能,从而分析并记录待测设计的读操作性能,为仿真测试提供更全面的功能。
32.结合第一方面,在第一方面的某些实现方式中,通用总线模型还包括:过程监控模块,用于当满足激励向量的完成条件时,产生并发送测试完成信号。
33.根据本技术提供的技术方案,通用总线模型能够监控仿真测试的过程,当满足测试结束条件时向监控设备发送测试完成信号,告知测试人员测试完成,从而便于测试人员监控仿真测试的进行状态。
34.结合第一方面,在第一方面的某些实现方式中,过程监控模块,还用于:当响应信号异常时,产生并发送测试异常信号。
35.根据本技术提供的技术方案,通用总线模型能够在待测设计的读写操作发生异常时记录并通报给测试人员,从而使得测试人员能够对仿真测试发生的错误及时调试。
36.结合第一方面,在第一方面的某些实现方式中,通用总线模型由可综合代码编写。
37.根据本技术提供的技术方案,通用总线模型由可综合的verilog代码(或其它可由真实电路实现的语言)编写,使得通用总线模型和待测设计构成的测试平台能够应用于嵌入式的硬件仿真测试方法,进一步提高仿真测试的效率。
38.第二方面,提供一种对待测设计进行仿真测试的方法,该方法由通用总线模型在硬件环境中执行,通用总线模型包括解码模块、控制模块和记录模块,该方法包括:通过解码模块解码激励向量,以产生激励信号,激励信号用于指示对待测设计进行的操作;通过控制模块通过待测设计的输入通道向待测设计发送激励信号;通过记录模块通过待测设计的输出通道接收响应信号,响应信号是待测设计根据激励信号反馈的信号。
39.结合第二方面,在第二方面的某些实现方式中,激励向量包括写激励向量,激励信号包括写地址通道信号和写数据通道信号,用于指示对待测设计进行写操作,响应信号包括写响应通道信号;解码模块包括写通道解码模块;控制模块包括写地址控制模块和写数据控制模块;记录模块包括写响应记录模块;该方法包括:通过写通道解码模块解码写激励
向量,以产生写地址通道信号和写数据通道信号,其中,写地址通道信号用于指示向待测设计写入数据的写地址,写数据通道信号用于指示向待测设计写入的写数据;通过写地址控制模块向待测设计发送写地址通道信号;通过写数据控制模块用于向待测设计发送写数据通道信号;通过写响应记录模块接收写响应通道信号,写响应通道信号用于指示写操作是否成功。
40.结合第二方面,在第二方面的某些实现方式中,通用总线模型还包括写激励存储模块,该方法还包括:通过写激励存储模块存储写激励向量。
41.结合第二方面,在第二方面的某些实现方式中,该方法还包括:通过写激励存储模块,当满足写激励向量的触发条件时,向写通道解码模块发送写激励向量。
42.结合第二方面,在第二方面的某些实现方式中,该方法还包括:通过写地址控制模块,根据写数据的位宽,调整写地址。
43.结合第二方面,在第二方面的某些实现方式中,该方法还包括:通过写地址控制模块接收写地址通道的写地址握手信号,写地址握手信号用于指示写地址信号被待测设计成功接收。
44.结合第二方面,在第二方面的某些实现方式中,该方法还包括:通过写数据控制模块接收写数据通道的写数据握手信号,写数据握手信号用于指示写数据信号被待测设计成功接收。
45.结合第二方面,在第二方面的某些实现方式中,该方法还包括:通过写响应记录模块,根据写响应通道信号,确定并记录待测设计的写操作性能数据。
46.结合第二方面,在第二方面的某些实现方式中,激励向量包括读激励向量,激励信号包括读地址通道信号,用于指示对待测设计进行读操作,响应信号包括读响应通道信号;解码模块包括读通道解码模块;控制模块包括读地址控制模块;记录模块包括读响应记录模块;该方法包括:通过读通道解码模块解码读激励向量,以产生读地址通道信号,其中,读地址通道信号用于指示从待测设计读取读数据的读地址;通过读地址控制模块向待测设计发送读地址通道信号;通过读响应记录模块接收读响应通道信号,读响应通道信号用于指示读操作是否成功。
47.结合第二方面,在第二方面的某些实现方式中,通用总线模型还包括读激励存储模块,该方法还包括:通过读激励存储模块存储读激励向量。
48.结合第二方面,在第二方面的某些实现方式中,该方法还包括:通过读激励存储模块,当满足读激励向量的触发条件时,向读通道解码模块发送读激励向量。
49.结合第二方面,在第二方面的某些实现方式中,该方法还包括:通过读地址控制模块,根据读数据的位宽,调整读地址。
50.结合第二方面,在第二方面的某些实现方式中,该方法还包括:通过读地址控制模块接收读地址通道的读地址握手信号,读地址握手信号用于指示读地址信号被待测设计成功接收。
51.结合第二方面,在第二方面的某些实现方式中,该方法还包括:通过读响应记录模块,根据读响应通道信号,确定并记录待测设计的读操作性能数据。
52.结合第二方面,在第二方面的某些实现方式中,通用总线模型还包括过程监控模块,该方法还包括:通过过程监控模块,当满足激励向量的完成条件时,产生并发送测试完
成信号。
53.结合第二方面,在第二方面的某些实现方式中,该方法还包括:通过过程监控模块,当响应信号异常时,产生并发送测试异常信号。
54.结合第二方面,在第二方面的某些实现方式中,通用总线模型由可综合代码编写。
55.第三方面,提供一种仿真测试的设备,包括:通用总线模型和存储器,存储器用于存储计算机程序,通用总线模型用于从存储器中调用并运行该计算机程序,使得该设备执行如第二方面或第二方面的任一种可能的实现方式中的方法。
56.第四方面,提供一种计算机程序产品,包括:计算机程序代码,当该计算机程序代码被通用总线模型运行时,使得通用总线模型执行如第二方面或第二方面的任一种可能的实现方式中的方法。
57.第五方面,提供一种计算机可读存储介质,包括计算机程序,当该计算机程序在通用总线模型上运行时,使得通用总线模型执行如第二方面或第二方面的任一种可能的实现方式中的方法。
附图说明
58.图1是本技术实施例的系统架构示意图。
59.图2是本技术实施例提供的一种通用总线模型的示意性结构框图。
60.图3是本技术实施例提供的另一通用总线模型的示意性结构框图。
61.图4是本技术实施例提供的写通道解码模块的电路结构示意图。
62.图5是本技术实施例提供的写地址控制模块的电路结构示意图。
63.图6是本技术实施例提供的写数据控制模块的电路结构示意图。
64.图7是本技术实施例提供的写响应记录模块的电路结构示意图。
65.图8是本技术实施例提供的写激励存储模块的电路结构示意图。
66.图9是本技术实施例提供的读通道解码模块的电路结构示意图。
67.图10是本技术实施例提供的读地址控制模块的电路结构示意图。
68.图11是本技术实施例提供的读响应记录模块的电路结构示意图。
69.图12是本技术实施例提供的读激励存储模块的电路结构示意图。
70.图13是本技术实施例提供的一种仿真测试的方法的示意性流程框图。
71.图14是本技术实施例提供的一种仿真测试的设备的示意性结构框图。
具体实施方式
72.下面将结合附图,对本技术实施例中的技术方案进行描述。
73.本技术将围绕包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
74.另外,在本技术实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本技术中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
75.本技术实施例中,“相应的(corresponding,relevant)”和“对应的
(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
76.本技术实施例描述的网络架构以及业务场景是为了更加清楚地说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
77.在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
78.本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:包括单独存在a,同时存在a和b,以及单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
79.随着大规模集成电路(integrated circuit,ic)技术的发展,芯片的逻辑规模和电路的复杂程度越来越高,为了保证芯片质量以及上市时间,需要对芯片进行准确快速的仿真测试。通过通用验证方法学(universal verification methodology,uvm)等技术能够在软件环境中实现仿真(simulation)测试。但是软件仿真受编译工具和仿真平台(服务器性能)的限制,测试逻辑规模较小,且受到软件环境计算能力的限制,仿真速度较慢。硬件仿真加速(emulation)技术通过将待测设计(design under test,dut)映射到硬件仿真器(emulator)的硬件平台上,能够提高dut的逻辑规模和运行速度。但是,由于dut输入信号的产生以及输出信号的处理都需要在软件环境中进行,因此测试过程中软件测与硬件侧存在较频繁的信号交互,使得芯片仿真测试的速度依旧受限于软件侧的运行速度。
80.鉴于此,本技术实施例提供一种通用总线模型,能够在硬件环境中解析激励向量并实现与待测设计的信号交互,使得所有仿真行为均在硬件环境中完成,从而避免硬件与软件的频繁交互,使得仿真速度与硬件运行速度一致,提高仿真测试的效率。此外,通过实现软件与硬件的解耦,使得可仿真的逻辑规模只和硬件资源相关,不受软件仿真平台计算能力的限制,从而提高可仿真测试的逻辑规模,提高仿真测试的效率。
81.图1是本技术实施例的系统架构示意图。如图1所示,通用总线模型(general bus model,gbm)和待测设计(design under test,dut)组成了该应用场景中的仿真测试系统。gbm构成了测试平台(testbench),用于根据激励文件产生激励信号输入到dut,并接收dut输出的响应信号,从而进行仿真行为,以对dut的功能进行测试。其中dut是在硬件仿真平台上实现的待测试逻辑电路,例如系统级芯片(system on chip,soc)、芯片的子系统或功能模块等。gbm与dut基于总线协议(例如高级可扩展接口(advanced extensible interface,axi))进行信号交互。
82.其中,dut由硬件描述性语言(例如verilog或systemverilog,sv等)编写,能够在真实电路中实现。gbm由可综合的verilog代码(或其它可由真实电路实现的语言)编写,因此该应用场景中的测试平台是可综合testbench,即该测试平台也能够综合成真实电路。因此,本技术实施例提供的仿真测试系统能够在硬件平台中实现。例如图1所示应用场景中该可综合testbench工作在硬件仿真器(emulator)上。
83.应理解,图1所示的testbench由可综合代码编写,因此不仅可以应用于硬件仿真(emulation)平台,也可以应用于其他平台,例如软件仿真(simulation)平台或现场可编程逻辑门阵列(field programmable gate array,fpga)平台等,本技术不做具体限定。为了简洁起见,下面以gbm应用于硬件加速平台为例描述本技术的部分实施例,但本领域技术人员很清楚,此描述不构成对本技术的范围的限制。
84.在该情况下,图2示出了本技术实施例提供的一种通用总线模型200的示意性结构框图。
85.如图2所示,该通用总线模型200包括:解码模块210,控制模块220,记录模块230。其中,通用总线模型200通过硬件实现。
86.具体地,该解码模块210用于解码激励向量,以产生激励信号,该激励信号用于指示对所述待测设计进行的操作。例如,解码模块210能够解析激励向量从而确定对dut进行的操作以及进行该操作所需的信号,例如,写操作需要的写地址与写数据、读操作需要的读地址等。解码模块210将解析出的激励信号发送给对应的控制模块220,使得激励信号能够被发送给dut。
87.具体地,该控制模块220用于通过待测设计的输入通道向待测设计发送激励信号。例如,控制模块220能够根据解析出的信息通过dut所用标准协议规定的输入通道与dut进行信号交互。
88.具体地,该记录模块230用于通过待测设计的输出通道接收响应信号。其中,响应信号是待测设计根据激励信号发送的信号。例如,记录模块230能够通过dut所用标准协议规定的输出通道接收并记录dut根据激励信号产生的响应信号,从而根据该响应信号确定该次操作是否成功。
89.通过本技术实施例的技术方案,通用总线模型能够在硬件环境中解析激励向量并实现与待测设计的信号交互,使得所有仿真行为均在硬件环境中完成,避免硬件与软件的频繁交互,提高仿真测试的运算速度,同时实现软件与硬件的解耦,提高可仿真测试的逻辑规模,从而提高仿真测试的效率。
90.以axi总线协议为例,写操作使用三个通道:写地址通道、写数据通道、写响应通道,gbm通过写地址通道向dut发送指示写入数据的地址的信号,通过写数据通道向dut发送指示写入的数据的信号,通过写响应通道接收dut发送的写操作的响应信号。读操作使用两个通道:读地址通道、读响应通道,gbm通过读地址通道向dut发送指示读取数据的地址的信号,通过写响应通道接收dut发送的读操作的响应信号以及读取的数据的信号。
91.可选地,gbm根据使用需求可以只包括写操作所用的通道,或只包括读操作所用的通道,也可以同时包括写操作和读操作所用的通道,本技术不做具体限定。
92.应理解,本技术仅是以axi总线协议为例说明gbm与dut信号交互的过程,不构成对gbm具体接口的限定,根据需要gbm也可以提供其他总线标准协议所需的其他接口。
93.可选地,gbm根据测试需要还可以扩展总线标准协议之外的控制信号,例如测试完成信号(gbm_test_done)用于指示仿真测试完成、测试异常信号(gbm_error)用于指示测试结果与预期不一致。上述可扩展的控制信号可以发送至测试人员指定的监控设备,也可以集成到soc的中断电路,通过中央处理器(central processing unit,cpu)等设备监控gbm的测试状态。
94.在该情况下,下面结合图3对通用总线模型具体的电路结构进行说明。
95.图3示出了本技术实施例提供的一种通用总线模型的示意性结构图。如前文所述,gbm根据仿真测试的需求可以分别对写操作或读操作进行处理。因此,应理解,图3所示的仅是gbm即处理写操作又处理读操作的一种情况,并非对gbm结构的限定,本技术实施例提供的gbm可以只包括图3中与写操作相关的部分模块,也可以只包括图3中读操作相关的部分模块,或包括图3中的全部模块。下面将根据写操作和读操作,对本技术实施提供的gbm的组成分别进行介绍。
96.如图3所示,对dut的写操作进行仿真,通用总线模型可以包括:写通道解码模块211、写地址控制模块221、写数据控制模块222、写响应记录模块231。可选地,写通道解码模块211可以是上文所述解码模块210的一种实现方式,写地址控制模块221和写数据控制模块222可以是上文所述控制模块220的一种实现方式,写响应记录模块231可以是上文所述记录模块230的一种实现方式。
97.具体地,该写通道解码模块211用于解码写激励向量,以确定写地址通道信号和写数据通道信号。其中,写地址通道信号用于指示向dut写入数据的地址,写数据通道信号用于指示向dut写入的数据。例如,写通道解码模块211能够根据dut所用的总线标准协议,从写激励向量中提取写操作需要的指令字段,从而确定写入dut的地址和数据。其中,该写激励向量可以是外部设备通过激励文件配置的,也可以是gbm直接产生的,本技术对此不做具体限定。
98.图4为写通道解码模块的电路结构示意图。如图4所示,写通道解码模块能够接收写激励向量。写激励向量根据字段类型可以分为vector_num、aw_info、aw_extend三组信号。其中,vector_num可以表示该激励向量的触发时刻,通过发送给写激励存储模块可以调度gbm的写地址通道发起激励请求的时刻;aw_info遵循dut使用的总线协议对总线信号的数量、含义和位宽的定义,为dut的输入通道提供所需的激励信号,以图4所示情况为例,除写激励向量首尾的vector_num和aw_extend字段外,其它字段均属于axi总线协议中写地址通道和写数据通道所需的aw_info字段;aw_extend为扩展信号,能够用于向后兼容以及功能扩展使用。写通道解码模块能够解析出写激励向量中包含的激励信号,并根据写地址通道模块和/或写数据通道模块的状态,将对应的信号分别发送至对应的控制模块。例如,图4所示场景中,将aw_id、aw_addr、aw_len、aw_size、aw_burst信号发送至写数据控制模块,将aw_addr、aw_len、aw_size、aw_burst、aw_lock、aw_qos、aw_cache、aw_prot、aw_user、aw_domain、aw_snoop、aw_bar、aw_unique、aw_extent信号发送至写地址控制模块。此外,写通道解码模块还能够将当前向量信息发送至过程监控模块,例如将aw_id发送至过程监控模块,用于记录该写激励向量的信息。
99.应理解,写地址通道信号可以包括用于直接确定写地址的信号,也可以包括与写地址相关的控制信号。例如,aw_addr用于指示该次写操作的起始写地址,aw_len指示该次
写操作的写数据数量,aw_size指示每个写数据的有效位的数量(即写数据的大小),属于用于确定写地址的信号。再例如,与写地址相关的控制信号包括但不限于:aw_lock用于标识原子操作、aw_cache用于标记dut所需的传输类型、aw_prot用于指示保护模式、aw_domain用于指示该次写操作的共享域、aw_bar用于暂时阻止后续请求、aw_snoop和aw_unique用于只是一致性等,根据dut使用的总线协议类型不同可以适配不同的控制信号字段,本技术对此不做具体限定。
100.可选地,写地址通道信号和写数据通道信号可根据对应指令字段的值直接确定,也可以根据其他指令字段的值简介确定。例如,写激励向量中可以包括地址字段,用于表示向dut写入数据的地址,也可以包括数据字段,用于表示向dut写入的数据,从而提高解码速度。又例如,写激励向量中可以不包括数据字段,向dut写入的数据可以根据写激励向量中地址字段通过编/解码的方式获得,从而简化激励向量的内容。写数据也可以由通用总线模型随机生成的,例如不需要指定特定写入数据的仿真测试场景,通用总线模型能够为每个写地址分配随机的写数据并记录该写数据与写地址的映射关系。
101.具体地,该写地址控制模块221用于向dut发送写地址通道信号。例如,以dut使用axi总线协议为例,写地址控制模块221能够通过写地址通道向dut发送信号,根据写通道解码模块211确定的写地址,控制写地址通道信号的时序和电平,从而指示dut写入数据的地址。
102.图5为写地址控制模块的电路结构示意图。如图5所示,写地址控制模块能够根据从写通道解码模块获取的激励信号,通过dut的写地址通道发送写地址信号。可选地,aw_valid_control子模块能够用于控制写地址信号的发送。当写地址通道中的当前写地址信号被dut成功接收时,写地址控制模块能够收到写地址通道反馈的握手信号gbm_awready,该写地址握手信号用于指示当前写地址通道可用。写地址控制模块能够根据gbm的运行状态判断下一条写激励向量的写地址信号是否已经准备好,当写地址信号准备就绪时发送gbm_awvalid信号,用于指示当前写地址信号可用。aw_valid_control子模块能够根据写通道的状态,调度写地址控制模块的运行。例如,当gbm_awready和gbm_awvalid信号未握手成功时,写地址控制模块能够维持当前写地址信号有效,直到gbm_awready和gbm_awvalid信号握手成功,产生aw_channel_enable以指示将当前写地址信号发送至写地址通道。aw_valid_control子模块还能够根据gbm_awready和gbm_awvalid信号是否握手成功,调度gbm其他模块的运行状态,例如调度gbm时钟的运行和/或调度写通道解码模块获取并解析下一条激励向量。
103.可选地,aw_channel_req子模块能够用于发起写地址请求。写地址请求可以根据写地址控制模块自身的状态发起,例如,当gbm_awready和gbm_awvalid信号握手成功时发起;也可以由其他模块调度发起,例如,通过写激励存储模块发送的信号调度发起。
104.可选地,address_align子模块能够用于根据写数据的位宽调整写地址。例如,dut为数据位宽32byte的芯片,则写入数据地址的最小间隔为十六进制的20(例如0x1000、0x1020、0x1040),当写地址不满足上述dut写数据位宽的要求时,address_align子模块能够将写地址对齐,例如将0x1012调整为0x1020。通过上述方式能够修正不符合待测设计所用的总线标准的读激励信号,从而提高测试的成功率。
105.为了记录测试过程与结果时能够对不同的写激励向量进行区分,需要为每个写请
求分配识别码gbm_awid。可选地,写地址控制模块能够将写激励向量中自带的aw_id作为gbm_awid并发送。例如,gbm能够对主设备(master)在没有收到原id的响应信号之前,可以发出重复id,且dut的总线逻辑对于重复id可以实现保序功能的场景进行仿真。可选地,写地址控制模块能够将id资源池(id_pool)中的id分配给写请求作为gbm_awid并发送。例如,gbm能够对主设备(master)在没有收到原id的响应信号之前,不允许发出重复id,或dut的总线逻辑对于重复id无法保序的场景进行仿真。id资源池能够根据记录模块的反馈判断id是否可用,例如,当id资源池中的id已作为写请求的gbm_awid发出,但写响应记录模块未收到相同gbm_bid的响应信号时,将该id标记为不可用(invalid)状态,直到写响应记录模块收到相同gbm_bid的响应信号,将该id重新标记为可用(valid)状态。可选地,写地址控制模块和读地址控制模块可以共用同一个id资源池,从而对主设备(master)的写请求和读请求共用所有id的场景进行仿真;写地址控制模块也可以使用单独的id资源池,从而对主设备(master)的写请求和读请求分开使用id的场景进行仿真。
106.具体地,该写数据控制模块222用于向dut发送写数据通道信号。例如,以dut使用axi总线协议为例,写数据控制模块222能够通过写数据通道向dut发送信号。在写地址通道向dut发送写地址信号的同时,写数据控制模块222能够根据写通道解码模块211确定的写数据,控制写数据通道信号的时序和电平,从而指示dut写入的数据。
107.图6为写数据控制模块的电路结构示意图。如图6所示,写数据控制模块能够根据从写通道解码模块获取的激励信号,通过dut的写数据通道发送写数据信号。例如,当aw通道发起请求并将aw写地址操作送到接口上时,即写地址控制模块产生aw_channel_enable信号时,同步发起写数据通道的写数据请求(w_channel_req)。与写地址控制模块类似,写数据控制模块中的w_valid_control子模块能够用于控制写数据信号的发送。当写数据通道中的当前写数据信号被dut成功接收时,写数据控制模块能够收到写数据通道反馈的握手信号gbm_wready,该写数据握手信号用于指示当前写数据通道可用。gbm_wvalid信号用于指示当前写数据信号可用,当gbm_wready和gbm_wvalid信号未握手成功时,写数据控制模块能够维持当前写数据信号有效,直到gbm_awready和gbm_awvalid信号握手成功,将当前写数据信号发送至写数据通道。
108.可选地,写数据控制模块能够写激励向量中其他字段生成写数据信号。以axi总线标准为例,写数据控制模块能够根据aw_addr、aw_len、aw_size、aw_burst生成写数据信号,其中,根据aw_len计算该次写操作的写数据数量,根据aw_size计算每个写数据的有效位的数量(即写数据的大小),根据aw_addr计算起始写数据,根据aw_burst决定每个写数据间的关系。
109.可选地,写数据控制模块可以包括aw_tlb_fifo用于存储未完成写数据发送的写地址。例如,由于通过写数据通道发送写数据信号所用的时间可能长于通过写地址通道发送写地址信号所用的时间,因此可能存在写数据控制模块与写地址控制模块同步发起写数据请求时,写数据通道中还存在未发送完成的新数据的情况。当接收到写通道解码模块发送的写数据信号时,如果aw_tlb_fifo为空,说明当前不存在未发送完成的写数据,则直接通过bypass_logic将写数据信号发送至w_channel_config,解码确定写数据并通过写数据通道发送;如果aw_tlb_fifo非空,即存在未发送完成的写数据时,则将新的写地址和与生成写数据相关的信号(例如写地址通道信号aw_addr、aw_len、aw_size等)存入aw_tlb_
fifo,同时fifo_waterline加1。当gbm_wready和gbm_wvalid握手成功需要发送写数据时,如果aw_tlb_fifo非空则从aw_tlb_fifo中读出最早加入的写地址和对应的与生成写数据相关的信号,通过w_channel_config解码确定写数据并通过写数据通道发送。
110.具体地,该写响应记录模块231用于接收dut发送的写响应通道信号。例如,以dut使用axi总线协议为例,写响应记录模块231能够通过写响应通道接收dut返回的响应信号,其中,写响应信号指示了该写操作是否成功。
111.图7为写响应记录模块的电路结构示意图。如图7所示,写响应记录模块能够通过dut的写响应通道接收写响应信号,当该响应信号异常时记录该异常写请求对应的识别码(id)和/或用户信息(user)。
112.可选地,写响应记录模块还能够根据写响应信号确定并记录所述待测设计的写操作性能数据。例如,当gbm_bvalid和gbm_bready握手成功时产生b_ack信号,记录b_ack的数量b_cnt和每个b_ack之间的时间讲个作为写响应的延迟,通过比较该延迟能够确定并实时更新n个最大延迟和对应的写响应信息(例如id),通过总延迟和b_cnt能够计算并实施更新写响应通道的平均延迟b_latency。按照同样的方法,写响应记录模块也能够确定并记录写地址通道和写数据通道的传输性能,例如aw_ack的数量aw_cnt、w_ack的数量w_cnt、写响应通道的平均延迟aw_latency和写数据通道的平均延迟w_latency等。
113.可选地,写响应记录模块能够记录并调度写地址模块可用的识别码。例如,当写地址控制模块发送写请求后,同时将该写请求使用的gbm_awid发送至写响应记录模块。写响应记录模块能够接收该识别码并记录在id_record中。当写响应记录模块接收到写响应信号时,能够将该写响应信号的识别码gbm_bid与id_record中记录的识别码对比,从而将与该gbm_bid相同的gbm_awid从id_record中移除并发送信号反馈给写地址控制模块。
114.在一些可能的实施方式中,gbm还包括写激励存储模块241,用于存储写激励向量。例如,在激励向量是由外部设备通过文件配置的情况下,为了不在仿真测试过程中进行软硬件的交互,写激励存储模块241能够接收外部设备加载到gbm的激励文件,并存储激励文件中的写激励向量。
115.图8为写激励存储模块的电路结构示意图。如图8所示,写激励存储模块能够将写激励向量存储在aw_vector_mem中,并将写激励向量发送给写通道解码模块。
116.可选地,当需要调度写激励向量的触发时序时,例如激励文件中有多个写激励向量需要按顺序执行的情况,或写激励向量需要在特定时间触发的情况等,gbm还可以先存储激励向量,当满足条件时触发相应的激励向量。在该情况下写激励存储模块还可以用于,当满足写激励向量的触发条件时,向写通道解码模块发送写激励向量。例如,写激励存储模块中可以包括计数器(counter),同时能够接收写通道解码模块解析出的计数字段(vector_num)。当写地址通道的计数器与该写激励向量的vector_num字段匹配时,写地址通道能够向写地址控制模块中的aw_channel_req发送信号,发起写地址请求,将写地址写地址控制模块中当前的写地址信号送入写地址通道;同时,写地址通道能够将存储在aw_vector_mem中的下一条写激励向量发送给写通道解码模块。
117.通过本技术实施例的技术方案,gbm能够在硬件环境中解析写激励向量,并利用标准协议提供的硬件接口与dut进行信号交互,从而由硬件实现写操作的仿真测试,验证dut写操作的正确性。
118.以上说明了对dut进行写操作仿真所需的模块,下面对读操作仿真的相关模块进行说明。如图3所示,对dut的读操作进行仿真,通用总线模型可以包括:读通道解码模块212、读地址控制模块223、读响应记录模块232。可选地,读通道解码模块212可以是上文所述解码模块210的一种实现方式,读地址控制模块223可以是上文所述控制模块220的一种实现方式,读响应记录模块232可以是上文所述记录模块230的一种实现方式。
119.具体地,该读通道解码模块212用于解码读激励向量,以确定读地址通道信号。其中,读地址通道信号用于指示从dut读取数据的地址。图9为读通道解码模块的电路结构示意图。如图9所示,读通道解码模块能够接收并解析读激励向量,将ar_addr、ar_len、ar_size、ar_burst、ar_lock、ar_qos、ar_cache、ar_prot、ar_user、ar_domain、ar_snoop、ar_bar、ar_unique、ar_extent信号发送至写地址控制模块。此外,读通道解码模块还能够将当前向量信息发送至过程监控模块,例如将ar_id发送至过程监控模块,用于记录该写激励向量的信息。
120.具体地,该读地址控制模块223用于向dut发送读地址通道信号。例如,以dut使用axi总线协议为例,读地址控制模块223能够通过读地址通道向dut发送信号,根据读通道解码模块223确定的读地址,控制读地址通道信号的时序和电平,从而指示dut读取数据的地址。
121.图10为读地址控制模块的电路结构示意图。如图10所示,与写地址控制模块的实现方式类似,当读地址通道中的当前读地址信号发送成功时,读地址控制模块能够收到读地址通道反馈的握手信号gbm_arready,该读地址握手信号用于指示当前读地址通道可用。可选地,ar_valid_control子模块能够根据gbm_arready和gbm_arvalid信号是否握手成功,调度写地址控制模块的运行。可选地,ar_channel_req子模块能够用于发起写地址请求。可选地,address_align子模块能够用于根据写数据的位宽调整写地址。可选地,读地址控制模块能够基于id资源池中的id为读请求提供gbm_arid。地址控制模块223的具体实现方式可以参考上文对写通道解码模块221相应功能的说明,这里不再赘述。
122.具体地,该读响应记录模块232用于接收dut发送的读响应通道信号。例如,以dut使用axi总线协议为例,读响应记录模块232能够通过读响应通道接收dut返回的响应信号,其中,读响应信号能够指示该读操作是否成功。可选地,该读响应记录模块232还可以用于通过读响应通道接收dut发送的读数据,从而使gbm除了验证dut读写操作的正确性外,还能够用于验证读写数据的正确性。
123.图11为读响应记录模块的电路结构示意图。如图11所示,读响应记录模块能够通过dut的读响应通道接收读响应信号,当该响应信号异常时记录该异常写请求对应的识别码(id)和/或用户信息(user)。可选地,读响应记录模块还能够根据读响应信号确定并记录所述待测设计的读操作性能数据。可选地,读响应记录模块能够记录并调度读地址模块可用的识别码。具体实现方式可以参考上文对写响应记录模块相应功能的说明,这里不再赘述。
124.在一些可能的实施方式中,gbm还包括读激励存储模块242,用于存储读激励向量。
125.图12为读激励存储模块的电路结构示意图。如图12所示,读激励存储模块能够将读激励向量存储在ar_vector_mem中,并将读激励向量发送给读通道解码模块。可选地,读激励存储模块还可以用于,当满足读激励向量的触发条件时,向读通道解码模块发送写激
励向量。具体实现方式可以参考上文对写激励存储模块的说明,这里不再赘述。
126.通过本技术实施例的技术方案,gbm能够在硬件环境中解析读激励向量,并利用标准协议提供的硬件接口与dut进行信号交互,从而由硬件实现读操作的仿真测试,验证dut读操作的正确性。
127.上文说明了gbm进行读写操作仿真所需要的相关模块。在一些可能的情况下,还需要根据激励文件中每个读/写激励向量的响应结果确定该激励文件的测试结果信息。
128.在该情况下,可选地,通用总线模型还可以包括过程监控模块250,用于记录并发送测试结果信息。测试结果信息可以包括但不限于以下至少一项:成功的读/写操作数、失败的读/写操作数、失败的读/写操作的相关信息、读/写操作的响应速度等。例如,过程监控模块250能够根据接收到dut发送的响应信号所反映的操作结果,统计完成的读/写操作数数量,还可以统计其中与预期一致的成功读/写操作数,以及与预期不一致的失败读/写操作数。进一步地,对于失败的读/写操作,过程监控模块250还可以记录相应激励向量中的相关信息(例如读/写地址),从而便于确定响应错误的原因。可选地,过程监控模块250还可以记录记录dut的操作性能数据,并将上述测试结果信息发送至测试人员指定的监控设备,其中操作性能数据可以是记录模块根据响应信号确定的数据。
129.可选地,过程监控模块250还能够用于当满足激励向量的完成条件时,产生并发送测试完成信号。可选地,该功能可以由写地址控制模块中的aw_test_done_control子模块和/或读地址控制模块中的ar_test_done_control子模块实现。激励向量的完成条件可以是发送指定数量的激励向量,例如发送100万条激励后停止;也可以是特定的激励向量信息,例如aw_addr为h5a5a5a5a且aw_len为h5a时停止。以aw_test_done_control为例,当满足完成条件时,等待最后一笔gbm_awid对应的gbm_bid返回,产生并发送测试完成信号gbm_aw_testdone,指示本轮仿真测试结束。
130.可选地,过程监控模块250还能够用于当响应信号异常时,产生并发送测试异常信号。以写操作为例,例如,当写响应记录模块通过写响应通道接收的写响应通道信号指示该次写操作失败时,过程监控模块250能够产生测试异常信号b_error并发送给测试人员指定的监控设备,从而告知测试人员dut的写操作发生异常,使得测试人员能够及时调试。
131.上文结合图2至图12说明了本技术提供的通用总线模型,下面,结合图13说明本技术提供的仿真测试的方法实施例。应理解,方法实施例与装置实施例相互对应,类似的描述可以参照上文对通用总线模型的说明。
132.图13示出了本技术实施例提供的一种仿真测试的方法的示意性流程图。可选地,图13的方法可以由图2的通用总线模型200执行。
133.如图13所示,该方法包括如下步骤。
134.s1310:通过解码模块解码激励向量,以产生激励信号,激励信号用于指示对待测设计进行的操作。
135.s1320:通过控制模块通过待测设计的输入通道向待测设计发送激励信号。
136.s1330:通过记录模块通过待测设计的输出通道接收响应信号,响应信号是待测设计根据激励信号发送的信号。s640:通用总线模型接收响应信号,并根据响应信号确定仿真测试的结果。
137.可选地,对于写操作的仿真测试,上述方法包括:通过写通道解码模块解码写激励
向量,以产生写地址通道信号和写数据通道信号,其中,写地址通道信号用于指示向待测设计写入数据的写地址,写数据通道信号用于指示向待测设计写入的写数据;通过写地址控制模块向待测设计发送写地址通道信号;通过写数据控制模块用于向待测设计发送写数据通道信号;通过写响应记录模块接收写响应通道信号,写响应通道信号用于指示写操作是否成功。
138.可选地,该方法还包括:通过写激励存储模块存储写激励向量。
139.可选地,该方法还包括:通过写激励存储模块,当满足写激励向量的触发条件时,向写通道解码模块发送写激励向量。
140.可选地,该方法还包括:通过写地址控制模块,根据写数据的位宽,调整写地址。
141.可选地,该方法还包括:通过写地址控制模块接收写地址通道的写地址握手信号,写地址握手信号用于指示写地址信号被待测设计成功接收。
142.可选地,该方法还包括:通过写数据控制模块接收写数据通道的写数据握手信号,写数据握手信号用于指示写数据信号被待测设计成功接收。
143.可选地,该方法还包括:通过写响应记录模块,根据写响应通道信号,确定并记录待测设计的写操作性能数据。
144.可选地,对于读操作的仿真测试,上述方法包括:通过读通道解码模块解码读激励向量,以产生读地址通道信号,其中,写地址通道信号用于指示从待测设计读取读数据的读地址;通过读地址控制模块向待测设计发送读地址通道信号;通过读响应记录模块接收读响应通道信号,读响应通道信号用于指示读操作是否成功。
145.可选地,该方法还包括:通过读激励存储模块存储读激励向量。
146.可选地,该方法还包括:通过读激励存储模块,当满足读激励向量的触发条件时,向读通道解码模块发送读激励向量。
147.可选地,该方法还包括:通过读地址控制模块,根据读数据的位宽,调整读地址。
148.可选地,该方法还包括:通过读地址控制模块接收读地址通道的读地址握手信号,读地址握手信号用于指示读地址信号被待测设计成功接收。
149.可选地,该方法还包括:通过读响应记录模块,根据读响应通道信号,确定并记录待测设计的读操作性能数据。
150.可选地,该方法还包括:通过过程监控模块,当满足激励向量的完成条件时,产生并发送测试完成信号。
151.可选地,该方法还包括:通过过程监控模块,当响应信号异常时,产生并发送测试异常信号。
152.本技术还提供一种仿真测试的设备100。可选地,该仿真测试的设备100可以是硬件仿真设备,例如基于处理器阵列(cpu-based)或基于现场可编程门阵列(fpga-based)的硬件仿真器(emulator)。如图14所示,硬件仿真设备100包括:总线102、通用总线模型104、存储器106和通信接口108。通用总线模型104、存储器106和通信接口108之间通过总线102通信。应理解,本技术不限定设备100中的处理器、存储器的个数。
153.总线102可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条线表示,但并不
表示仅有一根总线或一种类型的总线。总线102可包括在设备100各个部件(例如,存储器106、通用总线模型104、通信接口108)之间传送信息的通路。
154.通用总线模型104可以是本技术实施例提供的通用总线模型200。
155.存储器106可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,ram)。通用总线模型104还可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom),快闪存储器,机械硬盘(hard disk drive,hdd)或固态硬盘(solid state drive,ssd)。
156.存储器106中存储有可执行的程序代码,通用总线模型104执行该可执行的程序代码以分别实现前述通用总线模型中各模块的功能,从而实现上述仿真测试的方法。也即,存储器106上存有用于执行上述仿真测试的方法的指令。
157.通信接口108使用例如但不限于网络接口卡、收发器一类的收发模块,来实现硬件仿真设备100与其他设备或通信网络之间的通信。
158.本技术实施例还提供一种芯片,该芯片包括处理器与数据接口,该处理器通过该数据接口读取存储器上存储的指令,以执行上述仿真测试的方法。
159.本技术实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在通用总线模型上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个通用总线模型上运行时,使得至少一个通用总线模型执行上述仿真测试的方法。
160.本技术实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示通用总线模型执行上述仿真测试的方法。
161.以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
162.以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的保护范围。