CN103140853A - 在根据高级综合的蚁群优化电路设计中使用熵的方法和装置 - Google Patents
在根据高级综合的蚁群优化电路设计中使用熵的方法和装置 Download PDFInfo
- Publication number
- CN103140853A CN103140853A CN2011800476031A CN201180047603A CN103140853A CN 103140853 A CN103140853 A CN 103140853A CN 2011800476031 A CN2011800476031 A CN 2011800476031A CN 201180047603 A CN201180047603 A CN 201180047603A CN 103140853 A CN103140853 A CN 103140853A
- Authority
- CN
- China
- Prior art keywords
- solution
- cost
- flow diagram
- data flow
- edge
- 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
- 238000000034 method Methods 0.000 title claims abstract description 124
- 238000005457 optimization Methods 0.000 title claims abstract description 18
- 238000013461 design Methods 0.000 title abstract description 53
- 238000010586 diagram Methods 0.000 claims description 114
- 239000003016 pheromone Substances 0.000 claims description 43
- 230000014509 gene expression Effects 0.000 claims description 20
- 238000003860 storage Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 7
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 230000015572 biosynthetic process Effects 0.000 abstract description 7
- 238000003786 synthesis reaction Methods 0.000 abstract description 7
- 230000000153 supplemental effect Effects 0.000 abstract 1
- 230000006870 function Effects 0.000 description 86
- 230000008569 process Effects 0.000 description 46
- 238000004422 calculation algorithm Methods 0.000 description 17
- 238000006243 chemical reaction Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 10
- 230000006399 behavior Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 6
- 238000010606 normalization Methods 0.000 description 6
- 238000004088 simulation Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000001105 regulatory effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- RUQBGIMJQUWXPP-CYDGBPFRSA-N Ala-Leu-Ala-Pro Chemical compound C[C@H](N)C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](C)C(=O)N1CCC[C@H]1C(O)=O RUQBGIMJQUWXPP-CYDGBPFRSA-N 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 241000257303 Hymenoptera Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 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
- 238000010587 phase diagram Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000011079 streamline operation Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/04—Manufacturing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/06—Multi-objective optimisation, e.g. Pareto optimisation using simulated annealing [SA], ant colony algorithms or genetic algorithms [GA]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Computer Hardware Design (AREA)
- Economics (AREA)
- General Physics & Mathematics (AREA)
- Human Resources & Organizations (AREA)
- General Business, Economics & Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Tourism & Hospitality (AREA)
- Marketing (AREA)
- Game Theory and Decision Science (AREA)
- Health & Medical Sciences (AREA)
- Development Economics (AREA)
- Educational Administration (AREA)
- General Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Manufacturing & Machinery (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
描述了一种在根据高级综合的蚁群优化电路设计中使用熵的方法和装置。在一个示例中,选择将由电路执行的操作。用于执行操作的多个硬件部件用具有边沿和节点的数据流图来表示。用于执行操作的多个解决方案被模拟为被表示为数据流图上的路径的硬件部件组合。对于每个解决方案,包括在数据流图上被遍历的边沿和节点的数量以及补充子整数成本的成本被确定,并且具有最低成本的解决方案被选为用于电路的硬件部件组合。
Description
技术领域
所公开的实施方式涉及电路设计,尤其涉及为电路设计选择用于操作的时间约束调度的解决方案。
背景技术
对于数字电路(例如,超大规模集成(VLSI)技术的规模)的设计而言,设计者通常采用计算机辅助技术。已经开发了描述数字电路的标准语言(诸如硬件描述语言(HDL))来帮助设计和模拟复杂的数字电路。若干硬件描述语言(例如,VHDL(非常高速集成电路HDL)和Verilog HDL)已经演进为工业标准。VHDL和Verilog HDL是通用硬件描述语言,其允许通过使用抽象数据类型来定义门级、寄存器传输级(RTL)或者行为级的硬件模型。随着器件技术的持续发展,已经开发了各种产品设计工具来使HDL适用于与更新的器件和设计风格一起使用。
在用HDL码设计集成电路时,HDL源码描述了电路元件,而且综合过程根据该源码来产生RTL网表。该RTL网表典型地是独立于工艺的网表,因为其独立于特定销售商的集成电路(诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC))的工艺/架构。RTL网表对应于电路元件的示意性表示(与行为表示相反)。然后,执行映射操作以从独立于工艺的RTL网表转换成工艺专用网表,该工艺专用网表能够用于创建销售商的工艺/架构中的电路。现场可编程门阵列(FPGA)销售商使用不同的工艺和架构在他们的集成电路中实现逻辑电路。这产生了最终的网表,该最终的网表专用于特定销售商的工艺和架构。
高级综合(HLS)是将HLD(高级描述)的行为描述转换成寄存器传输级(RTL)描述的过程。HLS典型地用一组设计目标和约束来完成。因此,虽然可能存在着许多不同的方式来实现HLD的行为,但是HLS寻求在最小化特别定义的成本的同时来完成该行为。所定义的成本是典型的事情,诸如循环时间、元件数、硅面积、功率、互连、引脚数等。这些约束典型地受到形态因数、封装约束、互操作性和类似因素的驱动。HLS能够被描述为编译用高级语言(HLL)所写的规范、向规范中的操作分配硬件资源并且之后生成RTL描述。
为了生成RTL描述,HLS对操作进行调度、向特定功能硬件单元分配操作、向存储元件分配任意变量、以及向将功能单元连接到存储寄存器和输入/输出接口的通信总线分配任意数据传输。在包括数字信号处理器(DSP)在内的许多设备中,RTL描述提供了系统的输入和输出以及将被执行的算法。这些被描述为帧。基于帧的算法通过使用帧数据来描述。输入数据在帧中被接收,而且输出数据在帧中被产生。
基于帧的算法典型地在HLS中被如下综合:首先,器件从输入流中收集帧数据;之后,器件对帧数据进行处理;以及最后,器件将输出帧作为输出流进行发送。该帧综合包括操作的调度以及将操作绑定到硬件上以获得优化的器件设计。该方法的吞吐量(throughput)低。
蚁群优化(ACO)是近来的一种优化方法,其已经被应用到许多不同的问题上。在ACO中,每个蚂蚁都构建候选解决方案,并根据与其所构建的每个解决方案相关联的成本来留下信息素。ACO允许找到若干个不同的解决方案。之后,可以将这些解决方案进行相互比较,以找到最佳解决方案。然而,ACO的明显局限在于,ACO不能被直接应用到现有解决方案方法中。
发明内容
描述了一种在根据高级综合的蚁群优化电路设计中使用熵的方法和装置。在一个示例中,选择将由电路执行的操作。用于执行操作的多个硬件部件用具有边沿和节点的数据流图来表示。用于执行操作的多个解决方案被模拟为被表示为数据流图上的路径的硬件部件组合。确定每个解决方案的成本,该成本包括在数据流图上被遍历的边沿和节点的数量以及补充子整数(sub-integer)成本。具有最低成本的解决方案被选为用于电路的硬件部件组合。
附图说明
通过示例的方式示出所公开的实施方式,并且所公开的实施方式不受附图中的图形的限制,其中,类似的标号指代类似的元件。
图1是用于基于高级描述来执行电路设计的高级综合的过程流程图的示例。
图2是电路设计的数据流图的示例性表示。
图3是图2的数据流图的可替换示例性表示。
图4是针对使用输入和输出数据帧来进行电路设计的流水线操作的一个实施方式的过程流程图。
图5示出了用于实施图4的过程的系统的一个实施方式。
图6是用于使用蚁群优化来解决电路设计的过程流程图的示例。
图7示出了用于实施图6的过程的系统的一个实施方式。
图8是用于确定在图6的过程中使用的电路设计的补充成本的过程流程图的示例。
图9是用于估计在图6的过程中使用的互连成本的过程流程图的示例。
图10是用于确定在图6的过程中使用的用于选择解决方案的引导函数(guiding function)的过程流程图的示例。
图11是用于确定在图6的过程中使用的用于在局部搜索中选择邻居的函数的过程流程图的示例。
图12是被配置成用于与所公开的实施方式一起使用的数据处理系统的框图示例。
具体实施方式
所公开的实施方式中的至少一个实施方式寻求使用蚁群优化(ACO)方法来改善集成电路的设计。在一个实施方式中,附加成本被增加到候选解决方案的成本中,以改善附加候选解决方案的选择。
高级综合(HLS)是用于将复杂集成电路系统的行为描述转换成能够被用于构建该系统的RTL描述的过程。一些行为描述可以包括帧综合,在该帧综合中描述了输入帧和相应的输出帧。
在图1的上下文中示出了用于采用HLS来设计电路的基本过程。图1的过程从例如在步骤102中在HLD中建立高级描述开始。该描述将提供将由电路执行的操作,在一个实施方式中,所述操作可以包括一种或多种类型的局部操作。局部操作是更大操作的一部分,该局部操作被执行以完成该更大操作。对于乘法操作,局部操作可以包括加法和寄存器移位。实施方式能够被应用于任意类型的操作(无论是完整的还是局部的)。所有的操作(无论是全部的还是局部的)将在本文中被简称为操作。
在步骤104中识别HLD中的操作,以及在步骤106中将变量分配给这些操作。基于将被使用的时间顺序对用于这些操作的变量进行识别和排序。在步骤108,基于该相同的时间来对操作进行排序。在一个实施方式中,能够在步骤110中对用于执行这些操作的硬件部件进行定义。
存在着不同的方式来确定执行所有操作所需的硬件部件的最佳组合。在一个实施方式中,在步骤114,将用于执行操作的不同解决方案模拟为硬件部件组合。在步骤112向每个解决方案分配成本,而且在步骤116中将具有最低成本的解决方案选为用于最终电路设计的硬件部件组合。成本的选择和计算成为找到解决方案的重要部分。
基于帧的输入/输出
当HLD至RTL的系统被应用到输入和输出数据帧时,变量向硬件部件的分配变得更为复杂。如果帧被单独处理,则由寄存器传输级描述所描述的结果器件将比所需的更慢。能够通过使用流水线结构处理帧来增加器件的效率和速度。在流水线结构中,对处理元件进行布置,以便每个元件的输出是下一元件的输入,以及以便每个周期执行一个操作。
对于全流水线架构而言,帧综合的特定难点在于将帧数据映射或绑定到存储寄存器。存储器映射的设计大大地影响了支持流水线架构所需的多路复用逻辑和控制逻辑的成本。如果存储器映射首先被执行,则必须存在着关于操作序列的假设。这些假设在调度算法完成之后会是错误的。另一方面,如果首先执行调度,则调度算法会产生使其难以将变量映射到至少一些存储块的解决方案。因此,在一个实施方式中,将用于支持流水线的调度算法链接到相应的绑定算法,而且存储器映射作为调度的一部分而被执行。
通过将帧综合与调度和绑定算法相集成,输入/输出帧综合能够在调度阶段被考虑到(accommodated)。另外,以预定顺序到来的输入帧数据以及没有所确定顺序的输入帧数据都能够被考虑到。
能够使用图结构或数据流图来定义调度和绑定算法。这种图结构能够被表示为(V,E,W)。V是操作v的集合。每个操作都具有操作类型,其提供了能够在其上执行相应操作的硬件单元类型。如上所述,术语“操作”包括局部操作。E是边沿e的集合,其中边沿e是从一个操作到另一操作的连接。W是给出边沿的寄存器数w的函数。
数据流图能够由节点和边缘构成,其中节点表示组合计算单元,边缘则将节点互连。延迟(例如,寄存器)被表示为边沿上的权重(w)。每个节点都具有与其相关联的执行时间。在图2和图3中示出了数据流图的示例,其示出了用于构建数据流图以用于重定时的方法。图2和图3是相同图的两种不同表示,从而例如加法器205和225是相同的加法器。图2中的组合计算单元(例如,加法器205、乘法器207和209)被表示为计算节点(例如,图3中的节点225、227和229)。图2具有输入201和输出203。相同的路径应用于图3。
组合计算单元的执行时间能够由相关联节点的计算时间来表示。例如,节点225可以具有2ns的计算时间,这是由加法器205所要求的;以及节点227和229中的每个节点可以具有4ns(纳秒)的计算时间,这是由乘法器(例如,209或者207)所要求的。边沿表示计算单元之间的连接。边沿231表示乘法器207与加法器205之间的连接。边沿231具有权重1,从而表示寄存器217(或者因寄存器217导致的一个时钟周期的等待时间)。类似地,边沿233因寄存器215而具有一个时钟周期的等待时间。边沿235表示乘法器209与207之间的连接;而且不存在与边沿235相关联的延迟。
数据流图能够用于对路径和等待时间进行比较。例如,在图3中,从节点229到节点227的路径包含具有零延迟的边沿235;以及从节点229到节点227的路径花费了最长的计算时间(例如,8ns,其中4ns是用于节点229的,以及4ns是用于节点227的)。因此,图2中的电路的最小时钟周期是8ns。在图3中,边沿233上的延迟能够被移动到边沿235上,从而关键路径变成节点225与229之间的路径,该路径花费了仅6ns的计算时间。因此,将延迟从边沿233移动到边沿235(其能够通过将寄存器215从位于加法器205与乘法器209之间移动到位于乘法器209与207之间来实施)允许修改后(重定时后)的电路以6ns的缩减延迟进行操作。
用于电路模块的定时模型能够通过将该模块分解成寄存器和组合计算元件并将每个节点分配给每个组合计算元件来构建。每个硬件模块的定时模型是组合计算单元、延迟和互连的定时模型的组合。在转换特定硬件模块时使用的节点和边沿集的聚集实际上是该硬件模块的定时模型(数据流图)。
虽然数据流图能够由图2和图3所示类型的图来表示,但是数据流图还能够用其他方式来表示,包括表格、具有元数据的文本以及数学方程式。在上面的示例中,v值的集合V由节点表示,e值的集合E由节点之间的边沿表示,以及w值的集合W由一些边沿上的寄存器表示。
输入和输出帧数据表示使用帧数据的电路的输入和输出数据。数据帧可以是一维的或者多维的。在一维帧的上下文中描述了实施方式。然而,相同的原理能够被用于将这些原理扩展到多维。一维帧(F)能够被表示为变量集{v1,v2,vn},其中,n是帧(|F|)的大小。
用于生成针对给定数据流图(V,E,W)的RTL规范的变换算法的伪代码能够被如下表示:
在上面的过程中,op是变量名,该变量名指代针对帧的变量的新创建的操作。OpConsume指代将来自输入帧的变量用作其输入的操作。OpSource指代产生输出帧的变量作为其输出的操作。
可以针对帧的每个变量来执行上述的变换。这提供了能够被用于对帧输入/输出(I/O)进行综合的一组边沿E。在诸如上面描述的那些变换之类的变换的帮助下,能够在满足调度和绑定目的的同时解决帧综合问题。首先,由于每个帧具有其自己的唯一操作类型,所以仅一个硬件单元能够被分配给整个帧的数据。这自动地将帧数据转换成完全流水线式串行数据。综合后的帧的存储和多路复用成本也能够被最小化。
上面描述的变换能够被用于任意的串行输入序列。如果该串行序列时预定的,则该序列的顺序能够被变换成调度。换言之,由帧变换所产生的操作作为调度算法的预步骤而被调度。该预步骤的伪代码能够表示如下:
图4示出了对应于上面示出的伪代码示例的一个实施方式的过程流程图。在图4中,在401处,来自高级描述(HLD)的输入数据帧的变量被针对该数据帧的所有变量v进行初始化。在402处,为HLD中的每个变量定义操作类型。在403处,为其中一个变量创建新操作(op)。如上所述,op是变量名,该变量名指代针对帧的变量的新创建的操作。在404处,该新op被添加到数据流图的操作中。
在405处,确定该变量是否被ConsumeOp所使用。ConsumeOp指代将来自输入帧的变量用作其输入的操作。如果变量没有被消费操作所使用,则在数据流图中创建从在403处创建的新操作至消费操作的边沿。之后,该过程流前进到407以确定是否存在着任何另外的变量。
如果该变量被消费操作所使用,则在406处确定该变量是否是由SourceOp所产生。源操作是产生输出帧的变量的操作。如果该变量不是由源操作所产生,则在412处,在数据流图中创建从源操作至在403处针对那个变量所创建的新操作的边沿。另外,那个边沿上的权重可以被设置为0。在创建边沿之后,该过程前进到407以确定是否存在着另外的变量。
如果该变量是由源操作所产生,则之后在407处,确定是否存在着任何另外的变量。如果存在着另外的变量,则该过程流返回到402处,以为下一变量定义操作类型。在一个实施方式中,针对输入数据帧的所有变量来重复该过程,直到所有被定义的变量都已经被绑定到消费操作和被绑定到源操作。
在所有变量都已经被定义和连接到操作之后,该过程前进到408,这些变量能够被排序到帧中。在一个实施方式中,这使用传统的方法来完成。
在409处,基于变量的顺序对操作进行排序。在410处,针对所有附加输入时间帧来重复该过程。在所有输入时间帧都已经在数据流图中被表征和定义并被绑定到操作之后,以及在操作已经被排序之后,在一个实施方式中,该信息能够被用于在210处确定如图2所建议的硬件部件组合。
图5示出了用于实施帧绑定过程的帧绑定器模块的一个实施方式。该系统能够作为专用集成电路(ASIC)、数字信号处理器(DSP)或另一电子器件的离散部件而被实施。该系统可以在运行在计算机系统上的软件模拟系统中被实施。图5的模块包括高级描述(HLD)分析器501,该高级描述分析器将它的分析提供给操作与变量绑定器503。高级描述分析器501对数据帧的所有变量进行初始化,定义操作类型并为每个变量创建操作。
HLD分析器501由高级描述(HLD)511提供。在一个实施方式中,HLD511能够被存储在可由HLD分析器501使用的任意类型的存储器中,并向操作与变量绑定器503提供希望用于期望的最终电路设计的操作、变量和数据帧。操作与变量绑定器503将变量绑定到操作并将操作绑定到硬件类型。在一个实施方式中,操作与变量绑定器503耦合到所存储的设计约束集513,该设计约束集建立期望性能和硬件局限以及意欲应用于该解决方案的任何其他设计要素。
操作与变量绑定器503向解决方案模拟器505提供绑定的操作和变量。该模拟器505创建硬件模块和硬件连接形式的解决方案。在一个实施方式中,该解决方案能够通过参考数据流图或以各种其他方式进行创建。在一个实施方式中,来自解决方案模拟器505的该解决方案被提供给成本估计器507和选择模块509。在一个实施方式中,选择模块509查看每个解决方案和来自估计器507的那些解决方案的成本,并为集成电路设计选择最终的设计。
如上所述,能够选择将由将被设计的集成电路所执行的操作。该操作能够包括不同类型的一个或多个局部操作。在一个示例中,该操作可以是复杂的更大操作,诸如数学算法、转换或变换,而且该操作可以包括位于那个操作中的各种单独步骤。这些单独步骤能够被当做分离的操作或者被当做整个操作中的局部操作。
电路的操作和性能都能够在高级描述中进行描述。这些操作(包括可以是整体操作的一部分的任意局部操作)在HLD中被识别。将由这些操作所使用的变量基于这些变量将由局部或全部操作所使用的时间来识别和排序。局部操作能够基于变量的顺序进行排序。通过使用例如解决方案模拟器来开发解决方案,解决方案模拟器表示用于以各种不同方式中的任意方式来执行操作的不同硬件部件。在一个实施方式中,诸如图2和图3所示的具有如上所解释的边沿和节点的数据流图能够被用于模拟解决方案。
边沿和节点基于局部操作的顺序进行连接。在一个实施方式中,不同的解决方案能够被模拟以用于执行这些操作。解决方案将操作表示为硬件部件组合,而且这些组合能够被表示为数据流图上的路径。对于这些解决方案中的每个解决方案,能够确定成本,以便能够对不同的解决方案进行比较。术语“成本”能够指代用于完成该路径的时间。该成本能够以各种不同的方式进行计算。简单的方法是将包括在数据流图上被遍历以执行整个解决方案的边沿和节点的数量。具有最低成本的解决方案能够被选为用于期望电路设计的硬件部件组合。在一个实施方式中,该过程能够被重复,直到高级描述的所有操作都已经被表征以及解决方案已经被找到。在另一实施方式中,可以评估可能解决方案的子集。
操作的排序能够对解决方案产生明显的影响。在一个实施方式中,产生变量的操作在消费该变量的操作被排序之后被排序。在上述描述的上下文中,消费操作首先被全部定义和排序,之后源操作基于消费操作的排序进行排序。这有助于确保每当变量被消费时,该变量已经由之前的操作所产生,以便该变量能够用于消费。
ACO信息素中的虚拟成本
所得到的电路的质量依赖于被模拟的解决方案的质量。对于特别复杂的电路,可能解决方案的数量变得非常大。不是模拟所有可能的解决方案,而是已经开发了一种用于尝试仅模拟最佳解决方案的技术。在一些技术中,建立基线,而且该过程试图找到比基线更好的解决方案。用于生成候选解决方案的另一技术称为蚁群优化(ACO),该蚁群优化试图通过使用对蚂蚁如何优化它们的蚁群与食物源之间的路径进行建模的技术来对解决方案进行优化。
图6示出了针对ACO的一个实施方式的简化过程流图。在图6中,在601处,首先对该过程的参数进行初始化。在用高级综合(HLS)来变换HLD的情况中,该初始化能够包括生成操作和变量以及创建包括节点和边沿的网图。在初始化中包括的操作的一个实施方式在上面的图4和5的上下文中被描述。
接下来,在602处,创建虚拟蚂蚁的群,而且为每只蚂蚁构建问题的解决方案。虽然已经使用了具有几百只蚂蚁的蚁群,但是依赖于应用,十或更少通常将提供好的结果。在603处,针对每个解决方案,执行局部搜索。该局部搜索能够选择另外的解决方案或路径。在605处,对于每个解决方案,对所使用的边沿上的相应信息素进行更新。在602处,针对所构建的所有蚂蚁来重复该过程。当在604处已经生成了足够的解决方案时,该过程结束,其中基于那个解决方案的信息素轨迹的强度选择了其中一个或多个解决方案。
604处的终止条件能够基于许多不同的因素。典型地,使用预定数量的循环。然而,终止条件能够基于解决方案成本的变化、信息素的变化量或者更复杂的确定,诸如针对所构建的解决方案的拐点和绘图成本(graphedcost)。
在图6的示例中,没有将解决方案的选择示为分离的块,因为这被包括在603处的局部搜索中。局部搜索603能够将在602处构建的解决方案与之前的解决方案进行比较或者与不同的局部可能性进行比较,以便选择一个或多个局部解决方案进行模拟。为此,之前的解决方案能够与当前的解决方案进行比较,而且能够确定当前的最佳解决方案。信息素能够基于当前解决方案与最佳的之前解决方案之间的差异进行更新。通过采用这样的方法,跟踪最佳解决方案。当终止条件满足时,该最佳解决方案能够被用作最终的结果。可替换地,能够使用分离的过程(未示出)来检查所有的结果并挑选最佳解决方案。
在一些示例中,每次产生一个解决方案。在针对图6的示例的一个实施方式中,在602处,构建单个解决方案,并且之后在603处构建一个或几个邻近的解决方案。在与第一解决方案相关联的信息素被存放之后,在605处,将另一解决方案或其邻居的信息素进行存放。在另一实施方式中,在每个实例处构建、比较20或30个解决方案,并且之后局部搜索尝试为最佳的当前解决方案找到更好的邻近解决方案。
虽然在实际的蚁群中,每只蚂蚁留下信息素以便后来的蚂蚁能够确定哪些路径已经是更受欢迎的,但是在ACO中,将成本因素用作信息素以指示哪些解决方案是优选的。结果,ACO能够用比实际蚁群所需的蚂蚁更少的虚拟蚂蚁来解决更复杂的路径问题。在图6的示例中,在605处将信息素指示为增量因子,这将在下面针对本发明的特定实施方式进行解释。
在一个实施方式中,图6的过程流能够由图7所示的硬件或软件模块执行。如采用图5所示的,这些模块能够在硬件中作为ASIC、DSP或其他电路的离散或混合功能块而被实施。在另一实施方式中,这些模块能够在计算机系统上的软件中实施。如图7所示,蚂蚁构建模块703基于所提供的问题约束来生成一个或多个解决方案。在一个实施方式中,这些解决方案之后被应用于局部搜索模块705。该模块对可以产生局部的更好结果的邻近解决方案进行搜索。在一个实施方式中,由局部搜索模块705所选择的最佳局部解决方案能够被反馈给蚂蚁构建模块,以便能够构建和模拟完整的解决方案。在一个实施方式中,在蚂蚁构建模块中模拟了每个解决方案之后,在存储器707中更新并存储信息素。在另一实施方式中,每个新的解决方案与当前最佳解决方案进行比较,而且基于该比较来更新信息素。这些信息素之后能够由蚂蚁构建模块用来构建和模拟解决方案以及由局部搜索模块用来帮助引导局部搜索。在一个实施方式中,图7中描述的整个系统对应于图5的解决方案模拟器505。
ACO的一个应用是用于集成电路设计领域中的时间约束调度(TCS)。然而,能够将ACO应用于集成电路设计的许多其他方面。TCS设法减小在固定数量的时步(time step)中的操作集之间所共享的资源的数量。在传统TCS的上下文中,与调度相关联的成本函数是被调度到同一时步的操作的最大数量。
当将ACO应用到TCS时,蚂蚁趋向于在局部最佳处进行收集。换言之,当某个解决方案比邻近解决方案更好时该过程将停滞,即使在一定距离远处有更好的解决方案可用。该停滞因解决方案空间中的平坦(邻域具有相同的成本函数)而发生。这已经通过在解决方案构建阶段设法更好地使蚂蚁随机化而得到解决。虽然这能够促使蚂蚁在若干不同的局部最佳处停滞,但是其不会促使蚂蚁在它们已经到达局部最佳处之后尝试不同解决方案平面上的解决方案。
蚂蚁基于局部搜索中的成本和信息素中的成本来选择解决方案。调整这些成本能够改变蚂蚁的行为。然而,这些成本也被用来选择最佳解决方案,从而对成本的任何调整都应当考虑该调整对最终设计解决方案选择的影响。在一个实施方式中,虚拟成本因素被添加到实际成本中。虚拟成本因素被设计成改变解决方案空间的形状。依赖于应用,补充虚拟成本能够被用于替代改善的随机化技术或者作为该改善的随机化技术的补充。虚拟成本能够被用来引导蚂蚁,但是不被用来选择解决方案。将该虚拟成本与实际成本相分离能够在平坦解决方案中引导蚂蚁,但不影响最终的设计选择。
解决方案空间中的平坦由成本函数引起,并且通过成本函数如何被传统地(以及自然地)定义而被确定。采用传统定义,大量不同但临近的解决方案被期望具有被调度到相同的时步中的相同的最大数量的操作。由于成本函数被表示为多个操作,所以其是整数并且这在解决方案空间中提供了“台阶式的局面(terraced landscape)”。换言之,许多邻近的解决方案会在一步中具有相同数量的操作,而且许多其他邻近的解决方案在任意方向上相差一。成本函数并不提供用于对具有相同的操作数量最大值的不同解决方案进行区分的方法。
在一个实施方式中,该“台阶式局面”能够用子整数补充成本因子来标注等高线。该子整数成本因子能够给出整数步骤之间的值,以便给出针对解决方案空间局面的“自然连续斜率”。这允许蚂蚁使用子整数成本以用于局部导航并且将蚂蚁向着更低的局部级成本引导。
能够使用各种不同的补充成本因子。在一个实施方式中,该补充成本因子被合并到实际成本中,从而对实际成本进行补充。该成本能够之后不被计算为解决方案的成本。在另一实施方式中,补充成本因子是虚拟的,因为没有针对最终的解决方案对其进行最小化。其被用于增强导航。这能够通过用其对具有相等的传统定义的整数成本的两个候选解决方案进行比较来完成。补充成本能够之后被用来支持(favor)更接近于更好解决方案的解决方案。
各种不同的成本能够被用作补充成本函数,诸如概率、方差、协方差等。在一个实施方式中,使用时步(调度)上的操作的柱状图的归一化熵。通过将柱状图的归一化熵合并到成本函数中,针对信息素的用途的成本能够按实际成本(每一时步中操作的最大数量)减去柱状图的归一化熵而被计算。
在通过蚁群优化进行时间约束调度的上下文中,在一个实施方式中,局部最优化处蚂蚁的搜索能够通过将该补充虚拟成本因子合并到传统整数成本函数中来抑制停滞。
诸如图6所示的基本ACO算法的高级伪代码能够表示如下:
存在着不同的信息素更新策略,但是在TCS领域中,普遍使用解决方案(S)成本(Cs)。在一个实施方式中,这被应用以确定数据流图(诸如图2和图3所示的数据流图)中的节点i与节点j之间的边沿(ij)的信息素的递增值(Δij)。由信息素增量值所指示的更好的解决方案将是具有更小增量或最少量的改变的解决方案。如上所述,虽然信息素在引导将模拟的下一解决方案的选择方面是有帮助的,但是最终的解决方案不是基于信息素而是基于实际成本进行选择。由于实际成本的整数特性,会存在着具有相同的最低成本的若干解决方案。
递增值Δij能够被如下确定:
Δij=1/Cs如果ij属于S;否则为0
在TCS算法中,解决方案的成本(CS)能够被如下确定:
根据其被分配的时步来创建操作的柱状图阵列(HD)
将HD初始化成零
对于每个操作,将HD的值递增1[操作的调度]
CS是HD中的最大值
当使用补充成本时,在一个实施方式中,能够用如下的方式来确定成本:
如上所述计算柱状图(HD)
将X定义为时步,其是从0至tmax的整数(其中tmax是时步或时隙的最大数量)
几率P来自柱状图;P=HD/N(其中N是操作的数量)
归一化的熵;Hn(X)=(1/log(Length(P)))*Sum{log(P(k))*P(k)},其中k=0…tmax
CS=max{D}–Hn
能够通过明确的示例来进一步说明上述的伪代码。考虑这样的HLD,该HLD提供存在着将被执行的10个操作以及在其中执行这些操作的4个时隙。这些时隙能够被标记为0,1,2,3。在该情况中,N=10,tmax=4。
一个解决方案可能具有下述的操作调度(0,2,1,0,3,3,1,1,1,0),其中每个数字对应于某个操作,而且数值对应于其时隙。在该示例性解决方案中,操作可以被调度,以便:
3个操作被调度到时隙0,所以HD(0)=3,
4个操作被调度到时隙1,所以HD(1)=4,
1个操作被调度到时隙2,所以HD(2)=1,
2个操作被调度到时隙3,所以HD(3)=2
因此,柱状图阵列HD=(3,4,1,2)。
几率或长度P=HD/N=HD/10=(0.3,0.4,0.1,0.2)。这是序列的大小,该序列的大小为4,其等于tmax。
熵(En)之后成为每个HD值(log(P(k)))(P(k)的和,其中k=1至4。P(k)序列为(0.3,0.4,0.1,0.2)。
通过允许一些四舍五入,熵成为:(0.15+0.16+0.1+0.14)=0.55。
归一化熵(Hn)之后变为(1/log4)*(0.55)or1.6*0.55=0.88。
由于在任意一个时步中存在着不多于4个的操作,所以max{HD}是4以及解决方案成本CS=4-0.88=3.12。通过非整数熵值来修改整数解决方案成本能够允许对类似的解决方案进行区分。当然,能够增加小数的数量或精度级别以显示不同解决方案之间甚至更大的差异。精度级别能够被修改以适合任意特定的应用。然而,在一个实施方式中,补充成本的值足够小以致于其并不能改变已经具有与其相关联的不同成本的解决方案之间的关系。在一个实施方式中,补充成本的值总是小于1,因为实际成本被计算为整数。虽然上面提供了用于确定熵的特定方法,但是能够以各种其他方式来确定熵。
图8示出了用于计算虚拟成本的过程流图的一个实施方式。在图8中的801处,创建时步的柱状图阵列。在一个实施方式中,该柱状图对应于在上面的示例中被识别为资本(capital)HD的柱状图阵列。在803处,确定HD的最大值。在805处,确定操作的数量。在一个实施方式中,这被分配资本值N。在807处,计算增强(P)的几率。P的值被确定为HD/N。
在809处,这些结果被用来确定作为针对每个时步的每个几率的对数因子的和的熵。在811处,在一个实施方式中,能够基于HD的最大值来对熵进行归一化。在另一实施方式中,可以基于另一值对熵进行归一化。
在813处,成本被确定为是实际成本与补充成本的组合。在一个实施方式中,该成本能够之后在局部搜索中被使用,以进一步增强解决方案的选择。在一个实施方式中,如图7的图所示的,局部搜索705能够用在解决方案模拟器使用的补充成本来增强,以用于设计集成电路。
给出这些应用,集成电路的设计能够使用补充成本来增强。在这样的过程中,来自高级描述或一些其他源的操作被识别而且用于执行这些操作的硬件部件被确定。这能够用数据流图或各种其他方式来完成。给出这些操作和硬件部件,对各种不同的解决方案进行模拟以用于执行这些操作。
解决方案被典型地表示为硬件部件组合和互连,被表示为用于每个解决方案的数据流图上的路径。确定成本,而且该成本能够不仅包括数据流图上被遍历的边沿和节点的数量,而且还能够包括补充子整数成本,诸如上面描述的熵。最佳解决方案能够之后作为具有最低实际成本的解决方案而被选择。在一个实施方式中,补充成本没有被包括在该选择中。在一个实施方式中,补充成本是子整数,因此不需要被排除。在一个实施方式中,补充成本能够被用来在蚁群优化技术中补充信息素值。
折叠变换
能够在HLS中使用的另一技术是折叠变换。不是向将由电路执行的每个局部操作提供唯一硬件部件,而是能够对电路进行设计以便能够在不同的时步中由不同的操作使用相同的硬件部件。当HLD通过HLS进行变换时,路径被折叠回到相同的硬件部件。这允许降低硬件部件的总数量。折叠变换允许系统的硬件单元通过时间多路复用而在行为描述的多个操作之间共享。换言之,过程被折叠回到单个硬件部件,以便该部件在不同的时间为不同过程的不同元件进行服务。
折叠依赖于操作的调度以及操作向特定的硬件部件的绑定。调度能够被认为是用于折叠的预处理,以及绑定能够被认为是折叠的主要子处理。对于每个操作,调度算法能够确定在其处执行操作的时步,以及绑定算法能够确定在其上执行操作的硬件单元。
通过采用时间约束调度,能够使得在任意一个时步期间执行的操作的数量最小化。这减小了支持每个时步所需的硬件单元的总数量。通过采用更少的操作,折叠变得更容易,从而进一步增强了潜在的成本减小。在一个实施方式中,绑定算法能够用于将硬件部件之间的互连数量最小化。这能够减小硬件单元以及整体电路设计的成本。在一个实施方式中,互连成本包括用于将数据从一个操作路由到另一操作的路由寄存器和多路复用逻辑。
为了使得折叠能够减小成本或者增加电路的效率,必须考虑用调度和绑定对其进行设计。调度典型地在绑定之前被确定。折叠需要更多的互连,而且折叠部分地确定了操作与硬件部件的绑定。结果,在一个实施方式中,所有这些操作都互相关联。能够通过使用迭代或使用确定性过程来调节这些关系。它们也能够用蚁群优化(ACO)进行调节。
通过向在例如图6的上下文中所描述的基本ACO例行程序中添加一些函数来改进ACO的结果。在下面的示例中,描述了互连成本函数、引导函数以及局部搜索邻居选择函数。在一个实施方式中,这些函数被组合以在向电路设计中添加折叠时更好地考虑互连。虽然所有这三个函数能够一起工作的很好,但是依赖于特定的应用,能够使用这三个函数中的一个或多个函数而无需使用这三个函数中的其他函数。
互连成本函数与候选折叠边沿和折叠权重对的数量有关。基于未被调度的网表中候选折叠边沿与折叠权重对的几率,引导函数与密度函数(ED)有关。邻居选择函数与连接到邻近解决方案的边沿中该密度的改变有关。该密度函数能够被称为边沿密度(ED),因为其被定义用于边沿。该密度能够被用来分析和比较不同解决方案的边沿数量。这些函数将在下面进行更加详细地描述。
选择这些函数的特定名字,以允许对这些函数进行识别和区分。能够对这些函数的名字和许多方面进行修改以满足不同的应用。这些函数允许被模拟的解决方案考虑调度期间的互连多路复用成本,以便调度的输出也适于将互连成本最小化。
对于任意特定的电路设计,实际的互连成本作为对电路的硬件部件进行互连所需的通信总线、寄存器、时序门、多路复用器以及类似部件而发生。具有输入和输出的任意电路将具有用于实现连接的一些成本。然而,通过采用折叠,所需要的硬件部件的数量能够减小,但是互连成本明显增加。下面的示例在具有折叠的解决方案上下文中被描述,但是其也能够适用于其他类型的电路模拟。
互连成本和折叠变换
如上所述,互连成本是在任意电路中产生的实际成本。然而,在调度阶段,实际互连成本仍然不能被确定。实际互连成本依赖于绑定结果,该绑定结果直到调度被确定之后才知道。在调度阶段能够进行评估,而且这能够在ACO上下文中使用以引导候选解决方案的选择以及也引导解决方案的最终选择。以此方式,互连成本被考虑,即使其没有被精确地确定。在图6的上下文中,在一个实施方式中,所评估的互连成本能够用来在603处选择局部解决方案,而且也能够在605处被用来增强信息素的有效性。
对于调度阶段,互连成本能够使用候选的折叠边沿(cfe)和折叠权重(fw)进行评估。不同(cfe,fw)对的数量能够被当做来自多路复用和其他源的互连的成本的评估。cfe是来自最终折叠设计中的数据流图的候选边沿。折叠权重(fw)是折叠设计中边沿(e)的权重(w),而且其根据折叠公式进行确定。当被添加到调度成本中时,该权重能够被用作用于缩放互连成本的权重因子。在一个实施方式中,该权重通过各个边沿上寄存器的数量或延迟状态来确定。该权重(w)对应于上面参照创建网表时所讨论的权重w。
折叠能够被看作是将基本设计转换成折叠设计的函数或变换。该变换的目的是减小硬件部件的数量。这典型地减小了电路的所有部件所需要的设计面积或空间量。如图2和3所示的电路设计能够被表示为具有(V,E,w)的数据流图或网表结构。
网表是电路的逻辑门及其互连的表。其能够被表示为数据流图。在网表结构中,V是节点v的集合。操作被绑定到硬件之前基本设计中的节点指的是操作。在最终的折叠设计中,节点称为硬件单元(HU)。E是边沿e的集合。边沿是从操作的一个输出端口至另一操作的输入端口的连接,如图2和3所示。在网表中,每个边沿能够由具有e=(sourceOperation,sourcePortAddress,targetOperation,targetPortAddress)的四元组表示。变量w是给出边沿上寄存器的数量的函数(w:=E->int)。
在一个实施方式中,调度确定每个操作被执行的时步。被分配给操作的时步称为操作的调度。绑定确定在其中执行被调度的操作的硬件单元。如果调度能够被确定,则之后能够通过使用在这里被称为FW的函数来针对特定的边沿e计算用于折叠网表的边沿的权重(fw),该边沿e是边沿集合E的一部分(e∈E)。
在一个示例中,
FW(e):=w(e)*foldingFactor+schedule(e.targetOperation)–schedule(e.sourceOperation)
其中schedule(operation)指代在其处调度将被执行的操作的时步。这典型地由时步序列的整数计数来指示。
为了表示调度阶段的互连成本,能够定义候选折叠边沿(cfe)。针对最终折叠设计网表的边沿的边沿定义能够被定义为从一个硬件单元至另一硬件单元的连接。这是在例如图3中所示的情况。然而,对于cfe,硬件单元尚未被绑定到任何操作,因此cfe替代地由源和目的地硬件单元类型定义。换言之,cfe是对(源硬件单元类型,目的地硬件单元类型)。
另一函数,即边沿映射到候选折叠边沿(e2cfe),能够被定义(E->CFE),以为基本设计的给定边沿e∈E确定相应的cfe。在这样的定义中,E>CFE,也即边沿e的数量超过候选折叠边沿cfe的数量。
边沿映射到候选折叠边沿函数(e2cfe)能够通过将硬件单元类型与基本操作进行比较来确定。为了确定e2cfe函数,cfe.sourceHarwareUnitType=e.sourceOperation的类型以及cfe.destinationHardwareUnitType=e.targetOperation的类型。换言之,e2cfe函数基于候选折叠边沿的任意边上的源操作与目的地操作之间的操作来确定。
对于确定了操作的调度的基本网表而言,不同(cfe,fw)对的数量能够被用作互连成本函数。在一个实施方式中,不同(cfe,fw)对的数量能够被用作实际互连成本的评估。
下面是计算互连成本的伪代码示例。在该情况中,CFE_FW是单个(cfe,fw)对的集合。
之后总互连成本能够被如下评估:
总成本=CS+互连成本,其中,T∈硬件单元类型集合。
其中,CS是上面在时间约束调度(TCS)上下文中使用蚁群优化(ACO)确定的解决方案成本。
在折叠变换中引导局部搜索
在一个实施方式中,互连成本能够在ACO的解决方案构建阶段中使用。在一个实施方式中,这在图6中被示为在602处为每只蚂蚁构建解决方案。引导函数能够在这个阶段中使用,以引导解决方案的构建。能够使用各种不同的函数。在一个实施方式中,以下所描述的,使用启发值来在蚂蚁构建解决方案时对蚂蚁进行引导。能够定义另一密度函数(ND),该密度函数给出了在未被调度的网表中实现候选折叠边沿、折叠权重(cfe,fw)对的几率。该密度能够被称为节点密度。在该节点中,使用节点密度函数来改进熵计算均匀性,但是在互连成本的情况中,在一些点上收集所有密度,这与均匀性相反。在一个示例中,边沿的节点密度值的最大值能够被用作启发值。
在子过程“构建解决方案”602中,在一个实施方式中,每只蚂蚁生成调度解决方案。在生成解决方案期间,由路径的特定部分上的信息素的强度来确定选择的几率。这些几率能够通过引导函数修改。该引导函数通过将蚂蚁引导到生成被最频繁使用的(cfe,fw)对的调度来调节互连成本。
节点密度函数的一个实施方式在下面的伪代码中定义。在该示例中,ASAP是给出针对给定操作的最小可行调度值的函数。ASAP能够被确定为针对操作的最早调度,其不与可行性约束相矛盾。例如,在操作中使用的任意值必须在操作发生之前被生成。类似地,ALAP是给出针对给定操作的最大可行调度值的函数。ALAP能够被确定为针对操作的最晚调度,其不与可行性约束相矛盾。例如,如果操作的结果由随后的操作所使用,则该操作必须在那个随后操作之前发生。这些函数能够以本领域中众所周知的各种方式中的任意方式来确定。
在一个实施方式中,确定了将操作的调度设定成被特别选择的调度(sched)的启发值的引导函数能够如同下面的伪代码中所提供的那样进行确定。
总启发值能够被如下计算:
总启发值=(针对HU的启发值)*(针对互连的启发值)
在一个实施方式中,计算针对每个互连的启发值。
邻居选择和折叠变换
在一个实施方式中,能够通过考虑互连成本来改进图6中的局部搜索603。局部搜索的明显部分是选择用于相互比较的特定邻居。计算所有可能的邻近解决方案的成本是复杂和费时的。邻居选择函数能够更简单和用更少的时间产生类似的结果。在下面描述的实施方式中,邻居选择函数使用用于将连接操作的边沿的密度变化。邻居选择函数寻求将每个互连更多次地使用。结果,在最终设计中会存在着更少的总互连。这被表示为密度值(ID)。
在一些版本的ACO中,局部搜索从当前或最佳解决方案开始,并且通过评估邻近解决方案并移动到最好的邻近解决方案来搜索更好的解决方案。能够以不同方式来定义邻居。这里出于说明性的目的,将被使用的一个简单的定义是如果解决方案A与解决方案B的唯一差异是一个操作的调度,则A和B是邻居。换言之,解决方案A能够通过改变解决方案B中的仅一个操作的调度来实现。
在任意实际的解决方案系统中,通常存在着若干个邻居,所以局部搜索选择特定的一个或多个邻居进行评估。不是计算所有邻居的成本,而是能够选择具有选择函数的最大值的移动以进行比较。在一个实施方式中,该函数是根据(cfe,fw)对至倍数(CFE x int->double)而定义的密度函数(ID)。如果确定了所有的调度,则密度函数给出整数值,该整数值显示多少个基本设计边沿被映射到(cfe,fw)对。由于在局部搜索的上下文中,所有的调度都被确定,所以在一个实施方式中,密度是整数值。
如果所有的调度没有被确定,则在一个实施方式中,密度函数(ID)的输出是更高精度的浮点数,诸如双精度值(double value)、整数或标准浮点十进制数。这在上面的定义节点密度函数的上下文中被描述。
在一个实施方式中,能够使用哈希函数(h)来生成针对每个(cfe,fw)对的唯一索引。该特定的哈希函数能够基于特定的应用和所期望的的精度水平来选择。h(cfe,fw)的输出是从0至2*|E|*FoldingFactor的整数。FoldingFactor是用于定义由单个硬件单元所共享的操作的最大可能数量的给定值。在一个实施方式中,针对调度解决方案的I密度值(ID)能够如下面的伪代码示例中所描述的那样被计算:
用于将操作(o)调度改变成新调度(newSched)的选择函数在一个实施方式中能够被表示为如下的伪代码:
图9是评估互连成本的一个实施方式的过程流图。在一个实施方式中,该过程对应于如上所述的伪代码表示。如上所述,互连成本能够被用于更新信息素以及用于在例如图6的过程流中选择邻居解决方案。
在901处,针对潜在解决方案为数据流图中的每个边沿确定候选折叠边沿。在903处,确定针对每个候选折叠边沿(cfe)的源和目标操作。在905处,使用源和目标操作确定针对每个候选折叠边沿的折叠权重(fw)。
在907处,给定cfe和fw,能够基于与边沿相关联的cfe,fw对的数量来为解决方案的每个边沿确定互连成本。在909处,针对每个边沿能够使用针对那个边沿的折叠权重来对互连成本进行加权。在911处,通过将针对解决方案而被遍历的所有边沿的值相加来确定总互连成本。在一个实施方式中,这些操作能够被应用于图2的选择硬件部件组合210的通用集成电路设计过程中。在一个实施方式中,在图6的蚁群优化中,这些操作能够被应用于更新信息素以及局部搜索。
在一个示例中,互连成本的使用能够从包括将由正在被设计的电路执行的一个或多个操作的高级描述开始。数据流图或一些其他表示能够被用来表示将执行这些操作的硬件部件。之后,不同的解决方案被模拟,以用于执行HLD中的操作。这些解决方案能够被模拟为硬件部件和调度组合。在数据流图的情况中,在一个实施方式中,这些组合被表示为数据流图上的路径。
之后,对于每个解决方案,确定包括例如在数据流图上被遍历的边沿和节点的数量的成本。该成本能够用互连成本来增大,该互联成本用例如图9的过程流图来确定。如上所解释的,该互连成本与路径中不同硬件部件的数量有关。信息素轨迹也能够与包括各个调度解决方案的成本的每个路径相关联。具有最高值信息素轨迹的解决方案能够之后被选为针对电路的硬件和调度组合。如图2所指示的,这能够被重复,直到所有的操作都被调度并被绑定到硬件。
图9的候选折叠边沿提供了表示每个解决方案的步骤(step)的方式。对于折叠解决方案,每个候选折叠边沿能够具有与目的地硬件类型配对的源硬件类型,并且被表示为数据流图上的边沿。在一个实施方式中,互连成本能够通过解决方案所使用的不同类型的硬件单元的数量进行加权。在一个实施方式中,该权重能够表示不同类型的硬件单元的数量,作为用于一个解决方案的硬件类型的数量与数据流图中不同硬件类型的总数量之比。互连成本也能够通过用于执行被模拟的解决方案的寄存器数量进行加权。在一个实施方式中,互连成本还能够通过与硬件资源的再使用相关的折叠因子进行加权。在一个实施方式中,互连成本还能够通过用于执行模拟的解决方案的时步的数量进行加权。
在一个实施方式中,引导函数能够使用图10的过程流图来确定。在图10的1001处,为每个候选折叠边沿确定源和目标操作。在1003处,为每个候选折叠边沿确定折叠权重。这些操作与图9的操作901和903相类似,而且在一个实施方式中,相同的值能够被用于减小计算步骤和整体解决方案的复杂性。在1005处,能够使用针对每个边沿的(cfe,fw)对的数量来确定针对数据流图的边沿的索引。索引是唯一值,在一个实施方式中,其使用哈希函数来确定。
在1007处,将当前边沿的值与邻近边沿的值进行比较。在1009处,该比较能够被用来填充针对边沿的时步的柱状图阵列。在1011处,使用柱状图来确定最大和最小可行调度值。该最大和最小值能够表示针对每个解决方案的边沿的时步的最大和最小数量。在1013处,这些被确定的调度值能够用来选择用于模拟的下一解决方案。在一个实施方式中,被确定的调度值的比较能够被用来引导局部搜索中下一解决方案的选择,诸如图6所示的那样。在一个实施方式中,图2中的这种局部搜索能够引导确定接下来将模拟哪个硬件部件组合,如图2的210所示的那样。
图10的引导函数能够通过首先选择将由将被设计的电路形成的操作而被应用于如图2所示的整体电路设计过程。包括任意局部操作的操作能够用针对执行操作的每个硬件部件的数据流图上的节点来表示。边沿能够被用于部件之间的路径。之后,能够对解决方案进行模拟以用于执行作为硬件部件与调度的组合的这些操作,并且解决方案能够被表示为数据流图上的特定路径。
通过使用数据流图,能够确定每个解决方案的成本,该成本包括例如在路径上被遍历的边沿和节点的数量以及任何其他另外的或补充的成本。对于蚁群优化例行程序,信息素轨迹能够与每个路径相关联。之后,在一个实施方式中,如在图6的603处,对与之前解决方案相邻近的其他解决方案进行模拟。这些解决方案能够通过使用诸如参照图10所讨论的邻居选择函数进行选择,该邻居选择函数基于与由解决方案所使用的硬件单元相邻近的硬件部件所执行的操作的数量。最后,能够为集成电路设计选择具有最低成本或低成本的解决方案。
邻居选择函数能够被设计成对使用不同调度所执行的操作的数量进行比较,该不同的调度在数据流图上的不同边沿处开始以执行相同操作。该函数可以是边沿密度或针对邻近各个解决方案的初始边沿的每个边沿的折叠操作的密度的函数。将在局部搜索中被选择的下一解决方案可以是使密度函数最大化的解决方案,该密度函数呈现最大正变化或呈现密度的最大差异。可替换地,邻居选择函数能够基于特定解决方案中的操作的数量或每个被包括的边沿的折叠量来确定针对该图的每个边沿的索引。之后,将被选择的下一解决方案能够是具有被考虑的候选的最高索引的解决方案。
图11示出用于确定邻居选择函数的一个实施方式的过程流图。该函数能够在例如蚁群优化的局部搜索603中使用。在1101处,确定时步的柱状图阵列。在1103处,确定针对每个候选折叠边沿的源和目标操作。在一个实施方式中,在该过程流之前,确定折叠并且呈现候选折叠边沿。在一个实施方式中,如上参照图9和10所描述的过程可以被用于实现这个目的。
在1105处,确定针对每个候选折叠边沿的折叠权重,以及在1107处,确定针对数据流图的边沿的索引。这些索引能够使用针对每个边沿的(cfe,fw)对的数量来确定。在1109处,将针对当前边沿的索引与针对邻近边沿的索引进行比较,以及在1111处,通过使用该比较,具有最高索引的邻近边沿能够被选为用于模拟的下一解决方案。该过程可以被重复以评估另外的解决方案。
在图11的上下文中,能够用引导函数来增强集成电路设计。如上所述,将由集成电路设计执行的操作使用例如高级描述来表征,而且用于执行该操作的硬件部件能够在数据流图上用硬件部件之间的边沿来表示。引导函数能够被用来从用于执行操作的不同解决方案中进行选择。类似于上面参照图9和10所描述的那些解决方案,该解决方案能够被表示为在数据流图上表示的硬件部件和调度组合。每个模拟的成本被确定,并且之后具有最低成本的解决方案被选择。引导函数能够与针对特定解决方案的数据流图的边沿上的硬件再用量相关。这能够与信息素轨迹相结合,以选择具有更低成本的解决方案。
该描述和附图是本发明的实施方式的示例性说明且不应将其理解为限制本发明。描述了许多具体细节来提供对所公开实施方式的透彻理解。然而,在某些实例中,为了避免使所公开实施方式的描述变得模糊,没有描述众所周知的或常规的细节。本公开中对“一实施方式”或“一个实施方式”的引用不必指代同一实施方式,而且这种引用意味着至少一个。
在本说明书和权利要求书中,寄存器通常指代时序元件(例如,延迟元件、存储单元、触发器或其他元件)。寄存器对输入信号进行采样并保持(存储),以便能够将该输入信号与电路的时钟同步输出。另外,应当理解的是,数据流图的边沿上的一个延迟表示通常因寄存器存在于相应路径上而引入的等待时间的单位。然而,该等待时间的单位也可以通过其他方式来引入,诸如用于读取存储单元、多路复用器、除法器或路径延迟的不同控制信号。
所公开的实施方式的许多方法可以用数字处理系统(诸如传统的通用计算机系统)来执行。也可以使用被设计或者编程以执行仅一个功能的专用计算机。
图12示出了可以与所公开的实施方式一起使用的典型计算机系统的一个示例。例如,应当指出的是,参照图1-4、6和8-11描述的过程是可以通过示例性计算系统操作的。另外,在图5和7中描述的模块能够被配置在结构与示例性计算系统相类似的数据处理系统中。然而,应当指出的是,虽然图12示出了计算机系统的各种部件,但是其并不意欲表示将部件进行互连的任意特定架构或方式,而是意欲提供如何对部件和架构进行配置的示例性表示。还应当意识到,具有更少部件或可能更多部件的网络计算机及其它数据处理系统也可以与所公开的实施方式一起使用。图12的计算机系统可以是能够执行所描述的操作的任意计算系统。
如图12所示,为数据处理系统形式的计算机系统1201包括耦合到微处理器1203的总线1202。在一个实施方式中,计算机系统1201包括只读存储器(ROM)1207、易失性存储器(RAM)1205和非易失性存储器(EEPROM、闪存)1206中的一者或多者。微处理器1203被耦合到高速缓存存储器1204,如图12中的示例所示。高速缓存存储器1204可以是易失性或非易失性存储器。
总线1202将这些各种部件互连在一起,而且在一个实施方式中,将这些部件1203、1207、1205和1206互连到显示控制器及显示设备1208。计算机系统1201可以进一步包括外围设备,诸如输入/输出(I/O)设备,其可以是鼠标、键盘、调制解调器、网络接口、打印机、扫描仪、视频相机和本领域中公知的其他设备。典型地,输入/输出设备1210通过输入/输出控制器1209耦合到该系统。
易失性RAM1205典型地被实施为需要连续供电以刷新或维持存储器中的数据的动态RAM(DRAM)。非易失性存储器1206典型地是磁盘驱动器、磁光驱动器、光驱或DVD RAM、闪存或在从该系统移除电源之后仍然能够保持数据的其他类型的存储系统。典型地,非易失性存储器还可以是随机存取存储器,虽然对此并无要求。
虽然图12示出了非易失性存储器是直接耦合到数据处理系统中的其它部件的本地设备,但是应当意识到,所公开的实施方式可以利用远离该系统的非易失性存储器,诸如通过诸如调制解调器或以太网接口的网络接口耦合到数据处理系统的网络存储设备。
总线1202可以包括通过各种桥接器、控制器和/或适配器彼此连接的一个或多个总线,如本领域公知的。在一个实施方式中,I/O控制器1209包括用于控制USB(通用串行总线)外围设备的USB适配器和/或用于控制IEEE-1394外围设备的IEEE-1394总线适配器。
根据本文的描述显而易见的是,所公开的实施方式的各个方面可以至少部分地在软件(或计算机可读指令)中得到体现。也就是说,可以在计算机系统或其它数据处理系统中响应于它的处理器(诸如为微处理器)执行包含在存储器中的指令序列来实现例如图1-4、6和8-11中的过程这样的技术,所述存储器诸如为ROM1207、易失性RAM1205、非易失性存储器1206、高速缓存存储器1204或远程存储设备。在各种实施方式中,可以将硬连线电路与软件指令结合使用来实施所公开的实施方式。因此,所述技术并不局限于硬件电路和软件的任何具体组合也不局限于由数据处理系统执行的指令的任何特定源。另外,在整个说明书中,将各种功能和操作描述为由软件代码执行或引起,以简化描述。然而,本领域技术人员应当意识到,这种表述的意思是,所述功能是由处理器(诸如微处理器1203)对代码的执行引起的。
可以使用机器可读介质来存储软件和数据,所述软件和数据在被数据处理系统执行时促使该系统执行所公开的实施方式的各种方法。这种可执行的软件和数据可以存储在各种位置中,包括例如图12所示的ROM1207、易失性RAM1205、非易失性存储器1206和/或高速缓存存储器1204。该软件和/或数据的一部分可以存储在这些存储设备中的任意设备中。
因此,机器可读介质包括用于存储机器(例如,计算机、网络设备、个人数字助理、制造工具、具有一个或多个处理器集的任意设备等等)可访问形式的任意信息的任意机构。例如,机器可读介质包括可记录/不可记录媒介(例如,只读存储器(ROM);随机存取存储器(RAM);磁盘存储媒介;光存储媒介;闪存设备等)。
在前面的描述中,已经参考本发明的具体示例性实施方式描述了所公开的实施方式。然而,显而易见的是,可以在不背离所附权利要求书中阐述的本发明的更宽的精神和范围的情况下,对本发明做出各种修改和改变。因此,本说明书和附图应当被认为是说明性的而非限制性的。
Claims (60)
1.一种方法,该方法包括:
选择将由电路执行的操作;
通过具有边沿和节点的数据流图来表示用于执行所述操作的多个硬件部件;
对用于执行所述操作的多个解决方案进行模拟,每个解决方案对应于被表示为所述数据流图上的路径的硬件部件组合;
确定所述多个解决方案中的每个解决方案的成本,该成本包括在所述数据流图上被遍历的边沿和节点的数量以及补充子整数成本;以及
从所述多个解决方案中选择解决方案,所选择的解决方案具有最低被确定的成本。
2.根据权利要求1所述的方法,其中,所述补充子整数成本是虚拟成本。
3.根据权利要求1所述的方法,其中,所述补充成本是用于完成各个解决方案的多个步骤的熵的归一化值。
4.根据权利要求1所述的方法,其中,所述补充子整数成本基于操作的柱状图的熵的值。
5.根据权利要求1所述的方法,其中,确定成本包括创建每个被模拟的解决方案的多个步骤的柱状图阵列。
6.根据权利要求5所述的方法,其中,步骤的数量包括针对每个解决方案而言在所述数据流图上被遍历的边沿的数量。
7.根据权利要求6所述的方法,该方法还包括基于各个解决方案的柱状图值和操作数量来确定每个被模拟的解决方案的几率,以及其中所述补充子整数成本是所述几率的函数。
8.根据权利要求1所述的方法,其中,模拟多个解决方案包括对于每个解决方案而言通过所述数据流图来模拟每个步骤,每个步骤包括遍历位于所述数据流图的两个节点之间的边沿。
9.根据权利要求8所述的方法,该方法还包括将信息素轨迹与每个被遍历的边沿相关联。
10.根据权利要求1所述的方法,其中,模拟多个解决方案包括探试性地搜索局部解决方案。
11.根据权利要求1所述的方法,其中,模拟多个解决方案包括执行蚁群优化,以及其中确定成本进一步包括应用成本以递增所述数据流图中的边沿的信息素值。
12.一种用于在其上存储指令的非临时性计算机可读介质,当所述指令被处理器执行时促使该处理器执行:
选择将由电路执行的操作;
通过具有边沿和节点的数据流图来表示用于执行所述操作的多个硬件部件;
对用于执行所述操作的多个解决方案进行模拟,每个解决方案对应于被表示为所述数据流图上的路径的硬件部件组合;
确定所述多个解决方案中的每个解决方案的成本,该成本包括在所述数据流图上被遍历的边沿和节点的数量以及补充子整数成本;以及
从所述多个解决方案中选择解决方案,所选择的解决方案具有最低被确定的成本。
13.根据权利要求12所述的计算机可读介质,其中,确定成本包括创建每个被模拟的解决方案的多个步骤的柱状图阵列。
14.根据权利要求13所述的计算机可读介质,其中,步骤的数量包括针对每个解决方案而言在所述数据流图上被遍历的边沿的数量。
15.根据权利要求14所述的计算机可读介质,该计算机可读介质还包括基于柱状图值和各个解决方案的操作数量来确定每个被模拟的解决方案的几率,以及其中所述补充子整数成本是所述几率的函数。
16.根据权利要求12所述的计算机可读介质,其中,模拟多个解决方案包括对于每个解决方案而言通过所述数据流图来模拟每个步骤,每个步骤包括遍历位于所述数据流图的两个节点之间的边沿。
17.根据权利要求16所述的计算机可读介质,该计算机可读介质还包括将信息素轨迹与每个被遍历的边沿相关联。
18.一种数字处理系统,该数字处理系统包括:
选择将由电路执行的操作的装置;
通过具有边沿和节点的数据流图来表示用于执行所述操作的多个硬件部件的装置;
对用于执行所述操作的多个解决方案进行模拟的装置,每个解决方案对应于被表示为所述数据流图上的路径的硬件部件组合;
确定所述多个解决方案中的每个解决方案的成本的装置,该成本包括在所述数据流图上被遍历的边沿和节点的数量以及补充子整数成本;以及
从所述多个解决方案中选择解决方案的装置,所选择的解决方案具有最低的成本。
19.根据权利要求18所述的系统,其中,所述补充子整数成本是用于完成各个解决方案的多个步骤的熵的归一化值。
20.根据权利要求18所述的系统,其中,所述补充子整数成本基于操作的柱状图的熵的值。
21.一种装置,该装置包括:
存储器,该存储器用于存储表示用于执行至少一个操作的多个硬件部件的数据流图,所述数据流图具有边沿和节点;
解决方案模拟器,该解决方案模拟器被耦合到所述存储器,以接收所述数据流图并将用于执行所述操作的多个解决方案模拟为被表示为所述数据流图上的路径的硬件部件组合;
成本评估器,该成本评估器被耦合到所述解决方案模拟器,以接收所述解决方案并确定每个解决方案的成本,该成本包括在所述数据流图上被遍历的边沿和节点的数量以及补充子整数成本;以及
解决方案选择器,该解决方案选择器被耦合到所述成本评估器,以接收被评估的成本并选择具有最低成本的解决方案作为电路的硬件部件组合。
22.根据权利要求21所述的装置,该装置还包括操作与变量绑定器,用于在向所述解决方案模拟器提供所述数据流图之前将变量绑定到所述操作上。
23.根据权利要求21所述的装置,其中,所述补充成本基于操作的柱状图的熵的值。
24.一种用于调度电路的方法,该方法包括:
选择将由电路执行的操作;
用具有边沿和节点的数据流图来表示用于执行所述操作的多个硬件部件;
对用于执行所述操作的多个解决方案进行模拟,每个解决方案对应于被表示为所述数据流图上的路径的硬件部件和调度组合;
确定每个解决方案的成本,该成本包括在所述数据流图上被遍历的边沿和节点的数量以及与所述数据流图上的路径中不同硬件部件的数量有关的互连成本;
将信息素轨迹与每个路径相关联,该信息素轨迹包括各个解决方案的成本;以及
选择具有最高值信息素轨迹的解决方案作为电路的硬件部件与调度组合。
25.根据权利要求24所述的方法,其中,针对解决方案的所述数据流图上的路径中多个不同硬件部件中的硬件部件具有不同的类型,以及其中所述互连成本与所述路径中不同类型的硬件部件的数量有关。
26.根据权利要求25所述的方法,该方法还包括为每个解决方案的步骤确定候选折叠边沿,每个候选折叠边沿具有与目标硬件类型相配对的源硬件类型,所述硬件类型标识所述硬件连接的类型。
27.根据权利要求24所述的方法,其中,针对解决方案的所述数据流图上的路径中多个不同硬件部件中的硬件部件具有不同的类型,以及其中所述互连成本由所述解决方案所使用的不同类型的硬件部件的数量与在所述数据流图中所表示的不同类型的所有硬件部件的总数量的比率进行加权。
28.根据权利要求27所述的方法,其中,所述互连成本通过由表示硬件资源的再用的折叠权重作为因素计入的用来执行被模拟的解决方案的寄存器的数量进行加权。
29.根据权利要求28所述的方法,其中,用于执行被模拟的解决方案的时步的数量被添加到所述折叠权重中。
30.一种用于在其上存储指令的非临时性计算机可读介质,当所述指令被处理器执行时促使该处理器执行:
选择将由电路执行的操作;
用具有边沿和节点的数据流图来表示用于执行所述操作的多个硬件部件;
对用于执行所述操作的多个解决方案进行模拟,每个解决方案对应于被表示为所述数据流图上的路径的硬件部件和调度组合;
确定每个解决方案的成本,该成本包括在所述数据流图上被遍历的边沿和节点的数量以及与所述数据流图上的路径中不同硬件部件的数量有关的互连成本;
将信息素轨迹与每个路径相关联,该信息素轨迹包括各个解决方案的成本;以及
选择具有最高值信息素轨迹的解决方案作为电路的硬件部件与调度组合。
31.根据权利要求30所述的机器可读介质,其中,针对解决方案的所述数据流图上的路径中多个不同硬件部件中的硬件部件具有不同的类型,以及其中所述互连成本与所述路径中不同类型的硬件部件的数量有关。
32.根据权利要求30所述的机器可读介质,其中,针对解决方案的所述数据流图上的路径中多个不同硬件部件中的硬件部件具有不同的类型,以及其中所述互连成本由所述解决方案所使用的不同类型的硬件部件的数量与在所述数据流图中所表示的不同类型的所有硬件部件的总数量的比率进行加权。
33.根据权利要求32所述的机器可读介质,其中,所述互连成本通过由表示硬件资源的再用的折叠权重作为因素计入的用来执行被模拟的解决方案的寄存器的数量进行加权。
34.一种数字处理系统,该数字处理系统包括:
选择将由电路执行的操作的装置;
用具有边沿和节点的数据流图来表示用于执行所述操作的多个硬件部件的装置;
将用于执行所述操作的多个解决方案模拟为被表示为所述数据流图上的路径的硬件部件和调度组合的装置;
确定每个解决方案的成本的装置,该成本包括在所述数据流图上被遍历的边沿和节点的数量以及与所述路径中不同硬件部件的数量有关的互连成本;
将信息素轨迹与每个路径相关联的装置,该信息素轨迹包括各个调度解决方案的成本;以及
选择具有最高值信息素轨迹的解决方案作为电路的硬件部件与调度组合的装置。
35.根据权利要求34所述的系统,其中,所述互连成本通过下述之一进行加权:由所述解决方案所使用的不同类型的硬件单元的数量与在所述数据流图中表示的不同类型的硬件单元的总数量之间的比率,由表示硬件资源的再用的折叠权重当做因素计入的用于执行被模拟的解决方案的寄存器的数量,以及用于执行被模拟的解决方案的时步的数量被添加到所述折叠权重中。
36.一种用于调度电路的方法,该方法包括:
选择将由电路执行的操作;
用具有边沿和节点的数据流图来表示用于执行所述操作的多个硬件部件;
将用于执行所述操作的多个解决方案模拟为被表示为所述数据流图上的路径的硬件部件和调度组合;
确定每个解决方案的成本,该成本包括在数据流图上被遍历的边沿和节点的数量以及补充子整数成本;
将信息素轨迹与每个路径相关联,该信息素轨迹包括各个调度解决方案的成本;
对与之前被模拟的解决方案相邻近的其他解决方案进行模拟,所述相邻近的解决方案基于由与由解决方案所使用的所述硬件单元相邻近的硬件部件所执行的操作的数量通过使用邻居选择函数来选择;以及
选择具有最低成本的解决方案作为用于电路的硬件部件组合。
37.根据权利要求36所述的方法,其中,所述邻居选择函数对在所述数据流图上的不同边沿处开始的可替换调度中执行的多个操作进行比较。
38.根据权利要求36所述的方法,其中,所述邻居选择函数是与各个解决方案的初始边沿相邻近的每个边沿的折叠操作的密度的函数。
39.根据权利要求36所述的方法,其中,所述邻居选择函数包括:使用操作的数量和针对每个边沿的折叠量来确定针对所述数据流图的每个边沿的索引。
40.根据权利要求39所述的方法,其中,选择邻近解决方案包括选择具有更高索引的解决方案。
41.一种用于调度电路的方法,该方法包括:
选择将由电路执行的操作;
用具有边沿和节点的数据流图来表示用于执行所述操作的多个硬件部件;
确定用于沿着所述数据流图的边沿来模拟解决方案的引导函数;
通过使用所述引导函数选择和模拟用于执行所述操作的多个解决方案,所述解决方案被模拟为被表示为所述数据流图上的路径的硬件部件和调度组合;
确定每个解决方案的成本,该成本包括在数据流图上被遍历的边沿和节点的数量;以及
选择具有最高值信息素轨迹的解决方案作为电路的硬件部件与调度组合。
42.根据权利要求41所述的方法,其中,所述引导函数与所述数据流图的边沿上的硬件再用量有关。
43.根据权利要求41所述的方法,该方法还包括将信息素轨迹与每条路径相关联,该信息素轨迹包括各个调度解决方案的成本,以及其中所述引导函数与所述信息素轨迹进行组合以选择并模拟用于执行所述操作的另外的解决方案,该解决方案被模拟为硬件与调度组合。
44.根据权利要求41所述的方法,其中,所述引导函数与针对所述解决方案的所述硬件部件的再用相关。
45.根据权利要求41所述的方法,其中,确定所述引导函数包括下述之一:通过使用时步的柱状图来确定解决方案的最大和最小可行调度值,以及将所确定的最大和最小可行调度值进行比较。
46.一种方法,该方法包括:
选择将由电路执行的操作,所述操作包括不同类型的多个局部操作;
识别将由所述多个局部操作所使用的变量;
基于所述变量由所述多个局部操作使用的时间顺序对所述变量进行排序;
基于所述变量的排序对所述多个局部操作进行排序;
用具有边沿和节点的数据流图来表示用于执行所述操作的多个硬件部件,所述边沿和节点基于所述多个局部操作的排序进行连接;
对用于执行所述操作的多个解决方案进行模拟,每个解决方案对应于被表示为所述数据流图上的路径的硬件部件组合;
确定每个解决方案的成本,每个成本包括对于对应于各个解决方案的路径而言在所述数据流图上被遍历的边沿和节点的数量;以及
选择具有最低成本的解决方案作为用于电路的硬件部件组合。
47.根据权利要求46所述的方法,其中,对所述局部操作进行排序还包括将产生变量的局部操作排在消费所述变量的局部操作之后。
48.根据权利要求47所述的方法,其中,表示包括在所述数据流图中在产生所述变量的局部操作与消费所述变量的局部操作之间创建边沿。
49.根据权利要求46所述的方法,其中,表示包括将每个类型的局部操作与一类能够执行所述局部操作的硬件部件相关联,并用对应于所关联类型的硬件部件的节点来锚定局部操作。
50.根据权利要求46所述的方法,其中,识别包括为每个变量创建局部操作。
51.一种用于在其上存储指令的非临时性计算机可读介质,当所述指令被处理器执行时促使该处理器执行:
选择将由电路执行的操作,所述操作包括不同类型的多个局部操作;
识别将由所述多个局部操作所使用的变量;
基于所述变量由所述多个局部操作使用的时间顺序对所述变量进行排序;
基于所述变量的排序对所述多个局部操作进行排序;
用具有边沿和节点的数据流图来表示用于执行所述操作的多个硬件部件,所述边沿和节点基于所述多个局部操作的排序进行连接;
将用于执行所述操作的多个解决方案模拟为被表示为所述数据流图上的路径的硬件部件组合;
确定每个解决方案的成本,每个成本包括对于对应于各个解决方案的路径而言在数据流图上被遍历的边沿和节点的数量;以及
选择具有最低成本的解决方案作为用于电路的硬件部件组合。
52.根据权利要求51所述的计算机可读介质,其中,对所述局部操作进行排序还包括将产生变量的局部操作排在消费所述变量的局部操作之后。
53.根据权利要求52所述的计算机可读介质,其中,表示包括在所述数据流图中在产生所述变量的局部操作与消费所述变量的局部操作之间创建边沿。
54.根据权利要求51所述的计算机可读介质,其中,表示包括将每个类型的局部操作与一类能够执行所述局部操作的硬件部件相关联,并用对应于所关联类型的硬件部件的节点来锚定局部操作。
55.根据权利要求51所述的计算机可读介质,其中,识别包括为每个变量创建局部操作。
56.一种数字处理系统,该数字处理系统包括:
选择将由电路执行的操作的装置,所述操作包括不同类型的多个局部操作;
识别将由所述多个局部操作所使用的变量的装置;
基于所述变量由所述多个局部操作使用的时间顺序对所述变量进行排序的装置;
基于所述变量的排序对所述多个局部操作进行排序的装置;
用具有边沿和节点的数据流图来表示用于执行所述操作的多个硬件部件的装置,所述边沿和节点基于所述多个局部操作的排序进行连接;
对用于执行所述操作的多个解决方案进行模拟的装置,每个解决方案对应于被表示为所述数据流图上的路径的硬件部件组合;
确定每个解决方案的成本的装置,该成本包括对于对应于各个解决方案的路径而言在数据流图上被遍历的边沿和节点的数量;以及
选择具有最低成本的解决方案作为用于电路的硬件部件组合的装置。
57.根据权利要求56所述的系统,其中,用于对所述多个局部操作进行排序的装置还包括用于将产生变量的局部操作排在消费所述变量的局部操作之后的装置。
58.根据权利要求57所述的系统,其中,用于表示的装置包括用于在所述数据流图中在产生所述变量的局部操作与消费所述变量的局部操作之间创建边沿的装置。
59.根据权利要求56所述的系统,其中,用于表示包括用于将每个类型的局部操作与一类能够执行所述局部操作的硬件部件相关联,并用对应于所关联类型的硬件部件的节点来锚定局部操作的装置。
60.根据权利要求56所述的系统,其中,用于识别的装置包括用于为每个变量创建局部操作的装置。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/894,842 US8296712B2 (en) | 2010-09-30 | 2010-09-30 | Method and apparatus for improving the interconnection and multiplexing cost of circuit design from high level synthesis using ant colony optimization |
US12/894,756 US8296711B2 (en) | 2010-09-30 | 2010-09-30 | Method and apparatus for using entropy in ant colony optimization circuit design from high level synthesis |
US12/894,902 US8296713B2 (en) | 2010-09-30 | 2010-09-30 | Method and apparatus for synthesizing pipelined input/output in a circuit design from high level synthesis |
US12/894,842 | 2010-09-30 | ||
US12/894,902 | 2010-09-30 | ||
US12/894,756 | 2010-09-30 | ||
PCT/US2011/050081 WO2012050678A1 (en) | 2010-09-30 | 2011-08-31 | Method and apparatus for using entropy in ant colony optimization circuit design from high level systhesis |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103140853A true CN103140853A (zh) | 2013-06-05 |
Family
ID=45938606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011800476031A Pending CN103140853A (zh) | 2010-09-30 | 2011-08-31 | 在根据高级综合的蚁群优化电路设计中使用熵的方法和装置 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP2622549A4 (zh) |
CN (1) | CN103140853A (zh) |
WO (1) | WO2012050678A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104765667A (zh) * | 2015-04-17 | 2015-07-08 | 西安电子科技大学 | 一种基于蚁群算法的fpga程序脆弱支路求取方法 |
CN108710587A (zh) * | 2018-06-04 | 2018-10-26 | 中国电子科技集团公司第十四研究所 | 基于axi总线的信号处理fpga通用处理架构系统及方法 |
CN111523698A (zh) * | 2020-03-20 | 2020-08-11 | 全球能源互联网集团有限公司 | 一种用于清洁能源基地宏观选址的蚁群选址方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115032997B (zh) * | 2022-06-22 | 2023-04-07 | 江南大学 | 一种基于蚁群算法的第四方物流运输路径规划方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040143560A1 (en) * | 2003-01-20 | 2004-07-22 | Chun Bao Zhu | Path searching system using multiple groups of cooperating agents and method thereof |
US20070208677A1 (en) * | 2006-01-31 | 2007-09-06 | The Board Of Trustees Of The University Of Illinois | Adaptive optimization methods |
US7284228B1 (en) * | 2005-07-19 | 2007-10-16 | Xilinx, Inc. | Methods of using ant colony optimization to pack designs into programmable logic devices |
CN101076282A (zh) * | 2004-09-30 | 2007-11-21 | 安科锐公司 | 移动目标的动态追踪 |
CN101309420A (zh) * | 2007-05-17 | 2008-11-19 | 索尼株式会社 | 信息处理设备和方法以及信息处理系统 |
US20090089035A1 (en) * | 2007-07-07 | 2009-04-02 | Solomon Research Llc | Hybrid multi-layer artificial immune system |
US20100125820A1 (en) * | 2008-11-14 | 2010-05-20 | Ispir Mustafa | Unfolding algorithm in multirate system folding |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4095753B2 (ja) * | 2000-03-30 | 2008-06-04 | 株式会社ルネサステクノロジ | コンピュータ読み取り可能な記憶媒体、および半導体装置の設計方法 |
US7383252B2 (en) * | 2004-07-27 | 2008-06-03 | Soogoor Srikanth P | Advanced search algorithm with integrated business intelligence |
US7921384B2 (en) * | 2006-11-13 | 2011-04-05 | Neal Solomon | System, methods and apparatuses for integrated circuits for nanorobotics |
US7760718B2 (en) * | 2007-08-20 | 2010-07-20 | Cisco Technology, Inc. | Taxonomy based multiple ant colony optimization approach for routing in mobile ad hoc networks |
US20090070550A1 (en) * | 2007-09-12 | 2009-03-12 | Solomon Research Llc | Operational dynamics of three dimensional intelligent system on a chip |
-
2011
- 2011-08-31 EP EP11832913.5A patent/EP2622549A4/en not_active Withdrawn
- 2011-08-31 WO PCT/US2011/050081 patent/WO2012050678A1/en active Application Filing
- 2011-08-31 CN CN2011800476031A patent/CN103140853A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040143560A1 (en) * | 2003-01-20 | 2004-07-22 | Chun Bao Zhu | Path searching system using multiple groups of cooperating agents and method thereof |
CN101076282A (zh) * | 2004-09-30 | 2007-11-21 | 安科锐公司 | 移动目标的动态追踪 |
US7284228B1 (en) * | 2005-07-19 | 2007-10-16 | Xilinx, Inc. | Methods of using ant colony optimization to pack designs into programmable logic devices |
US20070208677A1 (en) * | 2006-01-31 | 2007-09-06 | The Board Of Trustees Of The University Of Illinois | Adaptive optimization methods |
CN101309420A (zh) * | 2007-05-17 | 2008-11-19 | 索尼株式会社 | 信息处理设备和方法以及信息处理系统 |
US20090089035A1 (en) * | 2007-07-07 | 2009-04-02 | Solomon Research Llc | Hybrid multi-layer artificial immune system |
US20100125820A1 (en) * | 2008-11-14 | 2010-05-20 | Ispir Mustafa | Unfolding algorithm in multirate system folding |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104765667A (zh) * | 2015-04-17 | 2015-07-08 | 西安电子科技大学 | 一种基于蚁群算法的fpga程序脆弱支路求取方法 |
CN104765667B (zh) * | 2015-04-17 | 2018-09-28 | 西安电子科技大学 | 一种基于蚁群算法的fpga程序脆弱支路求取方法 |
CN108710587A (zh) * | 2018-06-04 | 2018-10-26 | 中国电子科技集团公司第十四研究所 | 基于axi总线的信号处理fpga通用处理架构系统及方法 |
CN111523698A (zh) * | 2020-03-20 | 2020-08-11 | 全球能源互联网集团有限公司 | 一种用于清洁能源基地宏观选址的蚁群选址方法及装置 |
CN111523698B (zh) * | 2020-03-20 | 2023-08-08 | 全球能源互联网集团有限公司 | 一种用于清洁能源基地宏观选址的蚁群选址方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2012050678A1 (en) | 2012-04-19 |
EP2622549A4 (en) | 2014-04-23 |
EP2622549A1 (en) | 2013-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cowtan et al. | On the qubit routing problem | |
US8645882B2 (en) | Using entropy in an colony optimization circuit design from high level synthesis | |
Porta et al. | High performance genetic algorithm for land use planning | |
US8296712B2 (en) | Method and apparatus for improving the interconnection and multiplexing cost of circuit design from high level synthesis using ant colony optimization | |
Fleck et al. | Marrying search-based optimization and model transformation technology | |
US20210304066A1 (en) | Partitioning for an execution pipeline | |
Acar et al. | Adaptive inference on general graphical models | |
Chan et al. | Topology-aware performance optimization and modeling of adaptive mesh refinement codes for exascale | |
Nedjah et al. | Preference-based multi-objective evolutionary algorithms for power-aware application mapping on NoC platforms | |
CN103140853A (zh) | 在根据高级综合的蚁群优化电路设计中使用熵的方法和装置 | |
Siddavaatam et al. | Grey Wolf Optimizer Driven design space exploration: A novel framework for multi-objective trade-off in architectural synthesis | |
Wauters et al. | Development of an adaptive infill criterion for constrained multi-objective asynchronous surrogate-based optimization | |
US8296713B2 (en) | Method and apparatus for synthesizing pipelined input/output in a circuit design from high level synthesis | |
Pei et al. | AlphaSyn: Logic synthesis optimization with efficient monte carlo tree search | |
CN116795508A (zh) | 一种平铺加速器资源调度方法及系统 | |
Goswami et al. | Mlsbench: A benchmark set for machine learning based fpga hls design flows | |
Nematpour et al. | Enhanced genetic algorithm with some heuristic principles for task graph scheduling | |
Čibej et al. | Adaptation and evaluation of the simplex algorithm for a data-flow architecture | |
Papa et al. | Automatic large-scale integrated circuit synthesis using allocation-based scheduling algorithm | |
Lindemann et al. | Intelligent strategies for structuring products | |
Chang et al. | Designing a Framework for Solving Multiobjective Simulation Optimization Problems | |
Zhu et al. | A variation-aware quantum circuit mapping approach based on multi-agent cooperation | |
Zhang | Allocating One Common Accelerator-Rich Platform for Many Streaming Applications | |
Baker | Multiple objective optimisation of data and control paths in a behavioural silicon compiler | |
Zhang | Domain Design Space Exploration: Designing a Unified Platform for a Domain of Streaming Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130605 |