US8082529B2 - Method and system for mapping a boolean logic network to a limited set of application-domain specific logic cells - Google Patents

Method and system for mapping a boolean logic network to a limited set of application-domain specific logic cells Download PDF

Info

Publication number
US8082529B2
US8082529B2 US12/835,675 US83567510A US8082529B2 US 8082529 B2 US8082529 B2 US 8082529B2 US 83567510 A US83567510 A US 83567510A US 8082529 B2 US8082529 B2 US 8082529B2
Authority
US
United States
Prior art keywords
functions
network
logic
boolean
mapping
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active - Reinstated
Application number
US12/835,675
Other versions
US20100281450A1 (en
Inventor
Veerbhan Kheterpal
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
PDF Solutions Inc
PDF Acquisition Corp
Original Assignee
PDF Solutions Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/619,587 external-priority patent/US7784013B2/en
Application filed by PDF Solutions Inc filed Critical PDF Solutions Inc
Priority to US12/835,675 priority Critical patent/US8082529B2/en
Assigned to PDF ACQUISITION CORP. reassignment PDF ACQUISITION CORP. MERGER (SEE DOCUMENT FOR DETAILS). Assignors: FABRIX, INC.
Assigned to FABRIX, INC. reassignment FABRIX, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: KHETERPAL, VEERBHAN, MOTIANI, DIPTI, PILEGGI, LAWRENCE T.
Publication of US20100281450A1 publication Critical patent/US20100281450A1/en
Application granted granted Critical
Publication of US8082529B2 publication Critical patent/US8082529B2/en
Active - Reinstated legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist

Definitions

  • the present invention is related to integrated circuit design, and, more particularly, a method and system for mapping a Boolean logic network to a limited set of application-domain specific logic cells.
  • Typical integrated circuit design environments make use of libraries of pre-designed standard cells (a cell library) which usually consist of from 500 cells to more than 1,000 cells. These libraries are composed of a number of simple, generic and standard logic functions that have been implemented in a form suitable for manufacturing. Each standard cell is a representation, typically the mask level representation, of the circuit that performs the logic function for that cell.
  • the logic functions performed by the cells in a typical cell library are intentionally general purpose and basic and the majority of them represent common, low-level logic functions such as AND, OR, XOR, AND-OR-INVERT (AOI), Multiplexer, Adder, etc. These are functions are representative of patterns that are recognized by logic designers, and those that are used as the building blocks for manual logic design.
  • Full custom logic design at the transistor level can sometimes include complex AOI functions that are identifiable from their logic description, such as: ( ⁇ + b )(c+d) But such functions are typically not included in standard cell libraries, and not representative of specific basic building blocks that are known to logic designers. Instead, they are more likely to be custom designed at the transistor level as an AOI gate.
  • IC design In a typical integrated circuit (IC) design flow an IC design is translated to logic gates. In most cases this translation is performed by an automatic logic synthesis tool to derive a netlist based on a set of the aforementioned generic logic functions. This translation is often necessary as there are many different methods in common use for design specification. Those methods may include specification using a high-level programming language such as Verilog, VHDL or C or by manually entering schematics using a computer-aided design system.
  • a high-level programming language such as Verilog, VHDL or C
  • a gate level netlist As a high level language cannot be directly implemented into the physical layout of an integrated circuit, it is first converted to a gate level implementation. The result of the conversion is a representation of the design called a gate level netlist. This representation is usually in the form of simple logic functions such as NAND, NOR, etc. along with a representation of the connections between functions (the netlist).
  • Automatic logic synthesis tools are then generally used to bind a design to an implementation, based on a set of manufacturing technology specific logic cells from a cell library.
  • the synthesis tool selects cells from the library based on a set of implementation goals that may include any combination of metrics related to area, performance or power and possibly manufacturing yield, to obtain a cell-based netlist.
  • Logic synthesis is generally the process of transformation of an RTL or a Boolean network such that its functionality is not altered into a form that is aligned for technology mapping.
  • a Boolean network can be represented by a directed acyclic graph where each node is a Boolean function of one of three types: a primary input, internal, output.
  • a Boolean network may not contain a directed cycle.
  • Each internal node in a Boolean network represents a Boolean function of its fanins.
  • a Boolean network may contain internal nodes with arbitrarily large number of fanins.
  • the Boolean network is first decomposed into a subject graph (a graph which represents the design independent of a specific technology or library using simple logic primitives (most commonly AND and INV) to form the technology-independent netlist. Subsequently, the subject graph is then typically mapped to a cell library using structural/Boolean matching followed by binate covering against pre-stored patterns representing the cells in the library. As the cells in the library get more complex, the matching complexity increases exponentially. Moreover, this method suffers from a structure bias; i.e, the mapping quality is dependent on the subject graph structure which is often derived with little knowledge of the characteristics of the target cell library.
  • the present invention relates to mapping a Boolean logic network to a limited set of application-domain specific logic cells.
  • a method and system for mapping a system-level description of an integrated system directly to a technology-specific set of logic cells that are comprised primarily of large complex cells (bricks).
  • the invention is based on applying aggressive Boolean operations that would be of impractical runtime complexity for a large library, but are applicable for the targeted brick libraries which typically contain a small number of complex cells, along with a much smaller number of simple cells.
  • This invention is modular such that it can be applied in the context of incremental netlist optimization as well as optimization during physical synthesis.
  • a method of mapping a behavioral, RTL or unmapped Boolean network to a small library of logic components to represent the network as different ones of the logic components that are connected together includes obtaining the behavioral, RTL or unmapped Boolean network; identifying the small library of logic components, the small library of logic components including a set of complex functions and a set of simple functions, wherein the set of complex functions includes a plurality of non-standard complex Boolean logic functions and wherein substantially all of the plurality of non-standard complex Boolean logic functions each have at least three inputs, and wherein the set of simple logic functions, together with the set of complex functions, can together completely specify the network; and mapping the network to the small library of logic components using aggressive Boolean operations to obtain a mapped network, wherein the mapping includes directly mapping large functions from the network to different ones of the non-standard complex Boolean logic functions without the large functions from the network being decomposed, wherein most of the network is mapped to certain ones of
  • FIG. 1 illustrates a typical commercial flow that is used in mapping a Boolean network to a set of technology-specific standard cell gates.
  • FIG. 2 illustrates an overview of the present invention
  • FIG. 3 illustrates a flowchart of the direct brick mapping according to the present invention.
  • FIG. 4 illustrates a flow diagram for incremental netlist optimization according to the present invention.
  • FIG. 5 illustrates decomposition of a node according to the present invention.
  • a method and system are described to map a behavioral level (a functional description level for which the mapping to the final state machine is not specified. There is no description of how the variables map to circuit memory elements), RTL or system-level logic netlist to a small library of logic components (no fewer than 5 and no more than 50 unique logic functions).
  • One intended application of this invention is to leverage the unique advantages offered by small libraries of application-domain specific logic bricks, such as described in U.S. application Ser. No. 11/619,587 filed Jan. 3, 2007 and entitled “Method For The Definition Of A Library Of Application-Domain-Specific Logic Cells,” referred to previously.
  • IC design with increased regularity for manufacturabilty can incur a penalty in terms of area and performance. It is important, therefore, to exploit this regularity with circuits and methodologies that can overcome some or all of these penalties. Exploiting the large logic functions that are grouped for macro-regularity to maximize the logic utilization on the chip can provide a significant improvement in both area and performance. Improvements in IC area and performance are of great commercial value and all IC application domains. The present invention addresses this.
  • this invention describes a logic synthesis method to map a behavioral, RTL or system-level logic netlist to a library that is primarily composed of bricks or large logic cells (typically having 6-12 inputs, with substantially all of the large logic cells having at least 3 inputs).
  • Our method takes advantage of the property that the brick library has a small number of cells compared to typical commercial standard-cell libraries that can contain hundreds or thousands of cells, as described in the previously referenced application.
  • the present invention starts by directly mapping a Boolean network onto a target library without any need for decomposition into a subject graph.
  • Decomposition is the process of simplifying nodes by identifying and adding new Boolean nodes (with smaller number of fanins) to the network.
  • most decomposition algorithms work by choosing a factor and re-expressing the network in terms of that new factor and iterating until no new factors are found. This is achieved by direct decomposition of Boolean nodes into cells/bricks.
  • Boolean network can contain internal nodes with arbitrarily large number of fanins
  • the general method of decomposition attempts to simplify such nodes by identifying and adding new Boolean nodes (with smaller number of fanins) to the network.
  • the prior art for decomposition algorithms are based on choosing a factor and re-expressing the network in terms of that new factor and iterating until no new factors are found.
  • This general set of decomposition techniques for logic optimization and technology mapping (the process of transforming a circuit netlist into a network of interconnected components/cells of a given library.
  • technology mapping the process of transforming a circuit netlist into a network of interconnected components/cells of a given library.
  • a design can be targeted to a design style such as standard cells, FPGAs or gate arrays
  • the complexity of the cells in a brick library (also referred to as library that includes a set of complex functions includes a plurality of non-standard complex Boolean logic functions that are each derived from the identified logic function patterns of the recurring Boolean logic chains in the utility application incorporated by reference above) is considerably higher than those of typical standard cells, and the number of cells in a brick library (typically 5-50) is less than in a typical standard cell library (typically 700-2000).
  • efficiency with a small cell library is sometimes obtained by generating the library to be application specific, or application domain specific. Based on the outlined differences, existing methods used for binding a system level (e.g. RTL) description to a specific technology library are inefficient for brick libraries.
  • a target technology library is one have a collection of cells that perform primitive Boolean logic functions in a specific technology or a design style.
  • logic decomposition and multi-level optimization are separate steps from technology mapping with very little interaction. Since a brick library has limited functionality, it provides for an opportunity to tightly couple these steps while having a tractable complexity of the computation.
  • mapping graph does not scale with the size-complexity of Boolean functions, thereby making it impractical for application to libraries of bricks or large cells.
  • FIG. 2 illustrates an overview of the present invention, which takes as inputs the Boolean network to be technology mapped, the limited library of bricks (potentially derived for a specific application-domain) and a set of design constraints that describe the area as well as delay goals.
  • the input Boolean network might be one that is obtained from the register transfer level (RTL) description of a circuit after performing some technology independent optimization.
  • RTL register transfer level
  • This Boolean network is then technology mapped via decomposition and recomposition to bricks, as described hereinafter, following the design constraints and specifications.
  • One aspect of the uniqueness of the present invention is that each cell and its precise characteristics are considered while performing logic synthesis. This is not possible during decomposition to standard cells due to the small cell sizes and the overwhelmingly complex number of possible decompositions due to the number of unique logic cells.
  • bricks are by definition dominated by large complex cells (cells with at least 3 inputs and 3 levels of internal logic depth as defined in the utility patent application incorporated by reference herein), the present invention does not use tree or DAG (directed acyclic graph) matching. Instead, during logic decomposition, decompositions are chosen for which the logic functions match a cell or brick in the library, as shown in the flow diagram of FIG. 3 .
  • DAG directed acyclic graph
  • the present invention continues iteratively by decomposing any un-decomposed logic, and backtracking as necessary until all logic is decomposed into large function bricks and a few selected logic brick primitives (where percentage of cells that are simple primitives is typically no more than 15% of the total number of cells/bricks).
  • the invention further considers that decomposition is coupled with re-composition moves.
  • Logic recomposition is the opposite of decomposition, during which nodes in the multilevel network are collapsed into their respective fanout nodes.
  • Logic recomposition/collapse is the process of eliminating factors from a network usually resulting in an increase in complexity of nodes in the network. This creates an opportunity for which more efficient decompositions can be discovered.
  • recomposition (termed as eliminate) is driven by a maximum increase in the number of (user specified) literals in the network.
  • the number of literals has been shown to roughly represent the complexity of a Boolean network.
  • U.S. Pat. No. 6,958,545 the recomposition moves are chosen in order to minimize congestion during the physical synthesis (the process of implementing the mask for a circuit netlist including buffer insertion and minor logic changes to accommodate for design constraints).
  • An aspect of the present invention with respect to recomposition is that the following two types of sub-networks are considered for recomposition:
  • FIG. 3 highlights the mapping flow according to the present invention, including the decomposition and recomposition.
  • cost function for the logic decomposition and optimization are measured in part by:
  • the present invention has the following properties that contribute to its novelty:
  • a behavioral, RTL or an unmapped Boolean network is technology mapped to the small library of logic brick components (containing the set of complex functions and the set of simple functions, with the set of complex functions being the non-standard complex Boolean logic functions) using aggressive Boolean operations.
  • Unmapped Boolean functions in the Boolean network are tested against each Brick in the Brick library for Boolean factoring.
  • One way to test for factors is via Boolean division.
  • the Boolean network is technology mapped by directly mapping Boolean factors of the nodes in the Boolean network to complex Bricks that correspond to complex, non-traditional logic functions.
  • Such aggressive Boolean operations would be of impractical runtime complexity for a large library.
  • existing methods e.g.
  • SIS A System for Sequential Circuit Synthesis. Robert K. Brayton Alberto Sangiovanni-Vincentelli et. al, EECS, University of California, Berkeley) employ algebraic factoring or weak division during the technology independent stage prior to technology mapping to reduce the complexity of the Boolean network before mapping the network to a standard cell library.
  • each unmapped node in the Boolean network is mapped to bricks until all the nodes in the network get mapped.
  • F Boolean function
  • Is support-reducing bound-sets
  • the cost function can be designed to achieve a certain area-timing and/or power tradeoff.
  • the brick, Bb, that minimizes the cost function is chosen to decompose F (See FIG. 5 ) into a network that has a Boolean function f being driven by the brick Bb.
  • An example of a cost function that can be used to optimize the area of the mapped circuit: C M ( f )+ ⁇ area( Bb ) where, M(f) is the number of literals in the minimized SOP (sum-of-products) form of the composition function (f).
  • the composition function is a Boolean function which represents the decomposed node in terms of the decomposition functions (factors).
  • the minimization can be carried out by a literal based minimization tool such as Espresso (See SIS: A System for Sequential Circuit Synthesis. Robert K. Brayton Alberto Sangiovanni-Vincentelli et. al, EECS, University of California, Berkeley).
  • the area(Bb) is the area foot-print of the brick B.
  • the normalization factor ( ⁇ ) depends on the actual area foot-prints of cells in the target brick library.
  • C M ( f )+_ ⁇ area( B )+ ⁇ _ ⁇ Max(Criticality( X 1)) here, X 1 is the set of pins in the bound set.
  • the criticality of a pin is defined as the minimum slack that each input has with respect to some output.
  • the weighting factors ⁇ and ⁇ are adjusted for trading-off timing and area.
  • the cost function biases the algorithm towards the selection of bricks with bound set inputs that are not critical.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

A method and system is described for mapping a system-level description of an integrated system directly to a technology-specific set of logic cells that are comprised primarily of large complex cells (bricks). The invention is based on applying aggressive Boolean operations that would be of impractical runtime complexity for a large library, but are applicable for the targeted brick libraries which typically contain a small number of complex cells, along with a much smaller number of simple cells. This invention is modular such that it can be applied in the context of incremental netlist optimization as well as optimization during physical synthesis.

Description

RELATED APPLICATIONS
This application is a continuation of U.S. patent application Ser. No. 11/627,930 filed Jan. 26, 2007 now U.S. Pat. No. 7,757,187 entitled “A Method And System For Mapping A Boolean Logic Network To A Limited Set Of Application-Domain Specific Logic Cells”, which is a continuation-in-part of U.S. patent application Ser. No. 11/619,587 filed Jan. 3, 2007 now U.S. Pat. No. 7,784,013 entitled “Method For The Definition Of A Library Of Application-Domain-Specific Logic Cells”, and claims priority to U.S. Provisional Application No. 60/883,332 filed Jan. 3, 2007 entitled “A Method and System For Grouping Logic In An Integrated Circuit Design To Minimize Number Of Transistors And Number Of Unique Geometry Patterns,” all of which are expressly incorporated by reference herein.
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention is related to integrated circuit design, and, more particularly, a method and system for mapping a Boolean logic network to a limited set of application-domain specific logic cells.
2. Field of the Related Art
Typical integrated circuit design environments make use of libraries of pre-designed standard cells (a cell library) which usually consist of from 500 cells to more than 1,000 cells. These libraries are composed of a number of simple, generic and standard logic functions that have been implemented in a form suitable for manufacturing. Each standard cell is a representation, typically the mask level representation, of the circuit that performs the logic function for that cell.
The logic functions performed by the cells in a typical cell library are intentionally general purpose and basic and the majority of them represent common, low-level logic functions such as AND, OR, XOR, AND-OR-INVERT (AOI), Multiplexer, Adder, etc. These are functions are representative of patterns that are recognized by logic designers, and those that are used as the building blocks for manual logic design. Full custom logic design at the transistor level can sometimes include complex AOI functions that are identifiable from their logic description, such as:
(ā+ b)(c+d)
But such functions are typically not included in standard cell libraries, and not representative of specific basic building blocks that are known to logic designers. Instead, they are more likely to be custom designed at the transistor level as an AOI gate.
In a typical integrated circuit (IC) design flow an IC design is translated to logic gates. In most cases this translation is performed by an automatic logic synthesis tool to derive a netlist based on a set of the aforementioned generic logic functions. This translation is often necessary as there are many different methods in common use for design specification. Those methods may include specification using a high-level programming language such as Verilog, VHDL or C or by manually entering schematics using a computer-aided design system.
As a high level language cannot be directly implemented into the physical layout of an integrated circuit, it is first converted to a gate level implementation. The result of the conversion is a representation of the design called a gate level netlist. This representation is usually in the form of simple logic functions such as NAND, NOR, etc. along with a representation of the connections between functions (the netlist).
Automatic logic synthesis tools are then generally used to bind a design to an implementation, based on a set of manufacturing technology specific logic cells from a cell library. The synthesis tool selects cells from the library based on a set of implementation goals that may include any combination of metrics related to area, performance or power and possibly manufacturing yield, to obtain a cell-based netlist. Logic synthesis, as is known, is generally the process of transformation of an RTL or a Boolean network such that its functionality is not altered into a form that is aligned for technology mapping.
Within the context of the conventional design flow as described above, techniques for optimization using regularity extraction have been proposed for designs dominated by datapaths, which are formed by a small number of repeating logic elements (or bit slices) that are interconnected in a very organized pattern, and other regular circuit structures including RAMs, PLAs, array multipliers etc. For such designs, identifying repeating regularity in circuits simplifies the effort required via synthesis, optimization and layout. However, such regularity extraction techniques rely on the assumption that the designs inherently have within them a high degree of regularity. For example, most of these techniques use information such as bus names and datapath features such as high-fanout control nets to identify repeating structures, such as bit slices. These techniques do not apply, therefore, to more general design flows and logic descriptions that are without such organization and repetition. Also, these techniques to identify repeating regularity do not modify the underlying structural or functional topology of the circuit, which further makes them ineffective for generalized logic and random logic applications.
In light of the above background, the typical commercial flow that is used in mapping a Boolean network to a set of technology-specific standard cell gates, is shown in FIG. 1. A Boolean network can be represented by a directed acyclic graph where each node is a Boolean function of one of three types: a primary input, internal, output. A Boolean network may not contain a directed cycle. Each internal node in a Boolean network represents a Boolean function of its fanins. A Boolean network may contain internal nodes with arbitrarily large number of fanins. The Boolean network is first decomposed into a subject graph (a graph which represents the design independent of a specific technology or library using simple logic primitives (most commonly AND and INV) to form the technology-independent netlist. Subsequently, the subject graph is then typically mapped to a cell library using structural/Boolean matching followed by binate covering against pre-stored patterns representing the cells in the library. As the cells in the library get more complex, the matching complexity increases exponentially. Moreover, this method suffers from a structure bias; i.e, the mapping quality is dependent on the subject graph structure which is often derived with little knowledge of the characteristics of the target cell library.
SUMMARY OF THE INVENTION
The present invention relates to mapping a Boolean logic network to a limited set of application-domain specific logic cells.
In one aspect, a method and system is described for mapping a system-level description of an integrated system directly to a technology-specific set of logic cells that are comprised primarily of large complex cells (bricks). The invention is based on applying aggressive Boolean operations that would be of impractical runtime complexity for a large library, but are applicable for the targeted brick libraries which typically contain a small number of complex cells, along with a much smaller number of simple cells. This invention is modular such that it can be applied in the context of incremental netlist optimization as well as optimization during physical synthesis.
In a particular aspect, there is described a method of mapping a behavioral, RTL or unmapped Boolean network to a small library of logic components to represent the network as different ones of the logic components that are connected together. The method includes obtaining the behavioral, RTL or unmapped Boolean network; identifying the small library of logic components, the small library of logic components including a set of complex functions and a set of simple functions, wherein the set of complex functions includes a plurality of non-standard complex Boolean logic functions and wherein substantially all of the plurality of non-standard complex Boolean logic functions each have at least three inputs, and wherein the set of simple logic functions, together with the set of complex functions, can together completely specify the network; and mapping the network to the small library of logic components using aggressive Boolean operations to obtain a mapped network, wherein the mapping includes directly mapping large functions from the network to different ones of the non-standard complex Boolean logic functions without the large functions from the network being decomposed, wherein most of the network is mapped to certain ones of the plurality of non-standard complex Boolean logic functions.
SUMMARY OF THE DRAWINGS
These and other aspects and features of the present invention will become apparent to those of ordinary skill in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying figures, wherein:
FIG. 1 illustrates a typical commercial flow that is used in mapping a Boolean network to a set of technology-specific standard cell gates.
FIG. 2 illustrates an overview of the present invention;
FIG. 3 illustrates a flowchart of the direct brick mapping according to the present invention.
FIG. 4 illustrates a flow diagram for incremental netlist optimization according to the present invention.
FIG. 5 illustrates decomposition of a node according to the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
A method and system are described to map a behavioral level (a functional description level for which the mapping to the final state machine is not specified. There is no description of how the variables map to circuit memory elements), RTL or system-level logic netlist to a small library of logic components (no fewer than 5 and no more than 50 unique logic functions). One intended application of this invention is to leverage the unique advantages offered by small libraries of application-domain specific logic bricks, such as described in U.S. application Ser. No. 11/619,587 filed Jan. 3, 2007 and entitled “Method For The Definition Of A Library Of Application-Domain-Specific Logic Cells,” referred to previously.
IC design with increased regularity for manufacturabilty can incur a penalty in terms of area and performance. It is important, therefore, to exploit this regularity with circuits and methodologies that can overcome some or all of these penalties. Exploiting the large logic functions that are grouped for macro-regularity to maximize the logic utilization on the chip can provide a significant improvement in both area and performance. Improvements in IC area and performance are of great commercial value and all IC application domains. The present invention addresses this.
Specifically, this invention describes a logic synthesis method to map a behavioral, RTL or system-level logic netlist to a library that is primarily composed of bricks or large logic cells (typically having 6-12 inputs, with substantially all of the large logic cells having at least 3 inputs). Our method takes advantage of the property that the brick library has a small number of cells compared to typical commercial standard-cell libraries that can contain hundreds or thousands of cells, as described in the previously referenced application.
In contrast to the conventional commercial flow that is used in mapping a Boolean network to a set of technology-specific standard cell gates, the present invention starts by directly mapping a Boolean network onto a target library without any need for decomposition into a subject graph. Decomposition is the process of simplifying nodes by identifying and adding new Boolean nodes (with smaller number of fanins) to the network. In general, most decomposition algorithms work by choosing a factor and re-expressing the network in terms of that new factor and iterating until no new factors are found. This is achieved by direct decomposition of Boolean nodes into cells/bricks. Since a Boolean network can contain internal nodes with arbitrarily large number of fanins, the general method of decomposition attempts to simplify such nodes by identifying and adding new Boolean nodes (with smaller number of fanins) to the network. In general, the prior art for decomposition algorithms are based on choosing a factor and re-expressing the network in terms of that new factor and iterating until no new factors are found.
This general set of decomposition techniques for logic optimization and technology mapping (the process of transforming a circuit netlist into a network of interconnected components/cells of a given library. By means of technology mapping, a design can be targeted to a design style such as standard cells, FPGAs or gate arrays) have evolved with the development of standard cell-based design methodology. As a result, they are very specific to optimization of standard cells, and do not work well for large cells or bricks. The complexity of the cells in a brick library (also referred to as library that includes a set of complex functions includes a plurality of non-standard complex Boolean logic functions that are each derived from the identified logic function patterns of the recurring Boolean logic chains in the utility application incorporated by reference above) is considerably higher than those of typical standard cells, and the number of cells in a brick library (typically 5-50) is less than in a typical standard cell library (typically 700-2000). As described in more detail in the utility application incorporated by reference, efficiency with a small cell library is sometimes obtained by generating the library to be application specific, or application domain specific. Based on the outlined differences, existing methods used for binding a system level (e.g. RTL) description to a specific technology library are inefficient for brick libraries.
For example, the complexity of typical matching algorithms used during the matching stages of technology mapping grows exponentially with the number of inputs of the cells in the target technology library. A target technology library is one have a collection of cells that perform primitive Boolean logic functions in a specific technology or a design style. Further, logic decomposition and multi-level optimization are separate steps from technology mapping with very little interaction. Since a brick library has limited functionality, it provides for an opportunity to tightly couple these steps while having a tractable complexity of the computation. Although, there is work (see E. Lehman et al, “Logic decomposition during technology mapping”, IEEE Trans. CAD, 16(8), 1997, pp. 813-833) that proposes a technique that combines algebraic decomposition with technology mapping, it is based on tree-matching onto a mapping graph, and thus suffers from structure bias. Further, the mapping graph does not scale with the size-complexity of Boolean functions, thereby making it impractical for application to libraries of bricks or large cells.
FIG. 2 illustrates an overview of the present invention, which takes as inputs the Boolean network to be technology mapped, the limited library of bricks (potentially derived for a specific application-domain) and a set of design constraints that describe the area as well as delay goals. The input Boolean network might be one that is obtained from the register transfer level (RTL) description of a circuit after performing some technology independent optimization. This Boolean network is then technology mapped via decomposition and recomposition to bricks, as described hereinafter, following the design constraints and specifications.
One aspect of the uniqueness of the present invention is that each cell and its precise characteristics are considered while performing logic synthesis. This is not possible during decomposition to standard cells due to the small cell sizes and the overwhelmingly complex number of possible decompositions due to the number of unique logic cells.
Since bricks are by definition dominated by large complex cells (cells with at least 3 inputs and 3 levels of internal logic depth as defined in the utility patent application incorporated by reference herein), the present invention does not use tree or DAG (directed acyclic graph) matching. Instead, during logic decomposition, decompositions are chosen for which the logic functions match a cell or brick in the library, as shown in the flow diagram of FIG. 3.
The present invention continues iteratively by decomposing any un-decomposed logic, and backtracking as necessary until all logic is decomposed into large function bricks and a few selected logic brick primitives (where percentage of cells that are simple primitives is typically no more than 15% of the total number of cells/bricks). The invention further considers that decomposition is coupled with re-composition moves. Logic recomposition is the opposite of decomposition, during which nodes in the multilevel network are collapsed into their respective fanout nodes. Logic recomposition/collapse is the process of eliminating factors from a network usually resulting in an increase in complexity of nodes in the network. This creates an opportunity for which more efficient decompositions can be discovered. In the university software tool SIS, (See SIS: A System for Sequential Circuit Synthesis. Robert K. Brayton Alberto Sangiovanni-Vincentelli et. al, EECS, University of California, Berkeley), recomposition (termed as eliminate) is driven by a maximum increase in the number of (user specified) literals in the network. The number of literals has been shown to roughly represent the complexity of a Boolean network. For example in U.S. Pat. No. 6,958,545 the recomposition moves are chosen in order to minimize congestion during the physical synthesis (the process of implementing the mask for a circuit netlist including buffer insertion and minor logic changes to accommodate for design constraints). An aspect of the present invention with respect to recomposition is that the following two types of sub-networks are considered for recomposition:
    • 1. Sub-networks that match a cell or brick in the library, including the large complex bricks that are not found in standard cell libraries. This is achieved by structural or Boolean matching.
    • 2. Sub-networks that are heuristically estimated to be efficiently decomposable into cells/bricks after re-composition.
FIG. 3 highlights the mapping flow according to the present invention, including the decomposition and recomposition.
An important aspect of this invention is that the cost function for the logic decomposition and optimization are measured in part by:
    • Placement information (if applied during physical synthesis)
    • Wireload estimates (when applied during frontend synthesis)→statistical wireloads
    • Timing, area and power characteristics of the bricks
The present invention has the following properties that contribute to its novelty:
    • 1. A method to directly transform an RTL/Unmapped Boolean network into a technology-specific design representation that is defined by a library of 5 to 50 cells (brick), with 85% or more of those cells corresponding to large complex logic functions of at least 3 inputs and at least 3 levels of logic. An unmapped Boolean network is a Boolean network where the implementation of nodes in a specific technology is not defined. The functionality of each node is defined abstractly. e.g. using the sum of products form.
    • 2. A method to directly transform an RTL/Unmapped Boolean network into a cell (brick) level Boolean network based on a target cell (brick) library using Boolean decomposition.
    • 3. The method in 2 for which the direct mapping further facilitates the optimization of specific attributes (e.g. Area, Delay, Power) during decomposition that would otherwise be impractical with a larger library.
    • 4. The RTL/Unmapped Boolean network described in 1 might have been obtained in any of the following ways
      • a. Human designed
      • b. Logic collapsed/re-composed from a gate level implementation which might have undergone logic synthesis and/or physical synthesis
      • c. Created via behavioral synthesis
    • 5. The target brick library in 1 contains characterization data for the bricks that provides metrics for the targeted design attributes in 1. This data can also be derived during the processes described in the present invention using the process for transistor-level optimization described in the provisional application incorporated be reference herein. The Boolean functions of the bricks are derived as described in the utility application incorporated by reference herein.
    • 6. The transformation in 1 is performed by iteratively using the following procedures, of which at least one takes the target brick library into account:
      • a. Decomposition of nodes in the Boolean network
      • b. Re-composition of nodes in the Boolean network
    • 7. The decomposition in 6.a computes the cost function of various potential decomposition choices and performs the decomposition using the best choice. The cost function calculation uses the data in the target brick library using one of the following methods:
      • a. Heuristic (Area and/or delay and/or power) estimation of the composition and/or the decomposition function when it is fully or partially implemented by the cells in the target library. A decomposition function is a candidate Boolean function (factor) that may be added to the network during decomposition.
      • b. Exact (Area and/or delay and/or power) computation by recursively implementing the composition and/or decomposition function using the method in 1.
      • c. Exact (Area and/or delay and/or power) computation by matching the composition and/or decomposition function to a brick in the target Brick library.
    • Further, the decomposition can be of type disjoint or non-disjoint.
    • 8. The decomposition in 7 also considers the possibility of sharing the decomposition functions (Bricks from the target brick library) as factors among multiple Boolean nodes in the network.
    • 9. Re-composition in 6.b evaluates the re-composition choices at a node and performs re-composition using the best choice. The cost function calculation takes the target brick library into account by calculating the cost function of the resulting collapsed Boolean function in one of the following ways:
      • a. Heuristic (Area and/or delay and/or power) estimation of the collapsed function when it is fully or partially implemented by the cells in the target library.
      • b. Exact (Area and/or delay and/or power) computation by recursively implementing the collapsed function using the method in 1.
      • c. Exact (Area and/or delay and/or power) computation by matching the collapsed function to a Brick in the target Brick library.
    • 10. The transformation procedure in 1 can be applied in the context of incremental optimization of a netlist. This can be done by selectively highlighting a sub-network and then remapping it using the procedure in 1. A flow-chart of this process is shown in FIG. 4.
    • 11. The process in 9 can be applied to perform incremental optimization on the gate level netlist after some physical prototyping or full physical synthesis. In this case the cost function in 7 & 8 are evaluated using the information from the physical prototype/implementation, e.g. placement co-ordinates, wire loads, etc.
The following illustrates certain particular aspects of the mapping process that are unique in the context of the present invention.
A behavioral, RTL or an unmapped Boolean network is technology mapped to the small library of logic brick components (containing the set of complex functions and the set of simple functions, with the set of complex functions being the non-standard complex Boolean logic functions) using aggressive Boolean operations. Unmapped Boolean functions in the Boolean network are tested against each Brick in the Brick library for Boolean factoring. One way to test for factors is via Boolean division. In this manner, the Boolean network is technology mapped by directly mapping Boolean factors of the nodes in the Boolean network to complex Bricks that correspond to complex, non-traditional logic functions. Such aggressive Boolean operations would be of impractical runtime complexity for a large library. In contrast, existing methods (e.g. SIS: A System for Sequential Circuit Synthesis. Robert K. Brayton Alberto Sangiovanni-Vincentelli et. al, EECS, University of California, Berkeley) employ algebraic factoring or weak division during the technology independent stage prior to technology mapping to reduce the complexity of the Boolean network before mapping the network to a standard cell library.
Referring to FIG. 3, each unmapped node in the Boolean network is mapped to bricks until all the nodes in the network get mapped. For example, referring to FIG. 5, we can consider starting with a Boolean function F (of an unmapped node) being technology mapped and derive all the support-reducing bound-sets (Is) of F, where the cardinality of each bound-set is less than N (N is the maximum number of inputs for any cell in the target brick library). Next, each brick in the target library is evaluated using each bound-set in Is to evaluate a cost function.
The cost function can be designed to achieve a certain area-timing and/or power tradeoff. The brick, Bb, that minimizes the cost function is chosen to decompose F (See FIG. 5) into a network that has a Boolean function f being driven by the brick Bb. An example of a cost function that can be used to optimize the area of the mapped circuit:
C=M(f)+α×area(Bb)
where, M(f) is the number of literals in the minimized SOP (sum-of-products) form of the composition function (f). The composition function is a Boolean function which represents the decomposed node in terms of the decomposition functions (factors). The minimization can be carried out by a literal based minimization tool such as Espresso (See SIS: A System for Sequential Circuit Synthesis. Robert K. Brayton Alberto Sangiovanni-Vincentelli et. al, EECS, University of California, Berkeley). The area(Bb) is the area foot-print of the brick B. The normalization factor (α) depends on the actual area foot-prints of cells in the target brick library.
Another example of a cost function which trades-off between area and delay is:
C=M(f)+_α×area(B)+β_×Max(Criticality(X1))
here, X1 is the set of pins in the bound set. The criticality of a pin is defined as the minimum slack that each input has with respect to some output. The weighting factors α and β are adjusted for trading-off timing and area. The cost function biases the algorithm towards the selection of bricks with bound set inputs that are not critical.
In order to further optimize for area, we perform logic sharing (factoring) of the decomposition functions (Bricks) as follows. While evaluating the cost function during the selection of a brick, Bb, during decomposition of node F, other nodes in the neighborhood of F area considered for decomposition using the same brick. The selection of bricks which can form factors, as opposed to decompositions, is biased by the cost function for area.
The foregoing detailed description of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. The described embodiments were chosen in order to best explain the principles of the invention and its practical application to thereby enable others skilled in the art to best utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated.

Claims (7)

1. A network of interconnected logic components embodied in a non-transitory medium, said network created, at least in part, by mapping a behavioral, RTL or unmapped Boolean network to a cell-level netlist description of an integrated circuit, said cell-level netlist description comprising logic components selected from a small library of logic components having no more than 50 unique logic functions, said mapping further comprising the steps of:
using a computer system to select components from the small library of logic components having no more than 50 unique logic functions for inclusion in the cell-level netlist description of the integrated circuit;
the small library of logic components including a set of complex functions and a set of simple functions, wherein the set of complex functions includes a plurality of non-standard complex Boolean logic functions and wherein substantially all of the plurality of non-standard complex Boolean logic functions each have at least three inputs, and
directly mapping large functions from the network to different ones of the non-standard complex Boolean logic functions, wherein said direct mapping includes testing said unmapped functions against each complex function in the library using at least one of Boolean factoring and Boolean division, and wherein most of the network is mapped to certain ones of the plurality of non-standard complex Boolean logic functions.
2. The network of claim 1 wherein the step of mapping further includes the steps of:
decomposing other functions from the network;
subsequently recomposing other large functions using the decomposed other functions; and
further mapping at least some of the recomposed large functions directly to different ones of the non-standard complex Boolean logic functions.
3. The network of claim 1, wherein the step of mapping maps functions from the network that do not correspond to the non-standard complex Boolean logic functions using the simple functions from the small library.
4. The network of claim 1, wherein the mapping uses a cost function.
5. The network of claim 4, wherein the cost function is affected by placement information.
6. The network of claim 4, wherein the cost function is affected by wireload estimates.
7. The network of claim 4, wherein the cost function is affected by at least one of timing, area and power characteristics of each of the non-standard complex Boolean logic functions.
US12/835,675 2007-01-03 2010-07-13 Method and system for mapping a boolean logic network to a limited set of application-domain specific logic cells Active - Reinstated US8082529B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/835,675 US8082529B2 (en) 2007-01-03 2010-07-13 Method and system for mapping a boolean logic network to a limited set of application-domain specific logic cells

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US88333207P 2007-01-03 2007-01-03
US11/619,587 US7784013B2 (en) 2007-01-03 2007-01-03 Method for the definition of a library of application-domain-specific logic cells
US11/627,930 US7757187B2 (en) 2007-01-03 2007-01-26 Method for mapping a Boolean logic network to a limited set of application-domain specific logic cells
US12/835,675 US8082529B2 (en) 2007-01-03 2010-07-13 Method and system for mapping a boolean logic network to a limited set of application-domain specific logic cells

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/627,930 Continuation US7757187B2 (en) 2007-01-03 2007-01-26 Method for mapping a Boolean logic network to a limited set of application-domain specific logic cells

Publications (2)

Publication Number Publication Date
US20100281450A1 US20100281450A1 (en) 2010-11-04
US8082529B2 true US8082529B2 (en) 2011-12-20

Family

ID=39585875

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/627,930 Expired - Fee Related US7757187B2 (en) 2007-01-03 2007-01-26 Method for mapping a Boolean logic network to a limited set of application-domain specific logic cells
US12/835,675 Active - Reinstated US8082529B2 (en) 2007-01-03 2010-07-13 Method and system for mapping a boolean logic network to a limited set of application-domain specific logic cells

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US11/627,930 Expired - Fee Related US7757187B2 (en) 2007-01-03 2007-01-26 Method for mapping a Boolean logic network to a limited set of application-domain specific logic cells

Country Status (1)

Country Link
US (2) US7757187B2 (en)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4444732B2 (en) * 2004-05-25 2010-03-31 富士通マイクロエレクトロニクス株式会社 Library generation method and library generation program
US7840915B2 (en) * 2006-02-01 2010-11-23 The Trustees Of Columbia University In The City Of New York Methods and media for forming a bound network
US7945868B2 (en) * 2007-10-01 2011-05-17 Carnegie Mellon University Tunable integrated circuit design for nano-scale technologies
US8176449B1 (en) * 2010-03-11 2012-05-08 Xilinx, Inc. Inference of hardware components from logic patterns
WO2014120209A1 (en) * 2013-01-31 2014-08-07 Empire Technology Development, Llc Masking power usage of co-processors on field-programmable gate arrays
US20160112200A1 (en) 2014-10-17 2016-04-21 21, Inc. Cryptographic hashing circuitry having improved scheduling efficiency
US9659123B2 (en) 2014-10-17 2017-05-23 21, Inc. Systems and methods for flexibly optimizing processing circuit efficiency
US10409827B2 (en) 2014-10-31 2019-09-10 21, Inc. Digital currency mining circuitry having shared processing logic
US9942046B2 (en) * 2015-05-06 2018-04-10 21, Inc. Digital currency mining circuitry with adaptable difficulty compare capabilities

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6295636B1 (en) * 1998-02-20 2001-09-25 Lsi Logic Corporation RTL analysis for improved logic synthesis
US6470486B1 (en) * 1999-05-26 2002-10-22 Get2Chip Method for delay-optimizing technology mapping of digital logic
US6519609B1 (en) * 1998-12-04 2003-02-11 Cadence Design Systems, Inc. Method and system for matching boolean signatures
US20030145288A1 (en) * 2002-01-25 2003-07-31 Xinning Wang Method and apparatus for improving digital circuit design
US20030233628A1 (en) * 2002-06-17 2003-12-18 Rana Amar Pal Singh Technology dependent transformations in CMOS and silicon-on-insulator during digital design synthesis
US6836877B1 (en) * 1998-02-20 2004-12-28 Lsi Logic Corporation Automatic synthesis script generation for synopsys design compiler
US6958545B2 (en) * 2004-01-12 2005-10-25 International Business Machines Corporation Method for reducing wiring congestion in a VLSI chip design
US20070011643A1 (en) * 2003-09-19 2007-01-11 Cadence Design Systems, Inc. Optimized mapping of an integrated circuit design to multiple cell libraries during a single synthesis pass
US20080127000A1 (en) * 2006-05-26 2008-05-29 Open-Silicon, Inc. Method of IC design optimization via creation of design-specific cells from post-layout patterns

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6295636B1 (en) * 1998-02-20 2001-09-25 Lsi Logic Corporation RTL analysis for improved logic synthesis
US6836877B1 (en) * 1998-02-20 2004-12-28 Lsi Logic Corporation Automatic synthesis script generation for synopsys design compiler
US6519609B1 (en) * 1998-12-04 2003-02-11 Cadence Design Systems, Inc. Method and system for matching boolean signatures
US6470486B1 (en) * 1999-05-26 2002-10-22 Get2Chip Method for delay-optimizing technology mapping of digital logic
US20030145288A1 (en) * 2002-01-25 2003-07-31 Xinning Wang Method and apparatus for improving digital circuit design
US20030233628A1 (en) * 2002-06-17 2003-12-18 Rana Amar Pal Singh Technology dependent transformations in CMOS and silicon-on-insulator during digital design synthesis
US20060075375A1 (en) * 2002-06-17 2006-04-06 Rana Amar P S Technology dependent transformations for CMOS in digital design synthesis
US20070011643A1 (en) * 2003-09-19 2007-01-11 Cadence Design Systems, Inc. Optimized mapping of an integrated circuit design to multiple cell libraries during a single synthesis pass
US6958545B2 (en) * 2004-01-12 2005-10-25 International Business Machines Corporation Method for reducing wiring congestion in a VLSI chip design
US20080127000A1 (en) * 2006-05-26 2008-05-29 Open-Silicon, Inc. Method of IC design optimization via creation of design-specific cells from post-layout patterns

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Keutzer, K., "Dagon: Technology Binding and Local Optimization", 24thACM/IEEE Design Automation Conf., pp. 341-347 (1987).
Kukimoto, Y., et al., "Delay-Optimal Technology Mapping by DAG Covering", Whitepaper, pp. 348-351 (1998).
Lehman, et al., "Logic Decomposition During Technology Mapping", IEEE Trans. CAID, 16(8), 1997, pp. 813-833.
Motiani, D., "Implementation Flow for Design Using Regular Fabric Logic Bricks", Carnegie Mellon Univ. Whitepaper, Aug. 2005, pp. 1-31.
Sentovich, E.M., et al., "SIS: A system for Sequential Circuit Synthesis", Dept. of Elec. Engineering and computer Sci, Univ. CA Berkeley whitepaper, May 4, 1992, pp. 8-16.

Also Published As

Publication number Publication date
US7757187B2 (en) 2010-07-13
US20100281450A1 (en) 2010-11-04
US20080163152A1 (en) 2008-07-03

Similar Documents

Publication Publication Date Title
US8082529B2 (en) Method and system for mapping a boolean logic network to a limited set of application-domain specific logic cells
US8589833B2 (en) Method for the definition of a library of application-domain-specific logic cells
US5426591A (en) Apparatus and method for improving the timing performance of a circuit
US7360198B2 (en) Technology dependent transformations for CMOS in digital design synthesis
US7003738B2 (en) Process for automated generation of design-specific complex functional blocks to improve quality of synthesized digital integrated circuits in CMOS using altering process
US20030208730A1 (en) Method for verifying properties of a circuit model
US20050268258A1 (en) Rule-based design consultant and method for integrated circuit design
US10339243B2 (en) Method and apparatus for automatic hierarchical design partitioning
US20060225022A1 (en) Method, apparatus and program for determining the relationship of correspondence between register transfer level description and behavioral description
US20050268268A1 (en) Methods and systems for structured ASIC electronic design automation
EP1145159A2 (en) Block based design methodology
US7409658B2 (en) Methods and systems for mixed-mode physical synthesis in electronic design automation
WO2000072185A2 (en) Behavioral-synthesis electronic design automation tool and business-to-business application service provider
WO2000019528A1 (en) Dram cell system and method for producing same
US7451427B2 (en) Bus representation for efficient physical synthesis of integrated circuit designs
US8661381B1 (en) Method and apparatus for performing optimization using Don't Care states
US7287235B1 (en) Method of simplifying a circuit for equivalence checking
US6516453B1 (en) Method for timing analysis during automatic scheduling of operations in the high-level synthesis of digital systems
US7958466B1 (en) Method and apparatus for calculating a scalar quality metric for quantifying the quality of a design solution
Nijssen et al. GreyHound: A methodology for utilizing datapath regularity in standard design flows
Um et al. Synthesis of arithmetic circuits considering layout effects
Ling Field-Programmable Gate Array Logic Synthesis Using Boolean Satisfiability
US6988252B2 (en) Universal gates for ICs and transformation of netlists for their implementation
Lin et al. An efficient approach for hierarchical submodule extraction
Djunaidy GARUDA: An Automatic Multi-Level Logic Synthesis and Optimisation System

Legal Events

Date Code Title Description
AS Assignment

Owner name: PDF ACQUISITION CORP., CALIFORNIA

Free format text: MERGER;ASSIGNOR:FABRIX, INC.;REEL/FRAME:025156/0284

Effective date: 20070524

Owner name: FABRIX, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KHETERPAL, VEERBHAN;PILEGGI, LAWRENCE T.;MOTIANI, DIPTI;SIGNING DATES FROM 20070227 TO 20070321;REEL/FRAME:025156/0295

ZAAA Notice of allowance and fees due

Free format text: ORIGINAL CODE: NOA

ZAAB Notice of allowance mailed

Free format text: ORIGINAL CODE: MN/=.

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2552); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

Year of fee payment: 8

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

PRDP Patent reinstated due to the acceptance of a late maintenance fee

Effective date: 20240209

FEPP Fee payment procedure

Free format text: PETITION RELATED TO MAINTENANCE FEES FILED (ORIGINAL EVENT CODE: PMFP); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

Free format text: PETITION RELATED TO MAINTENANCE FEES GRANTED (ORIGINAL EVENT CODE: PMFG); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

Free format text: SURCHARGE, PETITION TO ACCEPT PYMT AFTER EXP, UNINTENTIONAL. (ORIGINAL EVENT CODE: M2558); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2553); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

Year of fee payment: 12

STCF Information on status: patent grant

Free format text: PATENTED CASE

FP Lapsed due to failure to pay maintenance fee

Effective date: 20231220