This invention relates in general to digital circuits and, more specifically, to design of digital circuits that are laid-out with cells.
Mathematics is one attempt for humankind to understand the universe around them. As technological advancement occurs, mathematical concepts and algorithms grow to enable and/or support those advancements. Within the context of digital design, Boolean logic is the mathematical construct used to manipulate and optimize digital circuits. Nearly every electronic device today relies upon some type of Boolean logic for any embedded digital circuits. Other mathematical constructs, however, are possible that allow further optimization of digital designs. Changes to the processing of digital design are necessary when avoiding Boolean logic elements.
Today application specific integrated circuit (ASIC) are specified using netlists of library cells for a particular process of a foundry or fabrication facility. These netlists are used to fabricate integrated circuits made up of the library cells. A few hundred library cells are typically available for a particular process that include AND gates, OR gates, flip-flops (F/F), and buffers. When a new fabrication process is developed, engineers custom layout each of the library cells to get the most optimal performance from each cell.
The present invention is described in conjunction with the appended figures:
In the appended figures, similar components and/or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If only the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.
The ensuing description provides preferred exemplary embodiment(s) only, and is not intended to limit the scope, applicability or configuration of the invention. Rather, the ensuing description of the preferred exemplary embodiment(s) will provide those skilled in the art with an enabling description for implementing a preferred exemplary embodiment of the invention. It is to be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the invention as set forth in the appended claims.
In one embodiment, the present invention provides an ASIC cell library for use in creation of custom integrated circuits. The ASIC cell library includes some first cells and some second cells. Each of the second cells includes two or more kernel cells. The ASIC cell library is at least 5% comprised of second cells. In various embodiments, the ASIC cell library could be 10% or more, 20% or more, 30% or more, 40% or more, 50% or more, 60% or more, 70% or more, 80% or more, 90% or more, or 95% or more comprised of second cells. In various embodiments, a total number of kernel cells could be less 10, 20, 30, 40, 50, 75, or 100.
In another embodiment, the present invention provides an integrated circuit cell library for use in circuits having digital logic. A first percentage of the integrated circuit cell library are first cells and a second percentage of the integrated circuit cell library are second cells. Each of the second cells includes a selection circuit. The second percentage is more than 5% of the integrated circuit cell library.
In yet another embodiment, the present invention provides an integrated circuit cell library for use in circuits having digital logic. The integrated circuit cell library includes first cells and second cells. The first cells are a first percentage of the integrated circuit cell library and the second cells are a second percentage of the integrated circuit cell library. Kernel cells are used in forming the second cells. At least some of the second cells include at least two kernel cells coupled together through abutment.
I. Cells
In one embodiment, a basic cell is a construct that includes one or more of a universal logic gate (ULG), a memory element or flip-flop (F/F), and/or a buffer. In this embodiment, the ULG is a multiplexor or select circuit. The ULG, memory element, and buffer are implemented with a relatively-small number of kernel cells, which typically have layouts that are individually optimized, and often, by hand. The kernel cells are arranged into the higher-level basic cells having at least one of the ULG, memory element, and buffer, but the basic cells do not have more than one of any type of kernel cell in this embodiment. For a given semiconductor process, there is a ULG ASIC cell library which is composed of the basic cells and specialized cells. These specialized cells may differ from the basic cell construct and could include, for example, clock dividers, memory arrays, analog circuits, phase-locked loops, oscillators, analog circuits, etc.
Referring first to
The ULG 104 in this embodiment is implemented with a multiplexor. Multiplexors can be used to implement any Boolean function, but are not Boolean operators. Combinatorial logic in conventional designs is not implemented with selection functions, but uses Boolean logic gates. Further, multiplexors in conventional circuits are converted to Boolean equivalents during synthesis.
The below Table I shows the fourteen kernel cells used in one embodiment:
The embodiment of the kernel cells in the above Table I could be augmented in other embodiments to include other cells. The ULGs could include multiplexors of any size, for example, 16 to 1, 32 to 1, 64 to 1, etc. Larger multiplexors could be formed with a number of smaller multiplexors if a larger multiplexor is not supported in the kernel cells. Various other types of memory cells could also be supported such as EEPROM, EPROM, PROM, DRAM, SRAM, NVRAM, magnetic core memory, J-K F/Fs, setable and resetable F/Fs, various F/F with scan ATPG capability, etc. The J-K, setable, or resetable functionality of a F/F can be implemented by a D F/F and logic that can be embedded in the mux before or after the D F/F. The F/Fs could also be falling edge triggered in some embodiments. Also the buffers could be of various strengths and sizes. Some buffers could support input and output pins of the chip with various thresholds, voltages, etc.
Table II lists the various configurations in which kernel cells are used to create basic cells 100-1 that use all of a ULG 104, a memory cell 108 and a buffer cell 112 such as the example in FIG. 1A. These basic cells 100-2 are the variations found in one embodiment of the ULG ASIC cell library.
With reference to
Referring next to
With reference to
Although the embodiment in Tables II-V show some possible basic cells, other embodiments could include additional basic cells. These additional basic cells could be optimized for output power, power consumption, layout area, response time, leakage, etc. such that there are multiple cells with the same logical properties, but that are optimized for particular circumstances. For example, there may be three non-inverting buffers of having different drives to support larger fanout and/or higher speeds. In various embodiments, there could be less than, for example, 100, 75, 50, 40, 30, 20, or 10 kernel cells. At the lower limit, there is three kernel cells in one embodiment with just one of each of the types of kernel cells.
The building blocks of a digital circuit could be abstracted beyond the ULG ASIC cell library. In some embodiments, the ULG ASIC cell library components could be combined in higher-level macro cells such as adders, multipliers, registers, barrel shifters, ALUs, comparators, decoders, state machines, counters, etc. There could be thousands of possible macro cells. Further, designs can be abstracted to a level higher than the macro cells by using cores that implement higher level functions such as microprocessors, graphics processors, interface busses or ports, digital signal processors, etc. These cores could use macro cells and/or components from the ULG ASIC cell library. Often the cores are written in a hardware description language (HDL) that can be easily synthesized into any ULG ASIC cell library for a particular process.
With reference to
This buffer cell 204 in an ASIC cell library could be used for other purposes also. For example, an 8 to 1 mux function could be implemented with a buffer cell 204 and a 4 to 1 mux 104 in some circumstances to reduce the chip area needed to implement the functionality. Table VI shows the thirteeen kernel cells used in this embodiment. Table VII shows a truth table for the enable buffer 204 where the enable input is R, the input is D and the output is Q.
II. Layout of Cells
Each fabrication process at a fab or foundry generally has a conventional ASIC cell library that is customized for that process. Each of the hundreds of cells in the conventional ASIC cell library is typically manually laid out to optimize its configuration. In this embodiment, however, a small number of customized kernel cells are used to automatically or manually compile the basic cells 100. For a target fabrication process, care is taken to optimize the layout of kernel cells 104, 108, 112 for factors such as power consumption, chip area, number of masks, number of process steps, yield, capacitance, inductance, resistance, glitches, I/O placement, etc. In some cases, the fabrication processes are similar enough to other fabrications processes that only minor tweaking to kernel cells is done.
With reference to
Abutment is used to link certain signals by coupling adjacent kernel cells. Adjacent placement of the cells may join the abutted I/O or a small conductive trace may join the abutted I/O. The kernel cells have a uniform height and differing depths such that the power traces 308, 312 for each kernel cell align with the next kernel cell. Also, certain I/O signals use a uniform latitude. For example the Q output 324 of the ULG layout 304 would align latitudinally with an input for an adjacent memory or buffer kernel cell.
Referring next to
With reference to
Referring next to
With reference to
In some embodiments, additional size reductions are realized in the ULGs by having them comprise one or more depletion-mode transistors. Schematic diagrams are provided in
The depletion-mode transistor 842 illustrated in
For certain embodiments of the ULGs that comprise depletion-mode transistors, this pattern may be used for a cell of any size. For a U2n+1 ULG that has 2n+1 inputs and n+1 controls, depletion-mode transistors may be provided for each control/input combination as follows:
In addition to the structural characteristics described above, there are a number logical properties and features that may be used both to characterize individual cells and to characterize libraries of such cells. An example of a formalism that may be used in one embodiment to describe the functionality of the basic cells and from which at least some such logical characterizations may be extracted is now described.
As discussed above, the selection circuits embodied by ULGs used for forming basic cells may be implemented using 2:1, 4:1, 8:1, or perhaps even larger, multiplexors. The inputs and control of each multiplexor are programmed to achieve the desired logical characteristics of the cell. The following syntax has been developed to describe the programming of such inputs and selection controls in a general fashion:
Q<QN>.xxxx<E>Y[n−1:0] I2
In addition to describing the programming of the ULG kernel cells, the syntax may be used to describe any of the basic cells, including both those that comprise ULG kernel cells and those that do not comprise ULG kernel cells. Optional parameters in the syntax are denoted with angular brackets and the components of the syntax are summarized in Table I.
There are a number of features of the syntax worthy of comment. The first component of the syntax indicates the output of the cell, using either Q or QN respectively to denote the output Q or {overscore (Q)}. This is followed by the name of the cell, which is generally constructed by concatenating the names of the kernel cells comprised by the cell. The names of the kernel cells have been set forth above in Table VIII. Thus, for example, a basic cell that comprises a D F/F and a non-inverting buffer would be named .DB (D→B); a basic cell that comprises a resetable D F/F and an inverting buffer would be named .DRBN (DR→BN); a basic cell that comprises a ULG multiplexor and a setable D F/F would be named .UDS (U→DS); and a basic cell that comprises a ULG multiplexor, a D F/F, and a tristatable buffer would be named .UDZB (U→D→ZB). It is noted that some of these examples of basic cells include a ULG multiplexor kernel cell while others do not, but all of these may be described with the syntax.
In those instances where the syntax is used to describe a basic cell comprising a ULG, the number of selection control inputs provided to the ULG is n. In a specific embodiment, the control inputs are ordered by significance, with the most significant control on the left and the least significant control on the right. While the syntax is equally robust for describing basic cells for any value of n, for purposes of explanation the examples provided herein generally correspond to cases in which n≅3. The states of the n control inputs Y dictate which of 2n inputs are passed to the output of the ULG. While in some instances, the control inputs may be identified individually, in other instances a range of control inputs is identified by using a colon in the argument of Y. Specifically, “Y[a:b]” is intended to refer to the full expression “Y[a]Y[a−1]Y[a−2] . . . Y[b+2]Y[b+1]Y[b].” The set I2
This formalism permits the expression of a number of manipulations that are possible with embodiments of the invention and which are discussed in detail in order to enable one of skill in the art to perform such manipulations. The nature of such manipulations may be clarified with a simple example for the combinational logic function C=A+{overscore (B)}. This logic function may be expressed in a concise hardware description language (“CHDL”) formalism as follows:
When logical operations are performed on expressions in this formalism, they indicate directly how the resulting expression may be implemented with basic blocks in accordance with an embodiment of the invention. For example, a simple logical operation is inversion of the output, which may be implemented by using an inverting buffer:
In other instances, alternative implementations of the same logical function may be achieved by performing operations on the control inputs. For example, the control inputs A and B may be permuted. Permuting the control for the function acts to rearrange the truth table. In an embodiment that includes this example, the truth-table states I3 and I0 remain in the same position because they represent states where both controls are high or both are low. States I2 and I1, which represent states where one control is high and the other is low, are interchanged:
A permutation of the truth table may also result from inversion of one or more of the control inputs. In this example, inverting the least significant control B interchanges neighboring states in the truth table:
The CHDL syntax also permits control variables to be entered as elements in the truth-table states. For example, the syntax makes it easy to recognize that the result C is high whenever A is high and that C takes the value of BN when A is low. This may be expressed in this CHDL syntax as
Equally, the syntax makes it easy to recognize that the result C is high whenever B is low and that C takes the value of A when B is low. This may be expressed in this CHDL syntax as
Not only does the CHDL syntax presented here easily admit control variables to be presented as map-entered variables, but this same ability is manifested in the implementations with the cells described above. In particular, either of the two above examples may be as easily implemented using a combination of a ULG and buffer (“.UB”) as is any truth table that uses the basic Boolean variables 0 and 1 exclusively. Implementation of all of these logical functions is simply a matter of assigning the truth-table states and control variables in accordance with the universal logic elements as described above.
The formalism thus makes clear that embodiments of the invention permit the implementation of a diverse range of logical functions. Specific examples of some of these properties are now discussed in greater detail. In discussing logical properties that may be exploited in certain embodiments of the invention, reference is sometimes made to the formalism explained above. Such reference is made primarily for reasons of convenience and is not in any way intended to limit the scope of the invention. In particular, it will be evident to those of skill in the art that it is possible to implement each legitimate syntactical expression in the formalism with the cells discussed above. Accordingly, the logical properties of the formalism correspond directly to logical functions that may be implemented with the cell arrangements in different embodiments.
One property of the formalism, and therefore also of the cell arrangements, is that no high-level distinction is made between combinational and sequential circuits; both such circuits are merely special cases of the more general types of logical functions that may be implemented. A combinational circuit is one in which the output(s) are predetermined functions of the input(s). As such, the logic implemented by a combinational circuit can be represented by a truth table setting forth a mapping between all possible Boolean states of the input(s) to the Boolean states of the output(s). This may be contrasted with a sequential circuit in which the logical application of the circuit relies on a history of past inputs. The application of such logic may instead be represented with a next-state equation that maps the past input(s) to the output(s). Embodiments of the invention described herein are not restricted either to combinational or sequential logic. For example, only slight differences in cells are needed to implement the following syntactic CHDL expressions:
This additional flexibility also arises in part from the more general character of cells made in accordance with embodiments of the invention to implement selection logic, in addition to combinational and selection logic. As used herein, a “selection operation” refers to a function in which one or more of a plurality of inputs are passed as outputs. In certain embodiments, the selection operation passes one of a plurality of inputs as an output. Such a selection operation differs from a sequential-logic operation because it does not depend on a past history of the inputs. It also differs from combinational-logic operations, which do not require that the output correspond to one of the inputs. This is easily seen for an NAND gate, which produces an output 1 in response to two 0 inputs; the output does not correspond to either of the inputs. It is also true, however, for an OR gate. Although in every instance the output of an OR gate is equal to one of the inputs, the gate does not act to pass one of the inputs as an output; instead, a combinational mapping is performed from the inputs to the outputs that happens to include some commonality. In addition, selection operations are not limited to instances in which the number of inputs is two and/or the number of outputs is one. More generally, any plurality pin (≧2) of inputs may be accepted, of which a number pout (≧1) are passed.
Embodiments of the invention also do not limit the inputs and/or outputs to the base Boolean values 0 and 1. As noted in connection with Tables X and XI and the associated syntactic expressions, cells used in embodiments of the invention may implement operations in which truth-table entries are instead functions of such base Boolean values. In this respect, the invention includes embodiments that provide for the implementation of Boolean functionals, which are defined herein as operations that admit functions of Boolean variables among their inputs and/or outputs, in addition to admitting base Boolean values among their inputs and/or outputs.
Both the formalism presented herein and the implementation with the cells described above permit a further generalization that increases the flexibility of digital design and its optimization. Such a generalization may be understood with reference to what are defined herein as higher-order Boolean functions. Conventional digital circuit design uses only what are referred to herein as zero-order Boolean functions, which admit only base Boolean values among their input(s) and/or output. In contrast, some embodiments of the invention use a first-order Boolean function, which corresponds to a Boolean functional and admits zero-order Boolean functions in addition to base Boolean values among its inputs and/or output(s). Other embodiments use a second-order Boolean function, which admits first-order Boolean functions, zero-order Boolean functions, and base Boolean values among its inputs ard/or output(s). In still other embodiments of the invention, even greater orders of Boolean functions are used, such orders admitting all lower orders of Boolean functions among their inputs and/or output(s) in addition to admitting the base Boolean values used in conventional design. All orders of Boolean functions other than zero-order Boolean functions are sometimes referred to herein collectively as “higher-order” Boolean functions.
This generalization may be illustrated with an example based on the C=A+{overscore (B)} example discussed earlier:
In this example, the third expression corresponds to the zero-order function C=A+{overscore (B)}, which admits only base Boolean vales 0 and 1 among its arguments. Such a function uses a combinational mapping and may be implemented using gates, such as with an OR gate and a NOT gate. The second expression corresponds to a first-order function, or functional, that admits the zero-order function C as one of its arguments, in addition to admitting the base Boolean values. The first expression corresponds to a second-order function that admits the first-order function F, the zero-order function C, and the base Boolean values among its arguments. The first and second expressions thus each correspond to expressions for higher-order functions. All three of the expressions may be implemented in embodiments of the invention using the cells as described above.
One effect of the ability to use higher-order functions may be seen with a comparison to the exclusive use of Boolean operations. Such Boolean operators operate only on the base Boolean values 0 or 1, or on variables that represent the base Boolean values 0 or 1, i.e. that have already had a value of 0 or 1 bound to it. Boolean minimization or optimization techniques are based on decomposing the expressions being minimized to consider the meaningful possible combinations of assignment of 0 or 1 to each Boolean variable (with the possible existence of “don't care” states for some variables under some circumstances reducing the meaningful possible combinations downward from the set of all possible combinations). Higher-order functions allow one to optimize, or minimize a circuit, without the requirement to decompose the function result to each possible value and considering each separately. In other words, when a circuit with the algorithms described below, one need not know what the value of the functions or variables are; optimization is performed regardless. In conventional methods limited to the use of Boolean operators, each variable and function is decomposed into all possible values for the functions and variables, i.e. to define a complete truth table, before any optimization can be performed; in such conventional methods one must exhaustively assign a value to all variables and functions.
IV. Optimization
The expanded availability of logical operations provided by embodiments that use cells based on the ULGs and as represented by the formalism described permits increased optimization. In many instances, these logical operations may be used to determine optimized methods of implementing a given function. A number of such logical operations are illustrated, and it will be understood by those of skill in the art that still other logical operations may derive from the formalism in other embodiments of the invention. Moreover, while the formalism is used as a matter of convenience to illustrate the nature of the optimizations, it will be understood that all the expressions that follow may be implemented using the previously described cells in the manner explained. This is true even in instances where the expressions correspond to functions not accessible by standard Boolean logic. In some cases, use of the formalism shows how multiple manipulations may be performed to achieve an optimization, it being necessary only to implement the final result with the previously described cells to achieve the optimized function.
A number of the operations that may be performed with logical functions as expressed using the formalism described herein are summarized in
In one embodiment, inversions of the control or state variable may proceed at block 908 by interchanging adjacent groups in the truth table. The size of the groups to be interchanged depends on the significance of the control or state variable to be inverted. Thus, if a control Y[k] is to be inverted, groups of size 2k are inverted. This may be illustrated by considering a cell comprising a ULG and a buffer:
The flow diagram in
The flow diagram of
In some cases, it may be desirable to permute the truth table to achieve such VSS VDD sequences by permuting the control:
The same principles apply with more significant levels of control, for which optimization may remove an inversion by entering the more significant control as a map-entered variable under some circumstances. In one embodiment, for example, this is achieved when the less significant controls are redundant:
At block 912 of
Every operation in the
The entry of a control variable into a truth table as a map-entered variable, such as discussed with respect to block 910 in
Thus, the general procedure illustrated in
At block 920, permutations may be performed in the control to rearrange the truth table to identify sequences that permit the entry of the control variables. For the entry of a lowest level control, sequences of VDD VSS, coupled with a pair of repeated variables A A, is sought. For the entry of the next level control, sequences of VDD VDD VSS VSS, coupled with four repeated variables A A A A, is sought. For the next level control, sequences of VDD VDD VDD VDD VSS VSS VSS VSS, coupled with eight repeated variables A A A A A A A A, is sought. Similar sequences for still higher control levels follow the same pattern. At block 922, the control variable(s) are entered into the truth table to account for these patterns.
Thus, one example of applying blocks 920 and 922 is as follows:
Block 924 notes that the process of identifying and removing redundancies and permuting control variables to permit their entry into the truth table may be repeated to achieve further optimizations. The method is thus looped until these procedures have optimized the syntactic expression in this way as much as desired. At block 926, the method thus proceeds to another type of transformation, if desired, to effect further optimizations.
In addition to reducing nodes for a single cell, it is possible in embodiments of the invention to provide optimizations by combining nodes from multiple cells. The flow diagram shown in
One method for combining nodes is thus summarized by blocks 934 and 936 in which the control for the multiple syntactic expressions is combined and then states in the merged expression are defined. For example, consider the following two syntactic CHDL expressions in which the output of the second expression, A, is one of the inputs to the first expression:
While this example showed how two expressions could be merged, it may be applied more generally to any number of expressions. For example, the following three expressions may be merged in a similar fashion with a sequential process:
Both of these examples have begun with expressions that correspond to ULG cells that may be implemented with multiplexors of the same size. There is, however, no limitation on embodiments of the invention that requires that they be the same size. It is possible to perform optimizations for combining nodes that correspond to merging a smaller multiplexor into a larger multiplexor or to merging a larger multiplexor into a smaller multiplexor. This may be seen in the following examples in which each of the initial expressions corresponds to a different-sized multiplexor when such an implementation is used. For example, in the set
It is similarly possible to combine nodes in a fashion that corresponds to merging a larger multiplexor into a smaller multiplexor in embodiments that use multiplexors:
Each of these examples illustrates how to combine nodes in different circumstances where the output of one of the expressions is one of the inputs to another of the expressions. In some cases, however, the output of one of the expressions may be one of the controls of another expression, a condition checked for a block 930. In such instances, the control variable is converted into a map-entered variable at block 932 before combining control and defining states. This may be illustrated with the following two examples, the first of which corresponds to an AND sub-function and the second of which corresponds to an OR sub-function.
Thus, consider merging nodes for the following two syntactic expressions:
The same procedure may also be used for the following two syntactic expressions:
It is noted that in certain instances, the method outlined in
Thus, the method outlined in
Additional optimization functions may be realized by using the set and reset facilities that are provided in the formalism and which may be implemented by using those facilities in cells according to embodiments of the invention. The use of set and reset facilities are summarized in FIG. 9D and arise primarily when half the truth table states are either high or low. Thus, a method for optimizing begins with a syntactic expression for a cell at block 940, with
Similar optimizations may be achieved if half the truth table states are high, as checked at block 948. If so, permutations of the control variables may be performed at block 950 to align the high states and the control variable entered into the map as a set input to a F/F at block 952. For example, consider the function
Still other combinations of expansion, inversion, and/or permutation may be used to achieve the conditions for using set or reset for optimization. An example that illustrates several of the optimization manipulations discussed above begins with the syntactic expression
Since all of the control variables have been entered into the map, there is no need for a ULG element in implementing this optimized expression. Instead, it may be implemented in one embodiment using only a resetable D F/F, even though the original expression corresponded to an implementation comprising both a ULG and a D F/F.
Each syntactical expression of the formalism may be viewed as an entry for a ULG netlist that defines a digital circuit. The ULG netlist uses basic cells and follows the CHDL syntax. Such a ULG netlist may be at least partially optimized by successively performing some of the individual manipulations described above. In some embodiments, the resulting optimized ULG netlist may be implemented directly using the cells described above. In other embodiments, however, the manipulation of the ULG netlist may be viewed as intermediate step in optimizing a digital design that has been expressed in another netlist format. In such instances, the other netlist format using another cell library and/or another syntax (e.g., VHDL or Verilog) is initially translated to the ULG netlist format. After performing some optimization steps, the optimized ULG netlist may be translated back into the original format for implementation. In this way, an embodiment is provided that achieves optimization of digital designs within preexisting netlist formats.
There are a variety of ways in which the individual manipulations of the syntactic expressions comprised by a ULG netlist may be performed and the degree to which the corresponding digital design is optimized may depend on how those manipulations are executed. While in some instances it is possible for the manipulations to be performed by hand by a digital designer, it is expected that at least some level of automation may be used. In one embodiment, for example, a computer program may be provided that allows a digital designer to select the types of manipulations to be performed and sections of the ULG netlist on which to perform them, with the execution of the manipulations being performed automatically. In another embodiment, a predetermined algorithm is used in a completely automated way to perform the manipulations or optimizations.
One example of such a predetermined algorithm is illustrated with the flow diagram provided in
At block 1008, data and control elements are discerned in the resulting ULG netlist. The distinction between such data and selection control elements was previously discussed with respect to Table VIII. In one embodiment, such discernment may be performed with a high-level design language. In certain embodiments, there are additional advantages in the subsequent optimization where the data and control are identified from the original behavioral netlist. Once the data and control elements have been identified, the operations identified in blocks 1016-1068 may be performed by using the syntactic manipulations described above. Thus, at block 1016, connection cells to base Boolean values are removed by incorporating the corresponding functions into the syntactic expressions. Similarly, non-inverting buffers are removed at block 1020 and also incorporated directly into the syntactic expressions. At block 1024, inverters are removed by syntactically inverting the relevant data elements in individual syntactic expressions. The removal of redundant nodes at block 1028 may proceed by reducing, combining, and permuting nodes in the syntactic expressions. Methods for such reductions, combinations, and permutations for certain embodiments were described above in connection with
A loop comprising blocks 1036 and 1040 may be executed to identify and merge fanout nodes. A “fanout node” describes a configuration in which a single output is directed to multiple parts of truth tables and, in some instances, optimizations may be realized by merging such fanout nodes. A check is first performed at block 1036 to identify whether the ULG netlist includes any fanout nodes, in which case they are reduced at block 1040 by performing permutations and reductions as described in connection with FIG. 9C. The loop between blocks 1036 and 1040 is included because the reductions performed at block 1040 may produce some new fanout nodes that may be identified and merged through additional permutations and reductions. The method thus loops until no fanout nodes are identified at block 1036.
After the fanout nodes have thus been merged, a check is made at block 1044 to identify syntactic expressions corresponding to synchronous cells in which half the truth-table states are low. If such an expression is identified, the corresponding control variable is moved to be a reset input at block 1048. A method for doing so is described in connection with FIG. 9D and may include performing permutations to align the low truth-table states. A similar check is made at block 1052 to identify syntactic expressing corresponding to synchronous cells in which half the truth-table states are high. If such an expression is identified, the corresponding control variable is move to be a set input at block 1056. A method for doing so is also described in connection with FIG. 9D and may include performing permutations to align the high truth-table states.
At block 1060, the syntactic expressions are grouped by common inputs. Such grouping permits identification of subfunctions at block 1064. The common subfunctions have shared characteristics that may be extracted before reducing other nodes. At block 1068, buffers are made to be inverting buffers.
If the original ULG netlist produced at block 1004 was nonoptimal, performing the above manipulations may produce a different ULG netlist that is amenable to implementation with smaller area, greater speed, and/or lower power requirements. In some embodiments, it is possible that not all of the manipulations will be performed, that some may be performed multiple times, and that they may be performed in a different order than described. Once the method has produced a new ULG netlist, it may be implemented at block 1072 by translating the syntactic expressions in the ULG netlist with the cells described above. In such embodiments, the method functions not only to optimize the digital design but also to provide a multiplexor-based implementation of it. In some alternative embodiments, the resulting ULG netlist may be amenable to translation back into the original netlist syntax for implementation using Boolean logic gates. In these embodiments, the method may be viewed as providing an optimization of a digital design while retaining its underlying or structural characteristics.
In some embodiments, it is desirable for the techniques used for the syntactic manipulations to be embedded in an optimization tool or synthesizer. Accordingly, the methods of the invention for converting a netlist into a ULG netlist and for optimizing the ULG netlist may be performed by a computer, one example of a suitable configuration for which is shown in FIG. 11. This figure broadly illustrates how individual system elements may be implemented in a separated or more integrated manner. The computer 1100 is shown comprised of hardware elements that are electrically coupled via bus 1112, including a processor 1102, an input device 1104, an output device 1106, a storage device 1108, a computer-readable storage media reader 1110a, a communications system 1114, a processing acceleration unit 1116 such as a DSP or special-purpose processor, and a memory 1118. The computer-readable storage media reader 1110a is further connected to a computer-readable storage medium 1110b, the combination comprehensively representing remote, local, fixed, and/or removable storage devices plus storage media for temporarily and/or more permanently containing computer-readable information. A communications system 1114 may comprise a wired, wireless, modem, and/or other type of interfacing connection.
The computer 1100 also comprises software elements, shown as being currently located within working memory 1120, including an operating system 1124 and other code 1122, such as a program designed to implement optimization methods of the invention. It will be apparent to those skilled in the art that substantial variations may be used in accordance with specific requirements. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets), or both. Further, connection to other computing devices such as network input/output devices may be employed.
The method described with respect to
V. Digital Design with Syntactic Manipulation
Referring next to
The kernel cells can be assembled in a number of ways to potentially create hundreds of basic cells 100 in the ULG ASIC cell library. The basic cell configurations are specified in step 1212. This could be done by editing a script fed to the tool that combines the kernel cells into basic cells. In step 1216, the kernel cells are automatically assembled into basic cells 100 in this embodiment. Some embodiments could assemble the kernel cells manually or in-art manually. Once the basic cells are generated, they are verified in step 1220. This verification validates the digital and analog performance of the basic cells. Any problems uncovered in verification can be fixed in the kernel and/or basic cells. To complete the ULG ASIC cell library, any specialized cells are laid-out in step 1224.
In one embodiment, selection logic is used in digital circuits to replace some or all combinatorial logic. A significant proportion of the basic cells use a ULG 104. In contrast, conventional semiconductor circuits do not use ASIC cell libraries that include ULG circuits. In one embodiment, the ULG circuits come in various sizes, that have between two and eight inputs and between one and three select lines.
The extensive use of ULGs or selection circuits in this invention could be characterized in a number of ways in the various embodiments, those characterizations include:
Those digital designs could be embodied in the form of, for example, a structural netlist, a behavioral netlist, a HDL netlist, a full-custom ASIC, a semi-custom ASIC, an IP core circuit, an integrated circuit, a hybrid chip, one or more masks, a FPGA, or a circuit card having a number of integrated circuits. The fall-custom and semi-custom ASICs are defined as custom integrated circuits herein and could use at least some standard cells. Structural netlists enumerate low-level cells to use and how they are interconnected. Behavioral netlists have high-level descriptions of the functionality of a circuit similar to high-level programming languages. Case statements, IF-THEN-ELSE statements can be easily translated from behavioral constructs to ULG circuits. Examples of HDL netlists include RTL, VHDL, Verilog and CHDL. The HDL netlists may be high-level behavioral netlists or low-level structural netlists. ASIC designs can be full-custom or semi-custom designs. The full-custom designs have a full set of masks done for each design, whereas the semi-custom designs have some reusable masks that define an array of gates that are custom interconnected with some unique masks. Where a semi-custom ASIC is done, the gates would include ULG circuits. IP core circuits are netlists or maskwork that define a reusable function such as a microprocessor, bus interface, etc. that is typically provided by a third-party vendor. An integrated circuit is simply a semiconductor chip. Where more than one chip is in a package, that package is referred to as a hybrid integrated circuit or multi-chip-module. Circuit cards can couple together a number of integrated circuits soldered thereon, where the integrated circuits use ULGs.
There are several approaches to integrating syntactic manipulation into digital design. In some embodiment, the designer anticipates using syntactic manipulation at the start of the design process. Using HDL constructs, such as case statements, allows easy mapping to the HDL ASIC cell library. Digital designers often mix-and-match tools from several vendors to develop a design flow suited to a particular digital designer. With that in mind, the various below embodiments integrate the concepts of this invention in various ways and to varying degrees. As those skilled in the art can appreciate, the processing of the design can be somewhat automated by using scripts to run the various tools on various design files.
With reference to
The HDL entry tool 1304 is a software edit tool that allows the digital designer to enter HDL as a behavioral netlist. The HDL could be VHDL, Verilog or Concise Hardware Description Language (CHDL). CHDL is a HDL that is tuned for the design constructs beneficial for designs with ULG cells. The HDL entry tool 1304 could receive feedback from the other tools to identify portions of the code that have problems found by those other tools. Other design capture tools could be used instead of a HDL entry tool, for example, state machine tools, RTL tools, schematic capture tools, etc. Dynamic timing analysis could be performed on the behavioral netlist to confirm proper functionality.
A behavioral netlist is converted by the synthesis tool 1308 into a structural netlist using the conventional cell library 1324 in this embodiment. The behavioral constructs are converted to Boolean constructs and optimized. From the conventional cell library 1324, cells are used for the optimized Boolean constructs. In some cases, typical timing values are used by the synthesis tool 1308 to identify potential problems in the conversion process using static timing analysis. Dynamic timing analysis could also be performed on the structural netlist to confirm functionality wasn't compromised during the conversion.
The optimization tool 1312 uses syntactic manipulation to improve the design in at least one of the following areas: power consumption, leakage current, fanout, chip area, number of masks, number of process steps, yield, capacitance, inductance, resistance, glitches, etc. In this embodiment, variables can be fed to the optimization tool 1312 in order to set the priorities among these design factors. These variables could be set on a scale of one-to-ten to indicate relative value along a sliding scale.
Some embodiments could optimize for various factors by use of alternative cells in the ULG library. Certain cells could be optimized for various design factors such as power consumption, leakage current, fanout, chip area, number of masks, number of process steps, yield, capacitance, inductance, resistance, glitches, etc. During the optimization, the alternative cells could be used based upon how the digital designer set the priority variables.
In this embodiment, the optimization tool optimizes the structural netlist from the synthesis tool to produce an optimized structural netlist that uses the same conventional cell library 1324. The synthesized structural netlist is read and converted into an intermediate netlist that uses an embodiment of the ULG ASIC cell library. This embodiment of the ULG cell library can be somewhat simplified as the variation used in an ASIC could be unnecessary when only optimizing. Syntactic manipulation is performed upon the intermediate netlist according to the optimization priorities, if specified. Some embodiments could perform a default optimization that may or may not be modifiable by the digital designer. Once the intermediate netlist is optimized, it is converted to an optimized structural netlist that uses the conventional cell library 1324.
Static & dynamic timing analysis is run on the optimized structural netlist. The static timing analysis takes into account timing relationships for the optimized structural netlist and identifies portions of the circuit that may fail to meet the timing requires of the circuit. Parameters can be entered into the synthesis and/or optimization tools 1308, 1312 to prioritize certain portions of the circuit to make meeting static timing requirements easier.
Dynamic timing analysis can come in a few forms. Input waveforms can be designed to stimulate the design, whereafter the digital designer checks for correct output waveforms. To automate this process, test vectors can be developed and applied to the inputs of the circuit whereafter output test vectors are tested against the actual output. Discrepancies are noted as errors and fixed by tweaking the behavioral code and synthesis/optimization tools 1308, 1312 such that errors are not introduced into the process.
Once the digital designer is happy with the structural netlist, the place & route tool 1320 performs a physical layout of the circuit. A location for each cell in the optimized structural netlist is chosen and traces are laid-out to interconnect those cells according to the netlist. These types of tools 1320 are automated or semi-automated. More accurate timing values are available after place & route because the trace lengths interconnecting the cells is known. Further static/dynamic analysis 1316 can be performed to assure that new errors weren't introduced during the place and route process. Once a suitable layout is achieved, masks can be produced and fabrication can start. Dynamic testing on the resulting chip may be performed to test functionality after fabrication.
Referring next to
With reference to
Referring next to
In some embodiments, the synthesis & optimization tool 1604 may not have a ULG cell library 1404 for the target ASIC process. In that case, the synthesis & optimization tool 1604 would convert the intermediate netlist to an optimized netlist using the conventional cell library 1324.
With reference to
Any identified portion of the circuit can be traced through the various steps of the design flow 1700 using the interactive direct verification tool. For example, a case statement in the CHDL behavioral code can be followed through to the various structural netlists to see how that case statement was implemented. Conversely, a portion of a structural netlist can be followed back to preceding structural netlists or even the behavioral netlist.
Referring next to
With reference to
Synthesis and optimization is performed in step 1908 to convert the behavioral netlist to an optimized structural netlist. Conversion between cell libraries can also be performed in this step. Some embodiments may perform the synthesis and optimization as separate steps. Static and dynamic timing analysis are performed in steps 1912 and 1916. If problems are found, rework may be done in step 1904 or step 1908. Rework in step 1908 could include changing parameters fed to the synthesis & optimization tool 1604 or correcting problems with libraries.
Once generally satisfied with the optimized structural netlist, processing continues to step 1920 for place & route of the design. In this step, the trace lengths and drive requirements are more accurately analyzed to improve the verification that can be performed on the digital design. Once again static and dynamic timing analysis is performed in step 1912 and 1916 to verify the laid-out design still behaves properly. Where there are problems as detected in step 1906, rework could be performed in steps 1904, 1908 or 1920. The interactive direct verification tool 1804 can assist the digital designer find where flaws were likely introduced into the netlist. Where there are no problems after layout, the design is fabricated in step 1924.
Having described several embodiments, it will be recognized by those of skill in the art that various modifications, alternative constructions, and equivalents may be used without departing from the spirit of the invention. Accordingly, the above description should not be taken as limiting the scope of the invention, which is defined in the following claims.
This application is a nonprovisional of and claims priority to U.S. Prov. Pat. Appl. No. 60/298,832, entitled “MULTIPLEXOR-BASED DIGITAL DESIGN,” filed Jun. 15, 2001 by Sterling R. Whitaker et al., the entire disclosure of which is herein incorporated by reference for all purposes. This application is also related to the following commonly assigned, concurrently filed U.S. patent applications, each of which is also incorporated herein by reference in its entirety for all purposes: U.S. patent appl. Ser. No. 10/172,494, entitled “DIGITAL DESIGN USING SELECTION OPERATIONS,” by Sterling R. Whitaker, Lowell H. Miles, and Eric G. Cameron U.S. Pat. No. 6,792,589 issued Sep. 14, 2004; U.S. patent appl. Ser. No. 10/172,742, entitled “PASS-TRANSISTOR VERY LARGE SCALE INTEGRATION,” by Gary K. Maki and Prakash R. Bhatia; U.S. patent appl. Ser. No. 10/172,746, entitled “OPTIMIZATION OF DIGITAL DESIGNS,” by Sterling R. Whitaker and Lowell H. Miles; U S. patent appl. Ser. No. 10/172,743, entitled “DIGITAL LOGIC OPTIMIZATION USING SELECTION OPERATIONS,” by Sterling R. Whitaker, Lowell H. Miles, Eric G. Cameron, and Jody W. Gambles U.S. Pat. No. 6,779,158 issued Aug. 17, 2004; and U.S. patent appl. Ser. No. 10/172,744, entitled “DIGITAL CIRCUlTS USING UNIVERSAL LOGIC GATES,” by Sterling R. Whitaker, Lowell H. Miles, Eric G. Cameron, Gregory W. Donohoe, and Jody W. Gambles U.S. Pat. No. 6,779,156 issued Aug. 17, 2004. These applications may be referred to herein as “the Universal-Logic-Gate applications.”
The U.S. Government has a paid-up license in this invention and the right in limited circumstances to require the patent owner to license others on reasonable terms as provided for by the terms of Grant No. NAGS-9152 awarded by NASA.
Number | Name | Date | Kind |
---|---|---|---|
4792909 | Serlet | Dec 1988 | A |
5031111 | Chao et al. | Jul 1991 | A |
5040139 | Tran | Aug 1991 | A |
5051917 | Gould et al. | Sep 1991 | A |
5128871 | Schmitz | Jul 1992 | A |
5162666 | Tran | Nov 1992 | A |
5200907 | Tran | Apr 1993 | A |
5225991 | Dougherty | Jul 1993 | A |
5299204 | Daniel | Mar 1994 | A |
5349659 | Do et al. | Sep 1994 | A |
5406497 | Altheimer et al. | Apr 1995 | A |
5432707 | Leung | Jul 1995 | A |
5526276 | Cox et al. | Jun 1996 | A |
5548231 | Tran | Aug 1996 | A |
5572437 | Rostoker et al. | Nov 1996 | A |
5596742 | Agarwal et al. | Jan 1997 | A |
5649165 | Jain et al. | Jul 1997 | A |
5712806 | Hennenhoefer et al. | Jan 1998 | A |
5724251 | Heavlin | Mar 1998 | A |
5734582 | Bertolet et al. | Mar 1998 | A |
5754826 | Gamal et al. | May 1998 | A |
5780883 | Tran et al. | Jul 1998 | A |
5796128 | Tran et al. | Aug 1998 | A |
5801551 | Lin | Sep 1998 | A |
5805462 | Poirot et al. | Sep 1998 | A |
5859547 | Tran et al. | Jan 1999 | A |
5867396 | Parlour | Feb 1999 | A |
5894227 | Acuff | Apr 1999 | A |
5953519 | Fura | Sep 1999 | A |
5987086 | Raman et al. | Nov 1999 | A |
6051031 | Shubat et al. | Apr 2000 | A |
6173435 | Dupenloup | Jan 2001 | B1 |
6184718 | Tran et al. | Feb 2001 | B1 |
6185719 | Sako | Feb 2001 | B1 |
6205572 | Dupenloup | Mar 2001 | B1 |
6243849 | Singh et al. | Jun 2001 | B1 |
6263483 | Dupenloup | Jul 2001 | B1 |
6275973 | Wein | Aug 2001 | B1 |
6282695 | Reddy et al. | Aug 2001 | B1 |
6286128 | Pileggi et al. | Sep 2001 | B1 |
6288593 | Tran et al. | Sep 2001 | B1 |
6289491 | Dupenloup | Sep 2001 | B1 |
6289498 | Dupenloup | Sep 2001 | B1 |
6292931 | Dupenloup | Sep 2001 | B1 |
6295636 | Dupenloup | Sep 2001 | B1 |
6313666 | Yamashita et al. | Nov 2001 | B1 |
6356112 | Tran et al. | Mar 2002 | B1 |
6359468 | Park et al. | Mar 2002 | B1 |
6467074 | Katsioulas et al. | Oct 2002 | B1 |
6526543 | Rosser | Feb 2003 | B1 |
6532581 | Toyonaga et al. | Mar 2003 | B1 |
6536028 | Katsioulas et al. | Mar 2003 | B1 |
6557145 | Boyle et al. | Apr 2003 | B2 |
6564361 | Zolotykh et al. | May 2003 | B1 |
6564364 | Dahl et al. | May 2003 | B1 |
6588006 | Watkins | Jul 2003 | B1 |
6598209 | Sokolov | Jul 2003 | B1 |
6735742 | Hatsch et al. | May 2004 | B2 |
6769109 | Osann et al. | Jul 2004 | B2 |
6816997 | Teh et al. | Nov 2004 | B2 |
20020069396 | Bhattacharya et al. | Jun 2002 | A1 |
20020087939 | Greidinger et al. | Jul 2002 | A1 |
20020178432 | Kim et al. | Nov 2002 | A1 |
20020194575 | Allen et al. | Dec 2002 | A1 |
20030085738 | Maki et al. | May 2003 | A1 |
20030145288 | Wang et al. | Jul 2003 | A1 |
20030200510 | Whitaker et al. | Oct 2003 | A1 |
20030204822 | Whitaker et al. | Oct 2003 | A1 |
20040025136 | Carelli, Jr. | Feb 2004 | A1 |
Number | Date | Country | |
---|---|---|---|
20030149953 A1 | Aug 2003 | US |
Number | Date | Country | |
---|---|---|---|
60298832 | Jun 2001 | US |