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

使用神经网络生成集成电路布局的制作方法

2022-11-09 22:59:20 来源:中国专利 TAG:

使用神经网络生成集成电路布局
1.相关申请的交叉引用
2.本技术要求于2020年4月22日提交的美国专利申请no.63/014,021的优先权,通过引用将其全部内容合并于此。
技术领域
3.本说明书涉及将神经网络用于电子设计自动化,更具体而言,用于生成计算机芯片布局。


背景技术:

4.计算机芯片布局是计算机芯片的一部分或全部电路在计算机芯片表面(即芯片区域)上的布局的示意性表示。
5.神经网络是采用一层或多层非线性单元对于接收的输入预测输出的机器学习模型。一些神经网络除了输出层之外还包括一个或多个隐藏层。每个隐藏层的输出用作网络中下一层(即下一隐藏层或输出层)的输入。网络的每一层根据相应参数集的当前值从接收的输入生成输出。


技术实现要素:

6.本说明书描述一种在一个或多个位置的一个或多个计算机上实现为计算机程序的系统,该系统生成集成电路的芯片布局。在本说明书中,将生成芯片布局的集成电路称为“计算机芯片”,但是通常应当理解为表示在一块半导体材料上制造的任何电子电路的集合。芯片布局将节点的网表中的每个节点放置在计算机芯片表面的相应位置处。
7.可以实现本说明书所述主题的特定实施例,从而实现以下优点中的一个或多个。
8.布局规划是芯片设计过程中的关键步骤,涉及将芯片的组件放置在芯片的表面上。组件的布局应当优化诸如面积、总导线长度和拥塞这样的指标。如果布局规划关于这些指标表现不佳,则基于布局规划生成的集成电路芯片将表现不佳。例如,集成电路芯片可能无法工作,可能消耗过多的功率,可能具有不可接受的延迟,或者具有由于芯片上组件的不良布置所致的各种其他不期望特性中的任何一种。
9.所述技术允许通过使用所述节点布局神经网络和所述训练技术来自动生成高质量的芯片布局规划,并具有最少的用户参与。作为特定示例,当采用分布式训练时,可以在几个小时内生成高质量(即超过人工)的布局,无需任何人工专家参与。
10.与所述系统不同,传统的布局规划解决方案采用需要大量人员参与的长达数周的过程。因为潜在节点布局组合的巨大空间,传统的自动化方法无法在不消耗过多的计算能力和挂钟时间、不需要人工专家参与、或两者皆非的情况下可靠地生成高质量的布局规划。然而,通过有效地利用强化学习来训练所述节点布局神经网络,所述技术能够快速地生成高质量的布局规划。
11.此外,与通过常规方法生产的集成电路芯片相比,使用该方法生产的集成电路芯
片可以具有更低的功耗。对于给定的表面积,它还可以具有更高的计算能力,或者从另一个角度来看,对于给定的计算能力量,它可以使用更少的资源来产生。
12.此外,当如本说明书所述进行训练时,即当编码器神经网络通过监督的学习进行训练并且策略神经网络通过强化学习进行训练时,所述节点布局神经网络可以被快速推广到新的网表和新的集成电路芯片维度。这大大减少了为新网表生成布局所需的计算资源量,因为生成新网表的高质量布局规划几乎不需要在计算上花费巨大的微调。
13.本说明书所述主题的一个或多个实施例的细节在以下附图和描述中给出。根据说明书、附图和权利要求,本主题的其他特征、方面和优点将变得显而易见。
附图说明
14.图1示出示例性布局生成系统。
15.图2示出节点布局神经网络在时间步处的处理。
16.图3是训练节点布局神经网络的示例性过程的流程图。
17.图4是在给定时间步处放置宏节点的示例性过程的流程图。
18.在不同的附图中,相同的附图标记和名称表示相同的元件。
具体实施方式
19.图1示出示例性布局生成系统100。布局生成系统100是在实现以下所述系统、组件和技术的一个或多个位置中的一个或多个计算机上实现为计算机程序的系统的示例。
20.系统100接收计算机芯片的网表数据102,计算机芯片也就是将要制造的超大规模集成(vlsi)芯片,包括多个集成电路组件,例如晶体管、电阻器、电容器等。根据芯片的期望功能,多个集成电路组件可以不同。例如,芯片可以是专用芯片,即专用集成电路(asic),用于机器学习计算、视频处理、加密或其他计算密集型功能。
21.网表数据102是描述计算机芯片的集成电路组件的连接性的数据。具体而言,网表数据102指定多个节点之中的计算机芯片上的连接性,每个节点对应于计算机芯片的多个集成电路组件中的一个或多个。也就是说,每个节点对应于集成电路组件的相应适当子集,并且这些子集不重叠。换言之,网表数据102对于多个节点中的每个节点识别节点需要通过制造的计算机芯片中的一个或多个导线连接到哪些其他节点(如果有的话)。在一些情况下,集成电路组件例如通过外部系统或通过使用现有集群技术已经集群化为集群,并且网表数据中的每个节点表示不同的集群。
22.系统100生成最终计算机芯片布局152作为输出,最终计算机芯片布局152将网表数据102中的一部分或全部节点放置在计算机芯片表面的相应位置处。也就是说,最终计算机芯片布局152对于网表数据102中的一部分或全部节点并且因此对于通过节点表示的集成电路组件识别计算机芯片表面的相应位置。
23.作为一个示例,网表数据102可以识别两种类型的节点:表示宏组件的节点和表示标准单元组件的节点。
24.宏组件是ic组件的大块,例如静态随机存取存储器(sram)或其他存储器块,它们被表示为网表中的单个节点。例如,表示宏组件的节点可以包括各自表示sram的对应实例的节点。作为另一个示例,表示宏组件的节点可以包括由固定数量的标准单元组成的硬宏,
例如,由寄存器文件的固定数量的实例组成的宏。作为另一个示例,表示宏组件的节点可以包括一个或多个节点,每个节点表示要放置在芯片上的锁相环(pll)电路。作为又一个示例,表示宏组件的节点可以包括一个或多个节点,每个节点表示要放置在芯片上的传感器。
25.标准单元组件是晶体管和互连结构的群组,例如,提供布尔逻辑功能(例如and、or、xor、xnor、反相器)的群组或者提供存储功能(例如触发器或锁存器)的群组。
26.在一些实现方式中,网表数据中的节点表示单个标准单元组件。在一些其他实现方式中,网表数据中的节点表示已经集群化的标准单元组件。
27.通常,布局152将每个节点分配给被覆盖于芯片表面上的n
×
m网格中的网格正方形,其中,n和m是整数。
28.在一些实现方式中,将n和m的值作为输入提供给系统100。
29.在其他实现方式中,系统100生成n和m的值。
30.例如,系统100可以将选择行和列的最佳数量视为装箱问题,并通过在芯片表面上产生的浪费空间量对行和列的不同组合进行排序。然后,系统100可以选择导致最小浪费空间量的组合作为n和m的值。
31.作为另一个示例,系统100可以使用网格生成机器学习模型来处理根据网表数据、表征集成电路芯片表面的数据或两者导出的输入,所述网格生成机器学习模型被配置为处理输入,以生成限定如何将集成电路芯片的表面划分为n
×
m网格的输出。
32.系统100包括节点布局神经网络110和图形布局引擎130。
33.系统100使用节点布局神经网络110来生成宏节点布局122。
34.具体而言,宏节点布局122将网表数据102中的每个宏节点(即,表示宏的每个节点)放置在计算机芯片表面的相应位置处。
35.通过在多个时间步的序列中的每个时间步处放置来自网表数据102的相应宏节点,系统100生成宏节点布局122。
36.也就是说,系统100在多个时间步上逐个节点地生成宏节点布局,其中根据宏节点顺序将每个宏节点放置在不同时间步的位置处。宏节点顺序对宏节点进行排序,在宏节点顺序中任何给定宏节点之前的每个节点都被放置在给定宏节点的前面。
37.在序列中的每个特定时间步处,系统100生成特定时间步的输入表示,并使用节点布局神经网络110处理输入表示。
38.特定时间步的输入表示通常至少表征(i)在宏节点顺序中要在特定时间步处放置的特定宏节点之前的任何宏节点的芯片的表面的相应位置,以及(ii)要在特定时间步处放置的特定宏节点。
39.输入表示还可以选择性地包括表征在网表数据102中指定的节点之间的连接性的数据。例如,针对一部分或全部节点,输入表示可以根据网表来表征该节点所连接的一个或多个其他节点。例如,输入表示可以将任何两个节点之间的每个连接表示为连接两个节点的边。
40.下面参考图2更详细地描述示例性输入表示。
41.在序列的第一时间步中,输入表示指示尚未放置节点,因此对于网表中的每个节点指示节点在芯片的表面上还没有位置。
42.节点布局神经网络110是具有参数(在本说明书中称为“网络参数”)的神经网络,
annealing.science,220(4598):671

