CN107632816B - 通过在设计编制期间替换用于执行除法的部件来改进系统操作的方法和设备 - Google Patents
通过在设计编制期间替换用于执行除法的部件来改进系统操作的方法和设备 Download PDFInfo
- Publication number
- CN107632816B CN107632816B CN201710463605.8A CN201710463605A CN107632816B CN 107632816 B CN107632816 B CN 107632816B CN 201710463605 A CN201710463605 A CN 201710463605A CN 107632816 B CN107632816 B CN 107632816B
- Authority
- CN
- China
- Prior art keywords
- division
- target device
- netlist
- component
- identifying
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000013461 design Methods 0.000 title claims description 38
- 230000015572 biosynthetic process Effects 0.000 claims abstract description 26
- 238000003786 synthesis reaction Methods 0.000 claims abstract description 26
- 238000005516 engineering process Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 8
- 238000005457 optimization Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 12
- 238000004458 analytical method Methods 0.000 description 10
- 238000006467 substitution reaction Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000000354 decomposition reaction Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000002194 synthesizing effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/535—Dividing only
-
- 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
- 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]
- G06F30/343—Logical level
-
- 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]
- G06F30/347—Physical level, e.g. placement or routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/12—Timing analysis or timing optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/535—Indexing scheme relating to groups G06F7/535 - G06F7/5375
- G06F2207/5356—Via reciprocal, i.e. calculate reciprocal only, or calculate reciprocal first and then the quotient from the reciprocal and the numerator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Geometry (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
一种用于在目标装置上设计系统的方法包括识别网表中的执行除法运算的部件。在合成期间修改所述网表以利用其他部件通过执行乘法运算来计算所述除法运算的结果。
Description
技术领域
本公开的实施例涉及用于在目标装置上设计系统的工具。更具体而言,本公开的实施例涉及通过在设计编制期间替换用于执行除法的部件来改进系统操作的方法和设备。
背景技术
诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)和结构化ASIC的目标装置用于实施可以包括百万个门和兆位嵌入式存储器的大型系统。大型系统的复杂性常常需要使用电子设计自动化(EDA)工具以创建和优化物理目标装置上的系统的设计。在计算机辅助设计(CAD)中由EDA工具执行的流程中,编制流是硬件描述语言(HDL)编制。HDL编制涉及对目标装置上的系统执行合成、放置、布线和时序分析。
除法是常用的算术运算。在除法的常用种类之中,算法是执行连续除法的算法,以及执行完全并行除法的算法。连续除法需要多个时钟周期,其中每个时钟周期仅计算商的几个位。完全并行除法需要单个时钟周期,其中每个时钟周期根据被除数和除数来计算商。
为了使用合理期望的时钟频率执行完全并行除法,需要设计者通过增加很多流水线级来实施用于除法运算的重流水线电路。流水线传递允许电路在较高频率下工作,但增大了传播延迟和所需的逻辑的量。
发明内容
本公开的实施例通过在合成期间在寄存器时序层级(RTL)细化之后的网表中的常数来识别除法。除法通过常数的倒数被变换成乘法。识别由表示倒数的值的位数所确定的倒数精确度以确保在使用最小量的硬件的同时有可接受的除法结果。乘法被映射到目标装置上的资源中。
一种用于在目标装置上设计系统的方法包括识别系统的网表中的执行除法运算的部件。在合成期间修改系统的网表以利用其他部件通过执行乘法运算来计算除法运算的结果。根据本公开的实施例,除法运算利用常数的除数。根据本公开的实施例,识别用于乘法运算的乘数值,并识别表示乘数值的位数。根据本公开的实施例,乘数值是除数的倒数。根据本公开的实施例,为用户呈现利用部件执行除法运算以及利用其他部件执行除法运算的选项,并且响应于用户选择其他部件而执行修改。
附图说明
本公开的实施例的特征和优点通过示例的方式被示出,而并非意在将本公开的实施例的范围限制到图示的特定实施例。
图1是示出根据本公开的示例性实施例的用于在目标装置上设计系统的方法的流程图。
图2是示出根据本公开的示例性实施例的用于执行合成的方法的流程图。
图3是示出根据本公开的示例性实施例的用于在合成期间执行除法替换的方法的流程图。
图4是示出根据本公开的示例性实施例的用于识别用于除法替换的乘数大小和乘数值的方法的流程图。
图5A示出了根据本公开的示例性实施例的目标装置上的硬件的示例,所述硬件被实施以在执行除法替换之前产生除法结果。
图5B示出了根据本公开的示例性实施例的目标装置上的硬件的示例,所述硬件被实施以在执行除法替换之后产生除法结果。
图6是根据本公开的示例性实施例的实施系统设计器的计算机系统的方框图。
图7是根据本公开的示例性实施例的系统设计器的方框图。
图8是根据本公开的示例性实施例的除法替换单元的方框图。
图9示出了根据本公开的示例性实施例的示例性目标装置。
具体实施方式
在以下描述中,为了解释的目的,阐述了具体命名法,以便提供对本公开的实施例的透彻理解。然而,对于本领域的技术人员显而易见的是,可以无需描述中的具体细节来实践本公开的实施例。在其他情况下,以方框图形式示出了公知的电路、装置、流程和程序以避免不必要地使本公开的实施例难以理解。
图1是示出根据本公开的示例性实施例的用于在目标装置上设计系统的方法的流程图。图1中描述的流程可以被统称为设计的“编制”。目标装置可以是现场可编程门阵列(FPGA)、专用集成电路(ASIC)、结构化ASIC或由硬件描述语言(HDL)描述其功能的其他装置。在110,产生用于系统的设计。根据本公开的实施例,响应于用户提供的输入而产生设计。在该实施例中,用户可以输入系统的寄存器传输层级(RTL)描述,从设计库选择和连接逻辑,或利用其他设计输入选项。用于所产生的系统的设计可以在HDL中,并且可以包括多个可重新配置的逻辑块。
在120,对系统进行合成,并产生网表。合成包括产生要由目标装置实施的系统的逻辑设计。根据本公开的实施例,合成根据HDL设计定义产生系统的优化逻辑表示。在合成期间,在优化流程中,可以在从网表中识别网络并利用等价但具有优选配置的优选网络进行替换的的地方执行识别和替换。出于各种不同的原因,网络可以是优选的。根据本公开的实施例,如果可以利用目标装置上的较少部件或利用较低水平的逻辑来实施,可以利用目标装置上的较少导线实施,可以需要较少的功率来工作,和/或可以与设计中的初始网络相比在更高速度或频率(Fmax)下工作,则网络可以是优选的。根据本公开的实施例,网络替换可以包括利用乘法模块或节点替换网表中的除法模块或节点。
在130,放置系统。根据本公开的实施例,放置涉及在目标装置上放置映射的逻辑系统设计。放置工作于技术映射的网表上,以产生针对每个逻辑元件和功能块的放置。根据本公开的实施例,放置包括通过判断要使用目标装置上的哪些资源实施在合成期间识别的逻辑元件和功能块来将系统装配在目标装置上。放置可以包括群集,其涉及将逻辑元件分组到一起,以形成目标装置上呈现的逻辑群集。根据本公开的实施例,群集是在放置的早期阶段执行的,并且发生在放置准备阶段期间的合成之后。放置还可以使互连的资源之间的距离最小化,以满足时序网表的时序约束。
在140,对所放置的设计进行布线。在布线期间,分配目标装置上的布线资源以提供目标装置上的逻辑门、逻辑元件和其他部件之间的互连。根据本公开的实施例,布线旨在减小用于连接所放置的逻辑设计中的部件的布线的量。可布线性可以包括执行扇出分割、逻辑复制、逻辑重新连线或其他流程。应当领会,可以对所放置的逻辑设计执行一个或多个流程。在布线期间还可以执行时序优化以分配布线资源,以符合时序网表的时序约束。
在150,对所设计的系统执行时序分析。根据本公开的实施例,时序分析判断是否满足系统的时序约束。作为时序分析的一部分,可以执行松弛分析(slack analysis)。应当领会,可以在合成120、放置130和布线流程140中的每个期间和/或之后执行时序分析,以引导编制器优化。在160,执行组装流程。组装流程涉及创建程序文件,其包括由在110、120、130、140和150处描述的流程所确定的信息。程序文件可以是可以用于对目标装置编程的位流。在ASIC情况下,程序文件可以表示电路的物理布局。根据本公开的实施例,图1中所示的流程可以由在第一计算机系统上执行的EDA工具执行。产生的数据文件可以被传送到第二计算机系统,以允许进一步处理系统的设计。替代地,可以将数据文件传送到第二计算机系统,其可以用于根据系统设计对目标装置编程。应当领会,也可以通过其他形式(例如在显示装置或其他介质上)输出系统的设计。可以利用数据文件对目标装置编程。通过利用数据文件对目标编程,对目标装置上的部件(可编程资源)进行物理转换以实施该系统。
图2是示出根据本公开的示例性实施例的用于执行合成的方法的流程图。根据本公开的实施例,图2所述的方法可以用于实施图1上所示的流程120。在210,执行细化。在细化期间,接收系统的描述。系统的描述可以是文本格式,例如硬件描述语言(HDL)、寄存器时序层级(RTL)或其他格式。可以识别系统的描述中的硬件结构并将其转换成一般技术单元。根据本公开的实施例,一般技术单元/部件可以包括寄存器、加法器、比较器、复用器、门和/或其他部件。产生网表,网表包括系统的设计中的一般技术单元/部件的描述。
在220,执行高层级优化。根据本公开的实施例,高层级优化包括识别网络以及利用优选网络替换网络,优选网络产生等价结果,但具有优选配置。根据本公开的实施例,识别利用常数执行除法的网络并将其替换为执行乘法并产生等价结果的网络。应当领会,可以在高层级优化期间执行其他网络替换流程。例如,可以利用只读存储器(ROM)节点替换具有由常数驱动的数据输入的复用器。可以利用移位寄存器节点替换依次连接的寄存器的链。
在230,执行低层级优化。根据本公开的实施例,低层级优化可以包括执行最小化,其中对网表执行布尔优化,以减少实施设计所需要的逻辑。低层级优化可以包括执行分解,例如算术或功能分解,其中将较大的门划分成更有效率的较小输入门。
在240,执行技术映射。根据本公开的实施例,对优化的逻辑设计执行技术映射。技术映射包括确定如何利用目标装置上的具体资源(例如逻辑元件和功能块)来实施优化的逻辑表示中的逻辑门和逻辑元件。根据本公开的实施例,在合成期间根据映射来产生逻辑网表。该网表可以是从HDL产生的优化的技术映射的网表。逻辑网表可以识别目标中利用的资源以及资源的端口之间的互连。
图3是示出根据本公开的示例性实施例的用于在合成期间执行除法替换的方法的流程图。根据本公开的实施例,图3中描述的方法可以用于实施图2中所示的流程220,其中使用识别和替换来识别执行除法的网络并将其替换为执行乘法的网络。在310,从针对系统的设计的网表识别除法运算。根据本公开的实施例,可以通过识别其属性和/或网表上的节点类型来识别除法运算。
在320,判断除法运算是否涉及利用常数除数执行除法。如果确定除法运算不涉及利用常数除数执行除法,则控制进行到330。如果确定除法运算涉及利用常数除数执行除法,则控制进行到340。
在330,将用于执行所识别的除法运算的部件保持在设计中,而不被替换。
在340,识别乘数值及其在大小方面的精确度(表示乘数值所需的位数)。乘数值是除数的倒数。根据本公开的实施例,可以使用以下关系来识别乘数值m和可以用于识别位数以使输出值从乘法运算移位的值L。根据本公开的实施例,利用乘法运算接着是移位N+L的值来替换除数为d的除法,其中L是被移位的额外的位数。结果,可以丢弃结果的N+L个最低有效位。
给定除数d和表示被除数N所需的位数的除法运算,假设m和L为非负整数,以使得关系式(1)和(2)为真。
d≠0 (1)
2N+L≤m*d≤2N+L+2L (2)
关系式(1)和(2)可以用于识别m和L的值。
在350,替换用于除法运算的部件。根据本公开的实施例,利用产生与除法运算结果等价的结果的其他部件替换用于除法运算的部件。其他部件使用乘数值执行乘法运算。
根据本公开的实施例,在流程340之后,可以为用户呈现使用部件执行除法运算以及通过常数执行传统除法的选项,以及使用其他部件执行乘法运算以产生等价结果的选项。提供给用户的选项可以包括部件和其他部件的身份和/或每个选项的要求和益处。例如,这可以包括与每个选项相关联的系统的操作的最大频率。响应于用户输入,控制可以替换用于除法的部件(如流程350所示)或保持用于除法的部件(如流程330处所示)。
应当领会,图3中所示的流程可以用于识别和替换与多个除法运算相关联的网络。例如,可以执行图3中所示的流程以识别和替换并联的多个网络。也可以重复图3中所示的流程以通过顺序方式识别和替换多个网络。
除法运算是数字信号处理中使用的最普通的算术运算之一。除法运算的硬件实现一般获得慢的结果。本公开的实施例辨别除法运算的特殊情况,即除数为常数的除法,其中可以产生获得快的结果的硬件实现。在执行基数转换、通过地址计算进行的数组索引、行程计数计算、散列表索引计算和其他计算时,可以使用除数为常数的除法。根据本公开的实施例,可以在合成期间在网表中辨别出除数为常数的除法。除法运算和与除法运算相关联的硬件被转换成利用常数的倒数的乘法运算以及与乘法运算相关联的硬件,以获得更快的运算。
图4是示出根据本公开的示例性实施例的用于识别用于除法替换的乘数大小和乘数值的方法的流程图。根据本公开的实施例,图4中描述的方法可以用于实施图3中所示的流程340和350。在410,识别用于除法运算的被除数。被除数可以被称为d。
在415,识别用于除法运算的被除数的大小。被除数的大小反映了表示被除数的值所需的精确度的量。根据本公开的实施例,可以在位数方面测量被除数的大小。可以将被除数的大小称为N。
在420,识别除法运算的结果的大小。结果的大小反映了表示结果的值所需的精确度的量。根据本公开的实施例,可以在位数方面测量结果的大小。可以将结果的大小称为S。
在425,对作为乘数进行运算的倒数的初始大小进行初始化。乘数的大小反映了表示乘数的值所需的精确度的量。根据本公开的实施例,可以在位数方面测量乘数的大小。乘数的大小可以被称为L,并且初始被设置为零。
在430,计算倒数的初始值。倒数的值被用作乘数来计算与除法运算的结果等价的结果。倒数可以被称为m。根据本公开的实施例,可以利用以下关系式计算倒数的初始值。
m=ceil(2N/d) (4)
在435,判断倒数的当前值是否满足条件。根据本公开的实施例,该条件测试值m是否足以近似L/d。如果倒数的当前值不满足该条件,则控制进行到440。如果倒数的当前值满足该条件,则控制进行到450。根据本公开的实施例,通过以下关系时反映所测试的条件。
m*d-2N+L<=2L (5)
在440,调节倒数的大小。根据本公开的实施例,通过将其增大一个位的值来调节倒数的大小。在445,调节倒数的值。在调节倒数的值之后,控制返回到435以判断经调节的倒数的值是否满足条件。根据本公开的实施例,使用以下关系式来调节倒数的大小。
m=ceil(2N+L/d) (5)
在450,实施乘法节点。根据本公开的实施例,识别用于执行乘法运算的部件,乘法运算产生与除法运算的结果等价的结果。与执行除法运算的除法节点中的部件相比,乘法节点中的部件需要目标装置中的更少的资源和更少的逻辑层级。
在455,利用乘法节点替换除法节点。根据本公开的实施例,在系统的描述中利用乘法的部件替换除法节点的部件。更新对应于除法节点的输入和输出连接,并指定通往乘法节点的输入和输出连接。
根据本公开的实施例,可以使用下列伪代码实施图4中所述的流程。
图1-4是示出本公开的实施例的流程图。这些图中描述的流程可以由计算机系统实现的EDA工具执行。示出的一些技术可以顺序、并行或按照除所述次序之外的次序执行,并且可以重复所述流程。要领会,并非需要执行所述的所有技术,可以增加额外的技术,并且可以用其他技术替代示出的一些技术。
图5A示出了根据本公开的示例性实施例的目标装置上的硬件的示例,所述硬件被实施以通过在执行除法替换之前执行除法运算来产生除法结果。图5B示出了根据本公开的示例性实施例的目标装置上的硬件的示例,所述硬件被实施以通过在执行除法替换之后执行乘法运算来产生除法结果。如所示,通过执行乘法运算产生除法结果所需的硬件资源的量显著少于通过执行除法运算产生除法结果所需的硬件资源的量。根据本公开的实施例,图5B中用于执行乘法运算的硬件是数字信号处理器块。
图6是其中存在本公开的示例性实施例的示例性计算机系统600的方框图。计算机系统600包括处理数据信号的处理器610。处理器610耦合到总线601或其他开关结构,其在计算机系统600中的处理器610和其他部件之间传送数据信号。计算机系统600包括存储器620。存储器620可以存储由数据信号表示的可以由处理器610执行的指令和代码。数据存储装置630也耦合到总线601。
网络控制器640耦合到总线601。网络控制器640可以将计算机系统600链接到计算机的网络(未示出)并支持机器之间的通信。显示装置控制器650耦合到总线601。显示装置控制器650允许将显示装置(未示出)耦合到计算机系统600并充当显示装置和计算机系统600之间的接口。输入接口660耦合到总线601。输入接口660允许将输入装置(未示出)耦合到计算机系统600并从输入装置向计算机系统600传送数据信号。
系统设计器621可以存在于存储器620中并由处理器610执行。系统设计器621可以操作用于对系统的设计执行合成、放置、布线和时序分析。根据本公开的实施例,从系统的描述识别执行除法运算的部件。在合成期间修改系统的描述以利用其他部件通过执行乘法运算来计算除法运算的结果。根据本公开的实施例,识别乘数值,其为除法运算的除数的倒数。还响应于除数的大小、除数的值和除法运算的结果的大小来识别表示乘数值的位数。
图7示出了根据本公开的实施例的系统设计器700。系统设计器700可以是用于在诸如FPGA、结构化专用集成电路(ASIC)、ASIC或其他电路等目标装置上设计系统的EDA工具。图7示出了实施系统设计器700的实施例的模块。根据一个实施例,模块表示软件模块,并且系统设计器可以由计算机系统执行,所述计算机系统例如图6中所示的执行由图7中所示的模块表示的指令序列的计算机系统。执行指令序列导致计算机系统支持系统设计,如后文将要描述。在替代的实施例中,可以使用硬连线电路代替软件指令或将其与软件指令结合以实施本公开的实施例。于是,本公开的实施例不限于硬件电路和软件的任何特定组合。系统设计器700包括系统设计器管理器710。系统设计器管理器710连接到系统设计器700的部件并在部件之间传送数据。
系统设计器700包括合成单元720。合成单元720采取概念HDL设计定义并产生系统的优化逻辑表示。合成单元720产生的系统的优化逻辑表示可以包括具有减少数量的系统所需功能块和寄存器(例如逻辑门和逻辑元件)的表示。替代地,合成单元720产生的系统的优化逻辑表示可以包括具有减小的逻辑深度并且产生较低信号传播延迟的表示。
合成单元720包括细化单元721。细化单元721接收系统的描述。系统的描述可以是文本格式,例如硬件描述语言(HDL)、寄存器时序层级(RTL)或其他格式。细化单元721识别系统的描述中的硬件结构并将硬件结构转换成一般技术单元。根据本公开的实施例,一般技术单元/部件可以包括寄存器、加法器、比较器、复用器、门和/或其他部件。细化单元产生网表,网表包括系统的设计中的一般技术单元/部件的描述。
合成单元720包括高层级优化单元722。根据本公开的实施例,高层级优化单元722识别网络并将该网络替换为产生等价结果但具有优选配置的优选网络。在一个实施例中,识别利用常数执行除法的网络,并且将该网络替换为执行乘法并产生等价结果的网络。
合成单元720包括低层级优化单元723。根据本公开的实施例,低层级优化单元723执行最小化,其中对网表执行布尔优化以减少实施设计所需的逻辑。低层级优化单元723还可以执行分解,例如算术或功能分解,其中将较大的门划分成更有效率的较小输入门。
合成单元720包括技术映射单元724。根据本公开的实施例,技术映射单元724确定如何利用目标装置上的特定资源(例如逻辑元件和功能块)来实施优化逻辑表示中的逻辑门和逻辑元件。在一个实施例中,技术映射单元724在合成期间产生逻辑网表。该网表可以是从HDL产生的优化的技术映射的网表。逻辑网表可以识别在目标中使用的资源以及资源的端口之间的互连。
系统设计器700包括放置单元730,其处理优化的技术映射的网表以针对每个功能块产生放置。所述放置识别目标装置上的哪些部件或区域要用于特定功能块和寄存器。
系统设计器700包括布线单元740,其确定目标装置上的用于在实施逻辑设计的功能块和寄存器的部件之间提供互连的布线资源。
系统设计器700包括时序分析单元750,其执行时序分析以判断是否满足系统的时序约束。
系统设计器管理器710可以执行组装流程,组装流程创建包括系统的设计的数据文件。数据文件可以是可以用于对目标装置编程的位流。组装流程可以输出数据文件,从而可以存储数据文件或替代地将其传送到用于对目标装置编程的独立的机器。应当领会,也可以通过其他形式(例如在显示装置或其他介质上)输出系统的设计。
图8是根据本公开的示例性实施例的除法替换单元800的方框图。除法替换单元800可以用于实施图7中所示的高层级优化单元722。除法替换单元800包括除法替换管理器810。除法替换管理器810连接到除法替换单元800的部件并在部件之间传送数据。
除法替换单元800包括除法识别单元820。除法识别单元820从用于系统的设计的网表识别除法运算。根据本公开的实施例,除法识别单元820识别除数为常数的除法运算。
除法替换单元800包括乘数识别单元830。乘数识别单元830识别乘数值。乘数值是除数的倒数,并可以用于执行乘法运算,乘法运算产生与除法运算的结果等价的结果。乘数识别单元830还在大小方面识别乘数值的精确度以产生等价结果。精确度可以描述表示乘数值所需的位数。根据本公开的实施例,可以使用参考图3和4描述的流程识别乘数值及其精确度。
除法替换单元800包括乘法节点产生单元840。乘法节点产生单元840识别用于执行乘法运算的部件,该乘法运算产生与除法运算的结果等价的结果。与执行除法运算的除法节点中的部件相比,乘法节点中的部件需要目标装置中的更少的资源和更少的逻辑层级。
除法替换单元800包括替换单元850。替换单元850利用用于乘法运算的其他部件替换用于除法运算的部件。替换单元850还更新对应于除法节点的输入和输出连接,并指定通往乘法节点的输入和输出连接。
根据本公开的实施例,除法替换管理器810可以为用户呈现使用部件执行除法运算以执行除数为常数的传统除法的选项,以及使用其他部件执行乘法运算以产生等价结果的选项。提供给用户的选项可以包括部件和其他部件的身份和/或每个选项的要求和益处。例如,这可以包括与每个选项相关联的系统的操作的最大频率。替换单元850可以响应于来自用户的输入而进行操作。
应当领会,可以将本公开的实施例提供为计算机程序产品或软件,其可以包括具有指令的计算机可读或机器可读介质。计算机可读或机器可读介质上的指令可以用于对计算机系统或其他电子装置编程。机器可读介质可以包括但不限于软盘、光盘、CD ROM和磁光盘或适于存储电子指令的其他类型的介质/机器可读介质。本文描述的技术不限于任何特定软件配置。它们可以应用于任何计算或处理环境中。本文使用的术语“计算机可读介质”或“机器可读介质”应当包括能够存储或编码指令序列的任何介质,指令序列由计算机执行并使计算机执行本文所述的任一种方法。此外,现有技术中常常提到一种形式或另一种形式的软件(例如,程序、流程、过程、应用、模块、单元、逻辑等)采取动作或产生结果。这样的表达仅仅是陈述处理系统执行软件使处理器执行动作以产生结果的简短方式。
图9示出了根据本公开的实施例的可以用于实现目标装置的装置900。如上所述,装置可以被实施在管芯上。装置900是包括多个逻辑阵列块(LAB)的现场可编程门阵列(FPGA)。根据本公开的实施例,装置900可以被实施在单个集成电路上。每个LAB可以由多个逻辑块、进位链、LAB控制信号、查找表(LUT)链和寄存器链连接线形成。逻辑块是提供用户逻辑功能的有效率的实施方式的小逻辑单元。逻辑块包括一个或多个组合单元,其中每个组合单元具有单一输出和寄存器。根据本公开的一个实施例,逻辑块可以与诸如在Corporation制造的Stratix或Cyclone装置中发现的那些的逻辑元件(LE)、或诸如在Xilinx Inc制造的Virtex装置中发现的那些的组合逻辑块(CLB)类似地进行操作。在该实施例中,逻辑块可以包括具有可配置寄存器的四个输入LUT。根据本公开的替代实施例,逻辑块可以与诸如在Altera Corporation制造的Stratix装置中发现的那些的自适应逻辑模块(ALM)类型地进行操作。LAB被分组成跨装置900的行和列。LAB的列被示为911-916。应当领会,逻辑块可以包括额外的或替代的部件。
装置900包括存储器块。存储器块例如可以是双端口随机存取存储器(RAM)块,其提供专用真实双端口、简单双端口、或单端口存储器,其在高达各种频率下具有高达各种位宽度。可以将存储器块分组成在选定的LAB之间的跨装置的列或者逐个或成对地位于装置900内。存储器块的列被示为921-924。
装置900包括数字信号处理(DSP)块。DSP块可以用于利用加法或减法特征实施各种配置的乘法器。DSP块包括移位寄存器、乘法器、加法器和累加器。DSP块可以被分组成跨装置900的列并被示为931。
装置900包括多个输入/输出元件(IOE)940。每个IOE对装置900上的IO管脚(未示出)馈电。IOE 940位于装置900的外围周围的LAB行和列的端部。每个IOE可以包括双向IO缓存器和多个寄存器,以用于寄存输入、输出和输出使能信号。装置900可以包括布线资源,例如LAB本地互连线、行互连线(“H型线”)和列互连线(“V型线”)(未示出),以在目标装置上的部件之间对信号布线。
在以上说明书中,已经参考其具体示例性实施例描述了本公开的实施例。然而,显而易见的是,可以对其做出各种修改和改变而不脱离本公开的实施例的较宽的精神和范围。因此,在例示而非限制的意义上看待说明书和附图。
Claims (18)
1.一种用于在目标装置上设计系统的方法,包括:
通过识别所述系统的网表上的节点类型和/或属性来从所述网表识别所述系统中的执行除法运算的部件;
在合成期间修改所述系统的所述网表以利用其他部件通过执行由乘法运算和移位运算组成的第二运算来计算所述除法运算的结果;
基于修改后的网表对所述系统进行放置和布线;
生成数据文件,其包括经合成、放置和布线的所述系统的设计;以及
利用所述数据文件对所述目标装置进行编程,以对所述目标装置上的可编程资源进行物理转换以实现所述系统的设计,其中,所述除法运算中的除数为常数。
2.根据权利要求1所述的方法,还包括:
识别用于所述乘法运算的乘数值m;
其中,识别所述乘数值包括:将所述乘数值初始化成等于上限为2N/d的值,其中,N是被除数的大小,并且d是除数;以及
将所述乘数值调节到等于上限为2N+L/d的值,其中,L是被移位的额外的位数,被初始化为零并且递增,直到m*d-2N+L小于或等于2L。
3.根据权利要求2所述的方法,其中,所述乘数值是除数的倒数。
4.根据权利要求2所述的方法,还包括识别来自所述乘法运算的输出的用于表示所述结果的位。
5.根据权利要求4所述的方法,其中,从L中识别来自所述乘法运算的输出的用于表示所述结果的位。
6.根据权利要求1所述的方法,其中,所述修改是响应于所述其他部件与所述部件相比需要所述目标装置上的更少的资源并且允许所述系统在比所述部件更高的最大频率处进行操作而执行的。
7.根据权利要求1所述的方法,还包括为用户呈现利用所述部件执行所述除法运算以及利用所述其他部件执行所述除法运算的选项,其中,响应于所述用户选择所述其他部件而执行所述修改。
8.根据权利要求1所述的方法,还包括执行技术映射,其中,识别所述目标装置上可用的部件类型以实施所述其他部件。
9.根据权利要求8所述的方法,其中,所述部件类型为数字信号处理器。
10.一种非暂态计算机可读介质,包括存储于其上的指令序列,所述指令序列用于使计算机执行用于在目标装置上设计系统的方法,包括:
通过识别所述系统的网表上的节点类型和/或属性来从所述网表识别所述系统中的执行除法运算的部件;
在合成期间修改所述系统的所述网表以利用其他部件通过执行由乘法运算和移位运算组成的第二运算来计算所述除法运算的结果;
基于修改后的网表对所述系统进行放置和布线;
生成数据文件,其包括经合成、放置和布线的所述系统的设计;以及
利用所述数据文件对所述目标装置进行编程,以对所述目标装置上的可编程资源进行物理转换以实现所述系统的设计,其中,所述除法运算中的除数为常数。
11.根据权利要求10所述的非暂态计算机可读介质,其中,所述方法还包括响应于来自用户的输入而在合成期间修改所述系统的所述网表,以利用所述其他部件替代所述部件。
12.根据权利要求10所述的非暂态计算机可读介质,其中,识别所述其他部件包括:
识别用于执行所述乘法运算的乘数值m;
其中,识别所述乘数值包括:
将所述乘数值初始化成等于上限为2N/d的值,其中,N是被除数的大小,并且d是除数;以及
将所述乘数值调节到等于上限为2N+L/d的值,其中,L是被移位的额外的位数,被初始化为零并且递增,直到m*d-2N+L小于或等于2L。
13.根据权利要求12所述的非暂态计算机可读介质,还包括识别来自所述乘法运算的输出的用于表示所述结果的位。
14.根据权利要求13所述的非暂态计算机可读介质,其中,从L中识别来自所述乘法运算的输出的用于表示所述结果的位。
15.根据权利要求10所述的非暂态计算机可读介质,还包括执行技术映射,其中,识别所述目标装置上可用的部件类型以实施所述其他部件。
16.根据权利要求15所述的非暂态计算机可读介质,其中,所述部件类型为数字信号处理器。
17.一种系统设计器,包括用于执行如权利要求1至9中任一项所述的方法的单元。
18.一种在目标装置上设计系统的设备,包括用于存储指令的存储器和耦合到所述存储器的处理器,所述指令当由所述处理器执行时,使得所述处理器执行如权利要求1至9中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/214,354 US10223488B2 (en) | 2016-07-19 | 2016-07-19 | Method and apparatus for improving system operation by replacing components for performing division during design compilation |
US15/214,354 | 2016-07-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107632816A CN107632816A (zh) | 2018-01-26 |
CN107632816B true CN107632816B (zh) | 2024-04-02 |
Family
ID=59101291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710463605.8A Active CN107632816B (zh) | 2016-07-19 | 2017-06-19 | 通过在设计编制期间替换用于执行除法的部件来改进系统操作的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10223488B2 (zh) |
EP (1) | EP3273369A1 (zh) |
CN (1) | CN107632816B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112541310B (zh) * | 2020-12-18 | 2021-10-29 | 广东高云半导体科技股份有限公司 | 逻辑综合控制方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102598004A (zh) * | 2009-11-12 | 2012-07-18 | 阿尔特拉公司 | 用于执行硬件辅助布局的方法和装置 |
US8732639B1 (en) * | 2009-04-03 | 2014-05-20 | Altera Corporation | Method and apparatus for protecting, optimizing, and reporting synchronizers |
CN104375802A (zh) * | 2014-09-23 | 2015-02-25 | 上海晟矽微电子股份有限公司 | 一种乘除法器及运算方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060095494A1 (en) * | 2004-10-28 | 2006-05-04 | Alok Kumar | Method and apparatus for efficient software-based integer division |
US8959469B2 (en) * | 2012-02-09 | 2015-02-17 | Altera Corporation | Configuring a programmable device using high-level language |
US9753693B2 (en) * | 2013-03-15 | 2017-09-05 | Imagination Technologies Limited | Constant fraction integer multiplication |
-
2016
- 2016-07-19 US US15/214,354 patent/US10223488B2/en active Active
-
2017
- 2017-06-19 EP EP17176667.8A patent/EP3273369A1/en not_active Ceased
- 2017-06-19 CN CN201710463605.8A patent/CN107632816B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8732639B1 (en) * | 2009-04-03 | 2014-05-20 | Altera Corporation | Method and apparatus for protecting, optimizing, and reporting synchronizers |
CN102598004A (zh) * | 2009-11-12 | 2012-07-18 | 阿尔特拉公司 | 用于执行硬件辅助布局的方法和装置 |
CN104375802A (zh) * | 2014-09-23 | 2015-02-25 | 上海晟矽微电子股份有限公司 | 一种乘除法器及运算方法 |
Non-Patent Citations (2)
Title |
---|
Labor of Division (Episode I);RIDICULOUSFISH;《ridiculousfish blog》;20100215;全文 * |
TORBJÖRN GRANLUND.Division by invariant integers using multiplication.《ACM SIGPLAN NOTICES, ACM, 2 PENN PLAZA, SUITE 701 NEW YORK NY 10121-0701 USA》.1994, * |
Also Published As
Publication number | Publication date |
---|---|
EP3273369A1 (en) | 2018-01-24 |
CN107632816A (zh) | 2018-01-26 |
US10223488B2 (en) | 2019-03-05 |
US20180025100A1 (en) | 2018-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7506278B1 (en) | Method and apparatus for improving multiplexer implementation on integrated circuits | |
US10331836B1 (en) | Loop optimization for implementing circuit designs in hardware | |
US8918748B1 (en) | M/A for performing automatic latency optimization on system designs for implementation on programmable hardware | |
US9026967B1 (en) | Method and apparatus for designing a system on multiple field programmable gate array device types | |
US9298865B1 (en) | Debugging an optimized design implemented in a device with a pre-optimized design simulation | |
US8499262B1 (en) | Method and apparatus for implementing a parameterizable filter block with an electronic design automation tool | |
US8788985B1 (en) | Method and apparatus for implementing a processor interface block with an electronic design automation tool | |
US8793629B1 (en) | Method and apparatus for implementing carry chains on FPGA devices | |
US8667435B1 (en) | Function symmetry-based optimization for physical synthesis of programmable integrated circuits | |
US7171633B1 (en) | Estimating quality during early synthesis | |
US8578306B2 (en) | Method and apparatus for performing asynchronous and synchronous reset removal during synthesis | |
US11216249B2 (en) | Method and apparatus for performing field programmable gate array packing with continuous carry chains | |
US8661380B1 (en) | Method and apparatus for performing parallel synthesis on a field programmable gate array | |
CN107632816B (zh) | 通过在设计编制期间替换用于执行除法的部件来改进系统操作的方法和设备 | |
Shapri et al. | Optimization and analysis of FPGA-based systolic array for matrix multiplication | |
US8661381B1 (en) | Method and apparatus for performing optimization using Don't Care states | |
US7509597B1 (en) | Method and apparatus for performing post-placement functional decomposition on field programmable gate arrays using binary decision diagrams | |
US10430540B1 (en) | Processing a block diagram circuit design into an efficient high-level language representation | |
EP3920073A1 (en) | Programmable integrated circuit underlay | |
US9268891B1 (en) | Compact and efficient circuit implementation of dynamic ranges in hardware description languages | |
US9355198B1 (en) | Method and apparatus for performing late binding of control status registers in a design compilation flow | |
US10740529B1 (en) | Implementation of circuitry for radio frequency applications within integrated circuits | |
US11436399B2 (en) | Method and apparatus for performing multiplier regularization | |
Zgheib et al. | Enhanced technology mapping for FPGAs with exploration of cell configurations | |
US8201114B1 (en) | Method and apparatus for performing look up table unpacking and repacking for resynthesis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |