CN115563929A - 使用机器学习将芯片设计流程划分成子步骤 - Google Patents
使用机器学习将芯片设计流程划分成子步骤 Download PDFInfo
- Publication number
- CN115563929A CN115563929A CN202210788347.1A CN202210788347A CN115563929A CN 115563929 A CN115563929 A CN 115563929A CN 202210788347 A CN202210788347 A CN 202210788347A CN 115563929 A CN115563929 A CN 115563929A
- Authority
- CN
- China
- Prior art keywords
- sub
- design
- final
- designs
- steps
- 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.)
- Pending
Links
- 238000013461 design Methods 0.000 title claims abstract description 202
- 238000010801 machine learning Methods 0.000 title claims abstract description 35
- 238000000034 method Methods 0.000 claims abstract description 57
- 230000015654 memory Effects 0.000 claims description 17
- 230000008569 process Effects 0.000 description 33
- 230000006870 function Effects 0.000 description 25
- 238000012545 processing Methods 0.000 description 15
- 230000000875 corresponding effect Effects 0.000 description 13
- 238000003860 storage Methods 0.000 description 13
- 238000005457 optimization Methods 0.000 description 9
- 238000004519 manufacturing process Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000012795 verification Methods 0.000 description 7
- 238000013439 planning Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012938 design process Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013440 design planning Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/31—Design entry, e.g. editors specifically adapted for circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/27—Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
-
- 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/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/394—Routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/396—Clock trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Geometry (AREA)
- General Physics & Mathematics (AREA)
- Architecture (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开中的实施例涉及使用机器学习将芯片设计流程划分为子步骤。一种方法包括:通过基于第一多个输入执行第一子步骤来生成芯片的多个中间设计;将所述多个中间设计中的至少一个中间设计添加到第二多个输入;通过基于所述第二多个输入执行所述设计流程的步骤中的第二子步骤来生成多个最终设计;以及使用机器学习模型从所述多个最终设计中选择最终设计。第一子步骤是设计流程的步骤的子步骤,并且第一多个输入对应于与第一子步骤相关联的输入参数。
Description
相关申请
本申请根据35 U.S.C.§119(e)要求于2021年7月2日提交的美国临时专利申请No.63/218,011的权益,出于所有目的将其全文通过引用并入本文。
技术领域
本公开涉及芯片设计。更具体地,本公开涉及使用流程切片(flow-slicing)的芯片设计。
背景技术
集成电路(IC)设计流程通常包括设计者可以作出设计选择的许多阶段。示例包括但不限于:芯片尺寸、芯片纵横比、引脚布局、宏布局、电源分布、设计流程、定时余量和设计工具设置。每个设计选择是可能影响IC的最终设计的结果质量(QoR)的输入。
发明内容
在一些方面,一种方法包括:基于第一多个输入,通过执行第一子步骤来生成针对芯片的多个中间设计;将多个中间设计中的至少一个中间设计添加到第二多个输入;基于第二多个输入,通过执行设计流程的步骤中的第二子步骤来生成多个最终设计;以及使用机器学习模型从多个最终设计中选择最终设计。第一子步骤是设计流程的步骤的子步骤,并且第一多个输入对应于与第一子步骤相关联的输入参数。
在一些方面中,一种系统包括存储指令的存储器以及与该存储器耦合并执行该指令的处理器。所述指令在被执行时使处理器:基于第一多个输入,通过执行设计流程的第一子步骤来生成针对芯片的多个中间设计,将多个中间设计中的至少一个中间设计添加到第二多个输入,基于第二多个输入,通过执行设计流程的步骤的第二子步骤来生成多个最终设计,并且使用机器学习模型从多个最终设计中选择最终设计。第一子步骤是设计流程的步骤的子步骤,并且第一多个输入对应于与第一子步骤相关联的输入参数。
附图说明
从以下给出的详细描述和从本公开的实施例的附图将更全面地理解本公开。附图用于提供对本公开的实施例的知识和理解,而不将本公开的范围限于这些特定实施例。此外,附图不一定按比例绘制。
图1是示出根据本公开的实施例的具有流程切片的流程优化过程的示意图。
图2是根据本公开的实施例的流程切片方法的流程图。
图3是根据本公开的实施例的设计流程方法的流程图。
图4示出根据本发明实施例的在集成电路的设计和制造期间使用的各种过程的流程图。
图5示出了本公开的实施例可以在其中操作的示例计算机系统的框图。
具体实施方式
本发明的各方面涉及使用机器学习将芯片设计流程划分成子步骤。
对于芯片的设计流程,存在许多可能的可变输入(例如,芯片尺寸、芯片纵横比、引脚布置、宏布局、电源分布、设计流程、时序容限),并且每一输入影响最终芯片的质量(QoR)。输入(可变输入)可以被称为置换子(permutons)。在一些方面中,整个设计流程上的所有输入的并集表示总设计搜索空间(即,全设计搜索空间)。总的设计搜索空间是巨大的(10^12个可能的组合并不罕见)。因此,穷尽地搜索整个设计搜索空间是不切实际的。搜索系统可以使用机器学习(ML)。例如,搜索系统可以是用于芯片设计的自主人工智能应用或工具(例如,来自SYNOPSYS的DSO.aiTM),以使输入的选择自动化并提高QoR,但ML需要奖励函数(或称“回报函数”,reward function)。奖励函数需要运行设计流程,并且设计流程需要花费很长时间来执行,即使具有最佳输入选择。单个搜索可以被称为“会话”。
不幸的是,奖励函数仅能在整个设计流程结束时被准确地测量,并且设计流程要花费很长的时间来执行。一些输入选择降低QoR并且显著增加运行时间。增加的运行时间通常在详细的布线中发生并减慢整个搜索过程。搜索系统依赖于以及时的方式完成的试用工作,以便它可以从它们中学习。当工作在布线中繁忙时,搜索系统被剥夺有用的信息,并且整个搜索的最终QoR可能因此而受损。
在一些实施例中,使用“流程切片(flow-slicing)”过程。利用流程切片,整个设计流程被切片(划分)为子步骤。总设计搜索空间还被划分为子空间,其中每个子空间被选择(即,被选定)以匹配每个流程子步骤。较小的子空间(与整个设计搜索空间相比)减少了在每个流程子步骤搜索的计算需求。运行每个子步骤比运行整个设计流程更快,从而给予设计者快速的中间结果。当子步骤接近完成时,ML被用于选择最高多样性的设计结果并且动态地开始下一个子步骤(即,后续子步骤)。这允许子步骤执行的重叠、加速运行时间。
可以使用多个独立的ML方法来选择最高的多样性结果。用户可以自由地明确指定使用一个或多个ML方法,但是搜索系统也提供智能默认方法。因此,可以向用户呈现一个或多个ML方法以从中进行选择。这些最高多样性设计结果变为设计视图置换(DVP)的值,并且被添加到下一流程子步骤的搜索空间。用户还可以自由地从并行运行的多个会话中选择最高多样性的设计结果,并且用户可以自由地在执行搜索时动态地改变子步骤。
在一些实施例中,流程切片过程将复杂的设计流程划分为子步骤,并且针对每个子步骤优化适当的输入子空间。在每个子步骤计算中间奖励函数。中间奖励驱动用于该子步骤的子空间的ML优化。子步骤以动态和重叠的方式顺序地链接在一起以完成整个设计流程。
ML还被用于在每个子步骤中选择最高多样性的中间设计。可以从并行运行的多个会话中选择中间设计。中间设计被自动添加到下一子步骤的输入子空间,并且被用作下一子步骤的输入设计。子步骤被顺序地自动链接在一起以完成整个设计流程的优化。一旦从先前的子步骤得到结果,就可以开始子步骤的优化。这种子步骤的动态重叠优化减少了运行时间。
通过将多个最高多样性的设计从每个子步骤向前传递到随后的子步骤,ML引擎可以采样各种不同的设计实现,而不必一次搜索整个输入空间。DVP多样性减轻了子步骤之间的错误相关性,并且显著地改善了最终QoR。
流程切片工艺非常灵活。也就是说,它支持无限数目的流程子步骤、用户定义的或完全自动化的中间奖励函数、以及用户定义的或完全自动化的中间设计选择。要向前传递的最高多样性设计的选择可以在子步骤之间被动态地调整。设计可以从并行运行的多个会话被向前传递。用户可以动态地改变子步骤定义。该系统还允许最终的流程结束奖励函数来驱动较早的流程子步骤的ML优化。
本公开的技术优点包括但不限于更快的运行时间、更少的计算资源的使用、更好的QoR和中间ML级别设计。更快的运行时间和更小的计算也使得设计者能够搜索更大的输入空间。在一些实施例中,流程切片提供了用于在子步骤中优化设计流程的容易使用、高效并且灵活的过程。如上所述,在单程(耗时的程)中优化整个设计流程具有许多缺点。缺点包括但不限于极长的运行时间、较大的ML计算要求和较差的最终结果。在一个或多个实施例中,流程切片克服了这些问题。
如前所述,整个设计流程被分为子步骤。同样,整个设计搜索空间被分为子空间。每个流程子步骤具有对应的子空间。对应的子空间包括影响流程子步骤的输入。例如,整个设计流程可以被分为三个子步骤:布局、时钟和布线。布局子步骤可以探索影响布局的输入的子空间。时钟子步骤可以探索影响时钟树合成的输入的子空间。布线子步骤可以探索影响布线和布线后优化的输入子空间。
在一些实施例中,搜索系统单独地和顺序地执行每个流程子步骤,并且使用ML来优化子空间。ML模型由适合于流程的每个子步骤的中间奖励函数驱动。例如,如果正在执行的子步骤是适当的,则中间奖励函数可以是包括总负松弛(negative slack)、布线拥塞、裸片尺寸和泄漏功率(leakage power)的合计设计得分(ADES)。因为设计还没有布线就位,所以布线设计规则检查(DRC)没有被包括在中间奖励函数中。
当优化每个流程子步骤时,搜索系统存储基于中间奖励函数的多样性设计。多个独立的奖励函数可以被使用来选择哪些设计被存储。因为中间奖励函数与流程结束时的奖励函数不完全相关,所以存储了多种不同的最佳设计。每个最佳设计被视为DVP的单个值。来自每个流程子步骤的DVP成为用于下一流程子步骤的输入搜索空间的一部分。与其它输入一样,搜索系统在下一流程子步骤结束时自动学习哪些DVP产生最佳QoR。该过程顺序地重复,直到整个设计流程被优化。如上所述,任何数目的DVP值可以从任何子步骤向前传递到随后的子步骤。用户能够在搜索期间动态地改变子步骤定义,并且在下一子步骤的优化开始之前可以不必完成子步骤。子空间、中间奖励函数和DVP也全部都可以由搜索系统自动选择。
图1是示出根据本公开的实施例的具有流程切片的流程优化过程100的示意图。设计流程可以被分为子步骤或阶段。例如,设计流程可以被分为N个阶段。作为示例,图1示出了流程阶段1(106a、106b、106c)和流程阶段N(112a、112b、112c)。
在一些方面,设计流程可以与物理实现相关联。在一些方面,设计流程可以与物理实现的布局和布线过程相关联。第一阶段(即,第一子步骤)可以对应于布局。第二级可以对应于时钟,第三级可以对应于布线。在另一示例中,布局规划(floor planning)阶段可以在布局阶段(place stage)之前被添加。这些阶段还可以包括电源规划阶段和/或后布线阶段。用户可以提供不同的阶段。例如,用户可以选择将布局阶段、时钟阶段或布局阶段中的每一个划分为另外的子步骤或阶段。
如前所述,设计搜索空间被分为子空间。每个设计搜索子空间包括仅影响该流程子步骤的输入参数。例如,对于布局阶段,输入可以包括初始设计、执行放置或布局阶段流程的一个或多个步骤,以及置换子。置换子可以包括ML引擎116的输入。例如,流程阶段1(106a、106b、106c)可以具有对应的子空间102,而流程阶段N(112a、112b、112c)可以具有对应的子空间104。流程阶段N的子空间104可以包括来自前一子阶段的中间设计。
在一些实施例中,用于时钟级的输入可以包括来自前一阶段(例如,布局阶段)的设计(中间设计或DVP)、用于时钟的流程脚本,以及用于时钟级的置换子。楼层规划阶段的输入可以包括置换子和初始设计。用于楼层规划阶段的置换子可以包括裸片尺寸(芯片尺寸)、芯片的纵横比(例如,正方形、L形),引脚围绕芯片边缘的布局。
在一些方面中,可以并行执行多个运行。例如,可以并行执行N次运行。每次运行可以具有不同的一组输入。如前所述,每个流程阶段可以具有对应的子空间。用于第一流程阶段(例如流程阶段106a、流程阶段106b、流程阶段106c)的每一运行的输入可以从子空间102中被选择。用于流程阶段N(例如流程阶段112a、流程阶段112b、流程阶段112c)的每一运行的输入可以从子空间104中被选择。
每个流程子步骤产生中间设计和中间奖励(IR)。例如,第一流程阶段的第一运行106a可以产生中间设计108a和中间奖励110a。类似地,第二运行产生中间设计108b和中间奖励110b,而第N运行产生中间设计108c和中间奖励110c。ML引擎116评估所有IR(110a、110b和110c)并且使用它们来优化该子步骤的子空间(即,子空间102)。ML引擎116可以分析IR、识别来自子空间102的最佳输入参数、识别一个或多个中间设计,并且将所识别的中间设计添加到下一阶段(即,后续子阶段)的搜索空间。中间设计作为DVP值被添加到下一流程子步骤的子空间。可以基于相应IR的值来识别中间设计。该链连续地继续,直到完成整个设计流程并且知道最终的奖励函数。例如,流程阶段N(例如,流程阶段112a、流程阶段112b、流程阶段112c)可以产生最终设计和最终奖励(114a、114b和114c)。最终设计和最终奖励被传递到ML引擎116以选择芯片的最终设计。例如,一旦已经优化了整个设计流程,搜索系统就具有使用最终奖励函数通过以最终奖励开始并通过设计流程向后跟踪来优化早期流程子步骤的能力。可以基于最终奖励函数来优化子阶段的子空间。例如,可以基于最终奖励(114a、114b、114c)来优化与流程阶段1到流程阶段N相关联的子空间。优化子空间可以包括从子空间识别最佳输入参数。这提供了在搜索效率和由系统生成的最终设计的功率、性能和面积方面的改进的优点。
图2示出了根据本公开的实施例的流程切片方法200的流程图。在205,将设计流程划分为子步骤,并且将用于芯片设计流程的输入空间划分为用于子步骤的输入子空间。子步骤可以具有序列/顺序(例如,布局、时钟和布线)。
在210,将在205中确定的序列中的第一子步骤设置为当前子步骤。例如,可以将布局设置为当前子步骤。
在215,从针对当前子步骤的输入子空间中选择多组输入。如前所述,当前子步骤的子空间或设计搜索子空间包括可能影响子阶段的输入。
在220,确定当前子步骤是否是子步骤序列中的最后(或最终)子步骤。响应于确定当前子步骤是序列的最后子步骤,过程进行到245(即,导致220中的“是”)。响应于确定当前子步骤不是序列的最后子步骤(即,在220中导致“否”),过程进行到225。
在225,基于所选择的输入组,通过执行当前子步骤来生成多个中间设计(即,在子步骤之后获得的设计,也可以被称为多个中间芯片设计)。具体地,可以针对一组输入执行当前子步骤的一次运行,可以针对第二组输入执行当前子步骤的第二运行,等等。这些运行可以被并行执行。
在230,计算针对多个中间设计的中间奖励。可以使用特定于当前子步骤的奖励函数来计算中间奖励中的至少一个中间奖励。例如,在布局子阶段之后,可以将芯片运行速度的估计馈送到奖励函数。
在235,机器学习引擎(例如,ML优化器,例如,执行一个或多个机器学习操作的处理器)分析中间奖励并且将一个或多个中间设计添加到对应于下一子步骤的输入子空间。例如,如果当前子步骤是子步骤k,则将一个或多个中间设计添加到子步骤k+1的输入子空间。添加到子步骤k+1的输入子空间的中间设计稍后可用作k+1子步骤的输入。
在240,序列中的下一子步骤被认为是当前子步骤。例如,如果在执行240之前,当前子步骤是子步骤j,则在执行步骤240之后,当前子步骤被认为是子步骤j+1。然后,过程进行到215和220。
在245处,基于所选择的输入集,通过执行当前子步骤(例如,最终子步骤)来产生多个最终设计(或多个最终芯片设计)。具体地,可以针对一组输入执行当前子步骤的一次运行,可以针对第二组输入执行当前子步骤的第二运行,等等。这些运行可以被并行执行。
在250,计算针对多个最终芯片设计的最终奖励。可以使用特定于当前子步骤的奖励函数来计算最终奖励中的至少一个最终奖励。例如,可以将芯片的准确频率馈送到奖励频率。
在255,ML引擎分析最终奖励并且选择芯片设计中的至少一个芯片设计。
图3是根据本公开的实施例的设计流程方法300的流程图。
在305中,可以基于第一多个输入来产生针对芯片的多个中间设计。例如,可以通过执行设计流程的第一子步骤来生成多个中间设计。第一子步骤可以通过将设计流程划分为包括第一子步骤和第二子步骤的多个子步骤来获得。在一些方面,用于设计流程的输入空间被分为多个输入子空间,该输入子空间包括第一子空间(对应于第一子步骤)和第二子空间(对应于第二子步骤)。
在310中,将多个中间设计中的至少一个中间设计添加到第二多个输入。例如,确定针对多个中间设计的多个中间奖励,并且基于多个中间奖励来选择至少一个中间设计。
在一些方面,基于所估计的度量来确定所述多个中间奖励。所估计的度量可以指示多个中间设计中的每个中间设计的性能。
在315中,基于第二多个输入,通过执行第二子步骤来生成多个最终设计。在一些方面中,对应于多个最终设计的多个最终奖励可以被确定。
在320中,可以使用机器学习模型从多个最终设计中选择最终设计。在一些方面,基于多个最终奖励来选择最终设计。
表1示出了根据本公开的实施例的具有和不具有流程切片的设计的示例性测试结果。与使用流程切片的设计相对应的结果示出了更好的QoR并且在大约一半的运行时间内实现。流程切片使总体设计评分(ADES)提高了约36%,总负松弛(TNS)提高了约18%,总布线DRC提高了约22%,标准单元面积提高了约1.3%。
表1:示例性结果
图4示出了在诸如集成电路的制品的设计、验证和制造期间使用以变换和验证表示集成电路的设计数据和指令的一组示例性过程400。这些过程中的每一个都可以被构造和实现为多个模块或操作。术语“EDA”表示术语“电子设计自动化”。这些过程开始于创建具有由设计者提供的信息的产品概念410,该信息被变换以创建使用一组EDA过程412的制品。当设计被完成时,设计下线(taped-out)434,这是当集成电路的图形(例如,几何图案)被发送到制造设备以制造掩模组时,其然后被用于制造集成电路。在下线之后,制造436半导体裸片,并且执行封装和组装工艺438以产生完成的集成电路440。
电路或电子结构的规格范围可以从低级晶体管材料布局到高级描述语言。使用诸如VHDL、Verilog、SystemVerilog、SystemC,MyHDL或OpenVera的硬件描述语言(“HDL”),高级表示可用于设计电路和系统。HDL描述可以被变换为逻辑级寄存器传送级(“RTL”)描述、门级描述、布局级描述或掩模级描述。作为更详细描述的每个较低表示级别将更有用的细节添加到设计描述中,例如,包括该描述的模块的更多细节。更详细描述的较低层表示可以由计算机生成、从设计库导出、或由另一设计自动化过程创建。用于指定更详细描述的较低级表示语言的规范语言的示例是SPICE,其用于具有许多模拟组件的电路的详细描述。在每个表示级别的描述能够由该层的对应系统(例如,形式验证系统)使用。设计过程可以使用图4所示的顺序。所描述的过程可以由EDA产品(或EDA系统)实现。
在系统设计414期间,指定待制造的集成电路的功能性。可以针对诸如功耗、性能、面积(物理和/或代码行)和成本降低等期望特性来优化设计。在此阶段可以将设计划分为不同类型的模块或组件。
在逻辑设计和功能验证416期间,以一个或多个描述语言指定电路中的模块或组件,并且检查规范的功能准确性。例如,可以验证电路的组件以产生与所设计的电路或系统的规范要求相匹配的输出。功能验证可以使用模拟器和其他程序,例如测试台发生器(testbench generator)、静态HDL检验器和正式验证器(formal verifier)。在一些实施例中,被称为“仿真器”或“原型系统”的组件的特定系统被用于加速功能验证。
在测试的合成和设计418期间,HDL代码被变换为网表。在一些实施例中,网表可以是图形结构,其中图形结构的边缘表示电路的组件,而图形结构的节点表示组件如何互连。HDL代码和网表两者都是可由EDA产品用来验证集成电路在制造时按照指定的设计执行的分级制品。可以针对目标半导体制造技术优化网表。此外,可以测试完成的集成电路以验证该集成电路满足规范的要求。
在网表验证420期间,检查网表是否符合定时约束以及是否符合HDL代码。在设计规划422期间,为定时和顶层布线构造和分析集成电路的整个平面布置图。
在布局或物理实现424期间,发生物理布局(诸如晶体管或电容器的电路组件的定位)和布线(通过多个导体连接电路组件),并且可以执行从库中选择单元以启用特定逻辑功能。如本文中所使用,术语“单元”可以指代提供布尔逻辑功能(例如,AND、OR、NOT、XOR)或存储功能(例如,触发器或锁存器)的一组晶体管,其它组件及互连。如这里所使用的,电路“块”可以指两个或更多个单元。单元和电路块都可以被称为模块或组件,并且被实现为物理结构和模拟。为选定的电池指定参数(基于“标准电池”),例如尺寸,并且使其可在数据库中被访问以供EDA产品使用。
在分析和提取426期间,在布局级验证电路功能,这允许改进布局设计。在物理检验428期间,检查布局设计以确保制造约束是正确的,例如DRC约束、电约束、光刻约束,并且电路功能与HDL设计规范匹配。在分辨率增强430期间,变换布局的几何形状以改进如何制造电路设计。
在下线(tape-out)期间,创建数据以用于(如果适当的话,在应用光刻增强之后)生产光刻掩模。在掩模数据准备432期间,“下线”数据被用于产生光刻掩模,该光刻掩模用于产生最终的集成电路。
计算机系统(例如图5的计算机系统500)的存储子系统可用于存储通过本文所述的EDA产品和用于开发库(library)的单元和用于使用库的物理和逻辑设计的产品中的一些或全部而被使用的程序和数据结构。
图5示出了计算机系统500的示例机器,在该机器内可以执行用于使该机器执行在此讨论的任何一个或多个方法的一组指令。在备选实现中,机器可以连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。该机器可以在客户端-服务器网络环境中的服务器或客户端机器的能力下操作,作为对等(或分布式)网络环境中的对等机器,或者作为云计算基础设施或环境中的服务器或客户端机器。
该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或网桥,或能够执行指定该机器要采取的动作的一组指令(顺序的或其它的)的任何机器。此外,虽然示出了单个机器,但是术语“机器”还应当被理解为包括单独地或联合地执行一组(或多组)指令以执行在此讨论的任何一个或多个方法的机器的任何集合。
示例计算机系统500包括经由总线530彼此通信的处理设备502、主存储器504(例如,只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)的动态随机存取存储器(DRAM)、静态存储器506(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储设备518。
处理设备502表示一个或多个处理器,例如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其它指令集的处理器、或实现指令集组合的处理器。处理设备502还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备502可以被配置为执行用于执行这里描述的操作和步骤的指令526。
计算机系统500还可以包括通过网络520进行通信的网络接口设备508。计算机系统500还可以包括视频显示单元510(例如液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备512(例如键盘)、光标控制设备514(例如鼠标)、图形处理单元522,信号生成设备516(例如扬声器)、图形处理单元522、视频处理单元528和音频处理单元532。
数据存储设备518可以包括机器可读存储介质524(也被称为非暂态计算机可读介质),在该介质上存储了体现这里描述的任何一个或多个方法或功能的一组或多组指令526或软件。在计算机系统500执行指令526期间,指令526也可以完全或至少部分地驻留在主存储器504内和/或处理设备502内,主存储器504和处理设备502也构成机器可读存储介质。
在一些实现中,指令526包括实现对应于本公开的功能的指令。虽然机器可读存储介质524在示例实现中示出为单个介质,但是术语“机器可读存储介质”应当被理解为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“机器可读存储介质”还应当被理解为包括能够存储或编码用于由机器执行的指令集并且使得机器和处理设备502执行本公开的任何一个或多个方法的任何介质。因此,术语“机器可读存储介质”应被理解为包括但不限于固态存储器、光学介质和磁性介质。
前面的详细描述的某些部分是根据对计算机存储器内的数据比特的操作的算法和符号表示来呈现的。这些算法描述和表示是数据处理领域的技术人员用来最有效地将他们工作的实质传达给本领域的其他技术人员的方式。算法可以是导致期望结果的操作序列。这些操作是需要物理量的物理操纵的那些操作。这些量可以采取能够被存储、组合、比较和以其他方式操纵的电或磁信号的形式。这样的信号可以被称为比特、值、元素、符号、字符、项、数字等。
然而,应当记住,所有这些和类似的术语将与适当的物理量相关联,并且仅仅是应用于这些量的方便标记。除非特别声明,否则如从本公开显而易见的,应当理解,在整个说明书中,某些术语是指计算机系统或类似的电子计算设备的动作和过程,其将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和转换为类似地表示为计算机系统存储器或寄存器或其他这样的信息存储设备内的物理量的其他数据。
本公开还涉及一种用于执行这里的操作的装置。该装置可以为了预期目的而专门配置,或者它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的计算机。这样的计算机程序可以存储在计算机可读存储介质中,例如但不限于,包括软盘、光盘、CD-ROM和磁光盘的任何类型的盘,只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或者适合于存储电子指令的任何类型的介质,各自耦合到计算机系统总线。
这里给出的算法和显示并不固有地涉及任何特定的计算机或其它装置。根据这里的教导,各种其它系统可以与程序一起使用,或者可以证明构造更专用的装置来执行该方法是方便的。此外,不参考任何特定编程语言来描述本公开。应理解,可以使用多种编程语言来实施本文所描述的本发明的教示。
本公开可以被提供为计算机程序产品或软件,其可以包括其上存储有指令的机器可读介质,所述指令可以被用于对计算机系统(或其他电子设备)编程以执行根据本公开的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备等。
在前述公开中,已经参考其特定示例实现描述了本公开的实现。显然,在不脱离如以下权利要求中阐述的本公开的实现的更宽精神和范围的情况下,可以对其进行各种修改。在本公开以单数形式提及一些元件的情况下,可以在附图中示出多于一个元件,并且相同的元件用相同的数字标记。因此,本公开和附图被认为是说明性的而不是限制性的。
Claims (20)
1.一种方法,包括:
基于第一多个输入,通过执行第一子步骤来生成针对芯片的多个中间设计,其中所述第一子步骤是设计流程的步骤的子步骤,并且所述第一多个输入对应于与所述第一子步骤相关联的输入参数;
由处理器将所述多个中间设计中的至少一个中间设计添加到第二多个输入;
基于所述第二多个输入,由所述处理器通过执行所述设计流程的所述步骤的第二子步骤来生成多个最终设计;以及
由所述处理器使用机器学习模型从所述多个最终设计中选择最终设计。
2.根据权利要求1所述的方法,还包括:
将所述设计流程的所述步骤划分为多个子步骤,所述多个子步骤包括所述第一子步骤和所述第二子步骤;以及
将用于所述设计流程的输入空间划分为多个输入子空间,所述多个输入子空间包括第一输入子空间和第二输入子空间。
3.根据权利要求1所述的方法,还包括:
确定针对所述多个中间设计的多个中间奖励;以及
基于所述多个中间奖励,选择所述至少一个中间设计。
4.根据权利要求3所述的方法,还包括:
估计指示所述多个中间设计中的每个中间设计的性能的度量;以及
基于估计的所述度量来确定所述多个中间奖励。
5.根据权利要求1所述的方法,还包括:
计算对应于所述多个最终设计的多个最终奖励;以及
基于所述多个最终奖励来选择所述最终设计。
6.根据权利要求1所述的方法,其中所述第一多个输入来自对应于所述第一子步骤的第一输入子空间。
7.根据权利要求1所述的方法,其中所述设计流程是物理实现流程,并且其中所述第一子步骤是布局、时钟或布线。
8.一种系统,包括:
存储指令的存储器;以及
处理器,所述处理器与所述存储器耦合并且执行所述指令,所述指令在被执行时使所述处理器:
基于第一多个输入,通过执行设计流程的第一子步骤来生成针对芯片的多个中间设计,其中所述第一子步骤是设计流程的步骤的子步骤,并且所述第一多个输入对应于与所述第一子步骤相关联的输入参数;
将所述多个中间设计中的至少一个中间设计添加到第二多个输入;
基于所述第二多个输入,通过执行所述设计流程的所述步骤的第二子步骤来生成多个最终设计;以及
使用机器学习模型从所述多个最终设计中选择最终设计。
9.根据权利要求8所述的系统,其中所述处理器还被配置为:
将所述设计流程的所述步骤划分为多个子步骤,所述多个子步骤包括所述第一子步骤和所述第二子步骤;以及
将用于所述设计流程的输入空间划分为多个输入子空间,所述多个输入子空间包括第一输入子空间和第二输入子空间。
10.根据权利要求8所述的系统,其中所述处理器还被配置为:
确定针对所述多个中间设计的多个中间奖励;以及
基于所述多个中间奖励,选择所述至少一个中间设计。
11.根据权利要求9所述的系统,其中所述处理器还被配置为:
估计指示所述多个中间设计中的每个中间设计的性能的度量;以及
基于估计的所述度量来确定所述多个中间奖励。
12.根据权利要求8所述的系统,其中所述处理器还被配置为:
计算对应于所述多个最终设计的多个最终奖励;以及
基于所述多个最终奖励来选择所述最终设计。
13.根据权利要求8所述的系统,其中所述第一多个输入来自对应于所述第一子步骤的第一输入子空间。
14.根据权利要求8所述的系统,其中所述设计流程是物理实现流程,并且其中所述第一子步骤是布局、时钟或布线。
15.一种非暂态计算机可读介质,包括被存储的指令,所述指令在由处理器执行时使所述处理器:
将针对芯片的设计流程的步骤划分为多个子步骤;
将用于所述设计流程的输入空间划分为多个输入子空间,其中每个输入子空间对应于所述多个子步骤中的子步骤;
基于从对应的输入子空间中所选择的第一多个输入,通过执行所述多个子步骤中的子步骤来生成针对所述芯片的多个中间设计;
使用机器学习模型从所述多个中间设计中选择中间设计;以及
使用所述机器学习模型至少基于所述中间设计来选择针对所述芯片的最终设计。
16.根据权利要求15所述的非暂态计算机可读介质,其中所述处理器还被配置为:
确定针对所述多个中间设计的多个中间奖励;以及
基于所述多个中间奖励来选择所述中间设计。
17.根据权利要求16所述的非暂态计算机可读介质,其中所述处理器还被配置为:
估计指示所述多个中间设计中的每个中间设计的性能的度量;以及
基于所估计的所述度量来确定所述多个中间奖励。
18.根据权利要求15所述的非暂态计算机可读介质,其中所述多个子步骤是按顺序的,并且其中所述处理器还被配置为:
通过执行所述多个子步骤中的最后子步骤来生成多个最终设计;
计算对应于所述多个最终设计的多个最终奖励;以及
基于所述多个最终奖励来选择所述最终设计。
19.根据权利要求18所述的非暂态计算机可读介质,其中所述处理器还被配置为:
基于所述多个最终奖励从所述多个输入子空间中识别输入子空间。
20.根据权利要求15所述的非暂态计算机可读介质,其中所述处理器还被配置为:
针对所述多个子步骤中的每个子步骤执行多个运行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163218011P | 2021-07-02 | 2021-07-02 | |
US63/218,011 | 2021-07-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115563929A true CN115563929A (zh) | 2023-01-03 |
Family
ID=84739130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210788347.1A Pending CN115563929A (zh) | 2021-07-02 | 2022-07-04 | 使用机器学习将芯片设计流程划分成子步骤 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230004698A1 (zh) |
CN (1) | CN115563929A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116596476A (zh) * | 2023-05-24 | 2023-08-15 | 芯耀辉科技有限公司 | 用于芯片设计制造中项目自动授权的方法、设备及介质 |
-
2022
- 2022-07-04 CN CN202210788347.1A patent/CN115563929A/zh active Pending
- 2022-07-05 US US17/857,737 patent/US20230004698A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116596476A (zh) * | 2023-05-24 | 2023-08-15 | 芯耀辉科技有限公司 | 用于芯片设计制造中项目自动授权的方法、设备及介质 |
CN116596476B (zh) * | 2023-05-24 | 2023-10-20 | 芯耀辉科技有限公司 | 用于芯片设计制造中项目自动授权的方法、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US20230004698A1 (en) | 2023-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11256845B2 (en) | Machine-learning driven prediction in integrated circuit design | |
US11836425B2 (en) | Engineering change orders with consideration of adversely affected constraints | |
US11994979B2 (en) | Smart regression test selection for software development | |
US20220300688A1 (en) | Fast synthesis of logical circuit design with predictive timing | |
US11694016B2 (en) | Fast topology bus router for interconnect planning | |
US20220138496A1 (en) | Power estimation using input vectors and deep recurrent neural networks | |
CN115563929A (zh) | 使用机器学习将芯片设计流程划分成子步骤 | |
US20220391566A1 (en) | Machine learning models for predicting detailed routing topology and track usage for accurate resistance and capacitance estimation for electronic circuit designs | |
US11836433B2 (en) | Memory instance reconfiguration using super leaf cells | |
CN116611386A (zh) | 将局部穿线电阻变换成全局分布电阻 | |
US20220058328A1 (en) | Synthesis placement bounds based on physical timing analysis | |
US11797735B1 (en) | Regression testing based on overall confidence estimating | |
US11120184B2 (en) | Satisfiability sweeping for synthesis | |
US11231462B1 (en) | Augmenting an integrated circuit (IC) design simulation model to improve performance during verification | |
CN115587560A (zh) | 用于分布式引擎的运行时和存储器高效的属性查询处理 | |
US12014127B2 (en) | Transforming a logical netlist into a hierarchical parasitic netlist | |
US20240232486A1 (en) | Using surrogate netlists for variation analysis of process variations | |
US11829692B1 (en) | Machine-learning-based design-for-test (DFT) recommendation system for improving automatic test pattern generation (ATPG) quality of results (QOR) | |
US11222154B2 (en) | State table complexity reduction in a hierarchical verification flow | |
US20230359796A1 (en) | Determining aging effects for a circuit design | |
US20240078366A1 (en) | Circuit design adjustments using redundant nodes | |
US20230072923A1 (en) | Supervised machine learning based memory and runtime prediction using design and auxiliary constructs | |
US20230315967A1 (en) | Color graph reduction on a line of connected structures | |
US20230376670A1 (en) | Circuit design having an improved clock tree | |
US20230017872A1 (en) | Optimization of alternating büchi automata for formal verification of a circuit design |
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 |