680,1983”中更详细地描述了可用于调整宏节点布局122的爬山算法和其他模拟退火技术。作为另一个示例,系统100通过将合法化布局或初始布局132提供给电子设计自动化(eda)软件工具进行评估和微调来进一步细化合法化布局,也可以在不生成合法化布局的情况下直接细化初始布局132。
54.选择性地,系统100或外部系统然后可以根据最终布局152来制造(生产)芯片(集成电路)。这种集成电路可以表现出更好的性能,例如,与使用常规设计过程设计的集成电路相比,具有更低的功耗、更低的延迟或更小的表面积中的一个或多个,和/或可以使用更少的资源来生产。制造可以使用任何已知技术。在一些情况下,根据最终布局制造芯片可以包括向用户呈现识别布局的数据,以允许用户在制造之前修改最终布局152,或者将最终布局152提供给电子设计自动化(eda),从而在制造之前进行微调。
55.系统100可以通过多个方式中的任何一个来接收网表数据102。
56.例如,系统100可以通过数据通信网络(例如使用系统100可用的应用编程接口(api))从系统的远程用户接收网表数据102作为上传。在一些情况下,系统100然后可以通过系统100提供的api将最终布局152提供给远程用户,例如用于根据最终布局152制造芯片。
57.作为另一个示例,系统100可以是电子设计自动化(eda)软件工具的一部分,并且可以从工具的用户或工具的其他组件接收网表数据102。在该示例中,系统100可以在制造计算机芯片之前提供最终布局152,以供eda软件工具的其他组件评估。
58.图2示出节点布局神经网络110在给定时间步处的处理。
59.如以上参考图1所述,在布局生成期间的每个时间步处,节点布局神经网络110被配置为接收输入表示并处理输入表示,以在计算机芯片表面的多个位置上生成得分分布,例如概率分布或对数分布。
60.通常,输入表示至少包括(i)表征在宏节点顺序中要在特定时间步处放置的特定宏节点之前的任何宏节点的芯片的表面的相应位置的数据,以及(ii)表征要在特定时间步处放置的特定宏节点的数据。
61.如图2所示,节点布局神经网络110包括编码器神经网络210、策略神经网络220以及选择性的值神经网络230。
62.编码器神经网络210被配置为在每个特定时间步处处理输入表示,以生成输入表示的编码表示212。编码表示是固定维度空间中的数值表示,即固定数量数值的有序集合。例如,编码表示可以是浮点值或其他类型数值的向量或矩阵。
63.策略神经网络220被配置为在每个特定时间步处处理编码表示212,以生成得分分布。
64.通常,策略神经网络220可以具有允许策略神经网络220将编码表示212映射到得分分布的任何适当架构。如图2的示例所示,策略神经网络220是反卷积神经网络,其包括完全连接的神经网络,后面是反卷积层的集合。策略神经网络220可以选择性地包括其他类型的神经网络层,例如,批量归一化层或其他类型的归一化层。然而,在其他示例中,策略神经网络220例如可以是递归神经网络,即,包括一个或多个递归神经网络层的神经网络,例如,长短期记忆(lstm)层、选通递归单元(gru)层或其他类型的递归层,具有生成位置得分的输出层。例如,当得分是概率时,输出层可以是softmax层。
65.在使用时,值神经网络230被配置为在每个特定时间步处处理编码表示212,以生成值估计,值估计对布局在特定时间步时的当前状态的值进行估计。当前状态的值是从当前状态开始(即从当前的部分布局开始)生成的布局的奖励函数的输出的估计。例如,值神经网络230可以是递归神经网络,或可以是前馈神经网络,例如包括一个或多个完全连接层的神经网络。
66.这个值估计可以在神经网络110的训练期间使用,即,在使用依赖于可用的值估计的强化学习技术时。换言之,当用于训练节点布局神经网络的强化学习技术需要值估计时,节点布局神经网络110还包括生成强化学习技术所需的值估计的值神经网络230。
67.下面将更详细地描述训练节点布局神经网络110。
68.如图2的示例所示,输入特征表示包括网表(“宏特征”)、将网表中节点之间的连接性表示为分别连接网表数据中两个相应节点的边的“网表图形数据”、以及识别在特定时间步处放置的宏节点的“当前宏id”中的一部分或全部节点的相应矢量化表示。作为特定示例,输入特征表示可以包括仅宏节点、宏节点和标准单元集群、或宏节点和标准单元节点的相应矢量化表示。
69.每个矢量化表示表征对应的节点。具体而言,对于已经放置的每个节点,矢量化表示包括识别节点在芯片表面上的位置的数据,例如,节点的中心或节点的某个其他指定部分的坐标,并且对于尚未放置的每个节点,矢量化表示包括指示节点尚未放置的数据,例如,包括指示节点尚未放置在芯片表面上的默认坐标。矢量化表示还可以包括表征节点的其他信息,例如节点的类型、节点的维度,例如节点的高度和宽度等。
70.在图2的示例中,编码器神经网络210包括图形编码器神经网络214,图形编码器神经网络214处理网表中节点的矢量化表示,以生成(i)网表中节点的矢量化表示的网表嵌入,以及(ii)表示要在特定时间步处放置的宏节点的当前节点嵌入。嵌入是固定维度空间中的数值表示,即固定数量数值的有序集合。例如,嵌入可以是浮点值或其他类型数值的向量或矩阵。
71.具体而言,图形编码器神经网络214例如随机地初始化网表数据中每个边的相应边嵌入,并初始化网表数据中每个节点的相应节点嵌入,即,使得节点嵌入等于节点的相应矢量化表示。
72.然后,图形编码器神经网络214通过在多个消息传递迭代中的每一个处更新嵌入来重复更新节点和边嵌入。
73.在最后的消息传递迭代之后,图形编码器神经网络214根据节点和边嵌入来生成网表嵌入和当前节点嵌入。
74.作为特定示例,神经网络214可以通过在最后的消息传递迭代之后组合边嵌入来生成网表嵌入。例如,系统可以通过在最后的消息传递迭代之后对边嵌入应用减少平均函数来计算网表嵌入。
75.作为另一个特定示例,神经网络214可以将当前节点的当前节点嵌入设置为等于最后的消息传递迭代之后的当前节点的嵌入。
76.神经网络214可以使用各种消息传递技术中的任何一种来在每个消息传递迭代处更新节点和边嵌入。
77.作为特定示例,在每个消息传递迭代处,神经网络214使用由边连接的两个节点的
相应节点嵌入来更新每个边的边嵌入。
78.在每次迭代处,为了更新给定边的嵌入,网络214至少根据由边连接的两个节点的节点嵌入来生成汇总表示,并使用第一完全连接的神经网络来处理汇总表示,以生成给定边的更新边嵌入。在一些实现方式中,每个边在网表数据中具有相同的权重,即1。在一些其他实现方式中,每个边与网表数据中的相应权重相关联,并且系统根据由边连接的两个节点的节点嵌入以及与网表数据中的边相关联的权重来生成汇总表示。每个边的权重例如可以与神经网络的训练联合地加以学习。
79.为了在给定的消息传递迭代处更新给定节点的嵌入,系统使用连接到节点的边的相应边嵌入来更新节点的节点嵌入。例如,系统可以对连接到节点的边的相应边嵌入进行平均。
80.输入特征表示还可以选择性地包括表征节点的网表的“网表元数据”。网表元数据可以包括表征网表的任何适当信息。例如,该信息可以包括关于底层半导体技术(水平和垂直路由容量)、网表中的网(边)、宏和标准单元集群的总数量、画布尺寸(即芯片表面的尺寸)或网格中行和列数量的任何信息。
81.当输入特征表示包括网表元数据时,编码器神经网络210可以包括处理元数据以生成网表元数据嵌入的完全连接的神经网络。
82.编码器神经网络210至少根据网表中节点的矢量化表示的网表嵌入以及表示要在特定时间步处放置的宏节点的当前节点嵌入来生成编码表示。当编码器神经网络210还生成网表元数据嵌入时,系统还使用网表元数据嵌入来生成编码表示。
83.作为特定示例,神经网络210可以将网表嵌入、当前节点嵌入和网表元数据嵌入级联起来,然后使用完全连接的神经网络处理级联,以生成编码表示。
84.系统还跟踪芯片上位置的密度,即网格中正方形的密度。具体而言,系统保持每个位置的密度值,密度值指示该位置被占据的程度。在将节点放置在给定位置时,将该位置的密度值设置为等于1(或设置为指示该位置被完全占据的不同最大值)。在给定位置未放置节点时,该位置的密度值指示通过该位置的边的数量。给定位置的密度值还可以通过将这些位置的值设置为1来反映阻塞,例如时钟带或阻塞芯片表面某些部分的其他结构。
85.一旦策略神经网络220在时间步处生成得分分布,系统就使用该密度来生成修改的得分分布,然后使用修改的得分分布来分配与时间步相对应的节点。具体而言,系统通过将具有满足(例如超过)阈值的密度值的任何位置的得分设置为零来修改得分分布。
86.例如,系统可以将节点分配给在修改的得分分布中具有最高得分的位置,或者从修改的得分分布中采样位置,即,使得每个位置被选择的可能性等于该可能性,然后将节点分配到采样位置。
87.这在图2中表示为可以被应用于得分分布的网格密度掩模,即,作为其中具有高于阈值的密度的任何位置的值为零并且具有不高于阈值的密度的任何位置的值为1的掩模,以生成修改的得分分布。
88.作为特定示例,阈值可以等于1,并且系统可以将已经放置节点的任何位置(即密度值为1的位置)的得分设置为零。作为另一个示例,阈值可以小于1,指示系统还将没有节点但是有太多导线穿过它的任何位置的得分设置为零(即,与位置相关联的导线的数量高于阈值)。
89.为了将神经网络110用于生成高质量布局,系统(或其他系统)在训练数据上训练神经网络。
90.在一些实现方式中,系统使用强化学习端到端地训练神经网络110,以最大化通过奖励函数测量的所接收的预期奖励。奖励函数通常测量使用节点布局神经网络110生成的布局的质量。下面将参考图3更详细地描述奖励函数。
91.然而,仅通过强化学习来训练神经网络可能导致对新网表数据的不良泛化,因此系统可能必须在每次接收新网表时重新训练神经网络,例如从头开始。
92.为了改进神经网络110的泛化,系统可以通过监督的学习来训练编码器神经网络210,然后通过强化学习来训练策略神经网络220。下面参照图3更详细地描述这种训练过程。
93.图3是用于训练节点布局神经网络的示例性过程300的流程图。为方便起见,将过程300描述为通过位于一个或多个位置的一个或多个计算机的系统执行。例如,适当编程的布局生成系统(例如图1的布局生成系统100)可以执行过程300。
94.系统可以执行过程300以训练节点布局神经网络,即,确定网络参数的训练值。
95.在一些实现方式中,系统将节点布局神经网络的训练分布在许多不同的工作者之间,即,分布在许多同构或异构的计算装置之间,即使用cpu、gpu或asic执行训练计算的装置。在这些实现方式的一部分实现方式中,步骤300的一部分或全部可以由彼此异步地操作的许多不同的工作者并行执行,以便加速节点布局神经网络的训练。在其他实现方式中,不同的工作者同步地操作以并行执行过程300的一部分或全部步骤,以便加速神经网络的训练。
96.系统可以使用过程300来训练任何节点布局神经网络,包括(i)编码器神经网络,所述编码器神经网络被配置为在多个时间步中的每一个处接收输入表示并处理所述输入表示,以生成编码器输出,所述输入表示包括表示在时间步时在集成电路芯片的表面上的节点的网表的布局的当前状态的数据,以及(ii)策略神经网络,所述策略神经网络被配置为在多个时间步中的每一个处接收根据通过编码器神经网络生成的编码器输出生成的编码表示并处理所述编码表示,以在集成电路芯片的表面的多个位置上生成得分分布。
97.这种神经网络的一个示例是上面参考图2所述的神经网络。
98.这种神经网络的另一个示例在2019年12月4日提交的名为“generating integrated circuit floorplans using neural networks”的专利申请no.16/703,837中描述,其全部内容均合并于此。
99.系统获得监督训练数据(步骤302)。
100.监督训练数据包括(i)多个训练输入表示,每个训练输入表示代表节点的相应网表的相应布局,以及(ii)对于每个训练输入表示,测量节点的相应网表的布局的质量的奖励函数的相应目标值。
101.更具体而言,奖励函数测量生成的布局的某些特性,在被优化时,这些特性导致使用生成的布局制造的芯片表现出良好的性能,例如,在功耗、发热或时序性能中的一个或多个方面。
102.具体而言,奖励函数包括一个或多个特性的相应项。例如,当存在多个项时,奖励函数可以是多个项的总和或加权和。
103.作为一个示例,奖励函数可以包括导线长度度量,即测量芯片表面上导线的导线长度的项,当芯片表面上节点之间的导线长度较短时,该项较高。
104.例如,导线长度可以是曼哈顿距离的负值或芯片表面上所有相邻节点之间的其他距离度量。
105.作为另一个示例,导线长度度量可以基于半周长导线长度(hpwl),其使用网表中所有节点的边界框的半周长来近似导线长度。当计算hpwl时,系统可以假设离开标准单元集群的所有导线都起源于集群的中心。具体而言,系统可以计算网表中每个边的hpwl,然后将导线长度度量计算为等于网表中所有边的hpwl的归一化和的负值。
106.在奖励函数中包括测量导线长度的项具有这样的优点:写入长度大致测量布线成本,并且还与其他重要指标(例如功率和时序)相关。
107.作为另一个示例,奖励函数可以包括拥塞度量,即,当计算机芯片表面上的拥塞较低时,测量拥塞的项较高。拥塞是芯片上给定区域(不一定是连续区域)中可用布线资源与穿过该区域的实际导线之间差异的度量。例如,可将拥塞限定为在生成的布局中穿过区域的导线与可用布线资源(例如可以穿过该区域的导线的最大数量)的比率。作为特定示例,拥塞度量可以跟踪跨表面的水平边和垂直边的导线密度。
108.具体而言,系统可以利用网表的路由模型(例如,网边界框、上l、下l、a*、最小生成树或实际路由网等)。基于该路由模型,可以通过对于表面上的每个位置确定布局中的可用布线资源与来自该位置的路由模型的布线估计的比率来计算拥塞度量。
109.作为另一个示例,系统可以通过分别跟踪每个位置的垂直和水平分配来计算拥塞度量,例如,如上所述加以计算。然后,系统可以通过运行卷积滤波器(例如5x1卷积滤波器或不同尺寸的滤波器)来平滑拥塞估计,这取决于垂直方向和水平方向的每个方向以及两者上的位置数量。然后,系统可以将拥塞度量计算为拥塞估计的前10%、15%或20%的平均值的负值。
110.作为另一个示例,奖励函数可以包括时序项,即,当芯片的性能更好时,测量数字逻辑的时序的项更高(例如,奖励函数对于执行某些计算任务所需时间更少的各个芯片的布局采用相应更高的值)。可以使用静态时序分析(sta)来测量布局的时序或性能。该测量可以包括计算逻辑路径上的级延迟(包括内部单元延迟和导线延迟)并找到关键路径,关键路径将确定对于安全操作而言时钟可以运行的最大速度。对于时序的实际视图而言,逻辑优化可能是适应随着节点布局的进行而变长或变短的路径所必须的。
111.作为另一个示例,奖励函数可以包括测量芯片将消耗的功率或能量的一个或多个项,即,当芯片将消耗的功率较低时,较高的一个或多个项。
112.作为另一个示例,奖励函数可以包括测量布局的面积的一个或多个项,即,当布局占据的面积较低时,较高的一个或多个项。
113.在某些情况下,系统从其他系统接收监督训练数据。
114.在其他情况下,系统生成监督训练数据。作为特定示例,通过多个训练输入表示所代表的布局可以在不同网表上训练不同的节点布局神经网络期间的不同时间点基于不同的节点布局神经网络(例如,与以上参考图2所述的节点布局神经网络相比具有更简单结构的节点布局神经网络)的输出来生成。这样可以确保布局具有不同的质量。
115.例如,系统可以通过选择一组不同的加速器网表,然后为每个网表生成布局来生
成监督训练数据。为了为每个网表生成不同的布局,系统可以在各种拥塞权重(范围从0到1)和网表数据上的随机种子(例如通过强化学习)下训练更简单的策略网络,并在策略训练过程期间收集每个布局的快照。每个快照包括布局的表示以及通过用于布局的奖励函数生成的奖励值。未经训练的策略网络从随机权重开始,生成的布局质量低,但是随着策略网络的训练,生成的布局质量提高,从而允许系统收集具有不同质量的布局的不同数据集。
116.在一些实现方式中,训练输入表示可以全部表示最终的布局,即,放置的相应网表中的所有宏节点的布局。在一些其他实现方式中,训练输入表示可以代表在布局生成过程的各个阶段的布局,即,一些表示可以代表仅放置了一部分宏节点的部分布局。
117.系统通过监督的学习在监督训练数据上与奖励预测神经网络联合地训练编码器神经网络(步骤304)。
118.奖励预测神经网络被配置为对于每个训练编码器输入,从训练输入表示接收通过编码器神经网络生成的编码器输出,并处理编码表示,以生成训练输入表示所代表的布局的奖励函数的预测值。
119.奖励预测神经网络例如可以是接收编码器输出并处理编码器输出以生成奖励预测的完全连接的神经网络。当编码器神经网络具有以上参考图2所述的架构时,编码器输出可以是网表图形嵌入和元数据嵌入的级联。
120.例如,系统可以训练编码器神经网络和奖励预测神经网络,以优化目标函数(例如均方误差损失),目标函数对于给定的训练表示测量奖励函数的目标值与用于训练输入表示的奖励函数的预测值之间的误差。
121.然后,系统通过强化学习来训练策略神经网络,以生成得分分布,从而获得将奖励函数最大化的布局。(步骤306)。系统可以使用各种强化学习技术中的任何一种来训练节点布局神经网络。
122.例如,系统可以将策略梯度技术(例如reinforce或接近策略优化(ppo))用于训练。在这些情况下,当神经网络包括值预测神经网络时,可以将通过值神经网络生成的值预测用于计算基线值,基线值在计算强化学习损失函数的梯度时修改奖励函数值。
123.在通过强化学习训练策略神经网络时,系统可以将编码器神经网络的参数值保持为固定到通过对于监督训练数据的训练所确定的值。
124.具体而言,当通过针对给定芯片的给定网表的强化学习来训练策略神经网络时,系统可以使用布局神经网络将宏节点逐个放置在给定网表中,如上所述。在放置宏节点之后,系统可以如上所述放置标准单元节点,以确定最终布局。然后,系统例如可以通过如上所述计算所需数量来计算最终布局的奖励函数,并使用奖励值、宏节点布局和通过布局神经网络生成的得分分布,通过强化学习来训练布局神经网络。因此,虽然布局神经网络仅用于放置宏节点,但是仅在也放置了标准单元节点之后才计算奖励值,从而确保布局神经网络生成仍允许标准单元节点的高质量布局的宏节点布局。
125.系统接收新的网表数据(步骤308)。
126.在一些实现方式中,系统使用训练的节点布局神经网络为新网表数据生成集成电路布局,即,通过使用通过训练的节点布局神经网络生成的得分分布在多个时间步中的每个时间步处放置来自新网表数据的相应节点(步骤310)。也就是说,系统生成新网表数据的布局,无需进一步训练节点布局神经网络。
127.也就是说,通过监督的学习训练编码器神经网络,然后通过强化学习训练策略神经网络,系统训练节点布局神经网络以推广到新的网表,无需任何附加训练。
128.在一些其他实现方式中,为了进一步提高为新网表生成的布局的质量,系统首先通过强化学习在新网表数据上对训练的节点布局神经网络进行微调(步骤312),然后使用微调的节点布局神经网络为新网表数据生成集成电路布局(步骤314),如上所述。在微调期间,系统可以使用与上述相同的强化学习技术,并且取决于实现方式,可以保持编码器神经网络的参数值固定,也可以在微调期间更新编码器神经网络的参数值。
129.图4是在给定时间步处放置宏节点的示例性过程400的流程图。为方便起见,将过程400描述为通过位于一个或多个位置的一个或多个计算机的系统执行。例如,适当编程的布局生成系统(例如图1的布局生成系统100)可以执行过程400。
130.系统可以针对时间步序列中的每个时间步执行过程400,以根据宏节点顺序放置每个宏节点。
131.在一些实现方式中,系统连同网表数据一起接收宏节点顺序,作为输入。
132.在一些其他实现方式中,系统可以根据网表数据生成宏节点顺序。
133.作为一个示例,系统可以根据尺寸对宏节点进行排序,例如,通过下降尺寸,并使用拓扑排序来断绝联系。通过首先放置较大的宏,系统降低了对于后续宏而言没有可行布局的可能性。拓扑排序可以帮助策略网络学习将连接的节点相互靠近放置。
134.作为另一个示例,系统可以通过宏节点顺序预测机器学习模型处理根据网表数据导出的输入,宏节点顺序预测机器学习模型被配置为处理根据网表数据导出的输入,以生成限定宏节点顺序的输出。
135.作为又一个示例,节点布局神经网络可以被进一步配置为生成宏节点上的概率分布。然后,系统可以通过针对多个时间步中的每个特定时间步,基于宏节点上的概率分布,选择要放置在特定时间步之后的下一个时间步的宏节点,来动态地生成宏节点顺序。例如,系统可以选择具有最高概率的尚未被放置的宏节点。
136.系统根据网表数据生成输入表示,输入表示至少表征(i)在宏节点顺序中要在给定时间步处放置的特定宏节点之前的任何宏节点的芯片的表面的相应位置,以及(ii)要在给定时间步处放置的特定宏节点(步骤402)。选择性地,输入表示还可以包括关于网表、网表元数据或两者中的节点的其他信息。上面参考图2描述了输入表示的示例。
137.系统使用具有多个参数(“网络参数”)的节点布局神经网络来处理输入表示(步骤404)。节点布局神经网络被配置为根据网络参数的当前值处理输入表示,以在集成电路芯片表面的多个位置上生成得分分布。
138.系统使用得分分布将要放置在特定时间步的宏节点分配给多个位置中的位置(步骤406)。如上所述,系统可以基于当前布局的跟踪密度来修改得分分布,即,通过将具有满足阈值的密度值的任何位置的得分设置为零,然后从修改的得分分布中选择位置。
139.在一些实现方式中,系统可以使用附加信息进一步修改得分分布。
140.具体而言,如上所述,在一些实现方式中,对于多个不同芯片的多个不同网表,在多个不同布局上训练神经网络。这可能需要神经网络在不同尺寸的芯片表面上生成得分分布。也就是说,当多个位置是来自覆盖于集成电路芯片的表面的n
×
m网格的网格正方形时,不同芯片可以具有不同的n和m值。为了解决这个问题,系统可以配置神经网络,以在固定尺
寸的maxn
×
maxm网格上生成得分。在当前芯片的n值小于maxn时,系统可以将额外行的得分设置为零。类似地,在当前芯片的m值小于maxm时,系统可以将额外列的得分设置为零。
141.本说明书使用与系统以及计算机程序组件相关的术语“被配置为”。被配置为执行特定操作或动作的一个或多个计算机的系统意味着系统上已经安装了软件、固件、硬件或它们的组合,软件、固件、硬件或它们的组合在操作中导致系统执行这些操作或动作。要被配置为执行特定操作或动作的一个或多个计算机程序意味着所述一个或多个程序包括指令,当通过数据处理设备执行时,所述指令使得所述设备执行所述操作或动作。
142.本说明书所述主题和功能操作的实施例可以在数字电子电路中、在通过有形方式具体实施的计算机软件或固件中、在计算机硬件中(包括本说明书中公开的结构及其结构等价物)或者在它们的一个或多个的组合中实现。本说明书所述主题的实施例可以实现为一个或多个计算机程序,即在有形非瞬态存储介质上编码的计算机程序指令的一个或多个模块,用于通过数据处理设备执行或者控制数据处理设备的操作。计算机存储介质可以是机器可读存储装置、机器可读存储基板、随机或串行访问存储器装置,或者它们的一个或多个的组合。替代性或附加性地,可以将程序指令编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,它们被生成为编码信息,用于传输到合适的接收器设备,以通过数据处理设备执行。
143.术语“数据处理设备”是指数据处理硬件,包括用于处理数据的所有类型的设备、装置和机器,例如包括可编程处理器、计算机或多个处理器或计算机。该设备还可以是或者进一步包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该设备可以选择性地包括创建计算机程序的执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者它们的一个或多个的组合的代码。
144.又可以被称为或描述为程序、软件、软件应用、应用程序、模块、软件模块、脚本或代码的计算机程序可以通过任何形式的编程语言来编写,包括编译或解释语言,或者声明或程序语言;并且它可以通过任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其他单元。程序可以但不需要对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件(例如存储在标记语言文档中的一个或多个脚本)的一部分中,存储在专用于所涉及程序的单个文件中,或者存储在多个协调文件(例如存储一个或多个模块、子程序或代码部分的文件)中。可将计算机程序部署为在一个计算机或设置在一个站点的多个计算机或分布在多个站点并通过数据通信网络互连的多个计算机上执行。
145.在本说明书中,术语“数据库”广泛用于指代任何数据集合:该数据不需要以任何特定方式结构化,或者根本不需要结构化,并且可以存储在一个或多个位置的存储装置上。因此,例如,索引数据库可以包括多个数据集合,每个数据集合可以通过不同的方式组织和访问。
146.类似地,在本说明书中,术语“引擎”广泛用于指代被编程为执行一个或多个特定功能的基于软件的系统、子系统或过程。通常,可将引擎实现为安装在一个或多个位置的一个或多个计算机上的一个或多个软件模块或组件。在某些情况下,一个或多个计算机将专用于特定引擎;在其他情况下,可以在相同计算机或多个计算机上安装并运行多个引擎。
147.本说明书所述过程和逻辑流程可以通过一个或多个可编程计算机来执行,计算机
执行一个或多个计算机程序,以通过操作输入数据和生成输出来执行功能。过程和逻辑流程也可以通过专用逻辑电路(例如fpga或asic)或者通过专用逻辑电路与一个或多个编程计算机的组合来执行。
148.适合于执行计算机程序的计算机可以基于通用微处理器或专用微处理器或两者,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的元件是用于进行或执行指令的中央处理单元和用于存储指令和数据的一个或多个存储器装置。中央处理单元和存储器可由专用逻辑电路补充或并入专用逻辑电路。通常,计算机还将包括或可操作地耦合,以从用于存储数据的一个或多个大容量存储装置(例如磁盘、磁光盘或光盘)接收数据或向其传输数据,或者两者兼有。然而,计算机不需要具有这些装置。此外,可将计算机嵌入其他装置中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制器、全球定位系统(gps)接收器或便携式存储装置,例如通用串行总线(usb)闪存驱动器,仅举几例。
149.适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,例如包括半导体存储器装置,例如eprom、eeprom和闪存装置;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及cd-rom和dvd-rom盘。
150.为了提供与用户的交互,可以在计算机上实现本说明书所述主题的实施例,计算机具有用于向用户显示信息的显示装置(例如crt(阴极射线管)或lcd(液晶显示器)监视器)以及用户可以由其向计算机提供输入的键盘和指示装置(例如鼠标或轨迹球)。也可以使用其他类型的装置提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可通过任何形式接收来自用户的输入,包括声学、语音或触觉输入。此外,计算机可以通过向用户使用的装置发送文档以及从用户使用的装置接收文档来与用户交互;例如通过响应于从网络浏览器接收的请求向用户装置上的网络浏览器发送网页。此外,计算机可以通过向个人装置(例如运行消息传递应用的智能电话)发送文本消息或其他形式的消息,并继而从用户接收响应消息来与用户交互。
151.用于实现机器学习模型的数据处理设备例如还可以包括专用硬件加速器单元,用于处理机器学习训练或生产的通用和计算密集部分,即推理、工作负载。
152.可以使用机器学习框架来实现和部署机器学习模型,例如tensorflow框架、microsoft cognitive toolkit框架、apache singa框架或apache mxnet框架。
153.本说明书所述主题的实施例可以在计算系统中实现,计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有图形用户界面的客户端计算机、网络浏览器、或者用户可以由其与本说明书所述主题的实现方式交互的应用程序,或者一个或多个这样的后端、中间件或前端组件的任意组合。系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(lan)和广域网(wan),例如因特网。
154.计算系统可以包括客户端和服务器。客户端和服务器通常相互远离,并且通常通过通信网络进行交互。客户端与服务器之间的关系是由于在各自的计算机上运行并且相互具有客户端-服务器关系的计算机程序而产生的。在一些实施例中,服务器将数据(例如html页面)传输到用户装置,例如,用于向与充当客户端的装置交互的用户显示数据以及从用户接收用户输入。在用户装置上生成的数据(例如用户交互的结果)可以在服务器处从装
置接收。
155.虽然本说明书包含许多具体的实现方式细节,但是这些不应解释为对任何发明的范围或可能要求保护的范围的限制,而是对特定发明的特定实施例可能特定的特征的描述。本说明书中在单独实施例的背景下描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的背景下描述的各种特征也可以在多个实施例中单独地或者在任何合适的子组合中实现。此外,虽然可将上述特征描述为在某些组合中起作用,甚至一开始可以这样要求保护,但是在某些情况下,可以从组合中删除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可以旨在子组合或子组合的变体。
156.类似地,虽然在附图中按照特定顺序描述了操作并在权利要求中列举,但是这不应理解为要求以所示的特定顺序或依次执行这些操作,或者要求执行所有示出的操作以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中各种系统模块和组件的分离不应理解为在所有实施例中都需要这样的分离,并且应当理解,所述程序组件和系统通常可以集成在单个软件产品中或者封装于多个软件产品中。
157.已经描述本主题的特定实施例。其他实施例落入以下权利要求的范围。例如,可以按照不同的顺序执行权利要求中列举的动作,并且仍然实现期望的结果。作为一个示例,附图所述过程不一定需要所示的特定顺序或依次以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献