CN110750945B - 一种芯片的仿真方法、装置、仿真芯片以及相关产品 - Google Patents

一种芯片的仿真方法、装置、仿真芯片以及相关产品 Download PDF

Info

Publication number
CN110750945B
CN110750945B CN201911352037.XA CN201911352037A CN110750945B CN 110750945 B CN110750945 B CN 110750945B CN 201911352037 A CN201911352037 A CN 201911352037A CN 110750945 B CN110750945 B CN 110750945B
Authority
CN
China
Prior art keywords
chip
sub
network
tested
simulation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911352037.XA
Other languages
English (en)
Other versions
CN110750945A (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Anhui Cambricon Information Technology Co Ltd
Original Assignee
Anhui Cambricon Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Anhui Cambricon Information Technology Co Ltd filed Critical Anhui Cambricon Information Technology Co Ltd
Priority to CN201911352037.XA priority Critical patent/CN110750945B/zh
Publication of CN110750945A publication Critical patent/CN110750945A/zh
Application granted granted Critical
Publication of CN110750945B publication Critical patent/CN110750945B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本申请提供一种芯片的仿真方法、装置、仿真芯片及相关产品。所述芯片的仿真方法包括:获取待测芯片的仿真激励;根据所述仿真激励确定所述待测芯片对应的神经网络的输入数据;对所述待测芯片对应的神经网络执行正向运算,获得仿真结果;其中,所述待测芯片包括至少一个逻辑电路,所述待测芯片对应的神经网络包含至少一个子网络,至少一个所述子网络连接形成所述待测芯片对应的神经网络;每个所述子网络用于表示所述逻辑电路。根据本申请提供的技术方案,在采用待测芯片进行计算的过程中,采用神经网络表示拟合待测芯片,从而完成从待测芯片至神经网络的映射,基于神经网络的表示采用计算设备进行计算,能够大大减少电路仿真时间、提升仿真效率。

Description

一种芯片的仿真方法、装置、仿真芯片以及相关产品
技术领域
本申请涉及计算机技术领域,具体涉及一种芯片的仿真方法、装置以及相关产品。
背景技术
目前,EDA(electronic design automation)仿真是集成电路(integratedcircuit,IC)设计的重要一环,主要用于寄存器传输级(Register Transfer Level,RTL)级别的仿真设计和验证。通常的方式是基于工业上的仿真工具EDA tools在CPU或是基于高性能CPU的服务器上完成。但是,现有技术中对RTL的仿真速度仍然限制着设计和验证的速度,提高仿真速度只能通过购买价格高昂的仿真加速器或FPGA设备来实现。
为此,有必要采用各种手段采用合理的性价比来提高仿真速度。
发明内容
本申请实施例提供了一种神经网络的仿真方法、装置以及相关产品,可大大减少电路仿真时间、提升仿真效率、大幅缩减仿真开销。
第一方面,提供一种通过软件程序模块实现的芯片的仿真方法,所述方法包括:
获取待测芯片的仿真激励;
根据所述仿真激励确定所述待测芯片对应的神经网络的输入数据,其中,所述待测芯片对应的神经网络是根据所述待测芯片包含的逻辑电路确定的,并且是由寄存器传输级代码转换而来的;
对所述待测芯片对应的神经网络执行正向运算,获得仿真结果;
其中,所述待测芯片包括至少一个逻辑电路,所述待测芯片对应的神经网络包含至少一个子网络,至少一个所述子网络连接形成所述待测芯片对应的神经网络;每个所述子网络用于表示所述逻辑电路。
第二方面,提供一种仿真芯片,所述仿真芯片包括至少一个处理器核和存储器,所述存储器用于存储计算机程序及输入数据;所述处理器核执行所述计算机程序时,实现所述的方法。
第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面的方法。
第四方面,提供一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行第一方面提供的方法。
根据本申请提供的技术方案,在采用待测芯片进行计算的过程中,采用神经网络表示拟合待测芯片,从而完成从待测芯片至神经网络的映射,基于神经网络的表示采用计算设备进行计算,能够大大减少电路仿真时间、提升仿真效率,而且,由于无需借助价格高昂的仿真加速器或FPGA,从而大幅缩减仿真开销。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的待测芯片与仿真装置数据交互示意图。
图2是根据本申请实施例的芯片的仿真方法的流程图。
图3是根据本申请实施例的将逻辑电路采用子网络表示的示意图。
图4为根据本发明实施例的有关逻辑电路的子网络的一种实现方式的示意图。
图5为根据本发明实施例的有关逻辑电路的子网络的另一种实现方式的示意图。
图6为1位全加器的逻辑电路的示意图。
图7是是根据本申请一个实施例的将1位全加器采用神经网络表示的示意图。
图8是根据本申请实施例的神经网络的仿真装置的示意图。
图9是本申请实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
本申请提供的技术方案,是通过神经网络拟合具体的待测芯片,然后,根据拟合的神经网络进行计算,计算得到的结果对应采用待测芯片计算得到的仿真结果。具体来说,在采用待测芯片进行计算的过程中,将待测芯片采用神经网络拟合,从而完成从待测芯片至神经网络表示的映射,基于神经网络的表示采用计算设备进行计算。这样,基于神经网络进行计算得到的结果对应待测芯片的仿真结果。
图1是根据本申请实施例的待测芯片与仿真装置数据交互示意图。如图1所示,该仿真装置可以包括第一转换装置、第二转换装置和计算装置。其中,第一转换装置根据上述将待测芯片转换为对应的神经网络的方法,确定待测芯片对应的神经网络;然后,根据从仿真激励确定待测芯片对应的神经网络的输入数据,计算装置对所述待测芯片对应的神经网络执行正向运算,获得计算结果;第二转换装置将所述计算结果转换为电路的仿真结果的形式,获得所述仿真结果。具体过程参见下文描述。可选地,所述计算装置可以是各种处理器以及神经网络加速器,其中,处理器包括中央处理器(Central Processor Unit,CPU)、图形处理器(Graphic Processer Unit,GPU)以及视频编解码处理器(Video ProcesserUnit,VPU)等中的一个或多个,而神经网络加速器包括图神经网路加速器、卷积神经网络加速器、稀疏神经网络加速器、二值神经网络加速器、三值神经网络加速器等。
根据一个实施例,本发明提供一种芯片的仿真方法,该仿真方法可以应用于如图1所示的仿真装置中。参阅图2,图2是根据本申请实施例的芯片的仿真方法的流程图。所述方法包括如下步骤:
步骤S201,获取待测芯片的仿真激励。
正常的EDA验证流程主要包含搭建验证环境,联合RTL代码完成EDA仿真,利用验证环境中的参考模型完成与RTL代码仿真结果的对比,从而判断当前设计的正确性。其中,RTL代码可以表示待测芯片包含的逻辑电路。在进行仿真时,需要获取待测芯片的仿真激励。其中,所述仿真激励指的是输入芯片端口的输入信号。可选地,当所述待测芯片表示的是逻辑电路时,所述逻辑电路包括:逻辑与电路、逻辑非电路、逻辑或电路以及异或电路,所述仿真激励可以是0或1。
步骤S202,根据所述仿真激励确定所述待测芯片对应的神经网络的输入数据,其中,所述待测芯片对应的神经网络是根据所述待测芯片包含的逻辑电路确定的。
本申请将RTL代码的仿真计算放到了神经网络加速器中执行,需要根据待测芯片的仿真激励确定所述待测芯片对应的神经网络的输入数据。具体地,仿真装置的第一转换装置可以根据将RTL代码转换为待测芯片对应的神经网络,从而实现将逻辑电路转换为神经网络,并根据仿真激励获得待测芯片对应的神经网络的输入数据。
在确定待测芯片对应的神经网络后,所述芯片的仿真方法还包括:
步骤S203,对所述待测芯片对应的神经网络执行正向运算,获得仿真结果。其中,所述待测芯片包括至少一个逻辑电路,所述待测芯片对应的神经网络包含至少一个子网络,至少一个所述子网络连接形成所述待测芯片对应的神经网络;每个所述子网络用于表示所述逻辑电路。
可选地,步骤S203具体包括:所述计算装置执行各个所述子网络,以对待测芯片对应的神经网络执行正向运算,获得计算结果;其中,上一子网络的输出结果作为与所述上一子网络连接的下一子网络的输入数据。神经网络的正向运算可以是指从神经网络的输入层依次执行各层神经网络,并从神经网络的输出层输出计算结果的过程。第二转换装置将所述计算结果转换为电路的仿真结果的形式,获得所述仿真结果。
具体来说,由于待测芯片包括至少一个逻辑电路,而逻辑电路各自有对应的子网络。那么,对所述待测芯片对应的神经网络执行正向运算就是执行各个子网络的运算,对于前后有输入输出连接关联的子网络,上一子网络的输出结果作为与该上一子网络连接的下一子网络的输入数据。
具体地,对于形成待测芯片对应的神经网络的各个子网络来说,子网络执行过程包括:根据所述子网络的输入数据和权值数据,确定各个所述子网络的输入数据与权值乘加运算后得到的中间运算结果;以及根据所述中间运算结果和各个所述子网络对应的回归值,确定各个所述子网络的输出结果。这样,对构成待测芯片的各个逻辑电路对应的子网络执行运算,就实现了对待测芯片对应的神经网络执行正向运算,获得计算结果。
可选地,待测芯片包括至少一个逻辑电路,所述待测芯片中的逻辑电路采用子网络进行表示,相应地,将待测芯片转换为对应的神经网络时,该神经网络包含至少一个子网络,至少一个所述子网络连接形成所述待测芯片对应的神经网络。
从而,为了获得所述待测芯片对应的神经网络,首先需要确定所述待测芯片的各个逻辑电路对应的子网络,然后根据各个所述逻辑电路的连接关系以及各个所述子网络,确定所述待测芯片对应的神经网络。
其中,所述第一转换装置将各个所述逻辑电路转换为对应的子网络具体步骤可以包括如下两种方式。
第一种方式:
不同的逻辑电路有各自的运算特性。对于逻辑与电路来说,只要输入存在一个0,输出均为0,只有输入均为1时,输出才为1;对于逻辑非电路,输入与输出是相反的,即输入为1,输出为0,而输入为0,输出为1;对于逻辑或电路来说,只要输入存在一个1,输出均为1,只有输入均为0时,输出才为0;对于异或电路来说,当输入不相同时,则异或结果为1,而如果输入相同,异或结果为0。根据逻辑电路的运算特性,确定逻辑电路对应的子网络的网络结构,所述网络结构包括所述子网络包含的层数、所述子网络中各个节点的连接关系,所述子网络中阶跃函数节点的回归值,其中,所述节点包括输入节点和运算节点。
在一个具体实施例中,如图3所示,可以使用单层感知机加上阶跃函数来拟合逻辑与电路、逻辑非电路以及逻辑或电路,拟合异或电路需要使用双层感知机,在图3中,阶跃函数为ReLU(x)[t]函数,其中:
Figure GDA0002417295260000051
其中,t等于ReLU(x)[t]函数输入数据和权值进行乘加运算的结果,为中间运算结果,x为阶跃函数(ReLU(x)[t]函数)节点的回归值。回归值x是用于与中间运算结果t比较的一个值,回归值x的取值根据中间运算结果t的取值范围,选择一个合适的值,使得阶跃函数的输出结果符合逻辑电路的运算特性。在如下的例子中会有详细描述。
针对逻辑与电路、逻辑非电路、逻辑或电路以及异或电路确定的子网络如图3所示。
在图3中,X和Y表示输入节点的输入,在逻辑电路中,取值可以为0或1,箭头上的1和-1表示权值。具体来说,针对不同逻辑电路的运算特性确定所述逻辑电路对应的的子网络的网络结构。如图3(a)所示,对于逻辑与电路,子网络包含一个输入层和一个激活层,所述子网络中输入层的输入节点与激活层的运算节点(激活函数ReLU(x)[t])相连,X和Y表示输入层的输入,各自对应的权值均为1,,t=X*1+Y*1,在逻辑与运算中,所述回归值x取值为t中的最大值,因此所述回归值x取值为2,根据X和Y的取值,当t>=2时,激活函数ReLU(x)[t]的输出为1,当t<2时,激活函数ReLU(x)[t]的输出为0。可选地,所述X和Y表示输入层的输入的权值可以为任意值,其中,所述两个权值可以相同,也可以不同,当所述输入的权值变化时,所述t和x也相应的变化。例如,假设所述权值分别为3和4,则t=X*3+Y*4,根据X和Y的取值:0或1,确定所述t的最大值为7,此时,所述回归值x取值为7,根据X和Y的取值,当t>=7时,激活函数ReLU(x)[t]的输出为1,当t<7时,激活函数ReLU(x)[t]的输出为0。
如图3(b)所示,对于逻辑或电路,子网络包含一个输入层和一个激活层,所述子网络中输入层的输入节点与激活层的运算节点(激活函数ReLU(x)[t])相连,X和Y表示输入层的输入,各自对应的权值均为1,t=X*1+Y*1,在逻辑或运算中,所述回归值x取值为t(包括0、1和2)中的次小值,因此所述回归值x取值为1,根据X和Y的取值,当t>=1时,激活函数ReLU(x)[t]的输出为1,当t<1时,激活函数ReLU(x)[t]的输出为0。可选地,所述X和Y表示输入层的输入的权值可以为任意值,其中,所述两个权值可以相同,也可以不同,当所述输入的权值变化时,所述t和x也相应的变化。例如,假设所述权值分别为3和4,则t=X*3+Y*4,根据X和Y的取值:0或1,确定所述t的次小值为3,此时,所述回归值x取值为3,根据X和Y的取值,当t>=3时,激活函数ReLU(x)[t]的输出为1,当t<3时,激活函数ReLU(x)[t]的输出为0。
如图3(c)所示,对于逻辑非电路,子网络包含一个输入层和一个激活层,所述子网络中输入层的输入节点与激活层的运算节点(激活函数ReLU(x)[t])相连,X表示输入层的输入,对应的权值均为-1,t=X*-1,在逻辑非运算中,所述回归值x取值为t中的最大值,因此所述回归值x取值为0,根据X的取值,当t>=0时,激活函数ReLU(x)[t]的输出为1,当t<0时,激活函数ReLU(x)[t]的输出为0。可选地,所述X表示输入层的输入的权值可以为任意的负值,当所述输入的权值变化时,所述t也相应的变化,根据X的取值:0或1,确定所述t的最大值为0,此时,所述回归值x的取值为0。
如图3(d)所示,对于异或电路,子网络包含一个输入层和两个激活层,所述子网络中输入层的输入节点与第一激活层的运算节点(激活函数ReLU(x)[t])相连,第一激活层的运算节点(激活函数ReLU(x)[t])与第二激活层的运算节点(激活函数ReLU(x)[t])相连,X和Y表示输入层的输入,在输入层的输入节点与第一激活层的运算节点(激活函数ReLU(x)[t])相连处,各自对应的权值均为1,t=X*1+Y*1,所述回归值x取值为t(包括0、1和2)中的次小值,因此所述回归值x取值为1,根据X和Y的取值:0或1,当t>=1时,激活函数ReLU(x)[t]的输出为1,当t<1时,激活函数ReLU(x)[t]的输出为0,将该处输出的结果设为第一结果;各自对应的权值均为-1,t=X*-1+Y*-1,所述回归值x取值为t(包括0、-1和-2)中的次小值,因此所述回归值x取值为-1,根据X和Y的取值:0或1,当t>=-1时,激活函数ReLU(x)[t]的输出为1,当t<-1时,激活函数ReLU(x)[t]的输出为0,将该处输出的结果设为第二结果;在第一激活层的运算节点(激活函数ReLU(x)[t])与第二激活层的运算节点(激活函数ReLU(x)[t])相连处,上述第一结果和第二结果对应的权值均为1,t=第一结果*1+第二结果*1,所述回归值x取值为t中的最大值,因此所述回归值x取值为2,根据第一结果和第二结果的值:0或1,当t>=2时,激活函数ReLU(x)[t]的输出为1,当t<2时,激活函数ReLU(x)[t]的输出为0。可选地,对于第二激活层的运算节点(激活函数ReLU(x)[t]),所述第一结果和第二结果的权值可以为任意值,其中,所述两个权值可以相同,也可以不同,当所述输入的权值变化时,所述t和x也相应的变化。例如,假设所述权值分别为3和4,则t=第一结果*3+第二结果*4,根据第一结果和第二结果的取值:0或1,确定所述t的最大值为7,此时,所述回归值x取值为7,根据X和Y的取值,当t>=7时,激活函数ReLU(x)[t]的输出为1,当t<7时,激活函数ReLU(x)[t]的输出为0。
以上只是示出了确定逻辑与电路、逻辑非电路、逻辑或电路以及异或电路的子网络的一种实现方式。所述子网络还可以包含其他的层数以及其他节点的连接关系。例如,对于逻辑与电路、逻辑非电路、逻辑或电路以及异或电路来说,还可以增加若干层的激活函数。另外,子网络的权值、ReLU(x)[t]函数的回归值x还可以采用其他值。例如,对于逻辑与电路来说,其权值可以均为1,x相应取值为2;其权值可以均为0.5,x相应取值为1;对于逻辑或电路来说,其权值可以为0.3和0.7,x相应取值为t的所有取值中的次小值0.3;其权值还可以为0.1和1,x相应取值为t的所有取值中的次小值0.1等等。这样,根据所述逻辑电路对应的子网络结构和预设的转换规则,可以设定网络结构包括所述子网络包含的层数、所述子网络中各个节点的连接关系、子网络的权值、阶跃函数节点的回归值x,使得对于同样的输入,包含所述阶跃函数的子网络的输出结果与所述逻辑电路的输出结果一致。
需要注意的是,以上仅基于图所示的神经网络并采用ReLU(x)[t]函数作为阶跃函数来拟合逻辑与电路、逻辑非电路以及逻辑或电路以及异或电路,然而根据上文的介绍,本领域技术人员可以理解的是,还可以基于其他网络结构以及/或者其他激活函数对逻辑电路进行拟合,这些都属于本申请覆盖的范围。
可见,第一种方式可以概况为:根据所述逻辑电路的运算特性,确定所述逻辑电路对应的子网络的网络结构,所述网络结构包括所述子网络包含的层数、所述子网络中各个节点的连接关系,所述子网络中阶跃函数节点的回归值;根据所述逻辑电路对应的子网络结构和预设的转换规则,确定所述逻辑电路对应的子网络。
第二种方式:
子步骤1:获取所述逻辑电路对应的初始网络以及所述初始网络对应的训练集;
对于各个逻辑电路可以采用任何网络,图4为根据本发明实施例的有关逻辑电路的子网络的一种实现方式的示意图。将拟合逻辑电路的神经网络可以包括至少一个运算层,例如输入层、激活层和输出层,可选的还可以包含隐含层。
将拟合逻辑电路的神经网络但未进行训练的网络称为初始网络。对于每一种逻辑电路都可以确定一个初始网络,再针对确定的初始网络进行训练。如图4所示,以异或电路为例,异或门有两个输入X和Y以及一个输出OUT,从而,拟合异或门的初始网络的输入层包括输入X和Y,输出层包括输出OUT,激活层可以包括任何激励函数,例如ReLU函数、Sigmoid函数等,所以包含隐含层可以是例如卷积层、池化层以及全连接层等。
对于逻辑与电路、逻辑非电路、逻辑或电路这些逻辑电路,所确定的初始网络可以是相同的,也可以是不同的,例如,逻辑与电路与异或电路可以采用相同的初始网络,也可以分别采用不同的初始网络。
初始网络的参数包括权值,在确定逻辑电路的初始网络结构后,该初始网络的权值可以是随机生成的数值,在一个可选的实施例中,可以为-1到1之间的随机数值。另外,初始网络在存在偏置的情况下,也对偏置进行随机初始化,设为一个随机的数值。
然后,针对不同的逻辑电路的初始网络,确定训练集,训练集是遍历逻辑电路的所有可能的输入以及对应的输出而确定的。例如,对于逻辑与电路,训练集为(0,0,0),(1,1,1),(1,0,0),(0,1,0),其中括号内的第一项和第二项表示输入X和Y的数据,第三项表示逻辑与电路的输出;对于逻辑或电路,训练集为(0,0,0),(1,1,1),(1,0,1),(0,1,1),其中括号内的第一项和第二项表示输入X和Y的数据,第三项表示逻辑或电路的输出;对于逻辑非电路,训练集为(0,1),(1,0),其中括号内的第一项表示输入X的数据,第二项表示逻辑非电路的输出;对于异或电路,训练集为(0,0,0),(1,1,0),(1,0,1),(0,1,1),其中括号内的第一项和第二项表示输入X和Y的数据,第三项表示异或电路的输出。
子步骤2:对所述初始网络执行正向运算,获得正向运算结果。
在确定各个逻辑电路的初始网络的训练集后,根据训练集对该神初始网络执行正向运算,进行训练,初始网络的输入层获得训练集中表示逻辑电路的输入数据,将该输入数据传送至所述输入层之后的各个层(例如,包括激活层和/或隐含层)进行计算,所述输出层得出该逻辑电路的正向运算结果。
子步骤3:按照上述过程对所述初始网络执行正向运算,获得正向运算结果后。在所述正向运算结果不满足预设的收敛条件时,对所述初始网络执行反向运算,并更新所述初始网络的权值数据,之后,返回对所述初始网络执行正向运算,获得正向运算结果的步骤,直至所述正向运算结果满足预设的收敛条件。
子步骤4:将满足所述收敛条件的初始网络作为所述逻辑电路对应的子网络。
在不断的训练后,该网络的参数收敛时,所得到的包括这些参数的网络能够表示该逻辑电路,也就是说,获得了逻辑电路对应的子网络。需要注意的是,判断训练过程中网络参数是否满足预设的收敛条件的方法很多,例如,可以通过比较两次训练获得权值的误差,当误差值小于预设阈值时,可以确定该网络参数已经收敛。
根据上述步骤获得的子网络结构,其输出可能不是0或1,而可能是0.01或者0.99这种非整数,也就是子网络的拟合结果与逻辑电路的实际输出可能存在误差。从而,针对这种情况,在一个可选的实施例中,所述逻辑电路对应的子网络包括至少一个运算层,所述逻辑电路对应的子网络的最后一个运算层为取整函数层,所述取整函数层的输出结果作为所述子网络的输出结果。图5为根据本发明实施例的有关逻辑电路的子网络的另一种实现方式的示意图。如图5所示,相较于图4,图5增加了取整函数,在激活层之后进行取整,得到最后的输出。
在一个可选实施例中,该取整函数为
Figure GDA0002417295260000091
取整函数理论上可以是任意的输出为0和1的函数,其中,使得子网络拟合逻辑电路的误差较小者更优。
可见,第二种方式可以概况为:获取所述逻辑电路对应的初始网络以及所述初始网络对应的训练集;对所述初始网络执行正向运算,获得正向运算结果;在所述正向运算结果不满足预设的收敛条件时,对所述初始网络执行反向运算,并更新所述初始网络的权值数据,之后,返回对所述初始网络执行正向运算,获得正向运算结果的步骤,直至所述正向运算结果满足预设的收敛条件;将满足所述收敛条件的初始网络作为所述逻辑电路对应的子网络。
在确定各个所述逻辑电路对应的子网络之后,根据各个所述逻辑电路的连接关系以及各个所述子网络,确定所述待测芯片对应的神经网络。
下面,以1位全加器为例具体说明将待测芯片转化对应的神经网络的过程。假设待测芯片的电路为1位全加器,图6为1位全加器的电路的示意图。如图6所示,X、Y和Cin表示1位全加器的输入,而S和Co表示1位全加器的输出,其中,S表示一位全加器的进位值,Co表示一位全加器的输出值。在1位全加器中,输出S的计算过程为:输入X和Y进行异或操作,得到的结果与输入Cin进行异或操作,进而得到输出S;输出Co的计算过程为:输入X与Cin、输入Y与Cin以及输入X与Y之间分别进行与操作,得到的结果相互进行或操作,进而得到输出Co。
根据上述对1位全加器的电路的表述,可以将1位全加器表示为S=X^Y^CIN,Co=X&Cin|Y&Cin|X&Y,其中“^”表示异或操作,“&”表示与操作,“|”表示或操作,X、Y和CIN表示1位全加器的输入,而S和Co表示1位全加器的输出。在一种可选地实施例中,1位全加器还可以存在其他的逻辑表示方式,例如,S=X^Y^Cin,Co=X^Y&Cin|X&Y,我们只需确定其中的一种即可。
图7是是根据本申请一个实施例的将1位全加器采用神经网络表示的示意图。1位全加器表示为S=X^Y^Cin,Co=X&Cin|Y&Cin|X&Y,根据图3所示的与逻辑与电路、逻辑非电路、逻辑或电路以及异或电路的子网络表示,将1位全加器的逻辑表示的逻辑与电路、逻辑非电路、逻辑或电路以及异或电路分别用对应的子网络进行表示,从而将1位全加器转换为对应的神经网络,得到如图7所示的神经网络表示方式。
上述采用“1位全加器”这种电路表示待测芯片,本领域技术人员可以理解的是待测芯片还可以采用其他电路及其逻辑表示,无论待测芯片的电路为什么形式,根据将待测芯片转换为对应的神经网络的方法,都可以获得对应的神经网络。
进一步地,所述芯片的仿真方法还包括:
将所述仿真结果与预设的参考结果进行比较,确定所述仿真结果是否满足要求;在所述仿真结果不满足要求时,更新所述待测芯片的电路状态,并输出提示信息。
一般的EDA验证流程过程中,会提前预设一个参考结果。在获得待测芯片的仿真结果后,需要将仿真结果与预设的参考结果进行比较,确定所述仿真结果是否满足要求,从而完成正确性检查。
如果所述仿真结果不满足要求出现比对错误,说明待测芯片存在错误,需要修正,更新所述待测芯片的电路状态,并输出提示信息。
根据上述芯片的仿真方法,在采用待测芯片进行计算的过程中,采用神经网络表示拟合待测芯片,从而完成从待测芯片至神经网络的映射,基于神经网络的采用计算设备进行计算,能够大大减少电路仿真时间、提升仿真效率,而且,由于无需借助价格高昂的仿真加速器或FPGA,从而大幅缩减仿真开销。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
根据另一个实施例,本发明还提供一种芯片的仿真装置。图8是根据本申请实施例的待测芯片的仿真装置的示意图。如图8所示,该待测芯片的仿真装置包括:
获取单元801,用于获取待测芯片的仿真激励。
正常的EDA验证流程主要包含搭建验证环境,联合RTL代码完成EDA仿真,利用验证环境中的参考模型完成与RTL代码仿真结果的对比,从而判断当前设计的正确性。其中,RTL代码可以表示待测芯片包含的逻辑电路。在进行仿真时,需要获取待测芯片的仿真激励。其中,所述仿真激励指的是输入芯片端口的输入信号。可选地,当所述待测芯片表示的是逻辑电路时,例如所述逻辑电路包括:逻辑与电路、逻辑非电路、逻辑或电路以及异或电路,所述仿真激励可以是0或1。
确定单元802,用于根据所述仿真激励确定所述待测芯片对应的神经网络的输入数据,其中,所述待测芯片对应的神经网络是根据所述待测芯片包含的逻辑电路确定的。
本申请,将RTL代码的仿真计算放到了神经网络加速器中执行,需要根据待测芯片的仿真激励确定所述待测芯片对应的神经网络的输入数据。具体地,仿真装置的第一转换装置可以根据将RTL代码转换为待测芯片对应的神经网络,从而实现将逻辑电路转换为神经网络,并根据仿真激励获得待测芯片对应的神经网络的输入数据。
在确定待测芯片对应的神经网络后,所述芯片的仿真装置还包括:
运算单元803,用于对所述待测芯片对应的神经网络执行正向运算,获得仿真结果。其中,所述待测芯片包括至少一个逻辑电路,所述待测芯片对应的神经网络包含至少一个子网络,至少一个所述子网络连接形成所述待测芯片对应的神经网络;每个所述子网络用于表示所述逻辑电路。
运算单元803具体用于:执行各个所述子网络,以对待测芯片对应的神经网络执行正向运算,获得计算结果;其中,上一子网络的输出结果作为与所述上一子网络连接的下一子网络的输入数据。神经网络的正向运算可以是指从神经网络的输入层依次执行各层神经网络,并从神经网络的输出层输出计算结果的过程。将所述计算结果转换为电路的仿真结果的形式,获得所述仿真结果。
具体来说,由于待测芯片包括至少一个逻辑电路,而逻辑电路各自有对应的子网络。那么,对所述待测芯片对应的神经网络执行正向运算就是执行各个子网络的运算,对于前后有输入输出连接关联的子网络,上一子网络的输出结果作为与该上一子网络连接的下一子网络的输入数据。
具体地,对于形成待测芯片对应的神经网络的各个子网络来说,子网络执行过程包括:根据所述子网络的输入数据和权值数据,确定各个所述子网络的输入数据与权值乘加运算后得到的中间运算结果;以及根据所述中间运算结果和各个所述子网络对应的回归值,确定各个所述子网络的输出结果。
以逻辑与电路为例,在图3(a)中,逻辑与电路的子网络包含一个输入层和一个激活层、所述子网络中输入层的输入节点与激活层的运算节点(激活函数ReLU(x)[t])相连,X和Y表示输入层的输入,各自对应的权值均为1,回归值x取值为2,中间运算结果t=X*1+Y*1,根据X和Y的取值,当t>=2时,激活函数ReLU(x)[t]的输出为1,当t<2时,激活函数ReLU(x)[t]的输出为0。逻辑与电路的子网络执行过程包括:根据子网络的输入数据(X和Y)和权值数据(1),确定各个所述子网络的中间运算结果t=X*1+Y*1;以及根据所述中间运算结果t和各个所述子网络对应的回归值x,确定各个所述子网络的输出结果,即当t>=2时,激活函数ReLU(x)[t]的输出为1,当t<2时,激活函数ReLU(x)[t]的输出为0。上述过程也适用其他逻辑电路。
这样,对构成待测芯片的各个逻辑电路对应的子网络执行运算,就实现了对待测芯片对应的神经网络执行正向运算,获得计算结果。
待测芯片包括至少一个逻辑电路,所述待测芯片中的逻辑电路采用子网络进行表示,相应地,将待测芯片转换为对应的神经网络时,该神经网络包含至少一个子网络,至少一个所述子网络连接形成所述待测芯片对应的神经网络。
从而,为了获得所述待测芯片对应的神经网络,首先需要确定所述待测芯片的各个逻辑电路对应的子网络,然后根据各个所述逻辑电路的连接关系以及各个所述子网络,确定所述待测芯片对应的神经网络。由此,芯片的仿真装置包含子网络确定单元和神经网络确定单元。
其中,子网络确定单元可以采用如下两种方式确定各个所述逻辑电路对应的子网络。
第一种方式:
不同的逻辑电路有各自的运算特性。对于逻辑与电路来说,只要输入存在一个0,输出均为0,只有输入均为1时,输出才为1;对于逻辑非电路,输入与输出是相反的,即输入为1,输出为0,而输入为0,输出为1;对于逻辑或电路来说,只要输入存在一个1,输出均为1,只有输入均为0时,输出才为0;对于异或电路来说,当输入不相同时,则异或结果为1,而如果输入相同,异或结果为0。根据逻辑电路的运算特性,确定逻辑电路对应的子网络的网络结构,所述网络结构包括所述子网络包含的层数、所述子网络中各个节点的连接关系,所述子网络中阶跃函数节点的回归值,其中,所述节点包括输入节点和运算节点。
在一个具体实施例中,如图3所示,可以使用单层感知机加上阶跃函数来拟合逻辑与电路、逻辑非电路以及逻辑或电路,拟合异或电路需要使用双层感知机,在图3中,阶跃函数为ReLU(x)[t]函数,其中:
Figure GDA0002417295260000131
其中,t等于ReLU(x)[t]函数输入数据和权值进行乘加运算的结果,为中间运算结果,x为阶跃函数(ReLU(x)[t]函数)节点的回归值。回归值x是用于与中间运算结果t比较的一个值,回归值x的取值根据中间运算结果t的取值范围,选择一个合适的值。
针对逻辑与电路、逻辑非电路、逻辑或电路以及异或电路确定的子网络如图3所示。
在图3中,X和Y表示输入节点的输入,在逻辑电路中,取值可以为0或1,箭头上的1和-1表示权值。具体来说,针对不同逻辑电路的运算特性确定所述逻辑电路对应的的子网络的网络结构。
如图3(a)所示,对于逻辑与电路,子网络包含一个输入层和一个激活层,所述子网络中输入层的输入节点与激活层的运算节点(激活函数ReLU(x)[t])相连,X和Y表示输入层的输入,各自对应的权值均为1,,t=X*1+Y*1,在逻辑与运算中,所述回归值x取值为t中的最大值,因此所述回归值x取值为2,根据X和Y的取值,当t>=2时,激活函数ReLU(x)[t]的输出为1,当t<2时,激活函数ReLU(x)[t]的输出为0。可选地,所述X和Y表示输入层的输入的权值可以为任意值,其中,所述两个权值可以相同,也可以不同,当所述输入的权值变化时,所述t和x也相应的变化。例如,假设所述权值分别为3和4,则t=X*3+Y*4,根据X和Y的取值:0或1,确定所述t的最大值为7,此时,所述回归值x取值为7,根据X和Y的取值,当t>=7时,激活函数ReLU(x)[t]的输出为1,当t<7时,激活函数ReLU(x)[t]的输出为0。
如图3(b)所示,对于逻辑或电路,子网络包含一个输入层和一个激活层,所述子网络中输入层的输入节点与激活层的运算节点(激活函数ReLU(x)[t])相连,X和Y表示输入层的输入,各自对应的权值均为1,t=X*1+Y*1,在逻辑或运算中,所述回归值x取值为t(包括0、1和2)中的次小值,因此所述回归值x取值为1,根据X和Y的取值,当t>=1时,激活函数ReLU(x)[t]的输出为1,当t<1时,激活函数ReLU(x)[t]的输出为0。可选地,所述X和Y表示输入层的输入的权值可以为任意值,其中,所述两个权值可以相同,也可以不同,当所述输入的权值变化时,所述t和x也相应的变化。例如,假设所述权值分别为3和4,则t=X*3+Y*4,根据X和Y的取值:0或1,确定所述t的次小值为3,此时,所述回归值x取值为3,根据X和Y的取值,当t>=3时,激活函数ReLU(x)[t]的输出为1,当t<3时,激活函数ReLU(x)[t]的输出为0。
如图3(c)所示,对于逻辑非电路,子网络包含一个输入层和一个激活层、所述子网络中输入层的输入节点与激活层的运算节点(激活函数ReLU(x)[t])相连,X表示输入层的输入,对应的权值均为-1,t=X*-1,在逻辑非运算中,所述回归值x取值为t中的最大值,因此所述回归值x取值为0,根据X的取值,当t>=0时,激活函数ReLU(x)[t]的输出为1,当t<0时,激活函数ReLU(x)[t]的输出为0。可选地,所述X表示输入层的输入的权值可以为任意的负值,当所述输入的权值变化时,所述t也相应的变化,根据X的取值:0或1,确定所述t的最大值为0,此时,所述回归值x的取值为0。
如图3(d)所示,对于异或电路,子网络包含一个输入层和两个激活层、所述子网络中输入层的输入节点与第一激活层的运算节点(激活函数ReLU(x)[t])相连,第一激活层的运算节点(激活函数ReLU(x)[t])与第二激活层的运算节点(激活函数ReLU(x)[t])相连,X和Y表示输入层的输入,在输入层的输入节点与第一激活层的运算节点(激活函数ReLU(x)[t])相连处,各自对应的权值均为1,t=X*1+Y*1,所述回归值x取值为t(包括0、1和2)中的次小值,因此所述回归值x取值为1,根据X和Y的取值:0或1,当t>=1时,激活函数ReLU(x)[t]的输出为1,当t<1时,激活函数ReLU(x)[t]的输出为0,将该处输出的结果设为第一结果;各自对应的权值均为-1,t=X*-1+Y*-1,所述回归值x取值为t(包括0、-1和-2)中的次小值,因此所述回归值x取值为-1,根据X和Y的取值:0或1,当t>=-1时,激活函数ReLU(x)[t]的输出为1,当t<-1时,激活函数ReLU(x)[t]的输出为0,将该处输出的结果设为第二结果;在第一激活层的运算节点(激活函数ReLU(x)[t])与第二激活层的运算节点(激活函数ReLU(x)[t])相连处,上述第一结果和第二结果对应的权值均为1,t=第一结果*1+第二结果*1,所述回归值x取值为t中的最大值,因此所述回归值x取值为2,根据第一结果和第二结果的值:0或1,当t>=2时,激活函数ReLU(x)[t]的输出为1,当t<2时,激活函数ReLU(x)[t]的输出为0。可选地,对于第二激活层的运算节点(激活函数ReLU(x)[t]),所述第一结果和第二结果的权值可以为任意值,其中,所述两个权值可以相同,也可以不同,当所述输入的权值变化时,所述t和x也相应的变化。例如,假设所述权值分别为3和4,则t=第一结果*3+第二结果*4,根据第一结果和第二结果的取值:0或1,确定所述t的最大值为7,此时,所述回归值x取值为7,根据X和Y的取值,当t>=7时,激活函数ReLU(x)[t]的输出为1,当t<7时,激活函数ReLU(x)[t]的输出为0。
以上只是示出了确定逻辑与电路、逻辑非电路、逻辑或电路以及异或电路的子网络的一种实现方式。所述子网络还可以包含其他的层数以及其他节点的连接关系。例如,对于逻辑与电路、逻辑非电路、逻辑或电路以及异或电路来说,还可以增加若干层的激活函数。另外,子网络的权值、ReLU(x)[t]函数的回归值x还可以采用其他值。例如,对于逻辑与电路来说,其权值可以均为1,x相应取值为2;其权值可以均为0.5,x相应取值为1;对于逻辑或电路来说,其权值可以为0.3和0.7,x相应取值为t的所有取值中的次小值0.3;其权值还可以为0.1和1,x相应取值为t的所有取值中的次小值0.1;等等。这样,根据所述逻辑电路对应的子网络结构和预设的转换规则,可以设定网络结构包括所述子网络包含的层数、所述子网络中各个节点的连接关系、子网络的权值、阶跃函数节点的回归值x,使得对于同样的输入,包含所述阶跃函数的子网络的输出结果与所述逻辑电路的输出结果一致。
需要注意的是,以上仅基于图所示的神经网络并采用ReLU(x)[t]函数作为阶跃函数来拟合逻辑与电路、逻辑非电路以及逻辑或电路以及异或电路,然而根据上文的介绍,本领域技术人员可以理解的是,还可以基于其他网络结构以及/或者其他激活函数对逻辑电路进行拟合,这些都属于本申请覆盖的范围。
可见,第一种方式可以概况为:根据所述逻辑电路的运算特性,确定所述逻辑电路对应的子网络的网络结构,所述网络结构包括所述子网络包含的层数、所述子网络中各个节点的连接关系,所述子网络中阶跃函数节点的回归值;根据所述逻辑电路对应的子网络结构和预设的转换规则,确定所述逻辑电路对应的子网络。
第二种方式:
1、获取所述逻辑电路对应的初始网络以及所述初始网络对应的训练集;
对于各个逻辑电路可以采用任何网络,图4为根据本发明实施例的有关逻辑电路的子网络的一种实现方式的示意图。将拟合逻辑电路的神经网络可以包括至少一个运算层,例如输入层、激活层和输出层,可选的还可以包含隐含层。
将拟合逻辑电路的神经网络但未进行训练的网络称为初始网络。对于每一种逻辑电路都可以确定一个初始网络,再针对确定的初始网络进行训练。如图4所示,以异或电路为例,异或门有两个输入X和Y以及一个输出OUT,从而,拟合异或门的初始网络的输入层包括输入X和Y,输出层包括输出OUT,激活层可以包括任何激励函数,例如ReLU函数、Sigmoid函数等,所以包含隐含层可以是例如卷积层、池化层以及全连接层等。
对于逻辑与电路、逻辑非电路、逻辑或电路这些逻辑电路,所确定的初始网络可以是相同的,也可以是不同的,例如,逻辑与电路与异或电路可以采用相同的初始网络,也可以分别采用不同的初始网络。
初始网络的参数包括权值,在确定逻辑电路的初始网络结构后,该初始网络的权值可以是随机生成的数值,在一个可选的实施例中,可以为-1到1之间的随机数值。另外,初始网络在存在偏置的情况下,也对偏置进行随机初始化,设为一个随机的数值。
然后,针对不同的逻辑电路的初始网络,确定训练集,训练集是遍历逻辑电路的所有可能的输入以及对应的输出而确定的。例如,对于逻辑与电路,训练集为(0,0,0),(1,1,1),(1,0,0),(0,1,0),其中括号内的第一项和第二项表示输入X和Y的数据,第三项表示逻辑与电路的输出;对于逻辑或电路,训练集为(0,0,0),(1,1,1),(1,0,1),(0,1,1),其中括号内的第一项和第二项表示输入X和Y的数据,第三项表示逻辑或电路的输出;对于逻辑非电路,训练集为(0,1),(1,0),其中括号内的第一项表示输入X的数据,第二项表示逻辑非电路的输出;对于异或电路,训练集为(0,0,0),(1,1,0),(1,0,1),(0,1,1),其中括号内的第一项和第二项表示输入X和Y的数据,第三项表示异或电路的输出。
2、对所述初始网络执行正向运算,获得正向运算结果。
在确定各个逻辑电路的初始网络的训练集后,根据训练集对该神初始网络执行正向运算,进行训练,初始网络的输入层获得训练集中表示逻辑电路的输入数据,将该输入数据传送至所述输入层之后的各个层(例如,包括激活层和/或隐含层)进行计算,所述输出层得出该逻辑电路的正向运算结果。
3、按照上述过程对所述初始网络执行正向运算,获得正向运算结果后。在所述正向运算结果不满足预设的收敛条件时,对所述初始网络执行反向运算,并更新所述初始网络的权值数据,之后,返回对所述初始网络执行正向运算,获得正向运算结果的步骤,直至所述正向运算结果满足预设的收敛条件。
4、将满足所述收敛条件的初始网络作为所述逻辑电路对应的子网络。
在不断的训练后,该网络的参数收敛时,所得到的包括这些参数的网络能够表示该逻辑电路,也就是说,获得了逻辑电路对应的子网络。需要注意的是,判断训练过程中网络参数是否满足预设的收敛条件的方法很多,例如,可以通过比较两次训练获得权值的误差,当误差值小于预设阈值时,可以确定该网络参数已经收敛。
根据上述步骤获得的子网络结构,其输出可能不是0或1,而可能是0.01或者0.99这种非整数,也就是子网络的拟合结果与逻辑电路的实际输出可能存在误差。从而,针对这种情况,在一个可选的实施例中,所述逻辑电路对应的子网络包括至少一个运算层,所述逻辑电路对应的子网络的最后一个运算层为取整函数层,所述取整函数层的输出结果作为所述子网络的输出结果。图5为根据本发明实施例的有关逻辑电路的子网络的另一种实现方式的示意图。如图5所示,相较于图4,图5增加了取整函数,在激活层之后进行取整,得到最后的输出。
在一个可选实施例中,该取整函数为
Figure GDA0002417295260000171
取整函数理论上可以是任意的输出为0和1的函数,其中,使得子网络拟合逻辑电路的误差较小者更优。
可见,第二种方式可以概况为:获取所述逻辑电路对应的初始网络以及所述初始网络对应的训练集;对所述初始网络执行正向运算,获得正向运算结果;在所述正向运算结果不满足预设的收敛条件时,对所述初始网络执行反向运算,并更新所述初始网络的权值数据,之后,返回对所述初始网络执行正向运算,获得正向运算结果的步骤,直至所述正向运算结果满足预设的收敛条件;将满足所述收敛条件的初始网络作为所述逻辑电路对应的子网络。
在确定各个所述逻辑电路对应的子网络之后,芯片的仿真装置的神经网络确定单元根据各个所述逻辑电路的连接关系以及各个所述子网络,确定所述待测芯片对应的神经网络。
下面,以1位全加器为例具体说明将待测芯片转化对应的神经网络的过程。假设待测芯片的电路为1位全加器,图6为1位全加器的电路的示意图。如图6所示,X、Y和Cin表示1位全加器的输入,而S和Co表示1位全加器的输出,其中,S表示一位全加器的进位值,Co表示一位全加器的输出值。在1位全加器中,输出S的计算过程为:输入X和Y进行异或操作,得到的结果与输入Cin进行异或操作,进而得到输出S;输出Co的计算过程为:输入X与Cin、输入Y与Cin以及输入X与Y之间分别进行与操作,得到的结果相互进行或操作,进而得到输出Co。
根据上述对1位全加器的电路的表述,可以将1位全加器表示为S=X^Y^CIN,Co=X&Cin|Y&Cin|X&Y,其中“^”表示异或操作,“&”表示与操作,“|”表示或操作,X、Y和CIN表示1位全加器的输入,而S和Co表示1位全加器的输出。在一种可选地实施例中,1位全加器还可以存在其他的逻辑表示方式,例如,S=X^Y^Cin,Co=X^Y&Cin|X&Y,我们只需确定其中的一种即可。
图7是是根据本申请一个实施例的将1位全加器采用神经网络表示的示意图。1位全加器表示为S=X^Y^Cin,Co=X&Cin|Y&Cin|X&Y,根据图3所示的与逻辑与电路、逻辑非电路、逻辑或电路以及异或电路的子网络表示,将1位全加器的逻辑表示的逻辑与电路、逻辑非电路、逻辑或电路以及异或电路分别用对应的子网络进行表示,从而将1位全加器转换为对应的神经网络,得到如图7所示的神经网络表示方式。
上述采用“1位全加器”这种电路表示待测芯片,本领域技术人员可以理解的是待测芯片还可以采用其他电路及其逻辑表示,无论待测芯片的电路为什么形式,根据将待测芯片转换为对应的神经网络的方法,都可以获得对应的神经网络。
进一步地,所述芯片的仿真装置还包括:
比较单元,用于将所述仿真结果与预设的参考结果进行比较,确定所述仿真结果是否满足要求;以及更新提示单元,用于在所述仿真结果不满足要求时,更新所述待测芯片的电路状态,并输出提示信息。
一般的EDA验证流程过程中,会提前预设一个参考结果。在获得待测芯片的仿真结果后,需要将仿真结果与预设的参考结果进行比较,确定所述仿真结果是否满足要求,从而完成正确性见检查。
如果所述仿真结果不满足要求出现比对错误,说明待测芯片存在错误,需要修正,更新所述待测芯片的电路状态,并输出提示信息。
根据上述芯片的仿真装置,在采用待测芯片进行计算的过程中,采用神经网络表示拟合待测芯片,从而完成从待测芯片至神经网络的映射,基于神经网络的采用计算设备进行计算,能够大大减少电路仿真时间、提升仿真效率,而且,由于无需借助价格高昂的仿真加速器或FPGA,从而大幅缩减仿真开销。
根据另一个实施例,本发明还提供一种仿真芯片。所述仿真芯片包括至少一个处理器核和存储器,所述存储器用于存储计算机程序及输入数据;所述处理器核用于:获取所述芯片的仿真激励;通过执行所述芯片对应的神经网络对所述仿真激励进行运算,获得仿真结果;其中,所述芯片包括至少一个逻辑电路,所述芯片对应的神经网络包含至少一个子网络,至少一个所述子网络连接形成所述芯片对应的神经网络;每个所述子网络用于表示所述逻辑电路。
该处理器核可以包括第一转换装置、第二转换装置和计算装置,参见图1所示。其中,第一转换装置根据上述将待测芯片转换为对应的神经网络的方法,确定待测芯片对应的神经网络;然后,根据从仿真激励确定待测芯片对应的神经网络的输入数据,计算装置对所述待测芯片对应的神经网络执行正向运算,获得计算结果;第二转换装置将所述计算结果转换为电路的仿真结果的形式,获得所述仿真结果。具体过程参见上文描述。
可选地,该处理器核可以包括中央处理器(Central Processor Unit,CPU)、图形处理器(Graphic Processer Unit,GPU)以及视频编解码处理器(Video Processer Unit,VPU)等中的一个或多个,而神经网络加速器包括图神经网路加速器、卷积神经网络加速器、稀疏神经网络加速器、二值神经网络加速器、三值神经网络加速器等,此处不做具体限定。
应当清楚的是,本申请的仿真芯片的工作原理与上述仿真方法实施例中各个步骤的执行过程基本一致,具体可参见上文的描述,此处不再赘述。参阅图9,图9提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如图2所示的方法以及细化方案。
应该理解,上述的装置实施例仅是示意性的,本披露的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本披露各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述处理器或芯片可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述片上缓存、片外内存、存储器可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random Access Memory)、静态随机存取存储器SRAM(Static Random-AccessMemory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本披露的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例还提供一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如图2所示的方法以及细化方案。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如图2所示的方法以及细化方案。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。

Claims (14)

1.一种通过软件程序模块实现的芯片的仿真方法,其特征在于,所述方法包括:
获取待测芯片的仿真激励;
根据所述仿真激励确定所述待测芯片对应的神经网络的输入数据,其中,所述待测芯片对应的神经网络是根据所述待测芯片包含的逻辑电路确定的,并且是由寄存器传输级代码转换而来的;
对所述待测芯片对应的神经网络执行正向运算,获得仿真结果;
其中,所述待测芯片包括至少一个逻辑电路,所述待测芯片对应的神经网络包含至少一个子网络,至少一个所述子网络连接形成所述待测芯片对应的神经网络;每个所述子网络用于表示所述逻辑电路;其中,所述确定各个所述逻辑电路对应的子网络包括:
根据所述逻辑电路的运算特性,确定所述逻辑电路
对应的子网络的网络结构,所述网络结构包括所述子网络包含的层数、所述子网络中各个
节点的连接关系,所述子网络中阶跃函数节点的回归值;根据所述逻辑电路对应的子网络
结构和预设的转换规则,确定所述逻辑电路对应的子网络。
2.根据权利要求1所述的仿真方法,其特征在于,所述对待测芯片对应的神经网络执行正向运算,获得仿真结果,包括:
执行各个所述子网络,以对待测芯片对应的神经网络执行正向运算,获得计算结果;其中,上一子网络的输出结果作为与所述上一子网络连接的下一子网络的输入数据;
将所述计算结果转换为电路的仿真结果的形式,获得所述仿真结果。
3.根据权利要求1或2所述的仿真方法,其特征在于,所述待测芯片包括以下至少一种逻辑电路:逻辑与电路、逻辑非电路、逻辑或电路以及异或电路。
4.根据权利要求3所述的仿真方法,其特征在于,所述方法包括:
根据各个所述逻辑电路的逻辑运算特性,确定各个所述逻辑电路对应的子网络;
根据各个所述逻辑电路的连接关系以及各个所述子网络,确定所述待测芯片对应的神经网络。
5.根据权利要求1所述的方法,其特征在于,所述执行各个所述子网络,包括:
根据所述子网络的输入数据和权值数据,确定各个所述子网络的中间运算结果;
根据所述中间运算结果和各个所述子网络对应的回归值,确定各个所述子网络的输出结果。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述仿真结果与预设的参考结果进行比较,确定所述仿真结果是否满足要求;
在所述仿真结果不满足要求时,更新所述待测芯片的电路状态,并输出提示信息。
7.一种通过软件程序模块实现的芯片的仿真方法,其特征在于,所述方法包括:
获取待测芯片的仿真激励;
根据所述仿真激励确定所述待测芯片对应的神经网络的输入数据,其中,所述待测芯片对应的神经网络是根据所述待测芯片包含的逻辑电路确定的,并且是由寄存器传输级代码转换而来的;
对所述待测芯片对应的神经网络执行正向运算,获得仿真结果;
其中,所述待测芯片包括至少一个逻辑电路,所述待测芯片对应的神经网络包含至少一个子网络,至少一个所述子网络连接形成所述待测芯片对应的神经网络;每个所述子网络用于表示所述逻辑电路;其中,所述确定各个所述逻辑电路对应的子网络包括:
获取所述逻辑电路对应的初始网络以及所述初始网络对应的训练集;
对所述初始网络执行正向运算,获得正向运算结果;
在所述正向运算结果不满足预设的收敛条件时,对所述初始网络执行反向运算,并更新所述初始网络的权值数据,之后,返回对所述初始网络执行正向运算,获得正向运算结果的步骤,直至所述正向运算结果满足预设的收敛条件;
将满足所述收敛条件的初始网络作为所述逻辑电路对应的子网络。
8.根据权利要求7所述的仿真方法,其特征在于,所述对待测芯片对应的神经网络执行正向运算,获得仿真结果,包括:
执行各个所述子网络,以对待测芯片对应的神经网络执行正向运算,获得计算结果;其中,上一子网络的输出结果作为与所述上一子网络连接的下一子网络的输入数据;
将所述计算结果转换为电路的仿真结果的形式,获得所述仿真结果。
9.根据权利要求7或8所述的仿真方法,其特征在于,所述待测芯片包括以下至少一种逻辑电路:逻辑与电路、逻辑非电路、逻辑或电路以及异或电路。
10.根据权利要求9所述的仿真方法,其特征在于,所述方法包括:
根据各个所述逻辑电路的逻辑运算特性,确定各个所述逻辑电路对应的子网络;
根据各个所述逻辑电路的连接关系以及各个所述子网络,确定所述待测芯片对应的神经网络。
11.根据权利要求7所述的方法,其特征在于,所述逻辑电路对应的子网络包括至少一个运算层,所述逻辑电路对应的子网络的最后一个运算层为取整函数层,所述取整函数层的输出结果作为所述子网络的输出结果。
12.根据权利要求7所述的方法,其特征在于,所述方法还包括:
将所述仿真结果与预设的参考结果进行比较,确定所述仿真结果是否满足要求;
在所述仿真结果不满足要求时,更新所述待测芯片的电路状态,并输出提示信息。
13.一种仿真芯片,其特征在于,所述仿真芯片包括至少一个处理器核和存储器,所述存储器用于存储计算机程序及输入数据;所述处理器核执行所述计算机程序时,实现如权利要求1-12任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-12任一项所述的方法。
CN201911352037.XA 2019-12-25 2019-12-25 一种芯片的仿真方法、装置、仿真芯片以及相关产品 Active CN110750945B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911352037.XA CN110750945B (zh) 2019-12-25 2019-12-25 一种芯片的仿真方法、装置、仿真芯片以及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911352037.XA CN110750945B (zh) 2019-12-25 2019-12-25 一种芯片的仿真方法、装置、仿真芯片以及相关产品

Publications (2)

Publication Number Publication Date
CN110750945A CN110750945A (zh) 2020-02-04
CN110750945B true CN110750945B (zh) 2020-11-13

Family

ID=69286018

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911352037.XA Active CN110750945B (zh) 2019-12-25 2019-12-25 一种芯片的仿真方法、装置、仿真芯片以及相关产品

Country Status (1)

Country Link
CN (1) CN110750945B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022150009A1 (en) * 2021-01-08 2022-07-14 Agency For Science, Technology And Research GENERATING AN OUTPUT FOR A RECTIFIED LINEAR UNIT (ReLU)-ACTIVATED NEURON OF A NEURAL NETWORK
CN114004352B (zh) * 2021-12-31 2022-04-26 杭州雄迈集成电路技术股份有限公司 一种仿真实现方法、神经网络编译器以及计算机可读存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6910025B2 (en) * 2001-11-20 2005-06-21 Freescale Semiconductor, Inc. Modeling behavior of an electrical circuit
US9026964B2 (en) * 2013-03-13 2015-05-05 University Of North Texas Intelligent metamodel integrated Verilog-AMS for fast and accurate analog block design exploration
CN205788258U (zh) * 2016-06-03 2016-12-07 福州大学 基于rbf的函数逼近器
US10621494B2 (en) * 2017-11-08 2020-04-14 Samsung Electronics Co., Ltd. System and method for circuit simulation based on recurrent neural networks
CN209216149U (zh) * 2018-12-29 2019-08-06 中国人民解放军陆军工程大学 神经元仿生电路和神经形态系统
CN110263925B (zh) * 2019-06-04 2022-03-15 电子科技大学 一种基于fpga的卷积神经网络前向预测的硬件加速实现装置

Also Published As

Publication number Publication date
CN110750945A (zh) 2020-02-04

Similar Documents

Publication Publication Date Title
Poduval et al. Graphd: Graph-based hyperdimensional memorization for brain-like cognitive learning
CN110245269B (zh) 获取关系网络图中节点的动态嵌入向量的方法和装置
Fortnow Complexity-theoretic aspects of interactive proof systems
Mahzoon et al. Towards formal verification of optimized and industrial multipliers
CN110750945B (zh) 一种芯片的仿真方法、装置、仿真芯片以及相关产品
US11100167B2 (en) Obtaining dynamic embedding vectors of nodes in relationship graphs
JP6744375B2 (ja) ニューラルネットワークにおけるランダム性の生成
Goles et al. Communication complexity and intrinsic universality in cellular automata
Pruss et al. Efficient symbolic computation for word-level abstraction from combinational circuits for verification over finite fields
WO2023116923A1 (zh) 一种存算一体装置和计算方法
Rykov Multidimensional alternative processes reliability models
CN111563578A (zh) 基于TensorFlow的卷积神经网络故障注入系统
Yeh A sequential decomposition method for estimating flow in a multi-commodity, multistate network
JP7063274B2 (ja) 情報処理装置、ニューラルネットワークの設計方法及びプログラム
Metta et al. Computability of spiking neural P systems with anti-spikes
CN109697511B (zh) 数据推理方法、装置及计算机设备
Lai et al. BooM: A decision procedure for Boolean matching with abstraction and dynamic learning
Lê et al. A novel variable ordering heuristic for BDD-based K-terminal reliability
CN111144572A (zh) 一种基于树形贝叶斯网络的配电网灾情推断方法及系统
Iwamoto et al. Constructible functions in cellular automata and their applications to hierarchy results
CN112446463B (zh) 一种神经网络全连接层运算方法、装置以及相关产品
Hahanov et al. Qubit description of the functions and structures for computing
CN111274374B (zh) 一种数据处理方法、装置及计算机存储介质和电子设备
CN113722554A (zh) 数据分类方法、装置及计算设备
CN112446472A (zh) 用于处理数据的方法、装置以及相关产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20200924

Address after: Room 611-194, R & D center building, China (Hefei) international intelligent voice Industrial Park, 3333 Xiyou Road, hi tech Zone, Hefei City, Anhui Province

Applicant after: Anhui Cambrian Information Technology Co., Ltd

Address before: Room 644, scientific research complex building, No. 6, South Road, Academy of Sciences, Haidian District, Beijing 100086

Applicant before: Zhongke Cambrian Technology Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant