CN115293076B - 生成电路的方法、电子设备及存储介质 - Google Patents
生成电路的方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115293076B CN115293076B CN202210425352.6A CN202210425352A CN115293076B CN 115293076 B CN115293076 B CN 115293076B CN 202210425352 A CN202210425352 A CN 202210425352A CN 115293076 B CN115293076 B CN 115293076B
- Authority
- CN
- China
- Prior art keywords
- circuit
- variable
- array
- description
- decoder
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000003860 storage Methods 0.000 title abstract description 18
- 238000013461 design Methods 0.000 claims abstract description 30
- 230000014509 gene expression Effects 0.000 claims abstract description 25
- 230000004044 response Effects 0.000 claims description 5
- 238000004088 simulation Methods 0.000 description 37
- 238000010586 diagram Methods 0.000 description 16
- 230000002093 peripheral effect Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/323—Translation or migration, e.g. logic to logic, hardware description language [HDL] translation or netlist translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Geometry (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本公开提供一种生成电路的方法、电子设备及存储介质。该方法包括:接收逻辑系统设计的描述;在所述逻辑系统设计的描述中识别包括数组的电路描述,其中,所述数组的索引是包括第一变量的表达式;基于所述第一变量确定所述索引的第一数量的索引值;根据所述第一数量的索引值生成与所述电路描述对应的目标电路。
Description
技术领域
本公开涉及电路领域,尤其涉及一种生成电路的方法、电子设备及存储介质。
背景技术
在对芯片设计进行综合时,设计人员需要通过硬件描述语言综合器(synthesizer)将硬件描述语言(Hardware Description Language,HDL)描述的设计转换为数字电路设计。
由于对电路设计的优化不足,硬件描述语言综合器直接综合出来的电路可能会出现面积过大、元器件过多等问题,从而导致资源的浪费以及芯片制造成本的上升。
发明内容
有鉴于此,本公开提出了一种生成电路的方法、电子设备及存储介质。
本公开第一方面,提供了一种生成电路的方法,包括:接收逻辑系统设计的描述;在所述逻辑系统设计的描述中识别包括数组的电路描述,其中,所述数组的索引是包括第一变量的表达式;基于所述第一变量确定所述索引的第一数量的索引值;根据所述第一数量的索引值生成与所述电路描述对应的目标电路。
本公开第二方面,提供了一种生成电路的电子设备,包括:存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以使得所述电子设备执行如第一方面所述的方法。
本公开第三方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子设备的一组指令,该组指令用于使所述电子设备执行如第一方面所述的方法。
本公开提供的一种生成电路的方法、电子设备及存储介质,在硬件描述语言综合器综合电路之前,仿真工具通过使用编译器计算数组的索引的索引值,从逻辑系统设计的电路描述的数组中找到对应的元素。仿真工具利用找到的数组中的元素生成电路,使得生成的电路的面积显著减小,并且生成的电路中的元器件的数量也显著减少,进而降低芯片的制造成本。
附图说明
为了更清楚地说明本公开或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本公开实施例的示例性电子设备的结构示意图。
图2示出了根据本公开实施例的示例性仿真工具的示意图。
图3A示出了示例性硬件描述语言综合器的示意图。
图3B示出了根据本公开实施例的示例性原始电路的示意图。
图3C示出了根据本公开实施例的示例性原始电路中数据选择器的示意图。
图3D示出了根据本公开实施例的部分示例性目标电路的示意图。
图4示出了根据本公开另一实施例的部分示例性目标电路的示意图。
图5A示出了根据本公开实施例的示例性生成电路的方法的流程图。
图5B示出了根据本公开实施例的示例性识别电路描述的方法的流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
如上所述,在对芯片设计进行综合时,硬件描述语言综合器直接综合出来的电路可能会出现面积过大、元器件过多等问题,从而导致资源的浪费以及芯片制造成本的上升。
有鉴于上述问题,本公开提供一种生成电路的方法、电子设备及存储介质,在硬件描述语言综合器综合电路之前,仿真工具可以通过使用编译器计算数组的索引的索引值,从逻辑系统设计的电路描述的数组中找到对应的元素。仿真工具可以利用找到的数组中的元素生成电路,使得生成的电路的面积显著减小,并且生成的电路中的元器件的数量也显著减少,进而降低芯片的制造成本。
图1示出了根据本公开实施例的示例性电子设备100的结构示意图。
电子设备100例如可以是主机计算机。电子设备100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中处理器102、存储器104、网络接口106和外围接口108可以通过总线110实现彼此之间在电子设备100内部的通信连接。
处理器102可以是中央处理器(Central Processing Unit,CPU)、图像处理器、神经网络处理器、微控制器、可编程逻辑器件、数字信号处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或一个或多个集成电路。处理器102可以用于进行与本公开描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1所示,处理器102可以包括多个处理器102a、102b和102c。
存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。例如,如图1所示,存储的数据可以包括程序指令(例如,用于实现本公开的技术的程序指令)以及待处理的数据(例如,存储器104可以存储在编译过程产生的临时代码)。处理器102也可以访问存储的程序指令和数据,并且执行程序指令以对待处理的数据进行操作。存储器104可以包括非暂态计算机可读存储介质,例如易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络接口106可以配置为使电子设备100能够经由网络与一个或多个其他外部装置进行通信。该网络可以是能够传输和/或接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口108可以配置为将电子设备100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入装置以及显示器、扬声器、振动器、指示灯等输出装置。
总线110可以被配置为在电子设备100的各个组件(例如,处理器102、存储器104、网络接口106和外围接口108)之间传输信息,并且例如可以是内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
在一些实施例中,除了图1所示出的以及上述所描述的处理器102、存储器104、网络接口106、外围接口108和总线110之外,电子设备100还可以包括实现正常运行所需的一个或多个其他组件和/或实现本公开的实施例的解决方案所必需的一个或多个其他组件。在一些实施例中,电子设备100可能不包含图1中所示的一个或多个组件。
需要说明的是,尽管上述电子设备100的构成架构仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该电子设备100的构成架构还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述电子设备100的构成架构中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
图2示出了根据本公开实施例的示例性仿真工具200的示意图。仿真工具200可以是运行在电子设备100上的计算机程序。
在芯片设计领域,通常可以利用仿真工具对一个设计进行仿真,综合出芯片的电路。图2示出的示例性仿真工具200可以包括编译器210和硬件描述语言综合器220。编译器210可以接收源代码204(例如,VHDL、Verilog、SystemVerilog等硬件描述语言),并编译为中间代码206。硬件描述语言综合器220可以根据中间代码206进行综合,并输出目标电路208。例如,仿真工具200可以将目标电路208经由图1的外围接口108输出到输出设备上(例如,显示在显示器上)。
在一些实施例中,仿真工具200可以接收逻辑系统设计的描述(即,源代码204)。仿真工具200可以在该逻辑系统设计的描述中识别包括数组的电路描述。
在一些实施例中,包括数组的电路描述可以包括向数组赋予数值。为便于描述,本公开中以电路描述“vec[idx*13+41]=d”为例,说明仿真工具200生成电路的过程。其中,该电路描述中的变量idx可以是一个位宽为6比特的输入信号;变量d可以是另一个输入信号。
在一些实施例中,仿真工具200难以直接在接收到的逻辑系统设计的描述中识别包括数组的电路描述,则可以将逻辑系统设计的描述先输入硬件描述语言综合器220,通过硬件描述语言综合器220综合出的原始电路来查找对应的电路描述。
图3A示出了示例性硬件描述语言综合器220的示意图。
通常,硬件描述语言综合器220可以直接接收源代码204,然后根据源代码204综合出原始电路310。可以理解的是,源代码204中可以不仅仅包括电路描述“vec[idx*13+41]=d”,还可以包括其他电路描述。
图3B示出了根据本公开实施例的示例性原始电路310的示意图。
对于本公开中的电路描述“vec[idx*13+41]=d”,其中,变量idx可以是一个位宽为6比特的输入信号,数值13是一个位宽为4比特的数据。因而硬件描述语言综合器220综合出的原始电路310可以包括一个位宽为10比特的解码器312,以及数据选择器314、316、318等1024(即,210)个数据选择器。可以理解的是,图3B中虽然对数据选择器进行了编号,但是原始电路310中的多个数据选择器其实是相同的。以及,为了便于展示,图3B中未示出所有的数据选择器。
在原始电路310中,解码器312的输入可以包括电路描述“vec[idx*13+41]=d”中与数组的索引(即,表达式idx*13+41)对应的子电路3102。该子电路3102可以包括一个乘法器和一个加法器。
解码器312可以具有y0、y1、y1023等1024(即,210)个输出。这些输出可以分别与1024个数据选择器连接。
图3C示出了根据本公开实施例的示例性原始电路310中数据选择器314的示意图。
数据选择器314可以包括与解码器312的输出y0连接的选通输入端3142、接收另一个输入信号d的输入端3144、接地的输入端3146、以及选通输出端3148。在一些实施例中,当原始电路310中解码器312的输出y0为1时,数据选择器314被选中进行工作,选通输出端3148的输出可以是索引值为0的数组元素vec[0]。
回到图3B,类似地,数据选择器316的输出可以是索引值为1的数组元素vec[1];以及数据选择器318的输出可以是索引值为1023的数组元素vec[1023]。
响应于硬件描述语言综合器220综合出的原始电路310中存在解码器312,仿真工具200可以在逻辑系统设计的描述中查找与原始电路310对应的电路描述。
此时,硬件描述语言综合器220根据源代码204直接综合出来的原始电路310可以包括一个位宽为10比特的解码器312、1024个数据选择器(例如,数据选择器314、316、318)、以及一个作为解码器312的输入的子电路3102。因此,原始电路310的面积庞大、元器件较多。
但是在原始电路310的实际运行过程中,由于作为解码器312的输入的子电路3102中的数值13和数值41是固定数值,所以解码器312的某些输出不会是1,相应地,与这些输出连接的数据选择器也不会工作。例如,当作为输入信号的变量idx取0时,解码器312的输出y41为1。相应地,与输出y41连接的数据选择器工作,该数据选择器输出数组的元素vec[41]。无论变量idx取值为多少,解码器312的输出y0至y40都不会是1。这样,与解码器312的输出y0至y40连接的数据选择器是一直不工作的。因此,在综合电路时,仿真工具200可以移除这些数据选择器,以减小电路的面积。
仿真工具200为了综合出面积较小、元器件较少的目标电路208,可以对源代码204中的电路描述“vec[idx*13+41]=d”进行处理。
在一些实施例中,基于变量idx,编译器210可以计算与表达式“idx*13+41”对应的数组的索引的索引值。因为变量idx的位宽为6比特,所以变量idx的取值可以是0到63。变量idx与数组的索引的索引值的对应关系如表1。
idx | 索引值 |
0 | 41 |
1 | 54 |
2 | 67 |
… | … |
63 | 860 |
表1
基于编译器210计算得到的64(即,26)个索引值,仿真工具200可以从数组的1024个元素中找到实际会被作为输出的64个元素,以及输出的元素与变量idx的对应关系。该对应关系可以作为中间代码206中的信息传输给硬件描述语言综合器220。硬件描述语言综合器220基于接收到的中间代码206可以综合出目标电路208。
图3D示出了根据本公开实施例的部分示例性目标电路208的示意图。
目标电路208可以包括一个位宽为6比特的解码器322,以及数据选择器324、326、328等64(即,26)个数据选择器。可以理解的是,图3D的目标电路208中的数据选择器324、326、328与图3B的原始电路310中的数据选择器314、316、318是相同的。以及,为便于展示,图3D中未示出所有的数据选择器。解码器322的输入可以包括位宽为6比特的变量idx。解码器322的位宽可以由作为输入信号的变量idx的位宽确定。解码器322可以具有y41、y54、y860等64(即,26)个输出。可以理解的是,这些输出的下标可以是与编译器210计算得到索引值一一对应的。这些输出可以分别与64个数据选择器的选通输入端连接。
数据选择器324、326、328的其中一个输入端可以接收输入信号d,另一个输入端接地。数据选择器324、326、328的输出可以分别为与编译器210计算的索引值对应的数组中的元素vec[41]、vec[54]、vec[860]。例如,当作为输入信号的变量idx取1时,编译器210计算得到的数组的索引的索引值为54。相应地,解码器322的输出y54为1。与输出y54连接的数据选择器326工作,数据选择器326输出为数组的元素vec[54]。
如上所述,数据选择器324、326、328的另一个输入端可以接地(即,另一个输入端的输入可以是常量0)。在一些实施例中,经过常量传播优化后,数据选择器324、326、328可以进一步优化为一个与门。
可以理解的是,数组vec[idx*13+41]的位宽可以是10比特,所以相应地有1024根连线。与数组vec[idx*13+41]中未作为数据选择器输出的数组的元素(例如,vec[0]至vec[40])对应的连线可以接地。
在又一些实施例中,仿真工具200还可以直接在接收到的逻辑系统设计的描述中识别包括数组的电路描述。根据识别出的电路描述“vec[idx*13+41]=d”,仿真工具200可以直接生成目标电路208,而无需先综合出原始电路310。
这样,在硬件描述语言综合器220综合电路之前,仿真工具200可以使用编译器210计算数组的索引的索引值,进而从逻辑系统设计的电路描述的数组中找到对应的元素。仿真工具200可以利用找到的数组中的元素生成目标电路208。目标电路208相较于原始电路310,移除了原始电路310中作为输入的子电路3102;使用了位宽为6比特的解码器322来替代位宽为10比特的解码器312;同时,将电路中的数据选择器的数量从1024个减少为64个。因此,目标电路208的电路面积较原始电路310的电路面积显著减小,并且显著减少了电路中数据选择器的数量。
图4示出了根据本公开另一实施例的部分示例性目标电路400的示意图。
在另一些实施例中,包括数组的电路描述可以包括将数组赋给变量。为便于描述,本公开中以电路描述“out=vec[idx*13+41]”为例,说明仿真工具200生成电路的过程。其中,该电路描述中的变量idx是一个位宽为6比特的输入信号。
类似地,仿真工具200接收到逻辑系统设计的描述后,可以对逻辑系统设计中的电路描述“out=vec[idx*13+41]”进行处理。编译器210可以计算与表达式“idx*13+41”对应的索引值。变量idx与数组的索引的索引值的对应关系如表1所示。该对应关系可以作为中间代码206中的信息传输给硬件描述语言综合器220。硬件描述语言综合器220基于接收到的中间代码206可以综合出目标电路400。
硬件描述语言综合器220基于该电路描述综合出的目标电路400如图4所示。目标电路400可以包括一个位宽为6比特的数据选择器402。其中,数据选择器402的位宽可以由作为输入信号的变量idx确定。数据选择器402可以包括一个选通输入端4022,用于接收作为输入信号的变量idx。数据选择器402还可以包括64(即,26)个输入端X41、X54、X67、X860等,分别用于接收与编译器210计算得到的索引值对应的数组中的元素vec[41]、vec[54]、vec[67]、vec[860]等。可以理解的是,为便于展示,图4中未示出所有的输入端。数据选择器402可以选择与变量idx对应的索引值所指引的数组中的元素作为输出端4024的输出out。例如,当作为输入信号的变量idx取1时,编译器210计算得到的数组的索引的索引值为54。相应地,数据选择器402可以选择输入端X54所接收的数组中的元素vec[54]作为输出out。
可以理解的是,硬件描述语言综合器220还可以接收源代码204以直接综合出原始电路。该原始电路可以包括一个位宽为10比特的数据选择器。该数据选择器的选通输入端可以与包括一个乘法器和一个加法器的子电路连接。该数据选择器可以具有1024(即,210)个输入,以及一个输出。
这样,在硬件描述语言综合器220综合电路之前,仿真工具200可以使用编译器210计算数组的索引的索引值,进而从逻辑系统设计的电路描述的数组中找到对应的元素。仿真工具200可以利用找到的数组中的元素生成目标电路400。目标电路400相较于原始电路,移除了原始电路中作为输入的子电路;以及,使用了位宽为6比特的数据选择器402来替代位宽为10比特的数据选择器。因此,目标电路400的电路面积较原始电路的电路面积会显著减小。
可以理解的是,上述实施例中所示出的作为数组的索引的表达式“idx*13+41”仅仅是示例,该表达式可以扩展到其他表达式。例如,表达式满足“idx*A+B”的形式,其中A和B是数值。可以理解的是,对于存在多个变量(例如,idy和idz)的表达式,或者可以化简为“idx*A+B”的形式的表达式(例如,(idx*A+B)*C+D,其中A、B、C、D是数值),本公开实施例提供的方法同样适用。
图5A示出了根据本公开实施例的示例性生成电路的方法500的流程图。方法500可以由例如图1的电子设备100来执行,更具体地,可以由在电子设备100上运行的仿真工具200执行。方法500可以包括以下步骤。
在步骤S502,仿真工具200可以接收逻辑系统设计的描述(例如,图2中的源代码204)。
在步骤S504,仿真工具200在该逻辑系统设计的描述中可以识别包括数组的电路描述。其中,该数组的索引可以是包括第一变量(例如,变量idx)的表达式。
在一些实施例中,包括数组的电路描述可以包括向该数组赋予数值(例如,电路描述“vec[idx*13+41]=d”)。其中,该数值由第二变量(例如,变量d)确定。
图5B示出了根据本公开实施例的示例性识别电路描述的方法510的流程图。可以理解的是,方法510可以作为独立的方法执行,也可以作为方法500的一部分执行。
在步骤S512,仿真工具200可以根据该逻辑系统设计的描述生成原始电路(例如,图3B的原始电路310)。该原始电路可以包括根据第一变量解码出第二数量的输出(例如,图3B中的1024个输出)的第二解码器(例如,图3B中的解码器312),以及第二数量的第一数据选择器(例如,图3B中的数据选择器314、316、318),该第二数量可以与该表达式(例如,表达式idx*13+41)的位宽(例如,10比特)对应。
在一些实施例中,该表达式可以包括该第一变量的乘法运算(例如,表达式idx*13+41)。
在一些实施例中,该原始电路(例如,图3B的原始电路310)可以包括与该表达式(例如,表达式idx*13+41)对应的子电路(例如,图3B的子电路3102)。
在步骤S514,响应于该原始电路(例如,图3B的原始电路310)中存在该第二解码器(例如,图3B中的解码器312),仿真工具200根据该原始电路可以查找该电路描述(例如,电路描述“vec[idx*13+41]=d”)。
回到图5A,在步骤S506,仿真工具200基于该第一变量(例如,位宽为6比特的变量idx)可以确定数组的索引的第一数量(例如,64个)的索引值。在一些实施例中,仿真工具200中的编译器210根据表达式(例如,表达式idx*13+41)基于该第一变量(例如,变量idx)可以计算该索引值(例如,表1中所示的索引值)。
在步骤S508,仿真工具200可以根据所述第一数量的索引值生成与该电路描述对应的目标电路。
在一些实施例中,基于向该数组赋予数值的电路描述(例如,电路描述“vec[idx*13+41]=d”)生成的目标电路(例如,图3D的目标电路208)可以包括第一解码器(例如,图3D中的解码器322)和第一数量的多个(例如,64个)第一数据选择器(例如,图3D中的数据选择器324、325、328)。其中,该第一解码器的输入可以是该第一变量(例如,变量idx)。该第一解码器的多个输出(例如,图3D中的输出y41、y54、y860)可以分别连接到该多个第一数据选择器的第一输入(例如,图3C的选通输入端3142)。该多个第一数据选择器的第二输入(例如,图3C的输入端3144)可以是第二变量(例如,变量d)。该多个第一数据选择器的输出可以分别为与该索引值对应的该数组中的元素(例如,图3D中的输出vec[41]、vec[54]、vec[860])。
因此,第一数量可以远远小于第二数量。
在一些实施例中,仿真工具200基于该第一变量(例如,变量idx)的位宽(例如,6比特)可以确定该第一解码器(例如,图3D中的解码器322)的位宽(例如,6比特)。
在另一些实施例中,包括数组的电路描述可以包括将该数组赋给第三变量(例如,电路描述“out=vec[idx*13+41]”)。
基于该电路描述生成的目标电路(例如,图4的目标电路400)可以包括第二数据选择器(例如,图4中的数据选择器402)。该第二数据选择器包括第三输入(例如,图4中的选通输入端4022)和第一数量的多个(例如,64个)非第三输入(例如,图4中的X41、X54、X67、X860)。其中,该第二数据选择器的第三输入可以是该第一变量(例如,变量idx)。该第二数据选择器的多个非第三输入可以分别为与该索引值对应的该数组中的元素(例如,图4中的输入vec[41]、vec[54]、vec[67]、vec[860])。该第二数据选择器的输出可以为第三变量(例如,变量out),其中该第三变量可以由与该索引值对应的该数组中的元素确定(例如,元素vec[41]、vec[54]、vec[67]、vec[860])。
本公开还提供了一种生成电路的电子设备。该电子设备可以是图1所示的电子设备100。仿真工具200可以被配置为执行存储在存储器104中的计算机程序以实现与本公开一致的生成电路的方法,诸如上述示例性方法之一(例如,图5A中所示的方法500或图5B所示的方法510)。此处不再赘述。
本公开还提供了一种非暂态计算机可读存储介质。非暂态计算机可读存储介质存储计算机程序。当由仿真工具200执行时,计算机程序使调试工具实现与本公开一致的生成电路的方法,诸如上述示例性方法之一(例如,图5A中所示的方法500或图5B所示的方法510)。此处不再赘述。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述对本公开特定实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (8)
1.一种生成电路的方法,包括:
接收逻辑系统设计的描述;
在所述逻辑系统设计的描述中识别包括数组的电路描述,其中,所述数组的索引是包括第一变量的表达式;基于所述第一变量确定所述索引的第一数量的索引值;
根据所述第一数量的索引值生成与所述电路描述对应的目标电路,所述目标电路包括第一解码器和所述第一数量的多个第一数据选择器,所述第一解码器的输入是所述第一变量;
所述方法进一步包括:响应于所述电路描述包括向所述数组赋予数值,所述数值由第二变量确定,所述第一解码器的多个输出分别连接到所述多个第一数据选择器的第一输入,所述多个第一数据选择器的第二输入是所述第二变量,所述多个第一数据选择器的输出分别为与所述索引值对应的所述数组中的元素。
2.根据权利要求1所述的方法,其中,基于所述第一变量确定所述索引的第一数量的索引值进一步包括:
由编译器根据所述表达式基于所述第一变量计算所述索引值。
3.根据权利要求1或2任一项所述的方法,其中,在所述逻辑系统设计的描述中识别包括数组的电路描述进一步包括:
根据所述逻辑系统设计的描述生成原始电路,所述原始电路包括根据所述第一变量解码出第二数量的输出的第二解码器,以及第二数量的第一数据选择器,所述第二数量与所述表达式的位宽对应;
响应于所述原始电路中存在所述第二解码器,根据所述原始电路查找所述电路描述。
4.根据权利要求1所述的方法,其中,所述目标电路包括第一解码器和所述第一数量的多个第一数据选择器进一步包括:
基于所述第一变量的位宽确定所述第一解码器的位宽。
5.根据权利要求3所述的方法,其中,所述表达式包括所述第一变量的乘法运算。
6.根据权利要求5所述的方法,其中,所述原始电路进一步包括与所述表达式对应的子电路。
7.根据权利要求1所述的方法,进一步包括:
响应于所述电路描述包括将所述数组赋给第三变量,所述目标电路包括第二数据选择器,所述第二数据选择器包括第三输入和所述第一数量的多个非第三输入,其中,所述第三输入是所述第一变量,所述多个非第三输入分别为与所述索引值对应的所述数组中的元素;
所述第二数据选择器的输出为第三变量,其中所述第三变量由与所述索引值对应的所述数组中的所述元素确定。
8.一种生成电路的电子设备,包括:
存储器,用于存储一组指令;以及
至少一个处理器,配置为执行所述一组指令以使得所述电子设备执行如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210425352.6A CN115293076B (zh) | 2022-04-21 | 2022-04-21 | 生成电路的方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210425352.6A CN115293076B (zh) | 2022-04-21 | 2022-04-21 | 生成电路的方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115293076A CN115293076A (zh) | 2022-11-04 |
CN115293076B true CN115293076B (zh) | 2024-03-22 |
Family
ID=83820229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210425352.6A Active CN115293076B (zh) | 2022-04-21 | 2022-04-21 | 生成电路的方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115293076B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116738906B (zh) * | 2023-07-05 | 2024-04-19 | 芯华章智能科技(上海)有限公司 | 实现循环电路的方法、电路、装置和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1996039739A2 (en) * | 1995-06-02 | 1996-12-12 | Intermedics, Inc. | Hybrid analog-to-digital converter for low power applications, such as use in an implantable medical device |
US6504496B1 (en) * | 2001-04-10 | 2003-01-07 | Cirrus Logic, Inc. | Systems and methods for decoding compressed data |
US8595670B1 (en) * | 2010-03-08 | 2013-11-26 | Altera Corporation | Method and apparatus for circuit block reconfiguration EDA |
CN105589736A (zh) * | 2015-12-21 | 2016-05-18 | 西安电子科技大学 | 基于网表分割和多线程并行的硬件描述语言仿真加速方法 |
CN112632880A (zh) * | 2020-12-28 | 2021-04-09 | 芯华章科技股份有限公司 | 用于逻辑系统设计的编译方法、电子设备及存储介质 |
CN114329644A (zh) * | 2021-11-17 | 2022-04-12 | 芯华章科技股份有限公司 | 对逻辑系统设计进行加密仿真的方法、设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7804903B2 (en) * | 2005-06-27 | 2010-09-28 | Intel Corporation | Hardware-based CABAC decoder |
JP5842255B2 (ja) * | 2013-12-12 | 2016-01-13 | 国立大学法人東京工業大学 | プログラミング言語による論理回路記述から論理回路を生成するための装置及び方法 |
-
2022
- 2022-04-21 CN CN202210425352.6A patent/CN115293076B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1996039739A2 (en) * | 1995-06-02 | 1996-12-12 | Intermedics, Inc. | Hybrid analog-to-digital converter for low power applications, such as use in an implantable medical device |
US6504496B1 (en) * | 2001-04-10 | 2003-01-07 | Cirrus Logic, Inc. | Systems and methods for decoding compressed data |
US8595670B1 (en) * | 2010-03-08 | 2013-11-26 | Altera Corporation | Method and apparatus for circuit block reconfiguration EDA |
CN105589736A (zh) * | 2015-12-21 | 2016-05-18 | 西安电子科技大学 | 基于网表分割和多线程并行的硬件描述语言仿真加速方法 |
CN112632880A (zh) * | 2020-12-28 | 2021-04-09 | 芯华章科技股份有限公司 | 用于逻辑系统设计的编译方法、电子设备及存储介质 |
CN114329644A (zh) * | 2021-11-17 | 2022-04-12 | 芯华章科技股份有限公司 | 对逻辑系统设计进行加密仿真的方法、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
一种新的数组逻辑结构猜想方法;夏军, 戴华东, 杨学军;国防科技大学学报(第01期);29-35 * |
在PCB设计原理图中实现模糊搜索;白玫等;微计算机信息(第2期);246-248 * |
Also Published As
Publication number | Publication date |
---|---|
CN115293076A (zh) | 2022-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112632880B (zh) | 用于逻辑系统设计的编译方法、电子设备及存储介质 | |
CN112287569B (zh) | 用于仿真逻辑系统设计的方法、电子设备及存储介质 | |
US9558852B2 (en) | Method and apparatus for defect repair in NAND memory device | |
CN115293076B (zh) | 生成电路的方法、电子设备及存储介质 | |
CN116151179B (zh) | 芯片设计的布局规划方法及相关设备 | |
CN113742221A (zh) | 生成测试用例的方法、电子设备及存储介质 | |
CN112434478B (zh) | 仿真逻辑系统设计的虚拟接口的方法及相关设备 | |
CN113283203A (zh) | 用于仿真逻辑系统设计的方法、电子设备及存储介质 | |
US10133552B2 (en) | Data storage method, ternary inner product operation circuit, semiconductor device including the same, and ternary inner product arithmetic processing program | |
CN116822452A (zh) | 芯片布局优化方法及相关设备 | |
CN114548028B (zh) | 进行低功耗设计的方法、电子设备及存储介质 | |
CN115688643A (zh) | 仿真逻辑系统设计的方法、设备及存储介质 | |
CN114328062B (zh) | 校验缓存一致性的方法、装置和存储介质 | |
CN112232003B (zh) | 对设计进行仿真的方法、电子设备及存储介质 | |
CN115470737B (zh) | 生成数据流图的方法、电子设备及存储介质 | |
US9513903B2 (en) | Fault-tolerant system and fault-tolerant operating method capable of synthesizing result by at least two calculation modules | |
CN113760751A (zh) | 生成测试用例的方法、电子设备及存储介质 | |
CN112131806A (zh) | 验证设计的编译方法、电子设备及存储介质 | |
CN112580297B (zh) | 一种编解码数据的方法、电子设备及存储介质 | |
US20200410149A1 (en) | High-level synthesis apparatus, high-level synthesis method, and computer readable medium | |
US8108808B2 (en) | Description processing device, description processing method, and recording medium | |
CN115099176A (zh) | 优化电路的方法、电子设备及存储介质 | |
CN112989736B (zh) | 用于检测修改设计的错误实例的方法、设备及存储介质 | |
CN113238852B (zh) | 一种任务分配方法、装置、电子设备及存储介质 | |
CN114237578B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |