一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

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

2022-03-19 20:54:45 来源:中国专利 TAG:


1.本发明涉及电子设计自动化领域,尤其涉及一种芯片性能验证方法及装置、电子设备、存储介质。


背景技术:

2.在集成电路技术领域,芯片在交付代工厂制造之前,通常要经过一系列的功能验证和性能验证,以保证制造出的芯片能够满足设计要求。其中,功能验证主要指在芯片制造之前,通过软件仿真或者硬件模拟,找出设计中的功能性漏洞和缺陷。而性能验证或性能评估则主要指在芯片制造之前,通过软件仿真或者硬件模拟,评估芯片性能是否达到预期。
3.在集成电路验证领域,功能验证已经有了一套非常成熟和通用的方法学,如uvm(universal verification methodology,通用验证方法学)已经在功能验证中广泛使用。而在性能验证或性能评估方面,尚无行业一致的标准或方法学。
4.目前业界普遍使用的性能验证方法,一般是通过分析波形评估性能是否达到预期。其大致流程为:通过软件仿真或者硬件模拟的方式,运行一些业务量大的测试用例,生成的波形交给设计工程师或者架构工程师进行分析。设计工程师或架构工程师需要在波形查看器中打开波形,并将那些与性能有关的信号拉到波形显示窗口,然后对信号做一些逻辑运算,比如将valid(有效)信号与clock(时钟)信号进行逻辑与,然后选取一段时间,统计这段时间信号的上升沿或者下降沿个数,从而达到计算性能的目的。但由于步骤繁琐,这种方式的性能分析效率较低。如果需要计算多个模块的多个性能指标,这个过程可能会持续几个小时。而如果要分析多种应用场景下的性能指标,所需的时间还会成倍的增加。
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.图1为本发明的实施例提供的芯片性能验证方法的一种流程图;
36.图2为本发明的实施例提供的芯片性能验证方法中统计管理平台的组织结构的一种示意图;
37.图3为本发明的实施例中实现芯片性能验证方法的一种程序架构示意图;
38.图4为本发明的实施例中输出统计结果的一种流程图;
39.图5为本发明的实施例中进行包速统计的一种流程图;
40.图6为本发明的实施例中进行数值统计的一种流程图;
41.图7为本发明的实施例提供的芯片性能验证装置的一种结构示意图;
42.图8为本发明的实施例提供的电子设备的一种结构示意图。
具体实施方式
43.下面结合附图对本发明实施例进行详细描述。
44.应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
45.为使本领域技术人员更好地理解本发明的实施例的技术构思、实施方案和有益技术效果,以下通过具体实施例进行详细说明。
46.第一方面,本发明的实施例提供一种芯片性能验证方法,能够有效提高芯片性能验证效率。
47.如图1所示,本发明的实施例提供的芯片性能验证方法,该方法可以包括:
48.s11、通过性能统计管理平台,从待验证芯片的预设模型环境接收模型状态信息;其中,所述性能统计管理平台与所述预设模型环境之间通过预设接口通信,所述预设模型环境包括以下至少一种:功能验证环境、硬件模拟环境、性能模型环境;
49.其中,性能统计管理平台主要可用于对芯片的性能验证操作进行管理,并对性能数据进行统计,这些性能数据例如可以为传输或处理延迟、吞吐率、缓存或fifo(first in first out,先入先出)占用深度、反压率、信号翻转率等。性能统计管理平台可以通过编程语言建立,例如,可以将性能统计管理的相关操作封装成一个类,再将该类实例化为对象,得到对应的性能统计管理平台。
50.由于芯片的性能是在一定的运行环境中通过芯片的运行动态表现体现出来的,因此,性能统计管理平台在进行性能统计时,也可以基于待验证芯片在运行环境中的运行。本发明的实施例中,进行性能验证时,待验证芯片的运行环境可以称为预设模型环境。可选的,预设模型环境既可以是为验证芯片性能而专门设计的,也可以是在对芯片进行功能性验证或其他方面的验证时而设计的,只要芯片在该预设模型环境中运行时能够体现出芯片的至少一部分性能即可。例如,在本发明的一个实施例中,预设模型环境可以包括功能验证环境、硬件模拟环境、性能模型环境中的一种或多种。
51.性能统计管理平台可以通过预设接口与预设模型环境通信,例如,可以通过该预设接口从预设模型环境中接收模型状态信息。其中,模型状态信息可以指在预设模型环境中运行的模型所处的状态,例如,开始运行、暂停运行、结束运行、运行中等。
52.为了使性能验证能够更广泛、更高效的应用,同时也为了对芯片的性能验证更加准确,本发明的实施例中,性能统计管理平台所基于的编程语言与预设模型环境所基于的编程语言彼此兼容,从而打通不同环境的壁垒,例如,在本发明的一个实施例中,性能统计管理平台和预设模型环境都可以基于硬件验证语言systemverilog建立。
53.s12、触发所述性能统计管理平台根据所述模型状态信息生成验证控制信号;
54.性能统计管理平台从预设模型环境接收到模型状态信息后,本步骤中,可以触发
性能统计管理平台,根据所述预设模型状态信息生成验证控制信号,该验证控制信号可以用于控制性能统计操作。待验证芯片的性能是待验证芯片在预设模型环境中运行时体现出来的,因此,待验证芯片在预设模型环境中的运行状态将直接影响性能统计操作。例如,在进行性能统计时,可以根据预设模型环境中待验证芯片的运行而开始统计,根据待验证芯片的停止运行而结束统计。
55.s13、在所述验证控制信号的控制下,通过预设的性能统计组件,从所述预设模型环境接收所述待验证芯片的模型运行数据,并对所述模型运行数据进行性能统计,得到对应的性能统计结果,其中,所述性能统计管理平台所基于的编程语言与所述预设模型环境所基于的编程语言以及所述性能统计组件所基于的编程语言彼此兼容。
56.性能统计管理平台生成验证控制信号后,预设的性能统计组件可以在该验证控制信号的控制下,从所述预设模型环境中接收待验证芯片的模型运行数据,并对该模型运行数据进行性能统计。与性能统计管理平台类似,性能统计组件可以通过编程语言实现,例如,可以将性能统计操作的相关操作封装成对应的统计类,再将该统计类实例化为统计类对象,该统计类对象即为对应的性能统计组件。可选的,在本发明的一个实施例中,也可以将一些基本的统计操作封装成一个统计基类,不同的统计类分别可以由该统计基类派生得到。
57.本发明的实施例中,性能统计是指对待验证芯片在预设模型环境中运行的过程中的表现进行数学统计。可选的,在进行性能统计时,性能统计组件可以接收预设模型环境传输来的各模型运行参数,并对模型运行参数进行分析后,选择其中一部分数据进行记录,例如可以选择其中最能代表该芯片性能的数据进行记录,从而在准确体现该芯片性能的同时,也能大大减少数据存储负担,进一步提高芯片的性能统计效率。
58.可选的,根据所统计的具体性能的不同,性能统计组件也可以对应不同,每个性能统计管理平台可以对应管理一个或多个性能统计组件,例如,在本发明的一个实施例中,性能统计管理平台可以对应管理一个或多个统计传输延迟的性能统计组件,一个或多个统计吞吐率的性能统计组件等。
59.为了使性能验证能够更广泛、更高效的应用,同时也为了对芯片的性能验证更加准确,本发明的实施例中,性能统计组件所基于的编程语言与性能统计管理平台所基于的编程语言及预设模型环境所基于的编程语言也彼此兼容,例如,三者均可以基于硬件验证语言systemverilog建立。
60.本发明的实施例提供的芯片性能验证方法,能够通过性能统计管理平台,从待验证芯片的预设模型环境接收模型状态信息,触发所述性能统计管理平台根据所述模型状态信息生成验证控制信号,在所述验证控制信号的控制下,通过预设的性能统计组件,从所述预设模型环境接收所述待验证芯片的模型运行数据,并对所述模型运行数据进行性能统计,得到对应的性能统计结果。这样,由于性能统计管理平台所基于的编程语言与预设模型环境所基于的编程语言以及性能统计组件所基于的编程语言彼此兼容,因此,待验证芯片的性能统计操作能够很方便地与待验证芯片的功能验证环境、硬件模拟环境、性能模型环境等预设模型环境集成,很方便地借助于上述预设模型环境或在进行功能验证或其他模拟、验证等操作的同时,获得待验证芯片的性能信息并完成性能验证,无需生成波形,更无需人工进行统计比对,从而有效了提高芯片验证效率。
61.进一步地,在预设模型环境包括功能验证环境或硬件模拟环境的情况下,由于功能验证、硬件模拟等均是在芯片验证领域本广泛采用的非常接近芯片真实情况的验证,因此,据此得到的性能统计结果也会具有良好的准确性,大大优于利用其他商业工具或高级建模语言(例如systemc)等进行的性能分析,因此,能够在有效提高芯片验证的效率的同时,大大提高性能验证的准确性。
62.具体而言,步骤s11中通过性能统计管理平台,从待验证芯片的预设模型环境接收模型状态信息之后,在步骤s12中可以触发性能统计管理平台,根据接收到的模型状态信息生成验证控制信号。可选的,根据模型状态信息的不同,生成的验证控制信号也相应不同,例如,在本发明的一个实施例中,可以根据所述模型状态信息中的开始运行信号,触发所述性能统计管理平台生成开始统计信号;或者,也可以根据所述模型状态信息中的停止运行信号,触发所述性能统计管理平台生成停止统计信号。
63.举例而言,当预设模型环境中的待验证芯片处于运行状态时,性能统计管理平台接收到“正在运行”的模型状态信息,并根据该“正在运行”的模型状态信息生成“执行统计操作”的验证控制信号;当预设模型环境中的待验证芯片处于停止状态时,性能统计管理平台接收到“停止运行”的模型状态信息,并根据该“停止运行”的模型状态信息生成“停止统计操作”的验证控制信号。
64.性能统计管理平台生成验证控制信号后,即可在步骤s13中在所述验证控制信号的控制下,通过预设的性能统计组件,从所述预设模型环境接收所述待验证芯片的模型运行数据,并对所述模型运行数据进行性能统计。
65.具体而言,为了便于对待验证芯片中不同的电路模块进行性能验证,在本发明的一个实施例中,可以将性能统计管理平台进行分层管理,每个相对独立的电路模块可以对应一个下级子平台,通过对该下级子平台的控制可以控制对该电路模块的性能统计操作。示例性的,如图2所示,在本发明的一个实施例中,在性能管理平台下可以设置一级或多级下级子平台。各下级子平台与性能统计管理平台可以基于同一个类,并通过对该类分别进行不同的实例化得到,因此各下级子平台和性能统计管理平台对应的变量和/或成员函数可以相同。可选的,各性能统计组件可以直接处于性能统计管理平台的管理下,或者也可以处于性能统计管理平台的下级子平台的管理下。性能统计管理平台可以对其直接的下级子平台和/或性能统计组件进行调用,类似的,每一级子平台也可以对其直接的下级子平台和/或性能统计组件进行调用,从而实现层级逻辑。
66.基于此,步骤s12中在所述验证控制信号的控制下,通过预设的性能统计组件,从所述预设模型环境接收所述待验证芯片的模型运行数据,并对所述模型运行数据进行性能统计具体可以包括:
67.所述性能统计管理平台,将所述验证控制信号下发到各所述性能统计组件;
68.各所述性能统计组件,根据所述验证控制信号,分别接收各自对应的所述模型运行数据;
69.各所述性能统计组件,根据各自的统计属性,分别对所述模型运行数据进行性能统计。
70.具体而言,为了对各性能统计组件进行更好的控制,在本发明的一个实施例中,性能统计管理平台及其下属的子平台可以通过指针队列的方式分别管理其各自的下级子平
台和性能统计组件。例如,性能统计管理平台中可以预先设置一个组件指针索引和一个子平台指针索引,将需要验证的组件的指针添加在该组件指针索引中,将需要验证的子平台的指针添加在该子平台索引中。当需要向性能统计组件和/或下级子平台发送验证控制信号时,可以通过组件指针索引以及子平台指针索引,将验证控制信号发送到对应的性能统计组件中。类似的,每个下级子平台中也可以设置自己的组件指针索引和子平台指针索引,并进行类似管理操作,从而形成层级状地管理结构。可选的,这里的指针索引可以有多种形式,只要能够根据该指针索引获取到对应的指针即可。例如,指针索引可以包括:指针队列、指针数组、指针集合、指针链表等等。
71.为了将上述各种指针添加到对应的指针索引中,可选的,在所述验证控制信号的控制下,通过预设的性能统计组件,从所述预设模型环境接收所述待验证芯片的模型运行数据之前,本发明的实施例提供的芯片性能验证方法还可以包括:按照预设的组件隶属关系,将所述性能统计组件的指针添加到所述性能统计管理平台预设的组件指针索引中,或者添加到所述性能统计管理平台的下级子平台预设的组件指针索引中;和/或按照预设的平台隶属关系,将各所述下级子平台的指针添加到对应的上一级子平台预设的子平台指针索引中,或者添加到所述性能统计管理平台预设的子平台指针索引中,从而使性能统计管理形成层级状组织结构。
72.通过这种层级状的组织结构,性能管理统计平台可以根据需要,方便地选择待验证芯片的一部分电路模块进行验证,或对各电路模块分别验证或统一验证,从而有效提高了芯片性能验证的灵活性。
73.基于上述性能统计管理平台的组织结构,可选的,在本发明的一个实施例中,性能统计管理平台将所述验证控制信号下发到各所述性能统计组件具体可以包括:
74.若所述性能统计组件直接处于所述性能统计管理平台的管理下,则所述性能管理平台从所述性能管理平台预设的组件指针索引中获取所述性能统计组件的指针,根据所述性能统计组件的指针,将所述验证控制信号分别下发到所述性能统计组件;
75.若所述性能统计组件处于所述性能统计管理平台的下级子平台的管理下,则所述性能管理平台从所述性能管理平台预设的子平台指针索引中获取所述性能统计组件所在的第一子平台的指针;根据所述第一子平台的指针得到所述第一子平台,并从所述第一子平台预设的组件指针索引中获取所述性能统计组件的指针,根据所述性能统计组件的指针,将所述验证控制信号分别下发到所述性能统计组件。
76.举例而言,如图2所示,当统计管理平台a1需要将验证控制信号发送到统计组件b1时,统计管理平台a1可以直接从统计管理平台a1下的组件指针索引中获取统计组件b1的指针,并根据该指针将所述验证控制信号下发到性能统计组件b1。当统计管理平台a1需要将验证控制信号发送到统计组件b2时,统计管理平台a1可以从统计管理平台a1下的子平台指针索引中获取子平台a2的指针,并根据该指针得到子平台a2,子平台a2可以进一步从统计管理平台a2下的组件指针索引中获取统计组件b2的指针,并根据该指针将所述验证控制信号下发到性能统计组件b2。
77.性能统计管理平台将所述验证控制信号下发到各所述性能统计组件之后,各所述性能统计组件就可以根据所述验证控制信号,分别接收各自对应的所述模型运行数据,并根据各自的统计属性分别对所述模型运行数据进行性能统计。
78.具体而言,所述各所述性能统计组件,根据所述验证控制信号,分别接收各自对应的所述模型运行数据可以包括:各所述性能统计组件,根据所述验证控制信号确定各自统计任务的开启或结束;响应于所述统计任务开启,各所述性能统计组件,分别接收各自对应的所述模型运行数据;响应于所述统计任务结束,各所述性能统计组件,分别停止接收各自对应的所述模型运行数据。这里,模型运行数据可以指待验证芯片在功能验证环境、硬件模拟环境等预设的模型环境中运行时产生的各项数据,例如传输或处理延迟、缓存或fifo(先入先出)的占用深度、传输或处理包的个数以及每个包的长度等。
79.可以理解的是,待验证芯片在预设模型环境中运行时,需要统计的性能可能是多方面的,例如既要统计传输延迟,也要统计吞吐率,则对于每个需要统计的性能可以通过一个对应的性能统计组件实现,各性能统计组件可以并行工作。例如,各性能统计组件可以基于接收到的验证控制信号,同时开始接收模型运行数据或同时停止接收模型运行数据,以使各方面的性能统计相统一。
80.进一步地,接收了模型运行数据之后,各所述性能统计组件,可以根据各自的统计属性,分别对所述模型运行数据进行性能统计。性能统计的具体方法可以根据每个性能统计组件的统计属性来确定。其中,统计属性是用于描述每个性能统计组件的统计特点的参数,例如,该性能统计组件是进行连续统计还是间断统计,需要统计哪些数据,采用何种策略筛选出这些数据等等。
81.为了能够有效获知待验证芯片运行中的各个阶段的性能以便更有针对性地对芯片设计进行改进,同时也为了不过分地增加数据存储量以便提高性能验证效率,在本发明的一个实施例中,除了对待验证芯片的总体性能进行验证之外,还可以对性能统计组件执行的统计任务划分多个统计窗口,以每个统计窗口为单位记录各统计窗口对应的统计量。其中,在一定范围内,统计窗口越小,对应的时间越短,得到的窗口统计量越精确,同时数据存储量也越大,统计窗口越大,对应的时间越长,得到的窗口统计量越粗略,同时数据存储量也越小。可选的,可以根据需要灵活设置或调整不同性能统计组件对应的统计窗口。不同性能统计组件对应的统计窗口可以相等,也可以不等。
82.除了统计窗口之外,各性能统计组件的统计类别也不尽相同,对应的统计策略也不同。基于此,在本发明的一个实施例中,各所述性能统计组件,根据各自的统计属性,分别对所述模型运行数据进行性能统计具体可以包括:
83.各所述性能统计组件,根据各自的统计属性,分别确定所述统计任务的生命周期中的各统计窗口以及所述统计任务的统计类别,其中,各所述统计窗口按照时间先后顺序首尾相接,组成所述统计任务的所述生命周期;
84.各所述性能统计组件,分别根据所述验证控制信号、所述统计窗口和所述统计类别,记录所述模型运行数据的阶段统计量和总体统计量,其中,所述阶段统计量的统计时间为一个所述统计窗口,所述总体统计量的统计时间为从所述统计任务开始运行至当前时刻;
85.各所述性能统计组件,根据所述阶段统计量确定所述待验证芯片的各统计窗口的阶段性能,并根据所述总体统计量确定所述待验证芯片的总体性能。
86.举例而言,在本发明的一个实施例中,性能统计组件的统计类别包括包速统计,阶段统计量包括阶段数据包个数;所述总体统计量包括总体数据包个数;则基于此,根据所述
阶段统计量确定各统计窗口的阶段性能,并根据所述总体统计量确定所述总体性能可以包括:根据所述阶段数据包个数以及所述阶段统计量的统计时间,确定阶段平均包速,并根据所述总体数据包个数以及所述总体统计量的统计时间,确定总体平均包速。例如,统计窗口为10纳秒,当前已经运行了3个统计窗口的时间,其中,统计窗口w1、w2、w3处理的数据包个数分别为12、18、27,则阶段平均包速分别为1.2个/纳秒,1.8个/纳秒,2.7个/纳秒。总体数据包个数为12 18 27=57(个),总体统计时间为10 10 10=30(纳秒),则总体平均包速为57/30=1.9(个/纳秒)。
87.可选的,在本发明的另一个实施例中,性能统计组件的统计类别包括吞吐率统计,阶段统计量包括阶段吞吐量,总体统计量包括总体吞吐量;则,基于此,根据所述阶段统计量确定各统计窗口的阶段性能,并根据所述总体统计量确定所述总体性能具体可以包括:根据所述阶段吞吐量以及所述阶段统计量的统计时间,确定阶段平均吞吐率,并根据所述总体吞吐量以及所述总体统计量的统计时间,确定总体平均吞吐率。
88.例如,统计窗口为10纳秒,当前已经运行了3个统计窗口的时间,其中,统计窗口w1、w2、w3处理的数据量分别为512比特、1024比特、2048比特,则阶段吞吐率分别为51.2比特/纳秒,102.4比特/纳秒,204.8比特/纳秒。总体数据量为512 1024 2048=(3584比特),总体统计时间为10 10 10=30(纳秒),则总体平均包速为3584/30=119.5(比特/纳秒)。
89.可选的,在本发明的另一个实施例中,性能统计组件的统计类别包括数值统计,阶段统计量包括阶段累加值,总体统计量包括总体累加值;则基于此,根据所述阶段统计量确定各统计窗口的阶段性能,并根据所述总体统计量确定所述总体性能可以包括:根据所述阶段累加值以及所述阶段统计量的统计时间,确定阶段平均值,并根据所述总体累加值以及所述总体统计量的统计时间,确定总体平均值。
90.例如,统计窗口为10纳秒,当前已经运行了3个统计窗口的时间,其中,统计窗口w1接收了4个数据,这4个数据彼此相加得到的阶段累加值为3.5,统计窗口w2接收了6个数据,这6个数据彼此相加得到的阶段累加值为7.2,统计窗口w3接收了8个数据,这8个数据彼此相加得到的阶段累加值为8.6,总体累加值为3.5 7.2 8.6=19.3。
91.可选的,在数值统计中,除了阶段累加值和总体累加值之外,还可以统计其他特征数值,例如,阶段统计量还可以包括阶段最大值、阶段最小值,总体统计量还可以包括总体最大值、总体最小值等。
92.上述阶段统计量和总体统计量都是待验证芯片对应的性能统计结果,在得到对应的性能统计结果之后,本发明的实施例提供的芯片的性能验证方法还可以包括:将所述性能统计结果写入日志文件;解析所述日志文件并将解析结果写入预设文件,所述预设文件包括:逗号分隔文件和/或数据表格文件;利用所述预设文件中的解析结果,生成所述待验证芯片的性能图表和/或曲线。
93.由于上述性能验证的过程可以通过编程语言实现,那么得到的性能统计结果也同样可以通过编程语言输出到对应的文件中。为了使统计结果具有良好的可读性,在本发明的一个实施例中,可以将性能统计结果写入日志文件。可选的,日志文件具体可以为文本类型的文件。
94.进一步地,为了更直观、形象地展示待验证芯片地性能,在本发明的一个实施例中,将性能统计结果写入日志文件之后,还可以通过脚本语言解析该日志文件得到性能解
析结果,并将该性能解析结果写入逗号分隔文件和/或数据表格文件,然后利用逗号分隔文件和/或数据表格文件中的解析结果,方便地生成待验证芯片的性能图表和/或曲线,从而有效地提升了芯片性能的可视化程度。
95.下面通过具体实施例对本发明地实施例提供的芯片性能验证方法进行详细说明。
96.本发明的实施例提供的芯片的性能验证方法,可以基于硬件验证语言编写,可以非常方便地集成在基于硬件验证语言的功能验证环境或者性能模型中。如图3所示,该方法在总体上由性能统计管理平台(stat_manage),统计基类(stat_base),包速统计类(tps_stat),吞吐率统计类(bps_stat),数值统计类(num_stat),日志解析脚本工具等几部分实现。其中,前面5个部分可以基于硬件验证语言实现,最后一个部分可以基于脚本语言实现。
97.性能统计管理平台可以用于管理所有的统计类对象(统计类对象即前文的性能统计组件)。统计类对象由对应的统计类实例化而来。各个统计类由统计基类继承而来。统计基类是各个统计类的父类,统计基类中声明和实现了一些公共的方法。下面对图3中的各个部分分别进行说明。
98.(一)性能统计管理平台
99.性能统计管理平台可以管理各个性能统计组件,是性能验证的最顶层结构。统计管理平台内部可以设置有一个存放性能统计组件指针的指针队列:
100.stat_base m_child_stat[$];
[0101]
性能统计管理平台中还设置有一个向该指针队列添加统计组件指针的函数:
[0102]
function void add_child_stat(stat_base child)。
[0103]
工程师可以在预设模型环境中(例如验证环境或者性能模型中)实例化各种统计类,得到对应的统计类对象并实例化一个统计管理平台。该统计类对象也即为前文的性能统计组件。进一步可以通过调用add_child_stat的方式将统计类对象的添加到统计管理平台中,方便统计管理平台进行统一管理。
[0104]
进一步地,性能统计管理平台内部还可以设置一个存放统计管理平台的下级子平台的指针的队列:
[0105]
stat_manage m_child_manage[$];
[0106]
可选的,各下级子平台与统计管理平台可以以同一个统计类为父类,因此,各下级子平台与性能统计管理平台的成员函数可以相同,而且各下级子平台中也可以设置性能统计组件和更下一级的子平台。
[0107]
性能统计管理平台中可以设置一个向该队列添加下级子平台的函数:
[0108]
function void add_child_manage(stat_manage child);
[0109]
工程师可以在预设模型环境中(例如验证环境或者性能模型中)实例化统计管理平台及其下级子平台,并通过调用add_child_manage函数进行树状结构的层次化管理。示例性的,性能统计管理平台的层次化结构可以如图2所示。
[0110]
为了将性能统计结果输出,性能统计管理平台中还可以提供打印统计结果的函数print_result。该函数可以带有一个integer(“0”“1”“x”“z”4态整数)类型的参数file_handle(文件句柄),参数的默认值为0。如图4所示,在该函数中,若传入的参数file_handle=0,则可以以“打开”的方式创建日志文件并获取文件句柄,否则,若传入的参数file_handle≠0,则可以直接将传入的参数作为写日志的文件句柄。然后,该打印统计结果的函
数print_result可以遍历统计管理平台及其各下级子平台所有的统计窗口,针对每一个统计窗口,如果该统计窗口所属的当前平台为最顶层的统计管理平台,则可以打印统计窗口的起始时间,并通过递归的方式调用各子管理平台的print_result函数,最后在统计管理平台及其各下级子平台下的各统计类对象(即性能统计组件)中,打印出各统计类对象当前统计窗口的统计结果。
[0111]
示例性的,打印统计结果的函数print_result可以实现如下:
[0112][0113][0114]
进一步地,为了控制性能统计操作的开始和结束,在该性能统计管理平台中,还定义了启动统计的函数start_stat和停止统计的函数stop_stat,用户可通过调用该函数来启动统计或结束统计。在该两个函数中,都会遍历各下级子平台和各统计类对象,分别调用各下级子平台和各统计类对象中的启动统计函数或停止统计函数,以便实现各各下级子平台和各统计类对象同时开始性能统计或同时停止性能统计。
[0115]
示例性的,启动统计的函数start_stat可以实现如下:
[0116][0117]
类似地,可以得到停止统计的函数stop_stat。
[0118]
(二)统计基类
[0119]
统计基类(stat_base)是各个统计类的父类,它声明和实现了一些公共的方法。所有的统计类都继承于该统计基类。
[0120]
在该统计基类中,实现了一个统计函数stat,用户通过调用该统计函数来统计数据。在该统计函数中,首先确定统计是否已经启动,如果处于已经启动的状态,则将传入的待统计数据存入统计数据信箱(m_stat_data_box)中。其中,统计数据信箱相当于一段缓存。
[0121]
示例性的,统计函数stat可以实现如下:
[0122][0123][0124]
其中,value为传入的待统计数据,其数据类型为bit,位宽为perf_stat_data_width。
[0125]
该统计基类中,还声明了一个纯虚函数phase_result2string,该函数用于返回某个统计窗口的统计结果,通过函数参数传入统计窗口的起始时间。
[0126]
pure virtual function void phase_result2string(bit[63:0]phase_time);
[0127]
该统计基类中,还声明了一个纯虚统计任务do_stat,该任务负责统计数据并记录结果。
[0128]
该统计基类中,还定义了一个启动统计的函数start_stat和一个停止统计函数stop_stat,该两个函数可以被统计管理平台中的启动统计的函数start_stat、停止统计函数stop_stat分别调用,以致统计管理平台能够统一启动或停止所有统计对象的统计任务。需要说明的是,统计基类是各统计类的父类,各统计类中都设置有启动统计的函数start_stat和停止统计函数stop_stat,即,这里的启动统计的函数start_stat和停止统计函数stop_stat是各统计类的成员函数,在调用成员函数时需要在前面加上对应统计类对象的
名称,因此,不会与统计管理平台中的启动统计的函数start_stat和停止统计函数stop_stat相混淆。
[0129]
在统计基类的启动统计函数(start_stat)中,首先可以置起一个统计已经启动的标志,然后记录开始统计的时间,启动do_stat任务。
[0130]
示例性的,统计基类的启动统计函数(start_stat)可以实现如下:
[0131][0132][0133]
在停止统计函数(stop_stat)中,记录统计停止的时间,并置起统计已经停止的标志。示例性的,统计基类的停止统计函数(stop_stat)可以实现如下:
[0134][0135]
基于统计基类,可以派生出多种具体地统计类,以下分别举例说明。
[0136]
(三)包速统计类
[0137]
包速统计类(tps_stat),继承自上述统计基类,可以用于统计芯片内各节点的包速,即统计每秒传输或处理了多少个包。
[0138]
在该包速统计类中,实现了在统计基类中声明的纯虚统计任务do_stat。如图5所示,当启动该任务后,立刻进入一个while(1)循环。在循环体中,先延时一个时间单位,然后判断当前是否已经调用过停止统计函数,如果已经停止统计,则跳出循环体并结束该任务。如果统计没有停止,就尝试从统计数据信箱(m_stat_data_box)中获取数据,如果成功获取数据,则将统计数据进行累加。在该统计类中,会记录两个累加值,一个是阶段累加值,一个
是总累加值,分别用于计算阶段包速(即统计窗口的包速)和总包速。循环体中的下一步是判断当前统计窗口是否结束,如果统计窗口结束则进行统计结果的计算和记录。统计结果以关联数组(哈希)的形式存储,索引为统计窗口的起始时间。计算完一次阶段包速后,将阶段累加值清零。
[0139]
阶段包速的计算公式为:
[0140]
阶段包速=阶段累加值/统计窗口时间
[0141]
总包速的计算公式为:
[0142]
总包速=总累加值/(当前时间

统计起始时间)
[0143]
进一步地,在该包速统计类中,还实现了统计基类中声明的纯虚函数phase_result2string,该函数用于向统计管理平台返回窗口统计数据。该函数传入的参数为统计窗口的起始时间。在该函数中,先判断统计结果关联数组中是否存在该起始时间的统计结果。如果存在该笔统计结果,则将统计结果从关联数组中读取出来,再将速率单位和文字说明一起拼凑成字符串返回。如果不存在该笔统计结果则返回空字符串。
[0144]
(四)吞吐率统计类
[0145]
吞吐率统计类(bps_stat),也继承自上述统计基类,与包速统计类一样都是属于速率类统计,其统计函数和统计任务同包速统计类可以一模一样。其与包速统计类的唯一区别就是phase_result2string中拼凑字符串时使用的速率单位不同,例如吞吐率统计类对应的速率单位为比特/纳秒,而包速统计类对应的速率单位为个/纳秒。
[0146]
(五)数值统计类
[0147]
数值统计类(num_stat)也继承自上述统计基类,可以统计某个性能指标在统计窗口内的最大值,最小值以及平均值。其统计目标可以是任何数值指标,例如延时,反压率,缓存或fifo(先入先出)占用深度,信号翻转率等等。
[0148]
与包速统计类类似,数值统计类也实现了自己的统计任务do_stat。如图6所示,该统计任务内部是一个while(1)循环。在循环体中,先延时一个时间单位,然后判断当前是否已经调用过停止统计函数,如果已经停止统计,则跳出循环体并结束该任务。如果统计没有停止,就尝试从统计数据信箱(m_stat_data_box)中获取数据。如果数据获取成功,则对数据的最大值,最小值以及累加值进行记录,同时记录数据个数用于计算平均值。当一个统计窗口结束后,通过累加值除以数据个数的方式计算阶段平均值和总体平均值,然后将统计结果记录到关联数组(哈希)中,索引为统计窗口的起始时间。记录完一次数据后,需要对阶段最大值,最小值以及平均值进行重置。
[0149]
(六)统计日志格式及解析脚本
[0150]
统计日志中,可以打印各统计窗口打印统计起始时间,统计时间的左边和右边可以加以特殊的符号,如“#”,“ ”等,特殊符号既为了解析方便提取时间,也为了日志整洁美观。在统计时间行下面则开始打印各个统计对象的名称和统计结果。统计对象的名称可以独占一行,且左右加上特殊符号
“‑‑”
以方便脚本解析和美观。统计结果阶段值和总体值在同一行,以“|”隔开。
[0151]
示例性的,统计日志的部分内容可以为:
[0152]
############################100ns#########################
[0153]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
input_downstream_req_tps(mt/s)
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0154]
phase|total:1030.00mt/s|188.7mt/s
[0155]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
input_downstream_data_bps(gb/s)
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0156]
phase|total:263.00gb/s|61.00gb/s
[0157]
为了将统计结果向用户展示,可以通过日志解析脚本读取统计日志,将统计结果解析提取出来写入到逗号分隔(csv,comma-separated values)文件或者数据表格文件中。解析脚本读取日志文件的每一行,针对每行都使用三个正则表达式进行匹配。三个正则表达式分别匹配统计时间行,统计对象名称行和统计数据行。上述三个正则表达式中的任一个匹配成功后,都将需要的字符串,如统计起始时间,统计对象名称,统计数据等记录下来。在匹配上数据行后,可以将一行数据记录到dataframe中,同时将dataframe记录数据的行号加1。这里,dataframe是python中pandas库中的一种数据结构,它类似excel,是一种二维表,可以用于存放数值、字符串等。在解析完日志的所有行后,可以将dataframe中的数据写入逗号分隔文件或者数据表格文件中。进一步地,还可以利用写入逗号分隔文件或者数据表格文件的数据生成图表和/或曲线,以使性能统计结果更直观地展示。
[0158]
(七)性能验证方法在硅前性能分析中的应用
[0159]
本发明地实施例提供的芯片性能验证方法基于硬件验证语言systemverilog,因此可应用在任何使用systemverilog搭建的仿真平台中。典型地,可应用在eda功能验证平台和使用systemverilog搭建性能模型中。
[0160]
具体而言,在eda功能验证平台中,可在监视器(monitor)中对统计类实例化,得到统计类对象(即性能统计组件)。其中,监视器为eda功能验证平台中的一个组件,也可以由对应的监视器类实例化而来。在监视器(monitor)采集到输入/输出的数据包后,可调用对应的性能统计组件的stat函数进行性能统计。例如,需要统计包速时,可以在收到一个包后调用tps_stat的stat函数,传入参数为1。如果需要统计吞吐量,可以在收到数据包后调用bps_stat的stat函数,传入的参数为数据包的比特数。
[0161]
可选的,可以在同一位置对统计管理平台和监视器(monitor)进行实例化,例如,可以在agent(代理),uvc(universal verification component,通用验证组件)或者env(环境)中对统计管理平台和监视器(monitor)进行实例化。
[0162]
实例化监视器(monitor)和统计管理平台后,可调用统计管理平台的add_child_stat函数将监视器(monitor)中的统计对象添加到管理平台中。在所有的流量都处理完毕后,uvm环境可以在post_main phase中,调用统计管理平台的print_result函数对性能统计结果进行打印。
[0163]
在模块级、子系统级,系统级eda功能验证平台中引入本发明的实施例提供的性能验证方法后,可以通过运行相应的性能测试用例对包速,吞吐率,反压率,fifo/buffer占用深度,延时等各项性能数据进行分析。在数据分析时,可以将脚本解析出来的数据表格绘制成曲线,以致更方便和直观地观察指标随时间的波动情况。
[0164]
除了功能验证环境外,使用systemverilog和tlm(transaction level modeling,事务级建模)的方式搭建性能模型并使用性能统计装置对各项感兴趣的性能指标进行分析也是一种可行的方案。在性能模型中,可在tlm接收函数中调用统计类的stat函数。
[0165]
相应的,第二方面,本发明的实施例还提供了一种芯片性能验证装置,能够有效提
高芯片性能验证效率。
[0166]
如图7所示,本发明的实施例提供的芯片性能验证装置可以包括:
[0167]
接收单元31,用于通过性能统计管理平台,从待验证芯片的预设模型环境接收模型状态信息;其中,所述性能统计管理平台与所述预设模型环境之间通过预设接口通信,所述预设模型环境包括以下至少一种:功能验证环境、硬件模拟环境、性能模型环境;
[0168]
触发单元32,用于触发所述性能统计管理平台根据所述模型状态信息生成验证控制信号;
[0169]
统计单元33,用于在所述验证控制信号的控制下,通过预设的性能统计组件,从所述预设模型环境接收所述待验证芯片的模型运行数据,并对所述模型运行数据进行性能统计,得到对应的性能统计结果,其中,所述性能统计管理平台所基于的编程语言与所述预设模型环境所基于的编程语言以及所述性能统计组件所基于的编程语言彼此兼容。
[0170]
本发明的实施例提供的芯片性能验证装置,能够通过性能统计管理平台,从待验证芯片的预设模型环境接收模型状态信息,触发所述性能统计管理平台根据所述模型状态信息生成验证控制信号,在所述验证控制信号的控制下,通过预设的性能统计组件,从所述预设模型环境接收所述待验证芯片的模型运行数据,并对所述模型运行数据进行性能统计,得到对应的性能统计结果。这样,由于性能统计管理平台所基于的编程语言与预设模型环境所基于的编程语言以及性能统计组件所基于的编程语言彼此兼容,因此,待验证芯片的性能统计操作能够很方便地与待验证芯片的功能验证环境、硬件模拟环境、性能模型环境等预设模型环境集成,很方便地借助于上述预设模型环境或在进行功能验证或其他模拟、验证等操作的同时,获得待验证芯片的性能信息并完成性能验证,无需生成波形,更无需人工进行统计比对,从而有效了提高芯片验证效率。
[0171]
进一步地,在预设模型环境包括功能验证环境或硬件模拟环境的情况下,由于功能验证、硬件模拟等均是在芯片验证领域本广泛采用的非常接近芯片真实情况的验证,因此,据此得到的性能统计结果也会具有良好的准确性,大大优于利用其他商业工具或高级建模语言(例如systemc)等进行的性能分析,因此,能够在有效提高芯片验证的效率的同时,大大提高性能验证的准确性。
[0172]
可选的,触发单元32,具体可用于:
[0173]
根据所述模型状态信息中的开始运行信号,触发所述性能统计管理平台生成开始统计信号;
[0174]
或者
[0175]
根据所述模型状态信息中的停止运行信号,触发所述性能统计管理平台生成停止统计信号。
[0176]
可选的,本发明的实施例提供的芯片性能验证装置还可以包括:
[0177]
组件添加单元,用于在所述验证控制信号的控制下,通过预设的性能统计组件,从所述预设模型环境接收所述待验证芯片的模型运行数据之前,按照预设的组件隶属关系,将所述性能统计组件的指针添加到所述性能统计管理平台预设的组件指针索引中,或者添加到所述性能统计管理平台的下级子平台预设的组件指针索引中;
[0178]
和/或
[0179]
子平台添加单元,用于在所述验证控制信号的控制下,通过预设的性能统计组件,
从所述预设模型环境接收所述待验证芯片的模型运行数据之前,按照预设的平台隶属关系,将各所述下级子平台的指针添加到对应的上一级子平台预设的子平台指针索引中,或者添加到所述性能统计管理平台预设的子平台指针索引中。
[0180]
可选的,统计单元33可以包括:
[0181]
信号下发模块,用于所述性能统计管理平台,将所述验证控制信号下发到各所述性能统计组件,其中,所述性能统计组件直接处于所述性能统计管理平台的管理下,或者处于所述性能统计管理平台的下级子平台的管理下;
[0182]
数据接收模块,用于各所述性能统计组件,根据所述验证控制信号,分别接收各自对应的所述模型运行数据;
[0183]
数据统计模块,用于各所述性能统计组件,根据各自的统计属性,分别对所述模型运行数据进行性能统计。
[0184]
可选的,所述信号下发模块,具体可用于:
[0185]
若所述性能统计组件直接处于所述性能统计管理平台的管理下,则所述性能管理平台从所述性能管理平台预设的组件指针索引中获取所述性能统计组件的指针,根据所述性能统计组件的指针,将所述验证控制信号分别下发到所述性能统计组件;
[0186]
若所述性能统计组件处于所述性能统计管理平台的下级子平台的管理下,则所述性能管理平台从所述性能管理平台预设的子平台指针索引中获取所述性能统计组件所在的第一子平台的指针;根据所述第一子平台的指针得到所述第一子平台,并从所述第一子平台预设的组件指针索引中获取所述性能统计组件的指针,根据所述性能统计组件的指针,将所述验证控制信号分别下发到所述性能统计组件。
[0187]
可选的,所述数据接收模块可包括:
[0188]
第一确定子模块,用于各所述性能统计组件,根据所述验证控制信号确定各自统计任务的开启或结束;
[0189]
接收子模块,用于响应于所述统计任务开启,各所述性能统计组件,分别接收各自对应的所述模型运行数据;
[0190]
停止子模块,用于响应于所述统计任务结束,各所述性能统计组件,分别停止接收各自对应的所述模型运行数据。
[0191]
可选的,所述数据统计模块可包括:
[0192]
第二确定子模块,用于各所述性能统计组件,根据各自的统计属性,分别确定所述统计任务的生命周期中的各统计窗口以及所述统计任务的统计类别,其中,各所述统计窗口按照时间先后顺序首尾相接,组成所述统计任务的所述生命周期;
[0193]
记录子模块,用于各所述性能统计组件,分别根据所述验证控制信号、所述统计窗口和所述统计类别,记录所述模型运行数据的阶段统计量和总体统计量,其中,所述阶段统计量的统计时间为一个所述统计窗口,所述总体统计量的统计时间为从所述统计任务开始运行至当前时刻;
[0194]
第三确定子模块,用于各所述性能统计组件,根据所述阶段统计量确定所述待验证芯片的各统计窗口的阶段性能,并根据所述总体统计量确定所述待验证芯片的总体性能。
[0195]
可选的,所述统计类别包括:包速统计;所述阶段统计量包括:阶段数据包个数;所
述总体统计量包括:总体数据包个数;所述第三统计子模块,可具体用于:根据所述阶段数据包个数以及所述阶段统计量的统计时间,确定阶段平均包速,并根据所述总体数据包个数以及所述总体统计量的统计时间,确定总体平均包速。
[0196]
可选的,所述统计类别可包括:吞吐率统计;所述阶段统计量包括:阶段吞吐量;所述总体统计量包括:总体吞吐量;所述第三统计子模块,可具体用于:根据所述阶段吞吐量以及所述阶段统计量的统计时间,确定阶段平均吞吐率,并根据所述总体吞吐量以及所述总体统计量的统计时间,确定总体平均吞吐率。
[0197]
可选的,所述统计类别包括:数值统计;所述阶段统计量包括:阶段累加值;所述总体统计量包括:总体累加值;所述第三统计子模块,可具体用于:根据所述阶段累加值以及所述阶段统计量的统计时间,确定阶段平均值,并根据所述总体累加值以及所述总体统计量的统计时间,确定总体平均值。
[0198]
可选的,所述阶段统计量还可以包括:阶段最大值、阶段最小值,所述总体统计量还可以包括:总体最大值、总体最小值。
[0199]
可选的,本发明的实施例提供的芯片性能验证装置还可以包括:
[0200]
写入单元,用于得到对应的性能统计结果之后,将所述性能统计结果写入日志文件;
[0201]
解析单元,用于解析所述日志文件并将解析结果写入预设文件,所述预设文件包括:逗号分隔文件和/或数据表格文件;
[0202]
生成单元,用于利用所述预设文件中的解析结果,生成所述待验证芯片的性能图表和/或曲线。
[0203]
第三方面,如图8所示,本发明的实施例还提供一种电子设备,包括:壳体100、至少一个处理器110、存储器120、电路板130和电源电路140,其中,电路板130安置在壳体100围成的空间内部,处理器110和存储器120设置在电路板130上;电源电路140,用于为上述电子设备的各个电路或器件供电;存储器120用于存储可执行程序代码;处理器110通过读取存储器120中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述实施例提供的任一种的芯片性能验证方法。处理器110对上述步骤的具体执行过程以及处理器110通过运行可执行程序代码来进一步执行的步骤,可以参见前述实施例的描述,在此不再赘述。
[0204]
第四方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述实施例提供的任一种的芯片性能验证方法。处理器对上述步骤的具体执行过程以及处理器通过运行可执行程序代码来进一步执行的步骤,可以参见前述实施例的描述,在此不再赘述。
[0205]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在
包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0206]
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
[0207]
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0208]
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
[0209]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等。
[0210]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献