A verifiable duplex multiplier circuit is provided. In one mode, the circuitry of the duplex multiplier functions as an N-bit×N-bit multiplier. In another mode, the circuitry of the duplex multiplier operates as dual N/2-bit×N/2-bit multipliers. Because the same circuitry can be used to serve as both an N×N multiplier and as dual N/2×N/2 multipliers, integrated circuit resources are conserved. The duplex multiplier circuitry uses an architecture that can be automatically synthesized using a logic synthesis tool. Verification operations can be performed using logic-equivalency error checking tools. Exhaustive verification is possible using this approach, even when relatively large duplex multipliers (e.g., duplex multipliers with N values of 16 or more) are used.
|
7. Duplex multiplier circuitry that is configurable to operate as either a single multiplier or at least two smaller multipliers, comprising partial product generation circuitry that produces a signal, wherein:
when the duplex multiplier circuitry operates as the single multiplier, the duplex multiplier circuitry produces a single product based on two N-bit input signals, and
when the duplex multiplier operates as the at least two smaller multipliers, the duplex multiplier circuitry produces corresponding first and second products and the signal serves as a negative operand flag for one of the at least two smaller multipliers.
1. Duplex multiplier circuitry that is configurable to operate as either a single multiplier or at least two smaller multipliers, comprising:
partial product generation circuitry;
first and second circuits that receive partial product signals from the partial product generation circuitry;
carry look-ahead adder circuitry that receives carry and sum signals from the first and second circuits; and
carry blocking circuitry connected between the first and second circuits that prevents carry signals from the first circuit from propagating to the second circuit when the duplex multiplier operates as two smaller multipliers, wherein the first and second circuits are Wallace tree circuits, wherein the Wallace tree circuits have a plurality of slices of circuitry, wherein each slice of circuitry corresponds to a different bit position, wherein at least one of the slices of circuitry comprises seven full adders, wherein the partial product generation circuitry produces a given signal at its output that is received by one of the slices of circuitry in the Wallace tree circuits, and wherein:
when the duplex multiplier operates as a single multiplier, the duplex multiplier operates as an N-bit by N-bit multiplier that produces a single product based on two N-bit input signals and the given signal does not contribute to the product; and
when the duplex multiplier operates as the two smaller multipliers, the duplex multiplier operates as two N/2-bit by N/2-bit multipliers that produce corresponding first and second products and the given signal serves as a negative operand flag for one of the two N/2-bit by N/2-bit multipliers.
2. The duplex multiplier circuitry defined in
3. The duplex multiplier circuitry defined in
4. The duplex multiplier circuitry defined in
5. The duplex multiplier circuitry defined in
6. The duplex multiplier circuitry defined in
8. The duplex multiplier circuitry defined in
first and second circuits that receive partial product signals from the partial product generation circuitry;
carry look-ahead adder circuitry that receives carry and sum signals from the first and second circuits; and
carry blocking circuitry connected between the first and second circuits that prevents carry signals from the first circuit from propagating to the second circuit when the duplex multiplier operates as the at least two smaller multipliers.
9. The duplex multiplier circuitry defined in
10. The duplex multiplier circuitry defined in
11. The duplex multiplier circuitry defined in
12. The duplex multiplier circuitry defined in
13. The duplex multiplier circuitry defined in
14. The duplex multiplier circuitry defined in
15. The duplex multiplier circuitry defined in
16. The duplex multiplier circuitry defined in
|
This invention relates to multimode multiplier circuitry for integrated circuits such as programmable logic devices and to methods for designing, verifying, and using multimode multiplier circuitry.
Multiplier circuits are used in a variety of integrated circuits for functions such as digital signal processing. Multimode multipliers can be configured to operate in more than one mode of operation. For example, a duplex multiplier can be configured to operate in two different modes. In the first mode, a duplex multiplier operates as a single large multiplier. In the second mode, the duplex multiplier operates as two smaller multipliers. An 18×18 duplex multiplier may be configured to operate either as a single 18-bit×18-bit multiplier or two 9-bit×9-bit multipliers. Because multiplier circuits consume a relatively large amount of circuit resources, it is more efficient to implement the 18×18 and 9×9 capabilities in a single duplex multiplier, rather than providing three separate multipliers (one 18×18 and two 9×9) on an integrated circuit.
The mode of operation of a multimode multiplier can be selected by a user of the integrated circuit (i.e., a logic designer). For example, in a programmable logic device or a digital signal processing chip with configurable logic, a control bit may be set to configure a duplex multiplier as either a single 18×18 bit multiplier or two 9×9 bit multipliers depending on the needs of the user. Both 18×18 and 9×9 multiplication functions cannot be used simultaneously, but because of the improved efficiency of using shared hardware to implement both 18 bit and 9 bit functions, duplex multiplier designs are the preferred solution in many situations.
Many integrated circuits are designed using libraries of standard cells. The standard cells are circuit building blocks containing generic components (e.g., NAND and NOR gates, flip-flops, etc.). Software design tools are available to assist logic designers in designing complex circuits based on standard cells.
The design tools allow a logic designer to input logic designs using a high-level hardware description language (HDL) such as Verilog. At the highest level, the designer's HDL specification is generally provided as a register-transfer level (RTL) model. Using a logic synthesis tool and various other design tools, the logic designer's RTL model is translated into an actual mask set for fabricating an integrated circuit containing the logic designer's required circuitry. In addition to logic synthesis, the logic design tools implement operations such as placement, physical optimization, and routing.
To ensure that a logic design is free of errors, logic designers may run vector-based simulations that attempt to thoroughly exercise a given logic design by examining the response of the logic to various test inputs. However, for large circuits such as 18-bit×18-bit multipliers, it is not practical to exhaustively exercise the entire design, because billions of test vectors would be required. Even if sets of test vectors are chosen carefully, full confidence in the correctness of a given design cannot be achieved, because it is not practical to test every possible vector.
To overcome the shortcomings of logic-simulation-based testing, logic equivalency checking (LEC) tools have been developed. LEC tools use canonical representations of combinatorial logic such as binary decision diagrams and can exhaustively test many logic designs that would be impractical to check using logic simulation techniques.
General purpose error checking algorithms such as those based on binary decision diagrams cannot be used to verify the proper operation of large multiplier circuits due to their complexity. As a result, dedicated multiplier testing algorithms (“solvers”) have been developed that will check standard multiplier designs for errors. For example, LEC tools are available with solvers that may be used to check standard 18-bit×18-bit multipliers for errors.
Because of their complexity, logic synthesis tools are unable to successfully synthesis duplex multiplier circuits from an RTL model without dividing the multiplier. For example, an attempt to perform synthesis on a conventional RTL model of an N×N duplex multiplier would result in the synthesis of three separate multiplier circuits—one N×N multiplier and two N/2×N/2 multipliers. Moreover, it is not possible to use an RTL model of a duplex multiplier for error checking, because there are no logic equivalency checking tools available that can perform this operation for duplex multiplier circuits. If a duplex multiplier is required for a given integrated circuit, incomplete and time-consuming logic simulation techniques must be used for error checking.
It would therefore be desirable to provide multimode multipliers whose operation can be exhaustively verified and to provide ways in which to design, verify, and use such multimode multipliers.
In accordance with the present invention, a verifiable architecture is provided for complex multimode multiplier circuits. The multiplier circuits may be, for example, multipliers that can be selectively configured to operate as either a single N-bit by N-bit multiplier or as two or more smaller multipliers.
In one suitable arrangement, the verifiable architecture may be used for a duplex multiplier in which the multiplier operates as a single N-bit×N-bit multiplier in a first mode of operation or as dual N/2-bit×N/2-bit multipliers in a second mode of operation. The duplex multiplier architecture may be based on an architecture such as a non-Booth Wallace tree (NBW) multiplier architecture.
An NBW multiplier has a partial product generator, Wallace tree, and carry look-ahead adder. An 18-bit duplex multiplier architecture in accordance with the present invention has partial product generation circuitry that produces an “ext8” signal for the eighth slice of Wallace tree circuitry (i.e., the circuitry associated with the eighth bit position in the Wallace tree).
In the first mode of operation, the ext8 signal has a logical zero value and does not contribute to the product produced by the 18×18 multiplier. In the second mode of operation, the multiplier is partitioned into two 9×9 multipliers and the ext8 signal serves as a negative operand flag bit for one of these multipliers.
The Wallace tree and the carry look-ahead adder in the duplex multiplier have carry blocking circuitry.
In the first mode of operation, a control signal (“DUPLEX”) has a first value. When DUPLEX has this first value, the carry blocking circuitry is disabled and carry signals are able to propagate from the less-significant-bit portion of the multiplier to the more-significant-bit portion of the multiplier. The multiplier therefore operates as a regular NBW N×N multiplier.
In the second mode of operation, the DUPLEX control signal has a second value. When DUPLEX has the second value, the carry blocking circuitry prevents carry signals from propagating from the less-significant-bit portion of the multiplier to the more-significant-bit portion of the multiplier. The multiplier circuitry is effectively partitioned by the carry blocking circuitry and therefore serves as two 9×9 multipliers.
A register-transfer level (RTL) model of the duplex multiplier may be synthesized to produce a generic netlist using available design tools. These design tools may be used to generate a mask-level design for the duplex multiplier specified in the RTL model.
The RTL model can be exhaustively error checked against the various netlists produced during the design process. With one suitable approach, the DUPLEX variable is first set to zero (N×N mode) and a first error checking run is performed using a standard logic equivalency checking tool. The standard NBW multiplier is a supported multiplier in this tool, so the error checking performed during the first run is exhaustive for the N×N multiplier. The DUPLEX variable is then set to one (dual N/2×N/2 mode) and a second error checking run is performed using the logic equivalency checking tool. The N/2-bit by N/2-bit multipliers can be exhaustively checked by the tool during this second run (e.g., using general purpose error checking techniques based on binary decision diagrams). By performing the first and second error checking runs, the duplex multiplier can be exhaustively verified.
Further features of the invention, its nature and various advantages will be more apparent from the accompanying drawings and the following detailed description of the preferred embodiments.
The present invention relates to multimode multiplier circuits such as duplex multipliers. The present invention also relates to methods for designing multimode multipliers, verifying that multimode multipliers are free of errors, and operating multimode multipliers. The invention applies to multimode multipliers on any suitable integrated circuits. For clarity, the present invention will sometimes be described in the context of duplex multipliers for programmable logic device integrated circuits or other integrated circuits with configurable logic. This is, however, merely illustrative.
A variety of logic design tools are currently available to assist logic designers in designing multipliers used in integrated circuits. A conventional system 10 that may be used to assist a logic designer in designing a duplex multiplier is shown in
A logic designer using system 10 can specify the desired attributes of the duplex multiplier using a high-level hardware description language (HDL) model 12. This type of model, which is referred to as a register-transfer level (RTL) model, contains HDL code at a level of abstraction that is acceptable to a logic synthesis tool. Multipliers can be specified in RTL models using arithmetic expressions that are based on the multiply operator.
Although conventional logic synthesis tools support standard multiplier architectures (e.g., standard 18-bit×18-bit designs), it is not possible to efficiently synthesis an RTL model of a duplex multiplier using conventional logic synthesis tools. As a result, a logic designer must manually convert the RTL model of a desired duplex multiplier to a generic netlist representation of the RTL model before proceeding with the rest of the design process.
Netlists are representations of the devices and interconnections in a logic circuit at various levels of abstraction. A generic netlist has the highest level of netlist abstraction and can be implemented in various different ways, depending on the type of semiconductor fabrication technology and standard cells that are to be used. In contrast, the netlist produced by a routing design tool has the lowest level of netlist abstraction and describes the actual circuit in physical detail, including the sizes and shapes of the transistors, line widths and positions, etc.
The process of hand-coding the generic netlist 14 of a duplex multiplier is complex and error prone. Typically, thousands of lines of hardware description language code (e.g., Verilog or VHDL instructions) must be produced. Moreover, because no logic equivalency checking tools exist for verifying duplex multipliers, duplex multipliers must be checked using a vector-based logic simulation tool 16.
Logic simulation using tool 16 only enables partial verification of the multiplier. Due to combinatorial explosion, exhaustive verification of a large multiplier would require an unrealistic number of vectors. For an N-bit multiplier, 22N vectors would be required. Thus, the exhaustive simulation of a 16-bit multiplier, would require more than 4 billion vectors. As a result, the simulation performed by tool 16 is necessarily incomplete.
As shown in
Placement tool 24 processes netlist 22 to produce a netlist 26 that contains placement information (i.e., information on the location of circuit components on the integrated circuit).
Physical optimization tool 28 processes netlist 26 to minimize routing delays (e.g., by resizing certain transistors, adding buffers, and making modifications to the details of the logic design). The output of physical optimization tool 28 is a less-abstracted netlist 30.
Routing tool 32 is used to convert netlist 30 into a netlist 34 that has the lowest-level of netlist abstraction. Netlist 34 includes details on the multiplier circuit such as the actual transistor sizes and shapes, the actual wire sizes and shapes, etc. Netlist 34 may be used to fabricate the duplex multiplier on an integrated circuit (e.g., by creating mask sets for lithography, etc.).
Vector-based logic simulation is computationally difficult, which makes it impractical to exhaustively verify certain complex designs. As a result, formal verification techniques have been developed. Tools that use such formal verification techniques are called logic equivalency checking (LEC) tools. LEC tools do not require vectors and can exhaustively verify that two representations of the same design are functionally identical.
Using such tools, the netlists obtained at successive steps of the design flow of
Because of the complexity of duplex multiplier circuits, however, it is not possible to perform logic equivalency checking to compare the RTL model 12 to netlists 22, 26, 30, and 34. Thus, while tools 36, 38, and 40 may be used to check for step-to-step errors, it is not possible to check the various netlists against the logic designer's highest-level specification. This introduces additional complexity and uncertainty into the design and verification process. In addition, no conventional tools exist to exhaustively verify the generic netlist for a duplex multiplier.
The inability to use a logic synthesis tool to automatically generate the generic netlist 14 from the RTL model 12 forces the logic designer to code generic netlist 14 by hand, which makes the process of generating generic netlist difficult and prone to errors. Moreover because of the lack of a technique for exhaustively checking netlists 14, 22, 26, 30, and 34 for errors, duplex multiplier circuits are subject to errors.
The present invention addresses these problems. With the present invention, a duplex multiplier architecture is provided that allows a generic netlist to be created from an RTL model. The architecture also allows the generic netlist and other netlists to be error-checked against the RTL model. This permits complete verification of the duplex multiplier design and avoids the need to rely on vector-based logic simulations tools to debug the generic netlist.
A system 42 in accordance with the present invention is shown in
The synthesis tool 46 includes a technology mapping tool 52 that uses technology library 54 to map generic netlist 50 into a netlist 56 that is specific to a particular technology (e.g., a particular set of standard cells) and which takes into account timing and area constraints. A suitable technology mapping tool 46 that may be used in system 42 is the commercially-available tool called “Design Compiler” from Synopsys.
Placement tool 58 performs placement operations on netlist 56 and produces a corresponding less-abstracted netlist 60.
Physical optimization tool 62 performs optimization functions. For example, tool 62 minimizes routing delays and corrects timing problems by optimizing transistor sizes and introducing or removing buffers and making other changes to the details of the logic design. Tool 62 produces netlist 64 as an output.
Routing tool 66 performs routing operations and converts netlist 64 to netlist 68. Netlist 68 includes detailed information on the locations and sizes of the components and interconnects in the duplex multiplier and may be used to generate lithographic mask sets for fabricating the multiplier on an integrated circuit.
Gate-to-gate logic equivalency checking may be performed by tools 70, 72, and 74. In particular, tool 70 can check for errors introduced by placement tool 58 by checking netlist 60 against netlist 56. Tool 72 may be used to check for errors introduced by physical optimization tool 62 by comparing netlists 60 and 64. The operations of routing tool 66 may be checked by using tool 74 to ensure that the circuit defined by netlist 68 is logically equivalent to that of netlist 64.
RTL-to-gate LEC tool 76 may be used to perform exhaustive error checking of generic netlist 50 and netlist 56, netlist 60, netlist 64, and netlist 68 against RTL model 44, thereby obviating the need for vector-based logic simulation tool 16 (
The use of RTL-to-gate LEC tool 76 permits more direct circuit verification than would be possible by only comparing successive netlists in the design flow (using, e.g., tools 70, 72, and 74). This helps to eliminate errors that might be introduced by manipulation of the netlists during the design process. If desired, tools 70, 72, and 74 may still be used to verify that the netlist at a given step of the design flow is functionally equivalent to a netlist that was obtained at a previous step in the flow. For example, the netlist after physical synthesis can be checked against the netlist after placement, or against the netlist after synthesis. Combinatorial explosion is not an issue for LEC tools 70, 72, and 74, because the comparisons made by such tools involve a structural comparison of two similar netlists.
Duplex multipliers can operate as either a single N-bit×N-bit multiplier or as two smaller multipliers (e.g., in response to a mode control signal on a programmable logic device, digital signal processor, microprocessor, or other integrated circuit). For clarity, the present invention will be further described in the context of an illustrative 18-bit×18-bit duplex multiplier that can be operated as two individual 9-bit by 9-bit multipliers. This is, however, merely illustrative. Multiplier circuits of any size may be used with the invention.
If desired, the operands (inputs) to the multiplier can be treated as unsigned numbers or signed numbers, using sign control signals. Rounding and saturation may also be implemented (e.g., using DSP standards). For clarity, the illustrative duplex multiplier has no sign control and no rounding or saturation capabilities.
An illustrative RTL model 44 for the illustrative duplex multiplier is shown in
If the value of the variable “duplex” in the RTL model of
If the value of the variable “duplex” in the RTL model of
Although the invention is being described in the context of the duplex multiplier of
In addition, the same techniques can be used to implement multimode multipliers that can be configured as more than two parallel multipliers. For example, the same type of architecture could be used to implement a “triplex multiplier” that can be configured as a single multiplier or as three parallel multipliers or could be used to form a multimode multiplier that operates as one N×N multiplier or 4 individual N/4×N/4 multipliers, etc.
Advantageously, the present invention allows the use of a commercial LEC tool to exhaustively verify the proper operation of the duplex multiplier. This is accomplished by making the duplex multiplier appear as though it is a commercially-supported multiplier to the commercial LEC tool when the duplex multiplier is configured in its single multiplier mode. In previous duplex multipliers, the selected architecture did not lend itself to verification by standard LEC tools, so it was necessary to use logic simulation techniques to attempt verification.
The 18-bit×18-bit mode of the duplex multiplier poses challenges to the LEC tool, whereas the two parallel 9-bit×9-bit multipliers are small enough that they can be easily verified regardless of their chosen architecture. This is because the 9-bit×9-bit size of these multipliers is below the size where combinatorial explosion becomes significant. As a result, commercial LEC tools will generally be able to verify the 9-bit×9-bit multipliers as ordinary pieces of logic using general-purpose techniques such as binary decision diagrams.
The 18-bit×18-bit multiplier is preferably constructed using an architecture supported by an available synthesis tool. As an example, if the synthesis tool being used is Designware Foundation from Synopsys (as in this example), the 18×18 multiplier preferably uses one of the two architectures supported by Designware Foundation for creating large high-performance multipliers: (1) the Booth Wallace tree (WALL) architecture, which uses a Booth encoder, a Wallace tree, and a carry look-ahead adder (CLA) or (2) the non-Booth Wallace tree (NBW) architecture, which uses a partial product generator, a Wallace tree, and a carry look-ahead adder, and in which partial products are added directly in the Wallace tree without Booth encoding.
The WALL and NBW multiplier architectures produce similar area and performance results for a wide range of multipliers. For an 18-bit×18-bit multiplier, the results are almost identical. Either type of architecture can therefore be used as the basis for the duplex multiplier of this example. In general, when the multiplier size is relatively small, the NBW architecture gives better results because it does not encode its partial products. When the multiplier size is relatively large, the WALL architecture tends to produce better results, because it divides by 2 the number of partial products to add.
In the present example, the NBW architecture is used. A block diagram of a conventional 9-bit NBW multiplier circuit 84 is shown in
A bit table for the multiplier 84 of
Each of the bits that are added in the Wallace tree of a 9-bit×9-bit NBW multiplier 84 are represented in
pp0[i]=y[1]&x[i] 0≦i≦7
pp1[i]=y[1]&x[i]
pp2[i]=y[2]&x[i]
pp3[i]=y[3]&x[i]
pp4[i]=y[4]&x[i]
pp5[i]=y[5]&x[i]
pp6[i]=y[6]&x[i]
pp7[i]=y[7]&x[i]
These signals also include two 8-bit correction terms to handle negative operands:
x_neg_correction[i]=x[8]&˜y[i] 0≦i≦7
y_neg_correction[i]=y[8]&˜x[i]
and include two negative operand flags:
x_neg=x[8]&y[8]
y_neg=x[8]^y[8]
The following bit also must be added as the most-significant bit in the carry look-ahead adder circuitry 90 to obtain a correct sign bit:
prod_neg=x[8]|y[8]
In the foregoing equations, the symbol “&” represents a logical AND operation, the symbol “^” represents a logical exclusive-OR (XOR) operation, and the symbol “|” represents a logical OR operation.
The bits of the signals that are added in the Wallace tree of a conventional 18-bit×18-bit NBW multiplier are shown in
Duplex multiplier circuitry 92 in accordance with the present invention is shown in
As shown in
When DUPLEX is low (e.g., 0), the duplex multiplier 92 is configured as a single 18-bit×18-bit multiplier as shown by multiplier 78 of
In duplex multiplier 92, the circuitry of Wallace tree circuitry 96 is partitioned. In 18-bit mode, upper-bit Wallace tree circuitry 100 is used to handle the most significant bits of the signals received from partial product generation circuitry 94, whereas lower-bit Wallace tree circuitry 102 is used to handle the least significant bits of the signals from partial product generation circuitry 94. In 9-bit mode, Wallace tree circuitry 100 serves as part of one of the 9-bit multipliers and Wallace tree circuitry 102 serves as part of the other of the 9-bit multipliers.
Carry blocking circuitry 104 is responsive to the DUPLEX signal provided at mode control input 106. When the duplex multiplier is in 9-bit mode, the carry blocking circuitry 104 prevents carry signals from lower-bit Wallace tree circuitry 102 from propagating to upper-bit Wallace tree circuitry 100. When the duplex multiplier is in 18-bit mode, the carry blocking circuitry 104 allows carry signals to pass freely from lower-bit Wallace tree circuitry 102 to upper-bit Wallace tree circuitry 100.
Any suitable carry blocking circuitry 104 may be used to partition Wallace tree circuitry 96. With one illustrative configuration, carry blocking circuitry 104 includes a plurality of AND gates 108, as shown in
When the duplex signal on control input 106 is low, the input signals on control inputs 110 of AND gates 108 are high due to the inversion provided by inverter 118. This enables AND gates 108 and allows the carry signals on carry signal lines 110 to propagate from slice 16 to slice 17 via AND gate outputs 114, just as these signals would normally propagate to slice 17 in a normal 18-bit×18-bit NBW multiplier. When the duplex signal is high, the signals on AND gate inputs 112 are low, so carry signals from slice 16 in lower-bit Wallace tree circuitry 102 are blocked and do not propagate to the circuitry of slice 17 in upper-bit Wallace tree circuitry 100. This allows the two halves of the duplex multiplier 92 to operate as separate 9×9 multipliers.
As shown in
As shown in
When the duplex signal DUPLEX is low, the duplex multiplier 92 is in 18×18 mode and the partial products are generated as in a regular 18-bit×18-bit NBW multiplier. In this mode, the partial product generator circuitry 94 (
A bit table for the duplex multiplier 92 in 18×18 mode is shown in
When the duplex signal DUPLEX is high, two 9×9 multipliers are formed using the same duplex multiplier circuitry 92. In this mode, the ext8 signal serves the same function as the x_neg flag in a conventional 9×9 bit multiplier.
The bit diagram for the duplex multiplier 92 in dual 9×9 mode is shown in
Line 123 depicts how the Wallace tree carry blocking circuitry 104 is enabled in this mode to prevent carry signals from the more significant bit positions of the first 9×9 multiplier (cells 126) from propagating to the less significant bit positions of the second 9×9 multiplier (cells 128).
The numbers within the cells of
The second 9-bit×9-bit multiplier is implemented using the circuitry associated with cells 128. In particular, the partial products for the second multiplier occupy bits 8 to 15 of input vectors pp9 to pp16 (cells with numbers 9-16). The negative corrections for the second multiplier occupy bits 8 to 15 of input vectors x_neg_correction and y_neg_correction (cells with the letters E and F). The negative operand flags for the second 9×9 multiplier occupy bit 16 of input vector pp9 (cell with the letter H) and bit 16 of input vector pp10 (cells with the letter G).
All of the inputs to the Wallace tree circuitry 96 that are unused are set to zero (the marked cells in
An illustrative RTL model of the partial product generation circuitry 94 which shows how the operations of
An illustrative RTL model of the carry look-ahead adder circuitry 98 of
Advantageously, the illustrative duplex multiplier architecture allows most of the hardware of the 18×18 multiplier to be shared by the two 9×9 multipliers, thereby minimizing the overhead associated with providing the dual 9×9 mode on top of an 18×18 multiplier. As described above, only one bit (ext8) is added to the Wallace tree of the 18-bit×18-bit multiplier.
Illustrative steps involved in creating an exhaustively-verifiable duplex multiplier in accordance with the present invention are shown in
During the synthesis operation of step 142 a generic netlist may be automatically created by the synthesis tool, which reduces errors due to hand-coding. The ability to automatically synthesize the generic netlist is available because a standard N×N multiplier is being synthesized at step 142, which commercially-available synthesis tools can handle.
At step 144, the representation of the Wallace tree circuitry 96 of
At step 146, the netlist may be edited to insert appropriate code for the carry blocking circuitry 104 (
At step 148, a register-transfer level (RTL) model of the partial products generation circuitry 94 (
At step 150, an RTL model of the carry look-ahead adder circuitry may be created. The carry look-ahead adder module has two carry look-ahead circuits (132 and 134 of
At step 152, an RTL model of the duplex multiplier is assembled from the RTL module for the partial products generation circuitry, the RTL module for the Wallace tree, and the RTL module for the carry look-ahead adder.
At step 154, synthesis tool 46 (
At step 156, placement tool 58, physical optimization tool 62, and routing tool 66 may be used to complete the design of the duplex multiplier circuit in the target technology.
The netlists 50, 56, 60, 62, 64, and 68 (
Illustrative steps involved in verifying the netlists against the RTL model are shown in
The process of
The duplex variable DUPLEX may then be set to 1 (step 162) and, at step 164, a second error-checking run may be performed using RTL-to-gate logic equivalency checking (LEC) tool 76 of
The process of
The table of
The area and performance of the duplex multiplier 92 have been benchmarked using a standard synthesis tool 46 and conventional standard cell technology library 54. To evaluate the overhead of adding a duplex mode on top of the NBW architecture, the duplex multiplier was compared to a basic signed 18-bit×18-bit NBW multiplier. Timing constraints ranging from 0.90 ns to 2.00 ns were set on both designs, and area and timing results provided by the standard synthesis tool were collected. Default operating conditions and default wire load models were used.
The 18-bit duplex multiplier was synthesized with two sets of timing constraints to evaluate performance for two different types of design scenarios (called “Duplex 1” and “Duplex 2”). Results are compared to the standard 18×18 NBW multiplier design in the graph of
With the first scenario (referred to as “Duplex 1” in
With the second scenario (referred to as “Duplex 2” in
As shown in
In the delay range of 1.5 ns to 2.0 ns (500 MHz to 660 MHz), the overhead of both the Duplex 1 and Duplex 2 implementations is less than 3%. In the delay range of 1.1 ns to 1.5 ns (900 MHz to 660 MHz), the overhead of Duplex 1 increases up to 7%, and the overhead of Duplex 2 increases up to 10%. As demonstrated by these small amounts of overhead, the duplex multiplier architecture is efficient from a performance and area perspective. As described above, the duplex multiplier can also be synthesized automatically using available tools 46 (
The foregoing is merely illustrative of the principles of this invention and various modifications can be made by those skilled in the art without departing from the scope and spirit of the invention.
Patent | Priority | Assignee | Title |
8903882, | Dec 13 2010 | International Business Machines Corporation | Method and data processing unit for calculating at least one multiply-sum of two carry-less multiplications of two input operands, data processing program and computer program product |
9384167, | Sep 05 2012 | Siemens Industry Software Inc | Formal verification of booth multipliers |
9959379, | Oct 07 2015 | Siemens Industry Software Inc | Hybrid compilation for FPGA prototyping |
Patent | Priority | Assignee | Title |
3814924, | |||
4752905, | Nov 09 1984 | Hitachi, Ltd. | High-speed multiplier having carry-save adder circuit |
4825401, | Mar 31 1986 | Kabushiki Kaisha Toshiba | Functional dividable multiplier array circuit for multiplication of full words or simultaneous multiplication of two half words |
5465226, | Mar 20 1990 | Fujitsu Limited | High speed digital parallel multiplier |
5586070, | Aug 03 1994 | ATI Technologies ULC | Structure and method for embedding two small multipliers in a larger multiplier |
5751622, | Oct 10 1995 | ATI Technologies ULC | Structure and method for signed multiplication using large multiplier having two embedded signed multipliers |
5764558, | Aug 25 1995 | International Business Machines Corporation | Method and system for efficiently multiplying signed and unsigned variable width operands |
5935202, | Mar 25 1997 | International Business Machines Corporation | Compressor circuit in a data processor and method therefor |
6286024, | Sep 18 1997 | Kabushiki Kaisha Toshiba | High-efficiency multiplier and multiplying method |
6323677, | Oct 14 1997 | Altera Corporation | Programmable logic device circuitry for improving multiplier speed and/or efficiency |
6323680, | Mar 02 2000 | Altera Corporation | Programmable logic device configured to accommodate multiplication |
6353843, | Oct 08 1999 | Sony Corporation | High performance universal multiplier circuit |
6460064, | Nov 02 1998 | MagnaChip Semiconductor, Ltd | Multiplier for operating n bits and n/2 bits and method therefor |
6523055, | Jan 20 1999 | LSI Logic Corporation | Circuit and method for multiplying and accumulating the sum of two products in a single cycle |
6556044, | Sep 18 2001 | Altera Corporation | Programmable logic device including multipliers and configurations thereof to reduce resource utilization |
6704762, | Aug 28 1998 | NEC Corporation | Multiplier and arithmetic unit for calculating sum of product |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
May 20 2004 | DUPENLOUP, GUY | Altera Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 015385 | /0387 | |
May 25 2004 | Altera Corporation | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Aug 28 2012 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Aug 26 2016 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Nov 02 2020 | REM: Maintenance Fee Reminder Mailed. |
Apr 19 2021 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Mar 17 2012 | 4 years fee payment window open |
Sep 17 2012 | 6 months grace period start (w surcharge) |
Mar 17 2013 | patent expiry (for year 4) |
Mar 17 2015 | 2 years to revive unintentionally abandoned end. (for year 4) |
Mar 17 2016 | 8 years fee payment window open |
Sep 17 2016 | 6 months grace period start (w surcharge) |
Mar 17 2017 | patent expiry (for year 8) |
Mar 17 2019 | 2 years to revive unintentionally abandoned end. (for year 8) |
Mar 17 2020 | 12 years fee payment window open |
Sep 17 2020 | 6 months grace period start (w surcharge) |
Mar 17 2021 | patent expiry (for year 12) |
Mar 17 2023 | 2 years to revive unintentionally abandoned end. (for year 12) |