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

机器学习增强型编译器的制作方法

2022-06-09 01:34:15 来源:中国专利 TAG:


1.本公开涉及在电路或电气组件的设计中使用的编译器。


背景技术:

2.针对电路或电气组件的设计被编程和编译(例如,用于验证目的)。可以编写和编译用于设计的程序代码以创建虚拟电路或电子组件。例如,可以编译用于设计的代码以模拟执行设计操作的一个或多个现场可编程门阵列(fpga)。然后可以通过虚拟电路或电气组件发送测试信号以测试设计。


技术实现要素:

3.在一个实施例中,一种方法包括:生成针对电路设计的网表,以及通过将第一机器学习模型应用于该网表来预测电路设计的第一编译时间。该方法还包括通过将第二机器学习模型应用于网表来基于第一编译时间预测第一布局和布线策略。该方法还包括根据第一布局和布线策略调整电路设计的逻辑。
4.该方法可以包括:通过将第三机器学习模型应用于经调整的逻辑来预测用于电路设计的第二编译时间,以及通过将第四机器学习模型应用于经调整的逻辑来基于第二编译时间预测第二布局和布线策略。该方法还可以包括根据第二布局和布线策略来布局电路设计的组件。
5.该方法可以包括:通过将第五机器学习模型应用于布局的元件来预测用于电路设计的第三编译时间,以及通过将第六机器学习模型应用于布局的元件来基于第三编译时间来预测第三布局和布线策略。该方法还可以包括根据第三布局和布线策略对组件进行布线。
6.该方法可以包括根据组件的布线来生成比特流。
7.在一些情况下,第一机器学习模型和第二机器学习模型是使用基本数据生成的基本模型的一部分,并且基本模型选自包括基本模型、使用通过编译多个电路设计生成的训练数据生成的调谐模型、以及使用训练数据和基本数据生成的混合模型的组。
8.该方法可以包括响应于确定网表和电路设计之间的第一距离小于网表与用于生成调谐模型的训练数据之间的第二距离以及网表与用于生成混合模型的训练数据以及基本数据之间的第三距离来选择基本模型。
9.该方法可以包括:通过将第一权重应用于网表中的第一特征与基本数据中的第一特征之间的距离以产生第一加权距离来确定第一距离,将第二权重应用于网表中的第二特征与基本数据中的第二特征之间的距离以产生第二加权距离,以及将第一加权距离与第二加权距离相加。
10.该方法可以包括启动电路设计的单独编译。在单独启动的编译中,根据第一布局和布线策略调整电路设计的逻辑。
11.在另一实施例中,一种方法包括:存储使用基本数据生成的基本模型,接收通过编
译多个电路设计而生成的训练数据,以及使用训练数据生成调谐模型。该方法还包括使用训练数据和基本数据来生成混合模型,接收选择的成本函数,以及使用选择的成本函数来偏置基本模型、调谐模型和混合模型。
12.在一些情况下,从多个成本函数中选择成本函数,所述成本函数包括偏向于减少编译时间的第一成本函数、偏向于减少编译期间的资源消耗的第二成本函数、以及偏向于减少编译时间和减少编译期间的资源消耗的第三成本函数。
13.该方法可以包括生成针对电路设计的网表,以及通过将第一机器学习模型应用于该网表来预测电路设计的第一编译时间。该方法还可以包括通过将第二机器学习模型应用于网表来基于第一编译时间预测第一布局和布线策略。该方法还可以包括根据第一布局和布线策略调整电路设计的逻辑。
14.该方法可以包括通过将第三机器学习模型应用于经调整的逻辑来预测用于电路设计的第二编译时间,以及通过将第四机器学习模型应用于经调整的逻辑来基于第二编译时间预测第二布局和布线策略。该方法还可以包括根据第二布局和布线策略布局电路设计的组件。
15.该方法可以包括通过将第五机器学习模型应用于布局的组件来预测用于电路设计的第三编译时间,以及通过将第六机器学习模型应用于布局的组件来基于第三编译时间来预测第三布局和布线策略。该方法还可以包括根据第三布局和布线策略对组件进行布线。
16.该方法可以包括根据组件的布线来生成比特流。
17.该方法可以包括响应于确定网表和电路设计之间的第一距离小于网表与用于生成调谐模型的训练数据之间的第二距离以及网表与用于生成混合模型的训练数据以及基本数据之间的第三距离来选择基本模型。
18.在另一实施例中,一种装置包括存储器和通信地耦合到存储器的硬件处理器。硬件处理器接收编译电路设计的指令,并且响应于该指令,生成针对电路设计的网表。硬件处理器还通过将第一机器学习模型应用于网表来预测电路设计的第一编译时间。硬件处理器还通过将第二机器学习模型应用于网表来基于第一编译时间预测第一布局和布线策略,并且根据第一布局和布线策略调整电路设计的逻辑。
19.硬件处理器可以通过将第三机器学习模型应用于经调整的逻辑来预测电路设计的第二编译时间,并通过将第四机器学习模型应用于经调整的逻辑来基于第二编译时间预测第二布局和布线策略。硬件处理器还可以根据第二布局和布线策略来布局电路设计的组件。
20.硬件处理器可以通过将第五机器学习模型应用于所布局的组件来预测用于电路设计的第三编译时间,并且通过将第六机器学习模型应用于布局的组件来基于第三编译时间来预测第三布局和布线策略。硬件处理器还可以根据第三布局和布线策略来布线组件。
21.硬件处理器可以根据组件的布线来生成比特流。
22.在一些情况下,第一机器学习模型和第二机器学习模型是使用基本数据生成的基本模型的一部分,并且基本模型选自包括基本模型的组、使用通过编译多个电路设计生成的训练数据生成的调谐模型、以及使用训练数据和基本数据生成的混合模型。
附图说明
23.从下面给出的详细描述和从本公开的实施例的附图将更全面地理解本公开。这些附图用于提供对本公开的实施例的知识和理解,并且不将本公开的范围限制到这些特定实施例。此外,这些附图不一定是按比例绘制的。
24.图1a示出了用于编译电路和/或电气组件的设计的示例系统;
25.图1b示出了图1a的示例系统的编译器设备;
26.图1c示出了图1a的示例系统的编译器设备;
27.图2示出了图1a的示例系统中用于编译设计的处理的流程图;
28.图3示出了使用图1a的示例系统的编译器设备的模型训练;
29.图4示出了图1a的示例系统中用于训练模型的过程的流程图;
30.图5示出了使用图1a的示例系统的编译器设备的模型选择;
31.图6示出了图1a的示例系统中用于选择模型的过程的流程图;
32.图7描绘了根据本公开的一些实施例在集成电路和/或fpga的设计和制造期间使用的各种过程的流程图;
33.图8描绘了根据本公开的一些实施例的示例仿真系统的抽象图;以及
34.图9描绘了本公开的实施例可以在其中操作的示例计算机系统的抽象图。
具体实施方式
35.本公开的各方面涉及一种机器学习增强型编译器。如前所述,对电路或电子组件的设计进行编程和编译以创建虚拟电路或电子组件(例如,用于验证目的)。例如,可以编译用于设计的代码以模拟执行设计操作的一个或多个fpga。然后可以使用测试信号来测试设计。
36.编译可能是一项非常耗时和/或耗费资源的任务。编译用于复杂设计的程序代码可能需要很长时间,并且编译该代码可能使用大量计算资源(例如,处理器、存储器和/或网络资源)。当项目包括许多不同组件的代码时,编译可能需要很长时间(例如,超过十个小时)。在某些情况下,编译器甚至可能没有足够的资源来执行编译,从而导致故障。
37.例如,由验证团队使用基于现场fpga的原型制作和仿真平台(fpep)来仿真其asic设计并制作其原型。在原型制作流程中,他们为固件/库开发提供其设计的工作模型,在仿真流程中,他们探测/强制在导线/寄存器上的数据,并对“实时”设计进行故障排除/调试。市场上的各种编译器帮助将这些设计映射到fpep上。
38.这些编译器执行许多步骤,例如前端综合、技术映射、指令插入、分区、系统级布局和布线、fpga编译和调试数据库生成。当寄存器传输电平(rtl)/门级输入发生变化或修复时,用户使用这些编译器重新编译设计。减少编译时间对于实现设计修复和验证签字的更快周转非常重要。
39.编译时间长的最常见原因之一是fpga设备内的网表拥塞。上游划分工具基于fpep上的fpga设备的逻辑容量将逻辑划分为fpga。它们不考虑fpga内部逻辑的可布线性,这受到各种因素的影响,例如,fpga设备上的资源布局、网表的连接性、输入输出(io)位置以及作用在fpga设备内单元上的布局力。这种疏忽可能会导致fpga内的布局后拥塞,减慢(有时超过12小时)供应商布线工具的速度,甚至导致无法布线的设计。
40.本公开提供了一种应用机器学习技术以减少编译时间和资源消耗的编译器。通常,编译器在编译的不同阶段应用机器学习模型来预测是否应该进行更改以减少编译时间或资源消耗。例如,可以在预测编译时间的阶段中首先应用该模型。如果编译时间超过阈值(例如,可以将预测的编译时间与阈值进行比较,或者预测的编译时间可以落入由某些阈值定义的时间范围或类别内),则可以应用该模型来预测减少编译时间和/或资源消耗的布局和布线策略。然后,可以将预测的布局和布线策略应用于后续阶段。在某些实施例中,以这种方式,编译器减少了编译过程的持续时间和资源消耗。编译器的实际应用是编译器应用机器学习技术来减少编译设计所花费的时间和/或减少编译设计所消耗的资源。
41.此外,在某些实施例中,编译器还训练可以被选择使用的附加机器学习模型。例如,编译器可以训练三个模型:(1)使用基本数据生成的基本模型;(2)使用来自客户端站点的训练数据生成的调谐模型;以及(3)使用基本数据和训练数据生成的混合模型。编译器在运行时选择最适合编译特定设计的模型。使用图1至图9更详细地描述编译器。
42.图1a示出了用于测试电路和/或电子组件的设计的示例系统100。如图1a所示,系统100包括一个或多个设备104、网络106和编译器设备108。通常,系统100应用一个或多个机器学习模型来增强特定设计的编译。在某些实施例中,系统100减少了编译设计时所消耗的编译时间和/或资源。
43.用户102使用一个或多个设备104来与系统100的其他组件交互。例如,用户102可以使用设备104来创建电路或电子组件的设计110。在图1a的示例中,用户102a使用一个或多个设备104a来创建设计110。然后,用户102可以使用设备104将设计110通信到编译器设备108以进行编译。在图1a的示例中,用户102a可以使用设备104a来将设计110通信到编译器设备108。设备104可以从编译器设备108接收用于编译的更新。例如,设备104可以通过编译器设备108被报告是否编译成功还是不成功。此外,设备104可以从编译器设备108接收指示编译花费多长时间以及在编译期间消耗的资源量的消息。
44.设计110可以用于任何合适的电路或电气组件。例如,设计110可以用于集成电路、fpga、硬件处理器、存储器阵列和片上系统。编译器设备108可以被配置成编译这些设计110中的每个设计。
45.设备104包括用于通过网络106与系统100的组件通信的任何适当的设备。作为示例而非限制,设备104可以是计算机、膝上型计算机、无线电话或蜂窝电话、电子笔记本、个人数字助理、平板计算机或能够接收、处理、存储和/或与系统100的其他组件通信信息的任何其他设备。设备104还可以包括用户接口,例如显示器、麦克风、小键盘或用户102可使用的其他适当的终端设备。设备104可以包括被配置为执行在此描述的设备104的任何功能或动作的硬件处理器、存储器和/或电路。例如,使用软件代码设计的软件应用可以存储在存储器中并由处理器执行以执行设备104的功能。
46.网络106允许系统100的各种组件之间的通信。例如,用户102可以使用设备104通过网络106进行通信。本公开设想网络106是可操作以促进系统100的组件之间的通信的任何合适的网络。网络106可以包括能够传输音频、视频、信号、数据、消息或前述内容的任何组合的任何互连系统。网络106可以包括公共交换电话网络(pstn)、公共或专用数据网络、局域网(lan)、城域网络(man)、广域网络(wan)、本地、区域或全球通信或计算机网络的全部或一部分,例如因特网、有线或无线网络、企业内联网或可操作以促进组件之间的通信的任
何其他合适的通信链路,包括其组合。
47.编译器设备108应用机器学习技术来增强设计的编译。在特定实施例中,通过在编译的某些阶段期间应用机器学习技术来预测适当的布局和布线策略,编译器设备108减少了编译设计所花费的时间量和/或减少了编译期间消耗的资源量。在图1a的示例中,编译器设备108包括处理器112和存储器114,其可以被配置为执行本文描述的编译器设备108的任何功能或动作。编译器设备108可以体现在任何合适数目的物理设备中。例如,编译器设备108可以包含在单个计算机或服务器中。为了扩展编译器设备108可用的计算资源,编译器设备108可以分布在包含多个处理器112和存储器114的多个计算机或服务器上。
48.处理器112是通信地耦合到存储器114并控制编译器设备108的操作的任何电子电路这种,包括但不限于微处理器、专用集成电路(asic)、专用指令集处理器(asip)和/或状态机。处理器112可以是8位、16位、32位、64位或任何其他合适的体系结构。处理器112可包括用于执行算术和逻辑操作的算术逻辑单元(alu)、向alu提供操作数并存储alu操作的结果的处理器寄存器、以及从存储器获取指令并通过指导alu、寄存器和其他组件的协调操作来执行指令的控制单元。处理器112可以包括运行软件以控制和处理信息的其他硬件。处理器112执行存储在存储器上的软件以执行在此描述的任何功能。处理器112通过处理从设备104、网络106和存储器114接收的信息来控制编译器设备108的操作和管理。处理器112可以是可编程逻辑装置、微控制器、微处理器、任何适当的处理装置或上述装置的任何适当组合。处理器112不限于单个处理设备,并且可以包括多个处理设备。
49.存储器114可以永久地或临时地存储处理器112的数据、操作软件或其他信息。存储器114可以包括适于存储信息的易失性或非易失性本地或远程设备中的任何一个或其组合。例如,存储器114可以包括随机存取存储器(ram)、只读存储器(rom)、磁存储设备、光存储设备、或任何其他合适的信息存储设备或这些设备的组合。该软件表示包含在计算机可读存储介质中的任何适当的指令、逻辑或代码集。例如,该软件可以包含在存储器114、盘、cd或闪存驱动器中。在特定实施例中,软件可以包括可由处理器112执行以执行在此描述的一个或多个功能的应用。
50.如前所述,编译器设备108编译由设备104通信的设计110,并在编译期间应用机器学习技术以改善编译过程。通常,编译过程包括将在图1a、图1b和图2中描述的数个阶段。使用图7描述编译过程的进一步细节。
51.当编译器设备108接收到设计110和编译设计110的指令116时,编译过程开始。设计110和指令116可能已经由用户102和/或设备104通信。设计110可以用于任何合适的电路或电子组件(例如,集成电路、fpga、硬件处理器、存储器阵列、片上系统等)。响应于接收到设计110和/或指令116,编译器设备108选择机器学习模型118以应用于设计110的编译。编译器设备108可以选择不同的(多个)机器学习模型118来应用于编译的不同阶段。将使用图3和图4来描述对选择的(多个)模型118的训练。将使用图5和图6来描述对模型118的选择。在某些实施例中,通过将选择的模型118应用于设计110的编译,编译器设备108减少了编译时间和在编译期间消耗的资源。
52.在一个实施例中,编译是包括数个不同阶段的过程。在每个阶段,可以应用选择的模型118来确定是否应该做出改变以改善编译时间和/或资源消耗。可以在编译的不同阶段期间选择和应用不同的模型118。通常,编译的阶段包括生成网表120、逻辑调整122、布局
124和布线126。在一个实施例中,这些阶段按顺序发生。编译器设备108可以在这些阶段中的一个或多个阶段期间应用选择的模型118。
53.网表120包括设计的组件的列表和组件之间的连接的列表。网表120通常包括设计110中的组件的列表以及这些组件之间的连接的列表。因此,网表120提供了设计110的结构的图片。在逻辑调整122期间,调整设计中的逻辑以优化结构及其流程。在布局124期间,编译器设备108将虚拟组件布局到虚拟设计中以仿真网表120所描述的设计。在布线126期间,布局的组件彼此连接以模拟网表120中描述的设计。在布线126完成之后,可以通过虚拟设计发送测试信号以生成比特流128。然后,用户102或验证软件可以验证比特流128以确定该设计是否如预期的那样运行。
54.在编译的某些阶段期间,编译器设备108应用选择的模型118来确定是否应该进行调整以改善编译的某些方面(例如,编译时间、资源消耗、功率消耗、效率、热产生和定时)。例如,可以将选择的模型118应用于网表120中的特征,以确定是否应该在逻辑调整122期间应用模型118。如果模型118应该在逻辑调整122期间被应用,则模型118被应用来确定在逻辑调整112期间要应用的布局和布线策略。然后根据该布局和布线策略执行逻辑调整122。
55.类似地,可以将选择的模型118应用于经调整的逻辑以确定是否应在布置124期间应用模型118。如果模型118应该在布局124期间应用,则应用模型118来确定在布局124期间要应用的布局和布线策略。然后根据该布局和布线策略来执行布局124。
56.类似地,可以将选择的模型118应用于布局的部件,以确定是否应该在布线126期间应用模型118。如果模型118应该在布线126期间应用,则应用模型118来确定要在布线126期间应用的布局和布线策略。然后根据该布局和布线策略来执行布线126。
57.图1b提供了编译器设备108在编译期间如何应用模型118的进一步细节。在编译的某些阶段期间,编译器设备108应用选择的模型118来确定是否应该进行调整以改善编译的某些方面(例如,编译时间、资源消耗、功率消耗、效率、热产生和定时)。如图1b所示,选择的模型118可包括可在编译的不同阶段期间应用的若干不同模型(模型a1 130、a2 140、a3 150、b1 136、b2 146和b3 156)。
58.作为示例,在生成网表120之后,编译器设备108可以选择模型118以应用于网表120的特征。然后,编译器设备108将选择的模型118的模型a1 130应用到网表120。模型a1 130可以是选择的模型118的一部分,其在应用时基于网表120中的特征(例如,查找表的数目、寄存器的数目、触发器的数目、输入/输出连接的数目、存储器的数目、估计的布线拥塞)来预测编译时间132。编译器设备108分析预测的编译时间132以确定此时是否应该进行改变以改善编译。编译器设备108可以将编译时间132与阈值134进行比较以确定是否应该进行改变。在某些实施例中,编译器设备108可以确定编译时间132是否超过阈值134。在一些实施例中,编译器设备108可以确定编译时间132落入由阈值134定义的时间范围或类别内。如果编译时间132超过阈值134或者如果编译时间132落在被认为太高的时间范围内,则编译器设备108可以确定应该做出改变。作为响应,编译器设备108将选择的模型118的模型b1 136应用于网表120以预测布局和布线策略138。模型b1 136可以是选择的模型118的一部分,其分析网表120的特征(例如,查找表的数目、寄存器的数目、触发器的数目、输入/输出连接的数目、存储器的数目、估计的布线拥塞)以预测用于调整设计110的逻辑的布局和布线策略138。布局和布线策略138可以减少调整逻辑所花费的时间量和/或所消耗的资源。编
译器设备108可以将布局和布线策略138应用于逻辑调整122。
59.如果编译时间132没有超过阈值134,或者如果编译时间132落在被认为不太高的时间范围或类别内,则编译器设备108可以继续进行逻辑调整122,而不将模型b1 136应用到网表120。换言之,如果编译时间132不是太高,则编译器设备108可以进行到逻辑调整122而不对编译过程进行改变。
60.然后,编译器设备108在逻辑调整122期间应用选择的模型118。如前所述,在逻辑调整122期间选择的模型118可以不是为网表120选择的相同模型118。模型选择上的差异可以归因于网表120中的特征在逻辑调整122期间改变和/或在逻辑调整122期间引入的新特征。在选择模型118之后,编译器设备108在逻辑调整122期间应用选择的模型118的模型a2 140以预测编译时间142。编译时间142可以不同于编译时间132,因为设计中的逻辑在逻辑调整122期间被调整,和/或因为模型a2 140分析经调整的逻辑的特征(例如,查找表的数目、寄存器的数目、触发器的数目、输入/输出连接的数目、存储器的数目、估计的布线拥塞)而不是网表120的特征。在逻辑调整122期间,这些特征中的一些可能已经改变。此外,这些特征中的一些特征可以在逻辑调整122期间引入,但在原始网表120中不可见。编译器设备108将编译时间142与阈值144进行比较,以确定是否应该在编译的这一点进行改变。如果编译时间142超过阈值144或者如果编译时间142落在被认为太高的时间范围或类别内,则编译器设备108将选择的模型118的模型b2 146应用于经调整的逻辑以预测布局和布线策略148。模型b2 146可以是选择的模型118的一部分,其分析经调整的逻辑的特征(例如,查找表的数目、寄存器的数目、触发器的数目、输入/输出连接的数目、存储器的数目、估计的布线拥塞)以预测用于布局经调整的逻辑的组件的布局和布线策略148。例如,模型b2 146可以预测布局和布线策略148,该布局和布线策略148最佳地减少在布局虚拟设计的部件时所消耗的编译时间和/或资源。编译器设备108在布局124期间应用布局和布线策略148以调整虚拟设计中组件的布局。
61.如果编译时间142没有超过阈值144,或者如果编译时间142落入被认为不太高的时间范围或类别,则编译器设备108可以在不应用模型b2 146的情况下继续编译过程。换言之,如果编译器设备108确定编译时间142不是太高,则编译器设备108可以前进到布局124而不对编译过程进行改变。
62.在布局124期间,编译器设备108布局虚拟设计的组件。然后,编译器设备108在布局124期间应用选择的模型118。如前所述,在布局124期间选择的模型可以不同于在逻辑调整122期间选择的模型或用于网表120。模型选择上的差异可以归因于在布局124期间改变的特征和/或在布局124期间引入的新特征。编译器设备108将选择的模型118的模型a3 150应用于虚拟设计中布局的组件以预测编译时间152。模型a3 150可以是选择的模型118的一部分,其分析布局的组件的特征(例如,查找表的数目、寄存器的数目、触发器的数目、输入/输出连接的数目、存储器的数目、估计的布线拥塞)以预测编译时间152。这些特征中的一些特征在布局124期间可能已经改变。此外,这些特征中的一些特征可以在布局124期间引入,但是在原始网表120中和在逻辑调整122期间不可用。编译器设备108将编译时间152与阈值154进行比较,以确定是否应该对设计110中的组件的布线进行额外的改变。如果编译时间152超过阈值154,则编译器设备108将选择的模型118的模型b3 156应用于虚拟设计中布局的组件。在某些实施例中,编译器设备108通过确定编译时间152落在由阈值154定义的被认
为过高的时间范围或类别内,来确定编译时间152超过阈值154。模型b3 156可以是选择的模型118的一部分,其分析布局的组件的特征(例如,查找表的数目、寄存器的数目、触发器的数目、输入/输出连接的数目、存储器的数目、估计的布线拥塞)以预测布局和布线策略158。布局和布线策略158可以是用于布线布局的组件的策略,其在布线126期间减少编译时间和/或资源消耗。编译器设备108可以将布局和布线策略158应用于布线126。
63.如果编译时间152没有超过阈值154,则编译器设备108前进到布线126而不应用模型b3 156。换言之,如果编译器设备108确定预测的编译时间152不是太高,则编译器设备108前进到布线126,而不对编译过程进行调整。
64.编译器设备108执行布线126以布线虚拟设计中布局的部件。如果应用了模型b3 156,则编译器设备108可以基于布局和布线策略158来执行布线126。在编译器设备108完成布线126之后,编译器设备108通过虚拟设计发送测试信号以生成比特流128。然后,用户102和/或验证程序验证比特流128以确定虚拟设计是否按预期运行。
65.在某些实施例中,当确定编译时间132、142或152超过阈值134、144或154时,编译器设备108启动与原始编译过程分开的编译过程。例如,如果编译器设备108确定编译时间132超过阈值134,则编译器设备108可以启动基于布局和布线策略138执行逻辑调整122的单独编译过程。原始编译过程可以在不应用布局和布线策略138的情况下进行到逻辑调整122。因此,两个单独的编译过程可以并行进行。在该过程的后面,如果编译时间142超过阈值144,则编译器设备108可以再次启动单独的编译过程,该单独的编译过程在布置124期间应用布局和布线策略148。原始编译过程可以继续到布局124,而不应用布局和布线策略148。因此,三个独立的编译过程可能会并行进行。换言之,如果编译时间132超过阈值134,或者如果编译时间142超过阈值144,或者如果编译时间152超过阈值154,则编译器设备108可以在编译时间132、142或152超过阈值134、144或154的点处启动单独的编译过程。然后,编译器设备108可以在单独启动的编译过程中应用相应的布局和布线策略138、148或158。
66.在一些实施例中,如果在原始编译过程或单独启动的编译过程中编译时间142没有超过阈值144,则停止或终止单独启动的编译过程。结果,如果编译时间142没有超过阈值144,则编译器设备108可以认为单独启动的编译进程是不必要的,并且停止那些进程。然后,可以继续进行最初的编译过程。在一些实施例中,当单独启动的编译进程完成时,可以停止或终止所有剩余的编译进程。以这种方式,编译器设备108并行地考虑许多不同的编译策略,并使用来自最快完成的编译的结果。
67.图1c示出了如何在任何通用电子设计自动化(eda)过程中使用编译器设备108来改善编译过程。如图1c所示,eda过程期间的编译可以包括数个阶段120c、122c、124c和126c。这些阶段120c、122c、124c和126c依次出现。在图1b的示例中,这些阶段是网表120、逻辑调整122、布局124和布线126。编译器设备108可以选择要在编译过程的一个或多个阶段120c、122c、124c和126c期间应用的模型118。与图1b的示例类似,选择的型号118包括型号a1130c、a2 140c、a3 150c、b1 136c、b2 146c和b3 156c。模型118可以包括甚至更多的模型以适应具有更多阶段的编译过程。
68.类似于图1b的示例,编译器设备118可以在第一阶段120c期间选择模型118,并且在第一阶段120c期间将选择的模型118的模型a1 130c应用于特征,以预测指示用户偏好(例如,编译时间、资源消耗、效率、功率消耗、发热量等)的特定成本函数132c。然后,可以将
该预测成本函数132c与阈值134c进行比较,以确定是否应该应用选择的模型118的模型b1 136c来预测实现策略138c。如果应用模型b1 136c,则预测实现策略138c并且将其应用于第二阶段122c。如果不是,则编译过程进行到第二阶段122c。
69.根据需要,对第二阶段122c、第三阶段124c等重复该过程。例如,在这些阶段中的每个阶段期间,可以基于这些阶段期间的特征来选择模型118。可以应用模型a(例如,模型a2 140c或a3 150c)来预测成本函数(例如,成本函数142c或152c)。将该成本函数与阈值(例如,阈值144c或154c)进行比较,以确定是否应该应用模型b(例如,模型b2 146c或156c)来预测实现策略(例如,实现策略148c或158c)。如果应用模型b,则预测实施策略并且将其应用于后续阶段。如果不是,则编译过程进行到后续阶段。
70.图2示出了用于编译图1a、图1b和/或图1c的示例系统100中的设计的过程200的流程图。通常,编译器设备108执行过程200。在特定实施例中,编译器设备108通过执行过程200来减少编译时间和/或编译期间消耗的资源。
71.编译器设备108通过在202中生成针对设计110的网表120而开始。该设计可以是针对电路或电子组件的,例如,fpga设计。网表120列出了设计的组件以及这些组件之间的连接。编译器设备108可以分析网表120以确定是否应该在编译过程期间进行调整。
72.在204中,编译器设备108通过应用第一机器学习模型130来预测编译时间132、142或152。第一机器学习模型(例如,图1b中的模型a1 130、a2 140或a3 150)可以被设计成基于网表120中的特征、设计110的经调整的逻辑的特征或设计110的布局组件的特征来预测编译时间。
73.在206中,编译器设备108确定编译时间132、142或152是否超过阈值134、144或154。编译器设备108可以将编译时间132、142或152与阈值134、144或154进行比较以作出该确定。在一些实施例中,编译器设备108确定编译时间132、142或152是否落在由阈值134、144或154定义的被认为太高的时间范围或类别内。如果编译时间132、142或152没有超过阈值134、144或154,则编译器设备108在214中根据原始编译过程进行。换言之,如果编译时间132、142或152被认为不太高,则编译器设备108进行到逻辑调整122、布局124或布线126,而不对编译过程进行调整。
74.如果编译时间132、142或152超过阈值134、144或154,则编译器设备108在208中启动单独编译过程。在某些实施例中,编译器设备108不执行208。在210中,编译器设备108通过应用第二机器学习模型(例如,图1b中的模型b1 136、b2 146或b3 156)来预测布局和布线策略138、148或158。第二机器学习模型136、146、156可以被设计成预测布局和布线策略138、148或158,其在应用时减少编译时间和/或资源消耗。通常,第二机器学习模型分析网表120的特征、经调整的设计逻辑110的特征或设计110的布局组件的特征,以预测布局和布线策略138、148或158。在212中,编译器设备108根据布局和布线策略138、148或158进行调整(例如,调整设计110的逻辑、调整设计110的组件的布局、或调整设计110的组件的布线)。换言之,编译器设备108根据布局和布线策略138、148或158执行逻辑调整122、布局124或布线126。
75.图3示出了系统100训练机器学习模型的编译器设备108。在一个实施例中,编译器设备108使用图3中描述的技术来生成在图1a、图1b、图1c和图2中使用的机器学习模型。通常,编译器设备108训练可以在编译过程期间应用的一组模型。这些模型可以配置为考虑不
同类型的设计。因此,在某些实施例中,编译器设备108可以通过选择要应用的不同模型来增强数种不同类型的设计的编译过程。
76.编译器设备108存储基本模型304和基本数据306(例如,在存储器114中)。基本模型304包括使用基本数据306训练的一个或多个机器学习模型。基本数据306可以通过编译电路和/或电气组件的通用或更常见的设计来生成。基本模型304可以通过使用机器学习技术分析基本数据306来生成。编译器设备108的制造商或在编译器设备108上执行的软件的开发者可以通过编译公共设计来生成基本模型304和/或基本数据306。因此,当最初设置编译器设备108时,编译器设备108可以应用基本模型304和/或基本数据306来增强通用或更常见设计的编译。
77.尽管基本模型304可以在图1b和图2中描述的过程中使用,但是因为基本模型304和基本数据306是使用通用或更常见的设计来生成的,所以基本模型304和/或基本数据306可能不太适合由用户102创建的设计。例如,基本模型304可以是提供给用户的一个或多个默认机器学习模型,但是基本模型304可能不适合用户的期望。编译器设备108可以生成可在编译期间选择并且更适合特定用户102的设计的附加模型。编译器设备108可以接收一个或多个设计302,该设计302可以用于(例如,来自用户102a和102b)生成这些附加模型。这些设计302可以用于任何合适的电路或电子组件(例如,集成电路、fpga、硬件处理器、存储器阵列、片上系统等)。这些设计302可以由用户102a和102b创建。编译器设备108可以编译和/或分析这些设计302以训练附加的机器学习模型,所述附加的机器学习模型可用于增强对由用户102a和102b生成的后续设计的编译。换言之,设计302可以用作用户102a和102b的参考设计,编译器设备108可以使用这些参考设计来设计为用户102a和102b定制的模型。
78.编译器设备108编译和/或分析设计302以生成训练数据308。训练数据308可以包括与设计302的结构有关的信息以及与设计302的编译和/或分析有关的信息。例如,训练数据308可以标识设计302中的结构元素,例如然后组件的布局和布线。此外,训练数据308可以指示编译时间和/或在编译设计302中的特定结构期间消耗的资源。编译器设备108可以分析训练数据308以生成可应用于后续编译的附加机器学习模型。在图3的示例中,编译器设备108分析训练数据308以生成调谐模型310。编译器设备108还分析基本数据306和训练数据308两者以生成混合模型312。结果,调谐模型310可以特别适合于由用户102a和102b创建的设计,而混合模型312可以考虑由用户102a和102b创建的设计以及编译器设备108最初被设置为处理的通用或更常见的设计。这些模型可用于加强后续的编译工作。
79.编译器设备108可以基于用户102a和102b的偏好来偏置基本模型304、调谐模型310和/或混合模型312。例如,用户102a和102b可以选择编译器设备108用来偏置基本模型304、调谐模型310和/或混合模型312的一个或多个成本函数314。这些选择的成本函数314表示用户102a和102b的特定偏好。例如,如果用户102a和102b更喜欢减少编译时间,则用户102a和102b可以选择偏向于减少编译时间的成本函数314(例如,可能以增加资源消耗为代价)。作为另一示例,如果用户102a和102b更喜欢减少资源消耗,则用户102a和102b可以选择偏向于减少资源消耗的成本函数314(例如,可能以增加编译时间为代价)。作为另一示例,如果用户102a和102b更喜欢减少编译时间和资源消耗,则用户102a和102b可以选择平衡编译时间减少和资源消耗的成本函数314。使用选择的成本函数314,编译器设备108可以使用选择的成本函数314来调整基本模型304、调谐模型310和/或混合模型312,以将偏差引
入基本模型304、调谐模型310和/或混合模型312。以此方式,基本模型304、调谐模型310和/或混合模型312可以根据用户102a和102b的偏好进行调整和/或定制。用户102a和102b可以为用户102a和102b的任何适当偏好选择成本函数314。例如,用户102a和102b可以选择成本函数314,用于偏向功耗、定时、效率、发热量等。
80.作为示例,如果用户选择指示倾向于积极减少编译时间的成本函数314,则编译器设备108可以使基本模型304、调谐模型310和混合模型312偏向于减少编译时间。编译器设备108可以改变这些模型中的模型b1 136、模型b2 146和模型b3 156,以预测布局和布线策略138、148和158,当这些策略被实施时,尝试几个不同的调整、布局或布线,以查看哪个最大程度地减少编译时间。这些类型的策略可能会减少编译时间,但可能会导致编译期间的资源消耗增加。编译器设备108还可以降低阈值134、144和154,从而更频繁地应用模型b1 136、模型b2 146和模型b3 156以减少编译时间。
81.另一方面,如果用户选择指示对积极减少资源消耗的偏好的成本函数314,则编译器设备108可以使基本模型304、调谐模型310和混合模型312偏向降低资源消耗。编译器设备108可以改变这些模型中的模型b1 136、模型b2 146和模型b3 156,以预测布局和布线策略138、148和158,这些策略在实现时对布局和布线做出很少的调整。这些类型的策略可能会减少编译过程中的资源消耗,但可能会导致编译时间增加。
82.图4示出了图1a的示例系统100中用于训练模型的过程400的流程图。通常,编译器设备108可以执行过程400来训练图1a、图1b、图1c、图2和图3中使用的模型。在特定实施例中,通过执行过程400,编译器设备108减少了与编译设计相关联的编译时间和/或资源消耗。
83.编译器设备108在402中通过编译多个设计302以生成训练数据308开始。设计302可以由用户102a和102b创建,并被通信到编译器设备108。设计302可以用于任何合适的电路或电子组件(例如,集成电路、fpga、硬件处理器、存储器阵列等)。编译器设备108可以编译和/或分析设计302以生成训练数据308。训练数据308可以包括关于设计302内的结构以及在编译这些结构时所消耗的编译时间和/或资源的信息。
84.在404中,编译器设备108使用训练数据308生成调谐模型310。结果,调谐模型310被设计成处理由用户102a和102b创建的特定设计。然而,这并不意味着调谐模型310总是应用于用户102a和102b的设计的最佳模型。
85.在406中,编译器设备108使用训练数据308和基本数据306生成混合模型312。编译器设备108可以是基本模型304、调谐模型310和/或混合模型312中的一个或多个模型,以增强来自用户102a和102b的设计的编译。基本模型304可以被设计成处理通用或更常见的设计。调谐模型310可以被设计成处理由用户102a和102b创建的特定设计。混合模型312可以被设计为既考虑通用设计或更常见的设计,也考虑由用户102a和102b创建的特定设计。
86.在408中,编译器设备108接收选择的成本函数314。成本函数314可以由用户102a或102b基于他们对编译的偏好来选择。例如,如果用户102a和102b更喜欢减少编译时间,则用户102a和102b可以选择偏向于减少编译时间的成本函数314。作为另一示例,如果用户102a和102b更喜欢在编译期间减少资源消耗,则用户102a和102b可以选择偏向于减少资源消耗的成本函数314。用户102a和102b还可以选择平衡编译时间减少和资源消耗的成本函数314。本公开考虑用户102a和102b选择集中于用户102a和102b的任何适当偏好的成本函
数314。例如,用户102a和102b可以选择解决功率消耗、效率和/或热产生的成本函数314,仅举几个例子。
87.在410中,编译器设备108使用选择的成本函数314来偏置基本模型304、调谐模型310和/或混合模型312。编译器设备108可以使用选择的成本函数314来调整这些模型中的一个或多个模型,以使这些模型偏向于关注用户102a和102b的偏好。结果,在特定实施例中,当应用这些模型时,它们将解决用户102a和102b的偏好和期望。
88.图5示出了图1a的示例系统100的选择要应用于编译过程的模型的编译器设备108。在一个实施例中,编译器设备108使用图5中描述的技术来选择在图1a、图1b、图1c、图2、图3和图4中使用的机器学习模型,特别是在编译过程的不同阶段期间选择的机器学习模型。通常,编译器设备108基于设计的特征来选择适当的机器学习模型并将其应用于该设计。在特定实施例中,通过选择适当的模型并将其应用于设计,编译器设备108减少了编译期间消耗的编译时间和/或资源。
89.如前所述,当编译器设备108接收到指令116时,编译过程开始。指令116可以包括编译特定设计的指令。编译器设备108接收设计110,其可以是集成电路、fpga等的设计。指令116可以包括编译设计110的指令。响应于指令116,编译器设备108启动设计110的复杂化。编译过程包括一个或多个阶段501。在每个阶段501期间,编译器设备108可以根据图5的示例选择要应用的模型118。
90.例如,在第一阶段501期间,编译器设备108为设计110生成网表120。网表120包括设计110中的组件的列表以及这些组件之间的连接的列表。因此,网表120提供了设计110的结构的图片。在特定实施例中,编译器设备108从网表120标识设计110的一个或多个特征502。例如,网表120可以包括这些特征的列表502。作为另一示例,编译器设备108可以通过分析网表120中的组件和连接的列表来确定这些特征502。在图5的示例中,网表120包括特征502a和502b。本公开考虑网表120,包括任何适当数目的特征502。
91.然后,编译器设备108选择机器学习模型以在第一阶段501期间应用于设计110的编译。为了确定应该选择哪种型号,编译器设备108将网表120中的特征502与这些型号中列出的特征进行比较。在图5的示例中,编译器设备108选择要应用的基本模型304、调谐模型310和混合模型312中的一个模型。编译器设备108可以通过计算网表120中的特征502与基本模型304、调谐模型310和混合模型312中标识的特征之间的距离来确定应该选择基本模型304、调谐模型310和混合模型312中的哪个模型。在图5的示例中,编译器设备108确定特征502a和基本模型304中的特征504a之间的距离510a以及特征502b和基本模型304中的特征504b之间的距离510b。编译器设备108还确定特征502a和调谐模型310中的特征506a之间的距离512a以及特征502b和调谐模型310中的特征506b之间的距离512b。编译器设备108还确定特征502a和混合模型312中的特征508a之间的距离514a以及特征502b和混合模型312中的特征508b之间的距离514b。编译器设备108可以使用任何合适的处理来确定这些距离。例如,编译器设备108可以对特征之间的多个差异进行计数以确定距离。作为另一示例,编译器设备108可以对特征进行集群并确定集群的质心之间的距离。通过分析这些距离510、512和514,编译器设备108可以确定基本模型304、调谐模型310和混合模型312中的哪个模型最接近网表120和/或设计110。
92.在某些实施例中,编译器设备108基于某些特征502的重要性来加权距离510、512
和514。编译器设备108可以将权重516应用于距离510、512和514以创建加权距离518、520和524。权重516可以指示特征502在网表120中的相对重要性。在图5的示例中,权重516a可以对应于特征502a,并且权重516b可以对应于特征502b。结果,权重516a和516b指示特征502a和502b的相对重要性。例如,如果权重516a大于权重516b,则特征502a可以被认为比特征502b更重要。另一方面,如果权重516b大于权重516a,则可以认为特征502b比特征502a更重要。
93.编译器设备108将权重516应用于距离510、512和514以生成加权距离518、520和524。例如,编译器设备108可以将距离510a乘以权重516a,并将距离510b乘以权重516b。然后,编译器设备108可以将这两次相乘的结果相加,以产生加权距离518。编译器设备108还可以将距离512a乘以权重516a,并将距离512b乘以权重516b。然后,编译器设备108可以对这些乘法的结果求和以产生加权距离520。编译器设备108还可以将距离514a乘以权重516a,并将距离514b乘以权重516b。然后,编译器设备108可以对这些乘法的结果求和以产生加权距离524。编译器设备108可以将任何适当数目的权重516应用于任何适当数目的距离。例如,如果网表120包括十个不同的特征502,则可以应用十个不同的权重516。
94.编译器设备108基于加权距离518、520和524选择基本模型304、调谐模型310和混合模型312中的一个模型。例如,编译器设备108可以选择加权距离518、520和524中最短的模型。如果加权距离518短于加权距离520和524,则编译器设备108选择基本模型304。如果加权距离520短于加权距离518和524,则编译器设备108选择调谐模型310。如果加权距离524短于加权距离518和520,则编译器设备108选择混合模型312。然后,编译器设备108将选择的模型应用于设计110的编译。
95.在编译过程的后续阶段501期间,编译器过程可以重复该过程以选择基本模型304、调谐模型310和混合模型312中的一个模型。例如,编译器设备108可以在逻辑调整122和布局124期间重复该过程。可以在不同的阶段501期间选择不同的模型,因为特征502可以在不同的阶段改变。例如,即使在第一阶段501期间选择了基本模型304,特征502也可以在第二阶段期间改变以使得调谐模型310在第二阶段501期间被选择。
96.图6示出了图1a的示例系统100中用于选择模型的过程600的流程图。通常,编译器设备108可以执行过程600以选择在图1a、图1b、图2、图3、图4和图5的示例中使用的模型。在特定实施例中,通过执行过程600,编译器设备108减少了编译设计时所消耗的编译时间和/或资源。
97.编译器设备108通过在602中接收编译设计110的指令116开始。在某些实施例中,设计110是fpga设计。响应于接收到指令116,编译器设备108启动设计110的编译。
98.在604中,编译器设备108生成针对设计110的网表120。网表120可以包括设计110的组件的列表和组件之间的连接的列表。编译器设备108可以分析网表120以确定应用于设计110的编译的适当模型。
99.在606中,编译器设备108计算网表120和基本模型304之间的距离518。在某些实施例中,编译器设备108通过确定网表120中的特征502和基本模型304中的特征504之间的距离510来计算距离518。编译器设备108可以将权重516应用于这些距离510以产生距离518。
100.在608中,编译器设备108计算网表120和调谐模型310之间的距离520。在某些实施例中,编译器设备108通过确定网表120中的特征502和调谐模型310中的特征506之间的距
离512来计算距离520。编译器设备108可以将权重516应用于这些距离512以确定距离520。
101.在610中,编译器设备108计算网表120和混合模型312之间的距离524。在某些实施例中,编译器设备108通过确定网表120中的特征502和混合模型312中的特征508之间的距离514来计算距离524。然后,编译器设备108将权重516应用于这些距离514以确定距离524。
102.在612中,编译器设备108基于计算的距离518、520和524选择基本模型304、调谐模型310或混合模型312中的一个模型。在某些实施例中,编译器设备108选择具有最短关联距离518、520或524的模型。
103.在614中,编译器设备108使用选择的模型来编译设计。在特定实施例中,通过将选择的模型应用于设计的编译,编译器设备108减少了编译时间和/或在编译期间消耗的资源。
104.尽管已经使用了编译fpga设计的示例,但是本公开预期在编译任何合适的设备期间可以使用编译器设备108,例如任何合适的电路和/或任何合适的电子部件。例如,可以在集成电路的设计中使用编译器设备108。另外,尽管描述了减少编译时资源消耗的示例,但本公开预期编译器设备108被配置为解决用户102的任何顾虑。例如,用户102可以选择解决用户的任何顾虑的、任何合适的成本函数314。用户102可以选择集中于改善除编译时间和资源消耗之外的因素的成本函数314,例如效率、功耗等。编译器设备108可以将机器学习模型偏向选择的成本函数314,使得当在编译期间应用这些机器学习模型时,机器学习模型将预测优化这些其他因素的布局和布线策略。
105.图7示出了在例如集成电路或fpga的制品的设计、验证和制造期间使用的一组示例过程700,以转换和验证表示集成电路的设计数据和指令。这些流程中的每一个过程都可以作为多个模块或操作进行组织和启用。术语

eda’指的是

电子设计自动化’。这些过程开始于利用由设计者提供的信息来创建产品构思710,该信息被转换以创建使用一组eda过程712的制造物品。当设计完成时,将设计流片734,这是当集成电路的原图(例如,几何图案)被发送到制造设施以制造掩模组时,该掩模组然后被用于制造集成电路。在流片后,制造736半导体管芯,并执行封装和组装过程738以生产成品集成电路740。
106.电路或电子结构的规格可以从低级晶体管材料布局到高级描述语言。高级抽象可用于设计电路和系统,使用例如vhdl、verilog、system verilog、systemc、myhdl或openvera的硬件描述语言(

hdl’)。可以将该硬件描述转换为逻辑级寄存器传输级(

rtl’)描述、门级描述、布局级描述或屏蔽级描述。每个较低的抽象级别是较不抽象的描述,它为设计描述添加了更多有用的细节,例如,包括该描述的模块的更多细节。较低的抽象级别是不太抽象的描述,可以由计算机生成、从设计库派生或由另一个设计自动化过程创建。用于指定更详细描述的抽象语言的较低级别的规范语言的一个例子是spice,其用于具有许多模拟组件的电路的详细描述。每个抽象级别的描述能够由该层的相应工具(例如,正式验证工具)使用。设计过程可以使用图7中描述的序列。所描述的过程由eda产品(或工具)启用。
107.在系统设计714期间,指定要制造的集成电路的功能。可以针对例如功耗、性能、面积(物理和/或代码行)以及降低成本等所需特性来优化设计。在此阶段可以将设计划分为不同类型的模块或组件。
108.在逻辑设计和功能验证716期间,以一种或多种描述语言指定电路中的模块或组件,并且检查该规范的功能准确性。例如,可以验证电路的组件以产生与正在设计的电路或
系统的规格要求相匹配的输出。功能验证可以使用模拟器和其他程序,例如测试台生成器、静态hdl校验器和形式验证器。在一些实施例中,使用被称为

仿真器’或

原型系统’的特殊组件系统来加速功能验证。
109.在测试综合和设计718期间,将hdl码转换成网表。在一些实施例中,网表可以是图结构,其中图结构的边表示电路的组件,并且图结构的节点表示组件如何互连。hdl码和网表都是分级制造品,eda产品可以使用它们来验证集成电路在制造时是否按照指定的设计运行。该网表可以针对目标半导体制造技术进行优化。此外,可以测试完成的集成电路以验证该集成电路满足规范的要求。
110.在网表验证720期间,检查网表是否符合时序约束以及是否与hdl码一致。在设计规划722期间,为时序和顶层布线构建和分析集成电路的总体平面图。
111.在布局或物理实现724期间,发生物理布局(例如晶体管或电容器之类的电路组件的定位)和布线(通过多个导体连接电路组件),并且可以执行从库中选择单元以实现特定逻辑功能。如本文所使用的,术语

单元’可以指定提供布尔逻辑功能(例如,与、或、非、异或)或存储功能(例如,触发器或锁存器)的一组晶体管、其他组件和互连。如本文所使用的,电路

块’可以指两个或更多个单元。单元和电路块都可以被称为模块或组件,并且能够作为物理结构和在仿真中启用。为选择的单元指定参数(基于“标准单元”),例如大小,并使其可在数据库中访问,以供eda产品使用。
112.在分析和提取726期间,在布局级别验证电路功能,这允许改善布局设计。在物理验证728期间,检查布局设计以确保制造约束是正确的,例如drc约束、电气约束、光刻约束,并且电路功能匹配hdl型设计规范。在分辨率增强730期间,变换布局的几何形状以改善如何制造电路设计。
113.在流片期间,创建数据以用于生产光刻掩模(如果适当,则在应用光刻增强之后)。在掩模数据准备732过程中,用来生产光刻掩模,所述光刻掩模用于生产成品集成电路。
114.计算机系统(例如,图9的计算机系统900或图8的主机系统807)的存储子系统可用于存储由在此描述的一些或所有eda产品使用的程序和数据结构,以及用于开发库的单元以及用于使用库的物理和逻辑设计的产品。
115.图8描绘了示例仿真环境800的抽象图。仿真环境800可以被配置为验证电路设计的功能。仿真环境800可以包括主机系统807(例如,作为eda系统的一部分的计算机)和仿真系统802(例如,例如现场可编程门阵列(fpga)或处理器的一组可编程设备)。主机系统通过使用编译器810来构造仿真系统以仿真电路设计来生成数据和信息。要被仿真的电路设计也被称为在测设计(dut),其中来自仿真的数据和信息被用于验证dut的功能。
116.主机系统807可以包括一个或多个处理器。在主机系统包括多个处理器的实施例中,这里描述的由主机系统执行的功能可以分布在多个处理器之间。主机系统807可以包括编译器810,以转换以表示dut的描述语言编写的规范,并产生用于构造仿真系统802以仿真dut的数据(例如,二进制数据)和信息。编译器810可以变换、改变、重构、向dut添加新函数和/或控制dut的定时。
117.主机系统807和仿真系统802使用由仿真连接承载的信号来交换数据和信息。该连接可以是但不限于一个或多个电缆,例如具有与推荐的标准232(rs232)或通用串行总线(usb)协议兼容的管脚结构的电缆。该连接可以是有线通信介质或网络,例如局域网或广域
网,例如因特网。该连接可以是无线通信介质或具有使用例如蓝牙或ieee802.11的无线协议的一个或多个接入点的网络。主机系统807和仿真系统802可以通过例如网络服务器的第三设备交换数据和信息。
118.仿真系统802包括多个fpga(或其他模块),例如fpga 8041和8042以及附加的fpga至804n。每个fpga可以包括一个或多个fpga接口,通过这些接口,fpga与其他fpga(以及潜在的其他仿真组件)相连,以便fpga交换信号。fpga接口可以被称为输入/输出管脚或fpga焊盘。虽然仿真器可以包括fpga,但是仿真器的实施例可以包括替代用于仿真dut的fpga或与用于仿真dut的fpga一起使用的其他类型的逻辑块。例如,仿真系统802可以包括定制的fpga、用于仿真或原型的专用asic、存储器和输入/输出设备。
119.可编程设备可以包括可编程逻辑块阵列和可以使可编程逻辑块能够根据hdl码中的描述互连的互连层次。每个可编程逻辑块可以启用复杂的组合功能或启用逻辑门,例如和逻辑块以及异或逻辑块。在一些实施例中,逻辑块还可以包括存储器元件/设备,其可以是简单的锁存器、触发器或其他存储器块。根据不同逻辑块之间的互连的长度,信号可以在不同的时间到达逻辑块的输入端,从而可以临时存储在存储器元件/设备中。
120.可以将fpga 804
1-804n布局在一个或多个板8121和8122以及附加板812m上。可以将多个板布局到仿真单元8141中。可以使用仿真单元的底板或任何其他类型的连接来连接仿真单元内的板。此外,多个仿真单元(例如,8141和8142至814k)可以通过电缆或任何其他方式彼此连接,以形成多仿真单元系统。
121.对于要被仿真的dut,主机系统807向仿真系统802发送一个或多个位文件。位文件可以指定dut的描述,并且可以进一步指定由主机系统807利用跟踪和注入逻辑创建的dut的分区、分区到仿真器的fpga的映射、以及设计约束。仿真器使用位文件构造fpga以执行dut的功能。在一些实施例中,仿真器的一个或多个fpga可以将跟踪和注入逻辑内置于fpga的硅中。在这样的实施例中,主机系统可以不将fpga构建为模拟跟踪和注入逻辑。
122.主机系统807接收要仿真的dut的描述。在一些实施例中,dut描述采用描述语言(例如,寄存器传输语言(rtl))。在一些实施例中,dut描述是网表级别文件或网表级别文件和hdl文件的混合。如果部分dut描述或整个dut描述在hdl语言中,则主机系统可以综合dut描述以使用dut描述创建门级网表。主机系统可以使用dut的网表将dut划分成多个分区,其中一个或多个分区包括跟踪和注入逻辑。跟踪和注入逻辑跟踪通过fpga的接口交换的接口信号。此外,跟踪和注入逻辑可以将跟踪的接口信号注入到fpga的逻辑中。主机系统将每个分区映射到仿真器的fpga。在一些实施例中,跟踪和注入逻辑被包括在用于一组fpga的选择分区中。跟踪和注入逻辑可以内置于仿真器的一个或多个fpga中。主机系统可以综合多路复用器以映射到fpga中。跟踪和注入逻辑可以使用多路复用器来将接口信号注入dut逻辑。
123.主机系统创建描述dut的每个分区以及分区到fpga的映射的位文件。对于包含跟踪和注入逻辑的分区,位文件还描述了包含的逻辑。位文件可以包括布局和布线信息以及设计约束。主机系统存储比特文件和描述哪些fpga要仿真dut的每个组件的信息(例如,每个组件映射到哪个fpga)。
124.根据请求,主机系统将位文件传输到仿真器。主机系统向仿真器发信号以开始dut的仿真。在dut的仿真期间或在仿真结束时,主机系统通过仿真连接从仿真器接收仿真结
果。仿真结果是仿真器在dut仿真过程中产生的数据和信息,其中包括接口信号和接口信号的状态,这些数据和信息已经被每个fpga的跟踪和注入逻辑跟踪。主机系统可以存储仿真结果和/或将仿真结果发送到另一处理系统。
125.在对dut进行仿真之后,电路设计者可以请求调试dut的组件。如果提出这样的请求,则电路设计者可以指定要调试的仿真的时间段。主机系统使用存储的信息标识哪些fpga正在仿真该组件。主机系统检索存储的接口信号,该接口信号与该时间段相关联,并且由每个标识的fpga的跟踪和注入逻辑跟踪。主机系统向仿真器发信号以重新仿真标识的fpga。主机系统将检索到的接口信号发送到仿真器以在指定的时间段内重新仿真组件。每个标识的fpga的跟踪和注入逻辑将从主机系统接收的其各自的接口信号注入到映射到该fpga的dut的逻辑中。在多次重新模拟fpga的情况下,合并结果会产生完全调试视图。
126.主机系统在部件的重新仿真期间从仿真系统接收由所标识的fpga的逻辑跟踪的信号。主机系统存储从仿真器接收的信号。在重新仿真期间跟踪的信号可以具有比初始仿真期间的采样速率更高的采样速率。例如,在初始仿真中,跟踪信号可以包括每x毫秒保存的组件状态。然而,在重新仿真中,跟踪的信号可以包括每y毫秒保存的状态,其中y小于x。如果电路设计者请求查看在重新仿真期间跟踪的信号的波形,则主机系统可以检索存储的信号并显示该信号的曲线图。例如,主机系统可以生成信号的波形。之后,电路设计者可以请求在不同的时间段内重新仿真相同的组件或重新仿真另一个组件。
127.主机系统807和/或编译器810可以包括子系统,例如但不限于设计综合器子系统、映射子系统、运行时子系统、结果子系统、调试子系统、波形子系统和存储子系统。可以将子系统构建并启用为单个或多个模块,或者可以将两个或多个模块构建为模块。这些子系统一起构成仿真器并监控仿真结果。
128.设计综合器子系统将表示dut 805的硬件描述语言转换成门级逻辑。对于要被仿真的dut,设计综合器子系统接收该dut的描述。如果dut的描述完全或部分采用hdl语言(例如,rtl或其他抽象级别),则设计综合器子系统综合dut的hdl语言以创建门级网表,该门级网表具有根据门级逻辑对dut的描述。
129.映射子系统对dut进行分区,并将分区映射到仿真器fpga中。映射子系统使用dut的网表将门级的dut划分为多个分区。对于每个分区,映射子系统检索跟踪和注入逻辑的门级描述,并将该逻辑添加到该分区。如上所述,包括在分区中的跟踪和注入逻辑用于跟踪经由该分区映射到的fpga的接口交换的信号(跟踪接口信号)。跟踪和注入逻辑可以在分区之前添加到dut。例如,跟踪和注入逻辑可以由设计综合器子系统在综合dut的hdl语言之前或之后添加。
130.除了包括跟踪和注入逻辑之外,映射子系统还可以在分区中包括附加的跟踪逻辑,以跟踪未被跟踪和注入跟踪的某些dut组件的状态。映射子系统可以在分区之前的dut中或在分区之后的分区中包括附加跟踪逻辑。设计综合器子系统可以在综合hdl描述之前将附加跟踪逻辑包括在dut的hdl描述中。
131.映射子系统将dut的每个分区映射到仿真器的fpga。对于分区和映射,映射子系统使用设计规则、设计约束(例如,定时或逻辑约束)以及关于仿真器的信息。对于dut的组件,映射子系统在存储子系统中存储描述哪些fpga要仿真每个组件的信息。
132.使用分区和映射,映射子系统生成一个或多个位文件,所述一个或多个位文件描
述所创建的分区以及逻辑到仿真器的每个fpga的映射。比特文件可以包括附加信息,例如dut的约束和在fpga之间的连接的布线信息和每个fpga内的连接。映射子系统可以为dut的每个分区生成比特文件,并可以将该比特文件存储在存储子系统中。根据电路设计者的请求,映射子系统将位文件传输到仿真器,并且仿真器可以使用位文件来构造fpga以仿真dut。
133.如果仿真器包括专用asic,其包括跟踪和注入逻辑,则映射子系统可以生成将专用asic连接到dut的特定结构。在一些实施例中,映射子系统可以保存跟踪/注入信号的信息以及该信息存储在专用asic上的位置。
134.运行时子系统控制由仿真器执行的仿真。运行时子系统可以使仿真器开始或停止执行仿真。此外,运行时子系统可以向仿真器提供输入信号和数据。输入信号可以通过连接直接提供给仿真器,或者通过其他输入信号设备间接提供给仿真器。例如,主机系统可以控制输入信号设备向仿真器提供输入信号。输入信号设备可以是例如测试板(直接或通过电缆)、信号发生器、另一仿真器或另一主机系统。
135.结果子系统处理仿真器生成的仿真结果。在仿真期间和/或在完成仿真之后,结果子系统从仿真器接收在仿真期间生成的仿真结果。仿真结果包括在仿真期间跟踪的信号。具体地,仿真结果包括由每个fpga仿真的跟踪和注入逻辑跟踪的接口信号,并且可以包括由包括在dut中的附加逻辑跟踪的信号。每个跟踪信号可以跨越多个仿真周期。跟踪信号包括多个状态,并且每个状态与仿真的时间相关联。结果子系统将跟踪信号存储在存储子系统中。对于每个存储的信号,结果子系统可以存储指示哪个fpga生成跟踪信号的信息。
136.调试子系统允许电路设计者调试dut组件。在仿真器已经仿真了dut并且结果子系统已经在仿真期间接收到由跟踪和注入逻辑跟踪的接口信号之后,电路设计者可以通过在特定时间段内重新仿真组件来请求调试dut的组件。在调试组件的请求中,电路设计者标识组件并指示要调试的仿真的时间段。电路设计者的请求可以包括采样率,该采样率指示跟踪信号的逻辑应当以多频繁的频率保存被调试组件的状态。
137.调试子系统使用由映射子系统存储在存储子系统中的信息来标识正在仿真组件的仿真器的一个或多个fpga。对于每个所标识的fpga,调试子系统从存储子系统检索在由电路设计者指示的时间段期间由fpga的跟踪和注入逻辑跟踪的接口信号。例如,调试子系统检索由与时间段相关联的跟踪和注入逻辑跟踪的状态。
138.调试子系统将检索到的接口信号发送到仿真器。调试子系统指示调试子系统使用所标识的fpga,并且指示每个所标识的fpga的跟踪和注入逻辑将其各自的跟踪信号注入到fpga的逻辑中,以在所请求的时间段内重新仿真组件。调试子系统还可以将电路设计者提供的采样率传输到仿真器,从而跟踪逻辑以适当的间隔跟踪状态。
139.为了调试组件,仿真器可以使用组件已映射到的fpga。此外,组件的重新仿真可以在电路设计者指定的任何点上执行。
140.对于所标识的fpga,调试子系统可以向仿真器发送指令以加载具有所标识的fpga的相同配置的多个仿真器fpga。调试子系统还向仿真器发信号以并行使用多个fpga。多个fpga中的每个fpga与接口信号的不同时间窗一起使用,以在较短的时间量内产生较大的时间窗。例如,所标识的fpga可能需要一个小时或更长时间才能使用一定数目的周期。然而,如果多个fpga具有相同的数据和所标识的fpga的结构,并且这些fpga中的每一个运行周期
的子集,则仿真器可能需要几分钟时间才能使fpga共同使用所有周期。
141.电路设计者可以标识要重新仿真的dut信号的层级或列表。为了实现这一点,调试子系统确定模拟信号层次或列表所需的fpga,检索必要的接口信号,并将检索到的接口信号发送到仿真器用于重新仿真。因此,电路设计者可以标识要调试/重新仿真的dut的任何元件(例如,组件、设备或信号)。
142.波形子系统使用跟踪信号生成波形。如果电路设计者请求查看在仿真运行期间跟踪的信号的波形,则主机系统从存储子系统检索该信号。波形子系统显示信号的曲线图。对于一个或多个信号,当从仿真器接收到信号时,波形子系统可以自动生成信号的曲线图。
143.图9示出了计算机系统900的示例机器,其中可以执行用于使机器执行在此讨论的任何一个或多个方法的一组指令。在替代实现中,机器可以连接(例如,联网)到lan、内联网、外联网和/或因特网中的其他机器。该机器可以在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器操作,或者在云计算基本设施或环境中作为服务器或客户端机器操作。
144.该机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、网络设备、服务器、网络布线器、交换机或网桥、或能够执行指定该机器要采取的动作的一组指令(顺序或其他)的任何机器。此外,虽然示出了单个机器,但也应将术语“机器”视为包括单独或联合执行一组(或多组)指令以执行在此讨论的任何一种或多种方法的任何机器集合。
145.示例计算机系统900包括处理设备902、主存储器904(例如,只读存储器(rom)、闪存、例如同步dram(sdram)的动态随机存取存储器(dram)、静态存储器906(例如,闪存、静态随机存取存储器(sram)等)和数据存储设备918,它们经由总线930彼此通信。
146.处理设备902表示例如微处理器、中央处理单元等的一个或多个处理器。更具体地,处理设备可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、或实现其他指令集的处理器、或实现指令集组合的处理器。处理设备902还可以是一个或多个专用处理设备,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理设备902可以被配置为执行指令926,以执行在此描述的操作和步骤。
147.计算机系统900还可以包括用于通过网络920进行通信的网络接口设备908。计算机系统900还可以包括视频显示单元910(例如,液晶显示器(lcd)或阴极射线管(crt))、字母数字输入设备912(例如,键盘)、光标控制设备914(例如,鼠标)、图形处理单元922、信号生成设备916(例如,扬声器)、图形处理单元922、视频处理单元928和音频处理单元932。
148.数据存储设备918可以包括机器可读存储介质924(也称为非暂时性计算机可读介质),其上存储了体现在此描述的任何一个或多个方法或功能的一组或多组指令926或软件。在由计算机系统900执行指令926期间,指令926还可以完全或至少部分地驻留在主存储器904和/或处理设备902内,主存储器904和处理设备902也构成机器可读存储介质。
149.在一些实现中,指令926包括实现对应于本公开的功能的指令。虽然机器可读存储介质924在示例实现中示出为单介质,但术语“机器可读存储介质”应被视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“机器可读存储介质”还应被视为包括能够存储或编码由机器执行的一
组指令并使机器和处理设备902执行本公开的方法中的任何一个或多个的任何介质。因此,术语“机器可读存储介质”应被视为包括但不限于固态存储器、光学介质和磁性介质。
150.根据对计算机存储器内的数据比特的操作的算法和符号表示,已经给出了前面详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地将其工作的实质传达给本领域技术人员的方式。算法可以是导致期望结果的操作序列。运算是那些需要对物理量进行物理操作的运算。这些量可以采取能够被存储、组合、比较和以其他方式操作的电或磁信号的形式。这样的信号可以被称为位、值、元素、符号、字符、项、数字等。
151.然而,应当记住,所有这些和类似的术语将与适当的物理量相关联,并且仅仅是应用于这些量的方便的标签。除非另外特别说明,否则可以理解,在整个说明书中,某些术语指的是计算机系统或类似的电子计算设备的动作和过程,其将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操作并转换为类似地表示为计算机系统存储器或寄存器或其他此类信息存储设备内的物理量的其他数据。
152.本公开还涉及一种用于执行这里的操作的装置。该装置可以是为预期目的而专门构造的,或者它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的计算机。这样的计算机程序可以存储在计算机可读存储介质中,所述计算机可读存储介质例如但不限于任何类型的盘,包括软盘、光盘、cd-rom和磁光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡,或者适合于存储电子指令的任何类型的介质,每个都耦合到计算机系统总线。
153.这里呈现的算法和显示本身并不与任何特定的计算机或其他设备相关。各种其他系统可以与根据这里的教导的程序一起使用,或者可以证明构造更专门的设备来执行该方法是方便的。此外,不参考任何特定编程语言来描述本公开。应当理解,可以使用各种编程语言来实现在此描述的本公开的教导。
154.本公开可被提供为计算机程序产品或软件,其可包括其上存储有指令的机器可读介质,所述指令可用于对计算机系统(或其他电子设备)进行编程以执行根据本公开的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储介质、光存储介质、闪存设备等。
155.在前述公开中,参考其具体的示例实施方式描述了本公开的实施方式。显然,在不背离如以下权利要求中提出的本公开的实现的更广泛的精神和范围的情况下,可以对其进行各种修改。在本发明涉及单数时态的一些元件的情况下,在附图中可以描绘多于一个元件,并且相似的元件用相似的数字标记。因此,本公开和附图应被视为说明性意义而不是限制性意义。
再多了解一些

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

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

相关文献