芯片功能的验证方法、装置、电子设备及存储介质与流程

allin2023-03-17  57



1.本公开涉及芯片设计技术领域,具体而言,涉及一种芯片功能的验证方法、装置、电子设备及存储介质。


背景技术:

2.随着芯片的集成度越来越高,数字逻辑芯片的复杂度也在一直增加。片上系统(system on chip,soc)是当今芯片技术发展的主流,它能够把原先数块芯片才能实现的功能集成起来,通过各种功能部件组成一颗功能强大的芯片。在soc的内部,许多功能复杂的数据处理模块内部也具有多个子模块。在这样一个复杂的soc芯片或系统级数据处理模块的研发过程中,需要芯片验证工程师对设计人员编写的设计代码进行功能验证,设计复杂度的提高也对功能验证的要求变得越来高。因此芯片功能验证的方式存在验证效率较低的问题。


技术实现要素:

3.本公开实施例至少提供一种芯片功能的验证方法、装置、电子设备及存储介质。
4.第一方面,本公开实施例提供了一种芯片验证功能的验证方法,包括:
5.获取待验证芯片的功能描述信息、以及访存模型;其中,所述访存模型通过预设编程语言生成,用于模拟提供与所述待验证芯片连接的接口、并模拟通过所述接口对存储器的访存操作;
6.基于所述功能描述信息、以及所述访存模型,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果;
7.基于所述仿真结果、以及与所述待验证芯片对应的真实结果,得到所述待验证芯片的验证结果。
8.一种可选的实施方式中,所述功能描述信息包括:所述待验证芯片中的功能模块对存储器的访存方式、以及所述待验证芯片的功能代码;
9.所述基于所述功能描述信息、以及所述访存模型,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果,包括:
10.基于所述访存方式对所述访存模型进行实例化,得到所述功能模块对应的访存模型实例;
11.基于所述访存模型实例、以及所述功能代码,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果。
12.一种可选的实施方式中,所述访存模型包括:接口模型、以及存储器模型;
13.其中,所述接口模型由实现接口对所述存储器的访存行为的第一代码文件、以及实现所述接口的第二代码文件定义;
14.所述存储器模型由模拟所述存储器功能的第三代码文件定义。
15.一种可选的实施方式中,所述接口模型包括:读接口模型;
16.所述第一代码文件中,定义了模拟读接口的类,所述模拟读接口的类用于模拟对应功能模块发起读操作之后的存储器响应;
17.所述模拟读接口的类中,声明了下述变量中至少一种:第一变量:用于模拟与对应功能模块进行连接的读接口;第二变量,用于模拟存储器;第三变量,用于表示由所述读接口模型发送给对应功能模块的读数据;第四变量,用于表示由对应功能模块发送给所述读接口模型的地址;
18.所述模拟读接口的类中,包括有下述方法中至少一种:第一复位方法,用于在接收到复位信号后进对所述模拟读接口的类进行复位;第一驱动方法,用于实现所述模拟读接口的类接收到读请求后的行为;
19.所述第二代码文件中,定义了所述读接口模型、以及第一地址信号和第一数据信号;
20.所述第一地址信号包括下述至少一种:读地址有效信号,与有效地址同时到达所述读接口模型,用于表示本次读请求的读地址是有效的;读地址准备信号,用于表示读接口模型已经准备好接收读请求;读地址,表示由对应功能模块发送给读接口模型的地址;
21.所述第一数据信号包括下述至少一种:读数据有效信号,与有效数据同时到达读模型,表示本次读请求的读数据是有效的;读数据准备信号,表示读模型已经准备好接收读请求;读数据,表示由对应功能模块发送给读接口模型的数据。
22.一种可选的实施方式中,所述接口模型包括:写接口模型;
23.所述第一代码文件中,定义了模拟写接口的类,所述模拟写接口的类用于模拟对应功能模块发起写操作之后的存储器响应;
24.所述模拟写接口的类中,声明了下述变量中至少一种:第五变量:用于模拟与对应功能模块进行连接的写接口;第二变量,用于模拟存储器;第六变量,用于表示由所述写接口模型发送给对应功能模块的写数据;第七变量,用于表示由对应功能模块发送给所述写接口模型的地址;
25.所述模拟写接口的类中,包括有下述方法中至少一种:第二复位方法,用于在接收到复位信号后进对所述模拟写接口的类进行复位;第二驱动方法,用于实现所述模拟写接口的类接收到写请求后的行为;
26.所述第二代码文件中,定义了所述写接口模型、以及第二地址信号和第二数据信号;
27.所述第二地址信号包括下述至少一种:写地址有效信号,与有效地址同时到达所述写接口模型,用于表示本次写请求的写地址是有效的;写地址准备信号,用于表示写接口模型已经准备好接收写请求;写地址,表示由对应功能模块发送给写接口模型的地址;
28.所述第二数据信号包括下述至少一种:写数据有效信号,与有效数据同时到达写模型,表示本次写请求的写数据是有效的;写数据准备信号,表示写模型已经准备好接收写请求;写数据,表示由对应功能模块发送给写接口模型的数据。
29.一种可选的实施方式中,所述第三代码文件,定义了用于模拟存储器的类;所述模拟存储器的类中,声明有下述变量:
30.数据地址序列,所述数据地址序列的索引用于表示存储器的地址;每个索引对应的元素表示对应存储器地址中存储的一字节数据。
31.一种可选的实施方式中,所述接口模型包括:读接口模型、以及写接口模型;
32.所述基于所述访存方式对所述访存模型进行实例化,得到所述功能模块分别对应的访存模型实例,包括:
33.响应于所述访存方式指示对应功能模块对存储器进行读操作,对所述读接口模型、以及所述存储器模型进行实例化,得到所述功能模块对应的读接口模型实例、以及存储器模型实例;
34.响应于所述访存方式指示对应功能模块对存储器进行写操作,对所述写接口模型、以及存储器模型进行实例化,得到所述功能模块对应的写接口模型实例、以及存储器模型实例;
35.响应于所述访存方式指示对应功能模块对存储器进行读操作以及写操作,对所述读接口模型、所述写接口模型实例、以及存储器模型进行实例化,得到所述功能模块对应的读接口模型实例、写接口模型实例、以及存储器模型实例。
36.一种可选的实施方式中,所述功能模块有多个,所述基于所述访存方式对所述访存模型进行实例化,得到所述功能模块对应的访存模型实例,包括:
37.基于多个功能模块分别对应的访存方式,对所述访存模型进行实例化,得到多个所述功能模块分别对应访存模型实例。
38.一种可选的实施方式中,所述功能描述信息还包括:多个功能模块分别能够访存的存储空间的地址信息;
39.所述基于多个功能模块分别对应的访存方式,对所述访存模型进行实例化,得到多个所述功能模块分别对应访存模型实例,包括:
40.响应于不同功能模块的地址信息指示所述不同功能模块分别能够访存的存储空间存在重叠,为所述不同功能模块分别实例化不同的存储器模型实例;以及,基于各功能模块分别对应的访存方式,对所述接口模型进行实例化,得到各功能模块分别对应的接口模型实例;其中,各功能模块对应的接口模型实例,和该功能模块对应的存储器模型实例连接;
41.响应于不同功能模块的地址信息指示所述不同功能模块分别能够访存的存储空间未存在重叠,基于所述不同功能模块分别对应的接口信息,为所述不同功能模块实例化同一存储器模型实例;以及,基于各功能模块分别对应的访存方式,对所述接口模型进行实例化,得到各功能模块分别对应的接口模型实例,其中,所述不同功能模块分别对应的接口模型实例,和所述同一存储器模型实例连接。
42.一种可选的实施方式中,所述基于所述访存模型实例、以及所述功能代码,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果,包括:
43.利用仿真器执行所述功能代码,响应于任一条功能代码指示利用目标接口对存储器进行访存操作,执行与所述访存操作对应的访存模型实例,以对所述访存操作进行响应;
44.基于所述功能代码的执行结果,得到所述待验证芯片的仿真结果。
45.一种可选的实施方式中,所述利用仿真器执行所述功能代码,响应于任一条功能代码指示利用目标接口对存储器进行访存操作,执行与所述访存操作对应的访存模型实例,以对所述访存操作进行响应,包括:
46.在仿真器中,生成与所述功能代码对应的第一线程、以及与所述访存模型实例对
应的第二线程;
47.利用第一线程执行所述功能代码,并响应于任一条功能代码指示利用目标接口对存储器进行访存操作,利用所述第一线程向所述第二线程发送访存指令;
48.响应于所述第二线程接收到所述第一线程发送的访存指令,利用第二线程基于所述目标接口对应的访存模型实例对所述访存指令进行响应。
49.一种可选的实施方式中,所述基于所述仿真结果、以及与所述待验证芯片对应的真实结果,得到所述待验证芯片的验证结果,包括:
50.将所述待验证芯片对应的真实结果与所述仿真结果对比,得到对比结果;
51.基于所述对比结果,生成所述待验证芯片的验证结果。
52.一种可选的实施方式中,所述获取待验证芯片的功能描述信息、以及访存模型之前,还包括:
53.基于所述待验证芯片中的功能模块对外交互时所采用的通信协议、以及所述待验证芯片中的功能模块对外交互时的接口信息,构建所述访存模型。
54.第二方面,本公开实施例还提供一种芯片的功能验证装置,包括:获取模块、仿真模块、以及处理模块。
55.所述获取模块,用于获取待验证芯片的功能描述信息、以及访存模型;其中,所述访存模型通过预设编程语言生成,用于模拟提供与所述待验证芯片连接的接口、并模拟通过所述接口对存储器的访存操作;
56.所述仿真模块,用于基于所述功能描述信息、以及所述访存模型,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果;
57.所述处理模块,用于基于所述仿真结果、以及与所述待验证芯片对应的真实结果,得到所述待验证芯片的验证结果。
58.一种可选的实施方式中,所述功能描述信息包括:所述待验证芯片中的功能模块对存储器的访存方式、以及所述待验证芯片的功能代码;
59.所述仿真模块在基于所述功能描述信息、以及所述访存模型,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果时,用于:
60.基于所述访存方式对所述访存模型进行实例化,得到所述功能模块对应的访存模型实例;
61.基于所述访存模型实例、以及所述功能代码,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果。
62.一种可选的实施方式中,所述访存模型包括:接口模型、以及存储器模型;
63.其中,所述接口模型由实现接口对所述存储器的访存行为的第一代码文件、以及实现所述接口的第二代码文件定义;
64.所述存储器模型由模拟所述存储器功能的第三代码文件定义。
65.一种可选的实施方式中,所述接口模型包括:读接口模型;
66.所述第一代码文件中,定义了模拟读接口的类,所述模拟读接口的类用于模拟对应功能模块发起读操作之后的存储器响应;
67.所述模拟读接口的类中,声明了下述变量中至少一种:第一变量:用于模拟与对应功能模块进行连接的读接口;第二变量,用于模拟存储器;第三变量,用于表示由所述读接
口模型发送给对应功能模块的读数据;第四变量,用于表示由对应功能模块发送给所述读接口模型的地址;
68.所述模拟读接口的类中,包括有下述方法中至少一种:第一复位方法,用于在接收到复位信号后进对所述模拟读接口的类进行复位;第一驱动方法,用于实现所述模拟读接口的类接收到读请求后的行为;
69.所述第二代码文件中,定义了所述读接口模型、以及第一地址信号和第一数据信号;
70.所述第一地址信号包括下述至少一种:读地址有效信号,与有效地址同时到达所述读接口模型,用于表示本次读请求的读地址是有效的;读地址准备信号,用于表示读接口模型已经准备好接收读请求;读地址,表示由对应功能模块发送给读接口模型的地址;
71.所述第一数据信号包括下述至少一种:读数据有效信号,与有效数据同时到达读模型,表示本次读请求的读数据是有效的;读数据准备信号,表示读模型已经准备好接收读请求;读数据,表示由对应功能模块发送给读接口模型的数据。
72.一种可选的实施方式中,所述接口模型包括:写接口模型;
73.所述第一代码文件中,定义了模拟写接口的类,所述模拟写接口的类用于模拟对应功能模块发起写操作之后的存储器响应;
74.所述模拟写接口的类中,声明了下述变量中至少一种:第五变量:用于模拟与对应功能模块进行连接的写接口;第二变量,用于模拟存储器;第六变量,用于表示由所述写接口模型发送给对应功能模块的写数据;第七变量,用于表示由对应功能模块发送给所述写接口模型的地址;
75.所述模拟写接口的类中,包括有下述方法中至少一种:第二复位方法,用于在接收到复位信号后进对所述模拟写接口的类进行复位;第二驱动方法,用于实现所述模拟写接口的类接收到写请求后的行为;
76.所述第二代码文件中,定义了所述写接口模型、以及第二地址信号和第二数据信号;
77.所述第二地址信号包括下述至少一种:写地址有效信号,与有效地址同时到达所述写接口模型,用于表示本次写请求的写地址是有效的;写地址准备信号,用于表示写接口模型已经准备好接收写请求;写地址,表示由对应功能模块发送给写接口模型的地址;
78.所述第二数据信号包括下述至少一种:写数据有效信号,与有效数据同时到达写模型,表示本次写请求的写数据是有效的;写数据准备信号,表示写模型已经准备好接收写请求;写数据,表示由对应功能模块发送给写接口模型的数据。
79.一种可选的实施方式中,所述第三代码文件,定义了用于模拟存储器的类;所述模拟存储器的类中,声明有下述变量:
80.数据地址序列,所述数据地址序列的索引用于表示存储器的地址;每个索引对应的元素表示对应存储器地址中存储的一字节数据。
81.一种可选的实施方式中,所述接口模型包括:读接口模型、以及写接口模型;
82.一种可选的实施方式中,所述仿真模块在基于所述访存方式对所述访存模型进行实例化,得到所述功能模块分别对应的访存模型实例时,用于:
83.响应于所述访存方式指示对应功能模块对存储器进行读操作,对所述读接口模
型、以及所述存储器模型进行实例化,得到所述功能模块对应的读接口模型实例、以及存储器模型实例;
84.响应于所述访存方式指示对应功能模块对存储器进行写操作,对所述写接口模型、以及存储器模型进行实例化,得到所述功能模块对应的写接口模型实例、以及存储器模型实例;
85.响应于所述访存方式指示对应功能模块对存储器进行读操作以及写操作,对所述读接口模型、所述写接口模型实例、以及存储器模型进行实例化,得到所述功能模块对应的读接口模型实例、写接口模型实例、以及存储器模型实例。
86.一种可选的实施方式中,所述功能模块有多个,所述仿真模块在基于所述访存方式对所述访存模型进行实例化,得到所述功能模块对应的访存模型实例时,用于:
87.基于多个功能模块分别对应的访存方式,对所述访存模型进行实例化,得到多个所述功能模块分别对应访存模型实例。
88.一种可选的实施方式中,所述功能描述信息还包括:多个功能模块分别能够访存的存储空间的地址信息;
89.所述仿真模块在基于多个功能模块分别对应的访存方式,对所述访存模型进行实例化,得到多个所述功能模块分别对应访存模型实例时,用于:
90.响应于不同功能模块的地址信息指示所述不同功能模块分别能够访存的存储空间存在重叠,为所述不同功能模块分别实例化不同的存储器模型实例;以及,基于各功能模块分别对应的访存方式,对所述接口模型进行实例化,得到各功能模块分别对应的接口模型实例;其中,各功能模块对应的接口模型实例,和该功能模块对应的存储器模型实例连接;
91.响应于不同功能模块的地址信息指示所述不同功能模块分别能够访存的存储空间未存在重叠,基于所述不同功能模块分别对应的接口信息,为所述不同功能模块实例化同一存储器模型实例;以及,基于各功能模块分别对应的访存方式,对所述接口模型进行实例化,得到各功能模块分别对应的接口模型实例,其中,所述不同功能模块分别对应的接口模型实例,和所述同一存储器模型实例连接。
92.一种可选的实施方式中,所述仿真模块在基于所述访存模型实例、以及所述功能代码,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果时,用于:
93.利用仿真器执行所述功能代码,响应于任一条功能代码指示利用目标接口对存储器进行访存操作,执行与所述访存操作对应的访存模型实例,以对所述访存操作进行响应;
94.基于所述功能代码的执行结果,得到所述待验证芯片的仿真结果。
95.一种可选的实施方式中,所述仿真模块在利用仿真器执行所述功能代码,响应于任一条功能代码指示利用目标接口对存储器进行访存操作,执行与所述访存操作对应的访存模型实例,以对所述访存操作进行响应时,用于:
96.在仿真器中,生成与所述功能代码对应的第一线程、以及与所述访存模型实例对应的第二线程;
97.利用第一线程执行所述功能代码,并响应于任一条功能代码指示利用目标接口对存储器进行访存操作,利用所述第一线程向所述第二线程发送访存指令;
98.响应于所述第二线程接收到所述第一线程发送的访存指令,利用第二线程基于所
述目标接口对应的访存模型实例对所述访存指令进行响应。
99.一种可选的实施方式中,所述处理模块在基于所述仿真结果、以及与所述待验证芯片对应的真实结果,得到所述待验证芯片的验证结果时,用于:
100.将所述待验证芯片对应的真实结果与所述仿真结果对比,得到对比结果;
101.基于所述对比结果,生成所述待验证芯片的验证结果。
102.一种可选的实施方式中,所述仿真模块在获取待验证芯片的功能描述信息、以及访存模型之前,还用于:
103.基于所述待验证芯片中的功能模块对外交互时所采用的通信协议、以及所述待验证芯片中的功能模块对外交互时的接口信息,构建所述访存模型。
104.第三方面,本公开可选实现方式还提供一种电子设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
105.第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
106.关于上述芯片验证装置、电子设备、及计算机可读存储介质的效果描述参见上述芯片功能的验证方法的说明,这里不再赘述。
107.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。
108.本公开实施例提供的芯片功能的验证方法、装置、电子设备及存储介质,通过建立访存模型,该访存模型通过预设编程语言构成,用于模拟与所述待验证芯片连接的接口的行为、并模拟所述接口对虚拟存储器的访存操作,从而通过访存模型模拟真正的硬件逻辑,其并不具有实际的硬件意义,通过软件能够更迅速的对待测试芯片对存储器的访存操作进行响应,提升对芯片功能验证时的验证效率。
109.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
110.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
111.图1示出了本公开实施例所提供的一种芯片功能的验证方法的流程图;
112.图2示出了本公开实施例所提供的一种对单个功能模块进行验证的具体示例;
113.图3示出了本公开实施例所提供的一种对多个功能模块进行验证的具体示例;
114.图4示出了本公开实施例所提供的另一种对多个功能模块进行验证的具体示例;
115.图5示出了本公开实施例所提供的一种芯片的功能验证装置的示意图;
116.图6示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
117.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
118.经研究发现,在片上系统soc中拥有很多功能复杂的数据处理模块,也即ip核(ip核是指芯片中具有独立功能的电路模块的成熟设计)。而各个数据处理模块内部也具有多个子模块。随着soc芯片或系统级数据处理模块设计复杂度的提高,对于功能验证的要求也随之提高。为了实现对soc或数据处理模块进行验证,通常会将所需要的物理接口模块和物理存储器集成在仿真器中;在对芯片功能进行验证时,仿真器中用于仿真的线程执行待验证芯片的相关设计代码,并在设计代码指示需要对存储器进行访存操作时,通过总线,利用接口模块对存储器进行对应的访存操作,并得到对访存操作的响应结果,然后再将响应结果返回给用于仿真的线程。该种方式由于会利用物理接口模块实际访问存储器,而实际访问存储器的过程需要大量的访存时间,造成了对芯片功能验证存在验证效率较低的问题。
119.另外,当前的验证方式中,由于直接在仿真器中集成所需要的物理接口模块、和物理存储器,但对于不同的芯片与通信接口之间的通信协议可能会存在区别,导致了当前的验证方式存在通用性差、扩展性较小的问题。
120.基于上述研究,本公开提供了一种芯片功能的验证方法,通过建立访存模型,该访存模型通过预设编程语言生成,用于模拟与所述待验证芯片连接的接口的行为、并模拟所述接口对虚拟存储器的访存操作,从而通过访存模型模拟真正的硬件逻辑,其并不具有实际的硬件意义,通过软件能够更迅速的对待测试芯片对存储器的访存操作进行响应,提升对芯片功能验证时的验证效率。
121.另外,对于不同的芯片,可以针对该芯片与通信接口之间的通信协议,为该芯片选择对应的访存模型,因此该种验证方法具有更强的通用性和可扩展性。
122.针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
123.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
124.为便于对本实施例进行理解,首先对本公开实施例所公开的一种芯片功能的验证方法进行详细介绍,本公开实施例所提供的芯片功能的验证方法的执行主体一般为仿真器;在仿真器中,部署有用于进行芯片功能验证的相关功能模块,如处理器、存储器等。在一些可能的实现方式中,该芯片功能的验证方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
125.下面对本公开实施例提供的芯片功能的验证方法加以说明。
126.参见图1所示,为本公开实施例提供的芯片功能的验证方法的流程图,所述方法包括步骤s101~s103,其中:
127.s101:获取待验证芯片的功能描述信息、以及访存模型;其中,所述访存模型通过预设编程语言生成,用于模拟提供与所述待验证芯片连接的接口的行为、并模拟通过所述接口对存储器的访存操作;
128.s102:基于所述功能描述信息、以及所述访存模型,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果;
129.s103:基于所述仿真结果、以及与所述待验证芯片对应的真实结果,得到所述待验证芯片的验证结果。
130.在本公开实例中,在获取待验证芯片的功能描述信息、以及访存模型后,基于所述功能描述信息、以及所述访存模型,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果,基于所述仿真结果、以及与所述待验证芯片对应的真实结果,得到所述待验证芯片的验证结果。该过程中,访存模型通过预设编程语言生成,用于模拟与所述待验证芯片连接的接口的行为、并模拟所述接口对存储器的访存操作,从而利用软件构建访存模型,模拟真正的硬件逻辑,实现待验证芯片对存储器的访存操作,从而减少仿真耗时。
131.另外,对于不同的芯片,可以针对该芯片与通信接口之间的通信协议,为该芯片选择对应的访存模型,由于访存模型本身具有较强的可迁移性,因此该种验证方法具有更强的通用性和可扩展性。
132.下面对上述s101~s103分别加以说明。
133.针对上述s101:在本公开实例中,芯片功能的验证方法可以应用于不同的场景下;例如应用于需要对整个芯片的全部功能进行验证的场景下、或者应用于对整个芯片的部分功能进行验证的场景下。其中,待验证的功能可以包含一个或多个模块,本方法同样适用。
134.对存储器进行访存操作的模块可以是芯片中的至少部分模块;且不同模块对存储器进行访存操作的权限可以有所区别;其中,任一模块对存储器的访存操作的权限例如包括下述任一种:只读、只写、既可读也可写。
135.待验证芯片的功能描述信息可以包括单个待测设计(designundertest,dut)的功能描述信息、也可以是多个dut的功能描述信息;每个dut中可以包括:至少一个功能模块。
136.所述功能描述信息包括:所述待验证芯片中的功能模块对存储器的访存方式、以及所述待验证芯片的功能代码。
137.该功能代码例如包括:硬件描述语言(hardware description language,hdl)代码、或寄存器转换级电路(register transfer level,rtl)代码。
138.构成访存模型的预设编程语言例如包括:系统级硬件描述语言(systemverilog,sv)语言。访存用于模拟与所述待验证芯片连接的接口的行为、并模拟所述接口对存储器的访存操作。
139.在具体实施中,整个访存模型中的不同模型可以包括但不限于:接口模型和存储器模型;针对不同模型对应的不同功能,可以通过多个sv代码文件来实现。
140.其中,接口模型包括:读接口模型和写接口模型;所述读接口模型与所述写接口模型的构成方式相同,例如可以包括:用于实现接口对所述存储器的访存行为的第一代码文
件、以及实现所述接口的第二代码文件;存储器模型可以包括:用于模拟所述存储器功能的第三代码文件。
141.示例性地,读接口模型例如包括:
142.文件1:rd_model.sv,用于实现读接口对所述存储器的访存行为的第一代码文件。在该第一代码文件中,定义了模拟读接口的类(class),该类命名为rd_model,又称为读模型。rd_model用于模拟rtl发起读操作之后存储器响应。
143.在该类中,声明有下述变量:
144.第一变量rd_intf:用于模拟与rtl进行连接的读接口(read interface)。
145.第二变量glb_source:用于模拟存储器。
146.第三变量readdata:由读模型发送给rtl,rtl接收到的读数据。
147.第四变量readaddr:由rtl发送给读模型rd_model,读模型接收到的地址。
148.在该类中,包括下述方法:
149.第一复位方法do_reset:负责复位,实现了当复位信号来到写模型后的行为。
150.第一驱动方法do_drive:负责驱动,实现了读请求来到读模型后的行为。
151.文件2:rd_intf.sv,用于实现所述读接口的第二代码文件。在该文件中,定义了名为rd_intf的读接口。另外,还定义了地址信号和数据信号。其中:
152.地址信号包括:
153.读地址有效信号read_addr_valid:与有效地址同时到达读模型,意义为证明本次读请求的读地址是有效的。
154.读地址准备信号read_addr_ready:表示读模型已经准备好接收读请求了;
155.读地址read_addr:由rtl发送给读模型rd_model,读模型接收到的地址。
156.数据信号包括:
157.读数据有效信号read_data_valid:与有效数据同时到达读模型,表示本次读请求的读数据是有效的。
158.读数据准备信号read_data_ready:表示读模型已经准备好接收读请求了;
159.读数据read_data:由读模型发送给rtl,rtl接收到的读数据。
160.写接口模型例如包括:
161.文件3:wr_model.sv,用于实现读接口对所述存储器的访存行为的第一代码文件。在该第一代码文件中,定义了模拟写接口的类(class),该类命名为wr_model,又称为写模型。wr_model用于模拟rtl发起写操作之后存储器响应。
162.在该类中,声明有下述变量:
163.第五变量wr_intf:用于模拟与rtl进行连接的写接口(write interface)。
164.第二变量glb_source:用于模拟存储器。
165.第六变量writedata:由写模型发送给rtl,rtl接收到的写数据。
166.第七变量writeaddr:由rtl发送给写模型wr_model,写模型接收到的地址。
167.在该类中,包括下述方法:
168.第二复位方法do_reset:负责复位,实现了当复位信号来到写模型后的行为。
169.第二驱动方法do_drive:负责驱动,实现了读请求来到写模型后的行为。
170.文件4:wr_intf.sv,用于实现所述写接口的第二代码文件。在该文件中,定义了名
为wr_intf的写接口。另外,还定义了地址信号和数据信号。其中:
171.地址信号包括:
172.写地址有效信号write_addr_valid:与有效地址同时到达写模型,意义为证明本次写请求的写地址是有效的。
173.写地址准备信号write_addr_ready:表示写模型已经准备好接收写请求了;
174.写地址write_addr:由rtl发送给写模型wr_model,写模型接收到的地址。
175.数据信号包括:
176.写数据有效信号write_data_valid:与有效数据同时到达写模型,意义为证明本次写请求的写数据是有效的。
177.写数据准备信号write_data_ready:表示写模型已经准备好接收写请求了;
178.写数据write_data:由写模型发送给rtl,rtl接收到的写数据。
179.存储器模型包括:
180.文件5:glb_source.sv,用于模拟所述存储器rtl的第三代码文件,该文件定义了glb_source的类,并声明了名为data_addr_q的关联数组,用于模拟存储器。
181.在该类中,声明有下述变量:
182.数据地址序列data_addr_queue:该数据的索引代表了存储器的地址,每个索引内的元素代表了该存储器地址中存储的一字节数据。读写模型对该关联数组进行使用,就完全模拟了dut读写存储器的行为。
183.另外一实施例中,还可以在访存模型中包括:宏文件。该宏文件用于写入访存模型实例化时的相关信息,例如读接口的数量、写接口的数量、接口的地址位宽、数据位宽等。示例性的,该宏文件例如为下述文件6:
184.文件6:glb_define.sv,该文件用于定义宏,包括:写接口数量rd_num、读接口数量wr_num,以及接口的地址位宽addr_width、数据位宽data_width等
185.在接口模型的执行中此处以读接口模型的执行为例,写接口模型可以采用同样的执行方法:
186.当读模型rd_model接收到来自读接口rd_intf传来的复位信号时,do_reset会将将rd_intf中的data_valid、addr_ready等信号置0。当读模型rd_model接收到访存方式为读的请求时,对glb_source这个类例化出的对象中的关联数组data_addr_q进行读操作,同时将读到的数据按照协议规定的时序返回给rd_intf,从而实现了读任务。
187.读接口模型在执行时通过第二代码文件进行信号传输,利用读地址有效信号read_addr_valid:读地址有效信号,来证明本次读请求的读地址是有效的,若读请求需要进行读操作的地址是无效的,则不会继续执行;利用读地址准备信号read_addr_ready:读地址准备信号,来表征读模型rd_model准备完成,可以接收读请求。
188.针对上述s102:功能描述信息例如包括:所述待验证芯片中的功能模块对存储器的访存方式、以及所述待验证芯片的功能代码。
189.在基于所述功能描述信息、以及所述访存模型,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果时,可以执行下述步骤21~步骤22:
190.步骤21:基于所述访存方式对所述访存模型进行实例化,得到所述功能模块对应的访存模型实例。
191.步骤22:基于所述访存模型实例、以及所述功能代码,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果。
192.在具体实施中:
193.针对步骤21,对访存模型进行实例化,例如是将接口的相关参数取值传入到在访存模型中定义的类中,然后为其在仿真器中分配具体的内存空间。相关参数例如包括:接口名称、发送给接口的信号名称等。
194.所述访存方式可以包括下述中的至少一种:所述功能模块对存储器进行读操作、所述功能模块对存储器进行写操作、所述功能模块对存储器进行读操作以及写操作,基于所述访存方式的不同,在对所述访存模型进行实例化时的具体方式也有所区别。示例性的:
195.a1:当所述访存方式指示对应功能模块对存储器进行读操作时,对与读操作对应的读接口模型进行实例化,并对存储器模型进行实例化,得到功能模块对应的读接口模型实例、以及存储器模型实例。
196.示例性的,可以利用第一代码文件1:rd_model.sv、第二代码文件2:rd_intf.sv对所述读接口模型进行实例化;利用第三代码文件5:glb_source.sv对存储器模型进行实例化。
197.a2:当所述访存方式指示对应功能模块对存储器进行写操作时,对与写操作对应的读接口模型进行实例化,并对存储器模型进行实例化,得到功能模块对应的写接口模型实例、以及存储器模型实例。
198.示例性的,可以利用第一代码文件3:wr_model.sv、第二代码文件4:wr_intf.sv对所述写接口模型进行实例化;利用第三代码文件5:glb_source.sv对存储器模型进行实例化。
199.a3:当所述访存方式指示对应功能模块对存储器进行读操作以及写操作时,对与读操作与写操作对应的读接口模型和写接口模型进行实例化,并对存储器模型进行实例化,得到功能模块对应的读接口模型实例、写接口模型实例、以及存储器模型实例。
200.示例性的,例如可以利用第一代码文件1:rd_model.sv、第二代码文件2:rd_intf.sv对所述读接口模型进行实例化;利用第一代码文件3:wr_model.sv、第二代码文件4:wr_intf.sv对所述写接口模型进行实例化;用第三代码文件5:glb_source.sv对存储器模型进行实例化。
201.在具体实施中,针对功能模块有一个的情况,可以针对该功能模块,基于该功能模块对应的访存方式,利用上述a~a3中,与访存方式对应的实例化方式,对该功能模块进行访存模型实例化的操作。
202.另外,针对所述功能模块有多个的情况,可以针对多个功能模块分别对应的访存方式,对所述访存模型进行实例化,得到多个所述功能模块分别对应访存模型实例。
203.然后可以基于多个功能模块分别对应的访存模型实例、以及所述功能代码,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果。
204.另外,在对功能模块分别进行访存模型实例化的时候,为了实现仿真过程的自动化,也即通过自动化的方式对访存模型进行实例化,可以在文件6:glb_define.sv中进行接口类型和接口数量的指定。
205.示例性的,图2示出了在对单个功能模块进行验证时,为功能模块实例化访存模
型,得到对应访存模型实例的具体示例。其中,功能模块为design_ip。针对该功能模块,其对应的读写接口rd/wrintf可以是任意协议,包括自定义的总线协议和标准协议;实例化生成访存模型实例为:sv_model。如果功能模块仅需要进行读操作,那么就需要在文件6:glb_define.sv中指定rd_num=1,在仿真过程中实例化时就会实例化一组rd_intf和rd_model;类似地,如果功能模块需要进行写操作,需要指在文件6:glb_define.sv中指定wr_num=1,仿真过程中实例化时就会实例化一组wr_intf和wr_model。如果同时需要读写,那就将rd_num和wr_num均指定为1,则在仿真过程中实例化时会实例化一组rd_intf和rd_model、和一组wr_intf和wr_model。同时,为该功能模块实例化一个存储器模型glb_source。在将访存模型实例化后,基于访存模型实例、以及design_ip,利用仿真器testbench进行仿真。
206.图3示出了在对多个功能模块进行验证时,为功能模块实例化访存模型,得到对应访存模型实例的具体示例。其中,功能模块有3个,分别为design_0、design_1和design_2。实例化生成的访存模型实例为:sv_model。其中,design_0仅能进行读操作,design_1仅能进行写操作,design_2既能进行读操作,又能进行写操作,进而,需要实例化的读接口模型实例有2个,需要实例化的写接口模型也有2个,那么就需要在文件6:glb_define.sv中指定rd_num=2,在仿真过程中实例化时会分别为design_0、和design_2实例化2组rd_intf和rd_model;同时,在文件6:glb_define.sv中指定wr_num=2,在仿真过程中实例化时分别为design_1、和design_2实例化2组wr_intf和wr_model。同时,为每个功能模块实例化一个存储器模型glb_source,分别为:glb_source0、glb_source1和glb_source2。
207.在另一实施例中,所述功能描述信息还包括:多个功能模块分别能够访存的存储空间的地址信息。在对包含了多个功能模块的访存模型进行实例化时,不同功能模块会根据对应的地址信息,访问存储器中具有相应地址的存储空间;所述不同功能模块访存的存储空间存在下述b1和b2两种情况中至少一种:
208.b1:不同功能模块的地址信息所指示的不同功能模块分别能够访存的存储空间存在重叠。例如,可以包括下述情况中的至少一种:不同功能模块执行读操作所需访存的存储空间存在重叠、不同功能模块执行写操作所需访存的存储空间存在重叠、以及不同功能模块执行写操作和读操作所需访存的存储空间存在重叠。在上述情况下,可视为该存储空间地址被多个功能模块访问,为了避免出现数据错误以及存储空间地址冲突等情况,在实例化过程中需要针对不同的功能模块分别实例化出不同的存储器模型实例。针对每个功能模块,也会基于该功能模块对应的访存方式,对所述接口模型进行实例化,得到各功能模块分别对应的接口模型实例;其中,各功能模块对应的接口模型实例,和该功能模块对应的存储器模型实例相连接。
209.b2:不同功能模块的地址信息所指示的不同功能模块分别能够访存的存储空间未存在重叠。在该种情况下,可视为该存储空间中与每个地址信息对应的存储空间仅会被一个功能模块访问,因此,不会存在存储空间地址冲突的情况。在实例化过程中,为了减少存储器模型实例对内存的占用,可以为不同功能模块实例化同一存储器模型实例;同时,根据各个功能模块分别对应访存方式,为各功能模块分别进行接口模型的实例化,得到各功能模块分别对应的接口模型实例;其中,各功能模块对应的接口模型实例,和所述同一存储器模型实例相连接。
210.示例性的,图4示出了在对多个功能模块进行验证时,为功能模块实例化访存模
型,得到对应访存模型实例的具体示例。在该示例中,功能模块有3个,分别为design_0、design_1和design_2。实例化生成的访存模型实例为:sv_model。其中,design_0仅能进行读操作,design_1仅能进行写操作,design_2既能进行读操作,又能进行写操作。其中,design_0的地址信息、和design_1的地址信息指示两者分别能够访存的存储空间未存在重叠,因此,可以为design_0和design_1实例化同一存储器模型实例glb_source0。同时,由于design_0的访存方式为只读,为其实例化读接口模型实例rd_intf_0和rd_model_0。design_1的访存方式为只写,为其实例化读写口模型实例wr_intf_0和wr_model_0。
211.另外,design_2的地址信息、和design_1的地址信息指示两者分别能够访存的存储空间存在重叠,因此,需要为design_2单独实例化一存储器模型实例glb_source1。同时,由于design_2的访存方式为既可读也可写,为其实例化读接口模型实例rd_intf_1和rd_model_1。并为其实例化写接口模型实例wr_intf_1和wr_model_1。
212.针对上述步骤22:在基于所述访存方式对所述访存模型进行实例化,得到所述功能模块对应的访存模型实例后,即可以基于访存模型实例、以及所述功能代码,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果。
213.在基于所述访存模型实例、以及所述功能代码,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果时,例如可以采用下述方式:
214.通过仿真器执行所述功能代码;响应于任一条功能代码指示利用目标接口对存储器进行访存操作,执行与所述访存操作对应的访存模型实例,以对所述访存操作进行响应。基于所述功能代码的执行结果,得到所述待验证芯片的仿真结果。
215.此处,在对访存模型进行实例化的过程中,已经将接口的相关参数取值传入到在访存模型中定义的类中,然后为其在仿真器中分配具体的内存空间,并将生成的访存模型实例加载到对应的内存空间中。
216.在任一条功能代码指示利用目标接口对存储器进行访存操作的时候,会发出对应的访存指令。在访存指令中,携带有示所用的接口的相关参数、以及访存信号。仿真器可以根据访存指令中携带的接口的相关参数,从内存空间中读取对应的访存模型实例,并将访存指令中携带的访存信号作为访存模型实例的输入,执行该访存模型实例对应的与方法相关的代码,得到对访存指令的响应结果,以实现对访存操作进行响应。
217.其中,可以在所述仿真器中,生成用于执行所述功能代码的第一线程和用于执行所述访存模型实例的第二线程。
218.在仿真时,第一线程执行所述功能代码时,若任一条功能代码指示利用指定目标接口对存储器进行访存操作,通过所述第一线程向所述第二线程发送访存指令;响应于所述第二线程接收到所述第一线程发送的访存指令,利用第二线程基于所述目标接口对应的访存模型实例对所述访存指令进行响应。
219.也即,第一线程在执行功能代码时,若任一条功能代码的执行结果为对存储器进行访存操作,则生成访存指令发送给第二线程。
220.第二线程在接收到访存指令后,基于访存指令中携带的接口的相关参数,从内存空间中读取对应的访存模型实例,并将访存指令中携带的访存信号作为访存模型实例的输入,执行该访存模型实例对应的与方法相关的代码,得到对访存指令的响应结果,并将响应结果发送给第一线程。
221.第一线程接收到响应结果后,继续执行待测试芯片的功能代码。
222.示例性的,以图2为例,当任一功能代码指示出图中designip需要通过目标接口对存储器进行读操作或写操作时,第一线程向用于执行所述访存模型实例的第二线程发送读操作或者写操作对应的访存指令;所述第二线程接收到所述第一线程发来的读操作和写操作的访存指令后,从内存中调取rd_intf_0和与其连接的rd_model_0,并执行rd_model_0中定义的方法,以实现对该读操作或写操作的访存指令进行响应,以满足仿真需求。
223.针对上述s103:例如可以采用下述方式基于所述仿真结果、以及与所述待验证集成电路对应的真实结果,得到所述待验证集成电路的验证结果:
224.将所述待验证芯片对应的真实结果与所述仿真结果对比,得到对比结果;
225.基于所述对比结果,生成所述待验证芯片的验证结果。
226.其中,使用本公开实例中的芯片验证方法,可以得到整个待测芯片的功能验证结果、待测芯片中单个或多个功能的验证结果;不同功能中可以包含多个模块,本方法同样适用。
227.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
228.基于同一发明构思,本公开实施例中还提供了与一种芯片功能的验证方法对应的一种芯片的功能验证装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述一种芯片功能的验证方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
229.参照图5所示,为本公开实施例提供的一种芯片的功能验证装置的示意图,所述装置包括:获取模块51、仿真模块52、处理模块53;其中,
230.所述获取模块51,用于获取待验证芯片的功能描述信息、以及访存模型;其中,所述访存模型通过预设编程语言生成,用于模拟提供与所述待验证芯片连接的接口、并模拟通过所述接口对存储器的访存操作;
231.所述仿真模块52,用于基于所述功能描述信息、以及所述访存模型,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果;
232.所述处理模块53,用于基于所述仿真结果、以及与所述待验证芯片对应的真实结果,得到所述待验证芯片的验证结果。
233.一种可选的实施方式中,所述功能描述信息包括:所述待验证芯片中的功能模块对存储器的访存方式、以及所述待验证芯片的功能代码;
234.所述仿真模块52在基于所述功能描述信息、以及所述访存模型,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果时,用于:
235.基于所述访存方式对所述访存模型进行实例化,得到所述功能模块对应的访存模型实例;
236.基于所述访存模型实例、以及所述功能代码,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果。
237.一种可选的实施方式中,所述访存模型包括:接口模型、以及存储器模型;
238.其中,所述接口模型由实现接口对所述存储器的访存行为的第一代码文件、以及
实现所述接口的第二代码文件定义;
239.所述存储器模型由模拟所述存储器功能的第三代码文件定义。
240.一种可选的实施方式中,所述接口模型包括:读接口模型;
241.所述第一代码文件中,定义了模拟读接口的类,所述模拟读接口的类用于模拟对应功能模块发起读操作之后的存储器响应;
242.所述模拟读接口的类中,声明了下述变量中至少一种:第一变量:用于模拟与对应功能模块进行连接的读接口;第二变量,用于模拟存储器;第三变量,用于表示由所述读接口模型发送给对应功能模块的读数据;第四变量,用于表示由对应功能模块发送给所述读接口模型的地址;
243.所述模拟读接口的类中,包括有下述方法中至少一种:第一复位方法,用于在接收到复位信号后进对所述模拟读接口的类进行复位;第一驱动方法,用于实现所述模拟读接口的类接收到读请求后的行为;
244.所述第二代码文件中,定义了所述读接口模型、以及第一地址信号和第一数据信号;
245.所述第一地址信号包括下述至少一种:读地址有效信号,与有效地址同时到达所述读接口模型,用于表示本次读请求的读地址是有效的;读地址准备信号,用于表示读接口模型已经准备好接收读请求;读地址,表示由对应功能模块发送给读接口模型的地址;
246.所述第一数据信号包括下述至少一种:读数据有效信号,与有效数据同时到达读模型,表示本次读请求的读数据是有效的;读数据准备信号,表示读模型已经准备好接收读请求;读数据,表示由对应功能模块发送给读接口模型的数据。
247.一种可选的实施方式中,所述接口模型包括:写接口模型;
248.所述第一代码文件中,定义了模拟写接口的类,所述模拟写接口的类用于模拟对应功能模块发起写操作之后的存储器响应;
249.所述模拟写接口的类中,声明了下述变量中至少一种:第五变量:用于模拟与对应功能模块进行连接的写接口;第二变量,用于模拟存储器;第六变量,用于表示由所述写接口模型发送给对应功能模块的写数据;第七变量,用于表示由对应功能模块发送给所述写接口模型的地址;
250.所述模拟写接口的类中,包括有下述方法中至少一种:第二复位方法,用于在接收到复位信号后进对所述模拟写接口的类进行复位;第二驱动方法,用于实现所述模拟写接口的类接收到写请求后的行为;
251.所述第二代码文件中,定义了所述写接口模型、以及第二地址信号和第二数据信号;
252.所述第二地址信号包括下述至少一种:写地址有效信号,与有效地址同时到达所述写接口模型,用于表示本次写请求的写地址是有效的;写地址准备信号,用于表示写接口模型已经准备好接收写请求;写地址,表示由对应功能模块发送给写接口模型的地址;
253.所述第二数据信号包括下述至少一种:写数据有效信号,与有效数据同时到达写模型,表示本次写请求的写数据是有效的;写数据准备信号,表示写模型已经准备好接收写请求;写数据,表示由对应功能模块发送给写接口模型的数据。
254.一种可选的实施方式中,所述第三代码文件,定义了用于模拟存储器的类;所述模
拟存储器的类中,声明有下述变量:
255.数据地址序列,所述数据地址序列的索引用于表示存储器的地址;每个索引对应的元素表示对应存储器地址中存储的一字节数据。
256.一种可选的实施方式中,所述接口模型包括:读接口模型、以及写接口模型;
257.一种可选的实施方式中,所述仿真模块52在基于所述访存方式对所述访存模型进行实例化,得到所述功能模块分别对应的访存模型实例时,用于:
258.响应于所述访存方式指示对应功能模块对存储器进行读操作,对所述读接口模型、以及所述存储器模型进行实例化,得到所述功能模块对应的读接口模型实例、以及存储器模型实例;
259.响应于所述访存方式指示对应功能模块对存储器进行写操作,对所述写接口模型、以及存储器模型进行实例化,得到所述功能模块对应的写接口模型实例、以及存储器模型实例;
260.响应于所述访存方式指示对应功能模块对存储器进行读操作以及写操作,对所述读接口模型、所述写接口模型实例、以及存储器模型进行实例化,得到所述功能模块对应的读接口模型实例、写接口模型实例、以及存储器模型实例。
261.一种可选的实施方式中,所述功能模块有多个,所述仿真模块52在基于所述访存方式对所述访存模型进行实例化,得到所述功能模块对应的访存模型实例时,用于:
262.基于多个功能模块分别对应的访存方式,对所述访存模型进行实例化,得到多个所述功能模块分别对应访存模型实例。
263.一种可选的实施方式中,所述功能描述信息还包括:多个功能模块分别能够访存的存储空间的地址信息;
264.所述仿真模块52在基于多个功能模块分别对应的访存方式,对所述访存模型进行实例化,得到多个所述功能模块分别对应访存模型实例时,用于:
265.响应于不同功能模块的地址信息指示所述不同功能模块分别能够访存的存储空间存在重叠,为所述不同功能模块分别实例化不同的存储器模型实例;以及,基于各功能模块分别对应的访存方式,对所述接口模型进行实例化,得到各功能模块分别对应的接口模型实例;其中,各功能模块对应的接口模型实例,和该功能模块对应的存储器模型实例连接;
266.响应于不同功能模块的地址信息指示所述不同功能模块分别能够访存的存储空间未存在重叠,基于所述不同功能模块分别对应的接口信息,为所述不同功能模块实例化同一存储器模型实例;以及,基于各功能模块分别对应的访存方式,对所述接口模型进行实例化,得到各功能模块分别对应的接口模型实例,其中,所述不同功能模块分别对应的接口模型实例,和所述同一存储器模型实例连接。
267.一种可选的实施方式中,所述仿真模块52在基于所述访存模型实例、以及所述功能代码,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果时,用于:
268.利用仿真器执行所述功能代码,响应于任一条功能代码指示利用目标接口对存储器进行访存操作,执行与所述访存操作对应的访存模型实例,以对所述访存操作进行响应;
269.基于所述功能代码的执行结果,得到所述待验证芯片的仿真结果。
270.一种可选的实施方式中,所述仿真模块52在利用仿真器执行所述功能代码,响应
于任一条功能代码指示利用目标接口对存储器进行访存操作,执行与所述访存操作对应的访存模型实例,以对所述访存操作进行响应时,用于:
271.在仿真器中,生成与所述功能代码对应的第一线程、以及与所述访存模型实例对应的第二线程;
272.利用第一线程执行所述功能代码,并响应于任一条功能代码指示利用目标接口对存储器进行访存操作,利用所述第一线程向所述第二线程发送访存指令;
273.响应于所述第二线程接收到所述第一线程发送的访存指令,利用第二线程基于所述目标接口对应的访存模型实例对所述访存指令进行响应。
274.一种可选的实施方式中,所述处理模块53在基于所述仿真结果、以及与所述待验证芯片对应的真实结果,得到所述待验证芯片的验证结果时,用于:
275.将所述待验证芯片对应的真实结果与所述仿真结果对比,得到对比结果;
276.基于所述对比结果,生成所述待验证芯片的验证结果。
277.一种可选的实施方式中,所述仿真模块52在获取待验证芯片的功能描述信息、以及访存模型之前,还用于:
278.基于所述待验证芯片中的功能模块对外交互时所采用的通信协议、以及所述待验证芯片中的功能模块对外交互时的接口信息,构建所述访存模型。
279.关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
280.本公开实施例还提供了一种电子设备,如图6所示,为本公开实施例提供的电子设备结构示意图,包括:
281.处理器61和存储器62;所述存储器62存储有处理器61可执行的机器可读指令,处理器61用于执行存储器62中存储的机器可读指令,所述机器可读指令被处理器61执行时,处理器61执行下述步骤:
282.获取待验证芯片的功能描述信息、以及访存模型;其中,所述访存模型通过预设编程语言生成,用于模拟提供与所述待验证芯片连接的接口、并模拟通过所述接口对存储器的访存操作;
283.基于所述功能描述信息、以及所述访存模型,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果;
284.基于所述仿真结果、以及与所述待验证芯片对应的真实结果,得到所述待验证芯片的验证结果。
285.上述存储器62包括内存621和外部存储器622;这里的内存621也称内存储器,用于暂时存放处理器61中的运算数据,以及与硬盘等外部存储器622交换的数据,处理器61通过内存621与外部存储器622进行数据交换。
286.上述指令的具体执行过程可以参考本公开实施例中所述的一种芯片功能的验证方法的步骤,此处不再赘述。
287.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的一种芯片功能的验证方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
288.本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,
所述程序代码包括的指令可用于执行上述方法实施例中所述的一种芯片功能的验证方法的步骤,具体可参见上述方法实施例,在此不再赘述。
289.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
290.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
291.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
292.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
293.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
294.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

技术特征:
1.一种芯片功能的验证方法,其特征在于,包括:获取待验证芯片的功能描述信息、以及访存模型;其中,所述访存模型通过预设编程语言生成,用于模拟提供与所述待验证芯片连接的接口、并模拟通过所述接口对存储器的访存操作;基于所述功能描述信息、以及所述访存模型,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果;基于所述仿真结果、以及与所述待验证芯片对应的真实结果,得到所述待验证芯片的验证结果。2.根据权利要求1所述的方法,其特征在于,所述功能描述信息包括:所述待验证芯片中的功能模块对存储器的访存方式、以及所述待验证芯片的功能代码;所述基于所述功能描述信息、以及所述访存模型,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果,包括:基于所述访存方式对所述访存模型进行实例化,得到所述功能模块对应的访存模型实例;基于所述访存模型实例、以及所述功能代码,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果。3.根据权利要求1或2所述的方法,其特征在于,所述访存模型包括:接口模型、以及存储器模型;其中,所述接口模型由实现接口对所述存储器的访存行为的第一代码文件、以及实现所述接口的第二代码文件定义;所述存储器模型由模拟所述存储器功能的第三代码文件定义。4.根据权利要求3所述的方法,其特征在于,所述接口模型包括:读接口模型;所述第一代码文件中,定义了模拟读接口的类,所述模拟读接口的类用于模拟对应功能模块发起读操作之后的存储器响应;所述模拟读接口的类中,声明了下述变量中至少一种:第一变量:用于模拟与对应功能模块进行连接的读接口;第二变量,用于模拟存储器;第三变量,用于表示由所述读接口模型发送给对应功能模块的读数据;第四变量,用于表示由对应功能模块发送给所述读接口模型的地址;所述模拟读接口的类中,包括有下述方法中至少一种:第一复位方法,用于在接收到复位信号后进对所述模拟读接口的类进行复位;第一驱动方法,用于实现所述模拟读接口的类接收到读请求后的行为;所述第二代码文件中,定义了所述读接口模型、以及第一地址信号和第一数据信号;所述第一地址信号包括下述至少一种:读地址有效信号,与有效地址同时到达所述读接口模型,用于表示本次读请求的读地址是有效的;读地址准备信号,用于表示读接口模型已经准备好接收读请求;读地址,表示由对应功能模块发送给读接口模型的地址;所述第一数据信号包括下述至少一种:读数据有效信号,与有效数据同时到达读模型,表示本次读请求的读数据是有效的;读数据准备信号,表示读模型已经准备好接收读请求;读数据,表示由对应功能模块发送给读接口模型的数据。5.根据权利要求3或4所述的方法,其特征在于,所述接口模型包括:写接口模型;
所述第一代码文件中,定义了模拟写接口的类,所述模拟写接口的类用于模拟对应功能模块发起写操作之后的存储器响应;所述模拟写接口的类中,声明了下述变量中至少一种:第五变量:用于模拟与对应功能模块进行连接的写接口;第二变量,用于模拟存储器;第六变量,用于表示由所述写接口模型发送给对应功能模块的写数据;第七变量,用于表示由对应功能模块发送给所述写接口模型的地址;所述模拟写接口的类中,包括有下述方法中至少一种:第二复位方法,用于在接收到复位信号后进对所述模拟写接口的类进行复位;第二驱动方法,用于实现所述模拟写接口的类接收到写请求后的行为;所述第二代码文件中,定义了所述写接口模型、以及第二地址信号和第二数据信号;所述第二地址信号包括下述至少一种:写地址有效信号,与有效地址同时到达所述写接口模型,用于表示本次写请求的写地址是有效的;写地址准备信号,用于表示写接口模型已经准备好接收写请求;写地址,表示由对应功能模块发送给写接口模型的地址;所述第二数据信号包括下述至少一种:写数据有效信号,与有效数据同时到达写模型,表示本次写请求的写数据是有效的;写数据准备信号,表示写模型已经准备好接收写请求;写数据,表示由对应功能模块发送给写接口模型的数据。6.根据权利要求3-5任一项所述的方法,其特征在于,所述第三代码文件,定义了用于模拟存储器的类;所述模拟存储器的类中,声明有下述变量:数据地址序列,所述数据地址序列的索引用于表示存储器的地址;每个索引对应的元素表示对应存储器地址中存储的一字节数据。7.根据权利要求3所述的方法,其特征在于,所述接口模型包括:读接口模型、以及写接口模型;所述基于所述访存方式对所述访存模型进行实例化,得到所述功能模块分别对应的访存模型实例,包括:响应于所述访存方式指示对应功能模块对存储器进行读操作,对所述读接口模型、以及所述存储器模型进行实例化,得到所述功能模块对应的读接口模型实例、以及存储器模型实例;响应于所述访存方式指示对应功能模块对存储器进行写操作,对所述写接口模型、以及存储器模型进行实例化,得到所述功能模块对应的写接口模型实例、以及存储器模型实例;响应于所述访存方式指示对应功能模块对存储器进行读操作以及写操作,对所述读接口模型、所述写接口模型实例、以及存储器模型进行实例化,得到所述功能模块对应的读接口模型实例、写接口模型实例、以及存储器模型实例。8.根据权利要求2-7任一项所述的方法,其特征在于,所述功能模块有多个,所述基于所述访存方式对所述访存模型进行实例化,得到所述功能模块对应的访存模型实例,包括:基于多个功能模块分别对应的访存方式,对所述访存模型进行实例化,得到多个所述功能模块分别对应访存模型实例。9.根据权利要求8所述的方法,其特征在于,所述功能描述信息还包括:多个功能模块分别能够访存的存储空间的地址信息;
所述基于多个功能模块分别对应的访存方式,对所述访存模型进行实例化,得到多个所述功能模块分别对应访存模型实例,包括:响应于不同功能模块的地址信息指示所述不同功能模块分别能够访存的存储空间存在重叠,为所述不同功能模块分别实例化不同的存储器模型实例;以及,基于各功能模块分别对应的访存方式,对所述接口模型进行实例化,得到各功能模块分别对应的接口模型实例;其中,各功能模块对应的接口模型实例,和该功能模块对应的存储器模型实例连接;响应于不同功能模块的地址信息指示所述不同功能模块分别能够访存的存储空间未存在重叠,基于所述不同功能模块分别对应的接口信息,为所述不同功能模块实例化同一存储器模型实例;以及,基于各功能模块分别对应的访存方式,对所述接口模型进行实例化,得到各功能模块分别对应的接口模型实例,其中,所述不同功能模块分别对应的接口模型实例,和所述同一存储器模型实例连接。10.根据权利要2-9任一项所述的方法,其特征在于,所述基于所述访存模型实例、以及所述功能代码,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果,包括:利用仿真器执行所述功能代码,响应于任一条功能代码指示利用目标接口对存储器进行访存操作,执行与所述访存操作对应的访存模型实例,以对所述访存操作进行响应;基于所述功能代码的执行结果,得到所述待验证芯片的仿真结果。11.根据权利要求10所述的方法,其特征在于,所述利用仿真器执行所述功能代码,响应于任一条功能代码指示利用目标接口对存储器进行访存操作,执行与所述访存操作对应的访存模型实例,以对所述访存操作进行响应,包括:在仿真器中,生成与所述功能代码对应的第一线程、以及与所述访存模型实例对应的第二线程;利用第一线程执行所述功能代码,并响应于任一条功能代码指示利用目标接口对存储器进行访存操作,利用所述第一线程向所述第二线程发送访存指令;响应于所述第二线程接收到所述第一线程发送的访存指令,利用第二线程基于所述目标接口对应的访存模型实例对所述访存指令进行响应。12.根据权利要求1-11任一项所述的方法,其特征在于,所述基于所述仿真结果、以及与所述待验证芯片对应的真实结果,得到所述待验证芯片的验证结果,包括:将所述待验证芯片对应的真实结果与所述仿真结果对比,得到对比结果;基于所述对比结果,生成所述待验证芯片的验证结果。13.根据权利要求1-12任一项所述的方法,其特征在于,所述获取待验证芯片的功能描述信息、以及访存模型之前,还包括:基于所述待验证芯片中的功能模块对外交互时所采用的通信协议、以及所述待验证芯片中的功能模块对外交互时的接口信息,构建所述访存模型。14.一种芯片的功能验证装置,其特征在于,包括:获取模块、仿真模块、以及处理模块;所述获取模块,用于获取待验证芯片的功能描述信息、以及访存模型;其中,所述访存模型通过预设编程语言构成,用于模拟与所述待验证芯片连接的接口的行为、并模拟所述接口对存储器的访存操作;所述仿真模块,用于基于所述功能描述信息、以及所述访存模型,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果
所述处理模块,用于基于所述仿真结果、以及与所述待验证芯片对应的真实结果,得到所述待验证芯片的验证结果。15.一种电子设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述处理器执行如权利要求1至13任一项所述的芯片功能的验证方法的步骤。16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被电子设备运行时,所述电子设备执行如权利要求1至13任一项所述的芯片功能的验证方法的步骤。

技术总结
本公开提供了一种芯片功能的验证方法、装置、电子设备及存储介质,其中,该方法包括:获取待验证芯片的功能描述信息、以及访存模型;其中,所述访存模型通过预设编程语言生成,用于模拟提供与所述待验证芯片连接的接口、并模拟通过所述接口对存储器的访存操作;基于所述功能描述信息、以及所述访存模型,对所述待验证芯片进行仿真,得到所述待验证芯片的仿真结果;基于所述仿真结果、以及与所述待验证芯片对应的真实结果,得到所述待验证芯片的验证结果。果。果。


技术研发人员:连络 侯化成 徐宁仪
受保护的技术使用者:上海阵量智能科技有限公司
技术研发日:2022.03.29
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-6298.html

最新回复(0)