POWER-AWARE DYNAMIC ENCODING
20170154132 ยท 2017-06-01
Assignee
Inventors
Cpc classification
G01R31/31718
PHYSICS
G06F30/398
PHYSICS
G06F30/33
PHYSICS
G06F30/327
PHYSICS
International classification
Abstract
Dynamic power-aware encoding method and apparatus is presented based on a various embodiments described herein. The experimental results confirmed that a desirable reduction in the toggling rate in the decompressed test stimulus is achievable by reasonable overhead (ATPG time, hardware overhead and pattern inflation) typically without degradation of a compression ratio. The performed experimental evaluation confirms that the described embodiments can support aggressive scan compression, efficient dynamic pattern compaction and a reduction of toggling rate in the decompressed test stimulus.
Claims
1. An apparatus, comprising: an EDA tool adapted to transform a circuit design to include design-for-test circuitry, the design-for-test circuitry including: selection circuitry selectively coupling a plurality of test stimulus sources to a decompressor circuit for generation of a decompressed test stimulus for detecting fault in a circuit under test in the circuit design, the plurality of test stimulus sources including: a static test stimulus source; and a dynamic test stimulus source, wherein the selection circuitry selectively enables the dynamic test stimulus source.
2. The apparatus of claim 1, wherein the dynamic test stimulus source is selectively enabled for a subset of care bits based on a grouping mechanism.
3. The apparatus of claim 1, wherein the dynamic test stimulus source includes a circular register such that at least one bit of said circular register is coupled to each scan chain in the circuit under test.
4. The apparatus of claim 1, wherein the dynamic test stimulus source includes two circular registers such that each scan chain in the CUT is coupled to each of said two circular registers.
5. The apparatus of claim 1, wherein the decompressed test stimulus is generated based on a superposition of the static test stimulus source and the dynamic test stimulus source.
6. The apparatus of claim 1, wherein the design-for-test circuitry further comprises: a programmable controller generating control signals to control the selection circuitry.
7. An apparatus, comprising: an EDA tool controlling automatic test pattern generation with design-for-test circuitry of a circuit design, the design-for-test circuitry including: selection circuitry selectively coupling a plurality of test stimulus sources to the decompressor circuitry for generation of a decompressed test stimulus for detecting fault in a circuit under test in the circuit design, the plurality of test stimulus sources including: a static test stimulus source; and a dynamic test stimulus source, wherein the selection circuitry selectively enables the dynamic test stimulus source.
8. The apparatus of claim 7, wherein the dynamic test stimulus source is selectively enabled for a subset of care bits based on a grouping mechanism.
9. The apparatus of claim 7, wherein the dynamic test stimulus source includes a circular register such that at least one bit of said circular register is coupled to each scan chain in the circuit under test.
10. The apparatus of claim 7, wherein the dynamic test stimulus source includes two circular registers such that each scan chain in the CUT is coupled to each of said two circular registers.
11. The apparatus of claim 7, wherein the decompressed test stimulus is generated based on a superposition of the static test stimulus source and the dynamic test stimulus source.
12. The apparatus of claim 7, wherein the static test stimulus source generates same test data bits for two or more consecutive shift cycles.
13. The apparatus of claim 7, wherein the design-for-test circuitry further comprises: a programmable controller generating control signals to control the selection circuitry.
14. The apparatus of claim 13, wherein the automatic test pattern generation further generates the control variables for the programmable controller.
15. An apparatus, comprising: an EDA tool adapted to transform a circuit design to include design-for-test circuitry, the design-for-test circuitry including: decompressor circuitry for generation of a decompressed test stimulus for detecting faults in a circuit under test in the circuit design, the decompressor circuitry generates care bits based on a system of linear equations such that the system of linear equations includes: a first disjoint set of static variables; and a second disjoint set of dynamic variables, wherein equations of the system of linear equations include at least one variable from the second disjoint set of dynamic variables and the variables of said second disjoint set of dynamic variables are selectively enabled for a subset of the care bits.
16. The apparatus of claim 15, wherein the variables of said second disjoint set of dynamic variables are selectively enabled for the subset of care bits based on a grouping mechanism.
17. The apparatus of claim 15, wherein the variables of said second disjoint set of dynamic variables are loaded into a dynamic test stimulus source.
18. The apparatus of claim 15, wherein the dynamic test stimulus source includes a circular register such that at least one bit of said circular register is coupled to each scan chain in the circuit under test.
19. The apparatus of claim 15, wherein the dynamic test stimulus source includes two circular registers such that each scan chain in the CUT is coupled to each of said two circular registers.
20. An apparatus, comprising: an EDA tool controlling automatic test pattern generation with design-for-test circuitry of a circuit design, the design-for-test circuitry including: decompressor circuitry for generation of a decompressed test stimulus for detecting faults in a circuit under test in the circuit design, the decompressor circuitry generates care bits based on characteristic equations such that the characteristic equations include: at least one variable of a first disjoint set of static variables; and at least one variable of a second disjoint set of dynamic variables, wherein said at least one variables of said second disjoint set of dynamic variables are selectively enabled for a subset of the care bits.
21. The apparatus of claim 20, wherein the variables of said second disjoint set of dynamic variables are selectively enabled for the subset of care bits based on a grouping mechanism.
22. The apparatus of claim 20, wherein the variables of said second disjoint set of dynamic variables are loaded into a dynamic test stimulus source.
23. The apparatus of claim 22, wherein the dynamic test stimulus source includes a circular register such that at least one bit of said circular register is coupled to each scan chain in the circuit under test.
24. The apparatus of claim 22, wherein the dynamic test stimulus source includes two circular registers such that each scan chain in the CUT is coupled to each of said two circular registers.
25. An apparatus, comprising: an EDA tool for processing data based on design-for-test circuitry of a circuit design, the design-for-test circuitry including: decompressor circuitry for generation of a decompressed test stimulus based on characteristic equations such that the characteristic equations include: at least one variable of a first disjoint set of static variables; and at least one variable of a second disjoint set of dynamic variables, wherein said at least one variable of the second disjoint set of dynamic variables of the characteristic equations is selectively enabled.
26. The apparatus of claim 25, wherein the decompressed test stimulus includes care bits for detecting faults in a circuit under test in the circuit design, wherein the at least one variable of said second disjoint set of dynamic variables, is selectively enabled for a subset of the care bits based on a grouping mechanism.
27. The apparatus of claim 25, wherein the at least one variable of said second disjoint set of dynamic variables is loaded into a dynamic test stimulus source.
28. The apparatus of claim 27, wherein the dynamic test stimulus source includes a circular register such that at least one bit of said circular register is coupled to each scan chain in the circuit under test.
29. The apparatus of claim 27, wherein the dynamic test stimulus source includes two circular registers such that each scan chain in the circuit under test is coupled to each of said two circular registers.
30. The apparatus of claim 26, wherein processing data includes at least one of the following: reading a specification of the design-for-test circuitry, identification of the design-for-test circuitry, performing a design rule check, performing ATPG, performing simulation, performing fault simulation, and performing fault diagnosis.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
[0059]
[0060]
[0061]
[0062]
[0063]
[0064]
DETAILED DESCRIPTION
[0065] The following examples are specific non-limiting examples illustrating various advantageous features of the presented technology. Only a subset of features demonstrated in a single example may be in an embodiment of the presented technology. An embodiment of the presented technology may include features from multiple examples. The number and length of scan chains, the number and length of segments, number and type of seeds and variables, existence of toggling, toggling rate, and configurations are changeable with different embodiments.
[0066] In
[0068] Typically, the static test stimulus may change per pattern, two or more consecutive shift cycles, or two or more patterns. In this way, the static test stimulus source generates test stimulus that stays constant for two or more consecutive shift cycles, or all shift cycles of one or more test patterns. Therefore, significant toggling in decompressed test stimulus is expected only in the selected shift cycles and the selected scan chains. In a particular case, if a power-group of scan cells is enabled then bits of the decompressed test stimulus which are loaded into the selected scan cells are calculated as a superposition of corresponding bits of the dynamic and static test stimulus while bits of the decompressed stimulus which are loaded into the remaining (non-selected) scan cells are determined by corresponding bits of the static test stimulus. In this way, the toggling rate in this non-selected scan cells will be minimized, which reduces power consumption and reduces temperature that would otherwise increase along with power consumption. More formally, different values are shifted into a scan chain in two consecutive shift cycles, resulting in switching activities at inputs of the associated combinational circuit. These switching activities produce 0 to 1 and 1 to 0 transitions that may propagate in the associated combinational circuit.
[0069] Recently, the augmented product codes have been successfully used for constructing space and time compactors as well as sequential linear decompressors, for example, in U.S. Pat. No. 7,949,921; U.S. Pat. No. 8,914,695; U.S. Pat. No. 9,134,378; and US patent application 20140095101, for Synopsys, all incorporated by reference herein. The following procedure describes a construction of a power-aware linear decompressor scheme.
[0070] Procedure 1: Let N.sup.3 scan chains be viewed as an NNN array and a unique triplet (x,y,z) be assigned to a chain in row x, column y and block z where N2. Augmented decompressor (ADC), ADC(N,4), consists of four registers R.sub.0, R.sub.1, . . . , R.sub.3 of length N and a linear expander which is constructed based on the following steps: (i) assign a unique triplet (x,y,z) to each scan chain where x,y,z{0, 1, 2, . . . , N1}; (ii) assign an index {0, 1, 2, . . . , N1} to flip-flops in each register; (iii) assign a unique formula {y, (x+z) mod N, x, (x+y+z) mod N} to each register R.sub.k where k=(0, 1, . . . , 3); and (iv) couple each scan chain (x,y,z) to one flip-flop in each register such that the value of the corresponding formula determines the index of the flip-flop in each register; and (v) couple all flip-flops such that register R.sub.2 and R.sub.3 forms circular registers.
[0071] Procedure 1 guarantees that any three scan cells are linearly independent if a circular register of the ADC(N,4) receives N-bit dynamic seed per N shift cycles. In this way, the static test stimulus is generated by registers R.sub.0 and R.sub.1 which typically receives one static seed per pattern. The dynamic test stimulus is generated by circular registers R.sub.2 and R.sub.3 which typically receive one dynamic seed per T shift cycles where TN and parameter T is called a scope of dynamic seeds.
[0072]
[0073]
[0074] Dynamic Linear Encoding
[0075] The dynamic encoding cannot be directly associated with either linear or non-linear decompressors. For example, a major obstacle for incorporating the conventional linear encoding into the branch-and-bound search is its time complexity which can be further magnified by ATPG backtracking.
[0076] Encoding procedure: Let SLEs include two distinctive sets of variables called herein static and dynamic. A SLEs is k-partite if the dynamic variables are divided into k disjoint sets of variables such that each equation of the SLEs includes at most one dynamic variable of each disjoint set. Dynamic variables of a k-partite SLEs divide scan cells into groups such that all scan cells of a group depend on the same k dynamic variables. Let the first care bit of a linearly independent group be dynamic and all other care bits be static. The proposed encoding procedure divides a partite SLEs into a SLEs based on dynamic variables and a SLEs based on static variables such that i) for each dynamic care bit, the SLEs of the dynamic variables includes one dynamic equation and ii) for each static care bit, the SLEs of the static variables includes one augmented equation which is calculated as a superposition of characteristic equations of the static care bit and a set of relevant dynamic care bits. For independent groups, the set of relevant dynamic care bits includes the first care bit for the corresponding independent group. For a dependent group, the set of relevant dynamic care bits includes the first care bit of all independent groups which are associated with a dependent group.
EXAMPLE 1
[0077]
EXAMPLE 2
[0078]
EXAMPLE 3
[0079]
[0080] A decompressed test stimulus generated by the ADC(N,4,T) can be viewed as a superposition of a static test sequence based on 2N-bit static seed in registers R.sub.0, and R.sub.1 and a dynamic test sequence based on 2N-bit dynamic seeds in circular registers R.sub.2 and R.sub.3 where N is the length of registers and T is a scope of dynamic seeds. Each scan chain is coupled to one bit of registers R.sub.2 and R.sub.3 therefore the value loaded in each scan cell depends on two dynamic variables. The resultant SLEs is 2-partite. Next, the encoding is decomposed into two independent steps: an initial encoding and a final encoding. The goals of the initial encoding are to identify the encoding conflicts as early as possible during branch-and-bound search and to calculate the static seeds based on the static variables. The goal of the final encoding is to calculate dynamic seeds based on dynamic variables when ATPG is completed. Let each scan cell be uniquely associated with a characteristic equation such that each characteristic equation includes two static variables and two dynamic variables. Let a dynamic equation of a care bit be calculated by substituting all static variables with their values in the corresponding characteristic equation. Therefore each dynamic seed divides the scan cells into N.sup.2 groups such that: (i) scan cells in a group depend on the same two dynamic variables; (ii) four groups of a quadruple are linearly dependent; and (iii) each quadruplet includes one dependent group and all other groups are independent.
[0081] The initial encoding is based on static variables and includes two phases: unconstrained and constrained. During the unconstrained encoding, each care bit is considered independent and does not imply values of other scan cells. The unconstrained encoding continues until the first encoding conflict or all static variables are assigned to either value 0 or 1. During the constrained encoding, each care bit implies the values of all scan cells in the corresponding group and all dependent groups. As a result, all necessary scan cell assignments are easily identified. This feature is advantageous and improves the efficiency of dynamic pattern compaction. The unconstrained initial encoding is based on the following rules: 1) the first care bit of an independent group is called a dynamic care bit and all other care bits are called static; 2) a relevant bit of an independent group is the first care bit (or the corresponding dynamic care bit); 3) relevant care bits of a dependent group are the first care bits of the corresponding independent groups; and 4) each static care bit and the relevant dynamic care bits are represented in the SLEs by one augmented equation which is calculated as a superposition of their characteristic equations. In this way, the size of the resultant SLEs is greatly reduced because a small subset of care bits (only static care bits) need to be included into the SLEs based on a small subset of variables (static variables). Dependent groups can be calculated using a graph or quadruplets in accordance with previous embodiments.
[0082] The final encoding is based on dynamic variables and includes the following steps: 1) determine a dynamic equation of each dynamic care bit by substituting all static variables with the values assigned during the initial encoding; 2) for T consecutive shift cycles, encode all dynamic care bits with available 2N dynamic variables where T is the scope of dynamic seeds and N is the length of circular registers.
EXAMPLE 4
[0083]
Power-Aware Dynamic Encoding
[0084] Let ADC(N,4,T) be constructed based on Procedure 1 and include registers R.sub.0, R.sub.1, R.sub.2 and R.sub.3 where N is the length of registers and T is scope of dynamic seeds. The ADC(N,4,T) comprises a static test stimulus source including registers R.sub.0 and R.sub.1 and a dynamic test stimulus source including registers R.sub.2 and R.sub.3. Toggling in the decompressed test stimulus of the ADC(N,4,T) is minimized if dynamic variables are enabled for fewer scan cells. The proposed power-aware dynamic encoding is based on dividing scan cells in power-aware groups such that the dynamic variables are selectively enabled for a subset of power-aware groups. In contrast to the dynamic encoding, the power-aware dynamic encoding first tries to encode each care bit based on the static variables. If this step produces an encoding conflict for a care bit then the power-aware dynamic encoding enables the corresponding power-aware group. As a result, the linear equations of all care bits in this power-group include both two static variables and two dynamic variables. In other words, the linear equations of scan cells in enabled power-aware groups includes both static and dynamic variables and the linear equations of scan cells in disabled power-aware groups includes static variables only. The resultant 2-partite SLEs is processed based on the principles described in the previous embodiments. More formally, dynamic variables divide care bits in selected power-aware groups into groups of scan cells. The SLEs is updated such that (i) each care bit in the unselected power-aware groups is included in the SLE based on a static equation which is calculated by removing dynamic variables in the corresponding characteristic equation; (ii) all care bits in the selected power-aware groups need to be encoded based on their characteristic equations. Accordingly, the first care bits in an independent group of scan cells are considered dynamic and excluded from the SLEs while all remaining care bits in the selected power-aware groups are considered static and need to be included into the SLEs using their augmented equations as described in Example 4. In this way, the original SLEs is partitioned into SLEs based on static variables and SLEs based on dynamic variables. The unconstrained encoding continues until the number of the enabled power-aware groups is smaller than a specified limit and all static variables are assigned to a specific value. Encoding conflicts in the SLEs based on dynamic variables can be easily identified using a graph in accordance with the previous embodiments. During constrained encoding, all necessary scan cell assignments can be easily derived by SLEs based on dynamic variables using quadruplets for each successfully generated test cube. The static test stimulus is enabled for all scan cells while the dynamic test stimulus is enabled for a subset of power-aware groups. As a result, toggling in decompressed test stimulus may appear only in enabled power-aware groups.
EXAMPLE 5
[0085] FIG.14 shows four scan chains, the corresponding triplets (x,y,z) of each scan chain which are coupled to the power-aware ADC(3,4) and an ordered set of care bits c.sub.0, c.sub.1, . . . ,c.sub.4 as they are generated during ATPG. Let each of the scan chains under consideration belong to different power-aware group. The goal of the power-aware dynamic encoding is to enable as few power-aware groups as possible. The original SLEs is shown in
[0086] A person skilled of the art may improve the encoding flexibility, the encoding efficiency or other desirable properties of the decompressor scheme by changing the scope or purpose of variables from a tester. For example, one or more dynamic variables may be used or reused as static variables or control variables within one or more test patterns. An example of such an approach is described in the next paragraph.
[0087] Experimental Evaluation
[0088] Dynamic encoding was evaluated based on ADC(N,5,T). The ADC(N,5,T) consists of five shift registers of length N. Shift registers R.sub.0, R.sub.1, R.sub.3 and R.sub.4 are configured as circular registers. Circular registers R.sub.0 and R.sub.1 receive 2N-bit static seed per pattern and circular registers R.sub.3 and R.sub.4 receive 2N-bit dynamic seed per T shift cycles through 2N-bit shadow register where TN. Each seed contains one redundant bit that is shifted into shift register R.sub.2 and all the redundant bits are treated as static variables by the encoding algorithm.
[0089] In the performed experiment, the dynamic and static encoding are evaluated based on ten industrial cores presented in Table 1. First, the highest compression ratio for each core is determined such that a test coverage loss w.r.t. a legacy scan mode is within 0.01 percent. The number of the static and dynamic variables, the encoding efficiency, TATR, the number of patterns and test coverage difference w.r.t. the legacy scan mode of the ADC for each core is given in columns 5, 6, . . . and 10, respectively. A perfect linear decompressor is simulated by ADC(15,5,1) which receives 2N-bit dynamic seed per shift cycle. In this way, the probability of an encoding conflict of the perfect decompressor for the first k care bits is extremely low where k is the number of variables for the ADC(15,5,15). After the first k care bits for the perfect linear decompressor, each care bit is considered encodable with probability 0.5. As a result, the encoding efficiency of the perfect decompressor is very likely be equal to or larger than 1. TATR for the static and dynamic encoding is determined for different compression ratios (1, 2, 3 and 4 more variables w.r.t. the highest compression ratio). For the static encoding, an encoding conflict exists if a test cube cannot be encoded. Typically, this is an exit condition for fault merging that occurs during dynamic compaction. Table 2 summarizes for all cores the number variables, the encoding efficiency, TATR for the dynamic encoding, as well as TATR and test coverage differences in percent w.r.t. legacy scan mode for dynamic encoding and the static encoding with 1, 10 and 100 encoding conflicts, respectively. Based on these results, the dynamic encoding outperforms the static encoding for all compression ratios. For compression ratio 1, 2, 3 and 4, the dynamic encoding achieves 34, 17, 8 and 5 percent higher TATR than the static encoding, respectively. Also, the dynamic encoding consistently achieves higher test coverage than the static encoding. For more than two decades, the key objective for synthesis of linear decompressors is to maximize the encoding efficiency. This experiment demonstrates that the dynamic encoding is a key feature for optimizing the performance of the linear decompressors. In this sense, this document defines a new paradigm for synthesis of linear decompressors.
[0090] Dynamic power-aware encoding is evaluated based on the ADC(15,4,15) constructed based on Procedure 1. The experimental results confirmed that, for example, seventy percent reduction in the toggling rate in the decompressed test stimulus is achievable by reasonable overhead (ATPG time, hardware overhead and pattern inflation) typically without degradation of compression ratio. The performed experimental evaluation confirms that the described embodiments can support aggressive scan compression, efficient dynamic pattern compaction and a reduction of toggling rate in the decompressed test stimulus.
[0091]
[0092] Computer system 110 typically includes a processor subsystem 114 which communicates with a number of peripheral devices via bus subsystem 112. These peripheral devices may include a storage subsystem 124, comprising a memory subsystem 126 and a file storage subsystem 128, user interface input devices 122, user interface output devices 120, and a network interface subsystem 116. The storage subsystem 128 includes non-transitory memory storing computer programs, and resources to configure the data processing systems as an EDA tool for test pattern generation, encoding, simulation, fault simulation and diagnosis for decompressed test stimuli with low toggling rate as described herein. The tool can comprise a data processor and storage configured to provide computer program instructions of the tool. Alternatively, the tool can comprise software modules on a computer readable medium in a nonvolatile manner.
[0093] The input and output devices allow user interaction with computer system 110. Network interface subsystem 116 provides an interface to outside networks, including an interface to communication network 118, and is coupled via communication network 118 to corresponding interface devices in other computer systems. Communication network 118 may comprise many interconnected computer systems and communication links. These communication links may be wireline links, optical links, wireless links, or any other mechanisms for communication of information, but typically it is an IP-based communication network. While in one embodiment, communication network 118 is the Internet, in other embodiments, communication network 118 may be any suitable computer network.
[0094] The physical hardware component of network interfaces are sometimes referred to as network interface cards (NICs), although they need not be in the form of cards: for instance they could be in the form of integrated circuits (ICs) and connectors fitted directly onto a motherboard, or in the form of macrocells fabricated on a single integrated circuit chip with other components of the computer system.
[0095] User interface input devices 122 may include a keyboard, pointing devices such as a mouse, trackball, touchpad, or graphics tablet, a scanner, a touch screen incorporated into the display, audio input devices such as voice recognition systems, microphones, and other types of input devices. In general, use of the term input device is intended to include all possible types of devices and ways to input information into computer system 110 or onto computer network 118.
[0096] User interface output devices 120 may include a display subsystem, a printer, a fax machine, or non visual displays such as audio output devices. The display subsystem may include a cathode ray tube (CRT), a flat panel device such as a liquid crystal display (LCD), a projection device, or some other mechanism for creating a visible image. The display subsystem may also provide non visual display such as via audio output devices. In general, use of the term output device is intended to include all possible types of devices and ways to output information from computer system 110 to the user or to another machine or computer system.
[0097] Storage subsystem 124 stores the basic programming and data constructs that provide the functionality of certain embodiments. For example, the various modules implementing the functionality of certain embodiments may be stored in storage subsystem 124. These software modules are generally executed by processor subsystem 114.
[0098] Memory subsystem 126 typically includes a number of memories including a main random access memory (RAM) 130 for storage of instructions and data during program execution and a read only memory (ROM) 132 in which fixed instructions are stored. File storage subsystem 128 provides persistent storage for program and data files, and may include a hard disk drive, a floppy disk drive along with associated removable media, a CD ROM drive, an optical drive, or removable media cartridges. The databases and modules implementing the functionality of certain embodiments of the invention may have been provided on a computer readable medium such as one or more CD-ROMs, and may be stored by file storage subsystem 128. The host memory 126 contains, among other things, computer instructions which, when executed by the processor subsystem 114, cause the computer system to operate or perform functions as described herein. As used herein, processes and software that are said to run in or on the host or the computer, execute on the processor subsystem 114 in response to computer instructions and data in the host memory subsystem 126 including any other local or remote storage for such instructions and data.
[0099] Bus subsystem 112 provides a mechanism for letting the various components and subsystems of computer system 110 communicate with each other as intended. Although bus subsystem 112 is shown schematically as a single bus, alternative embodiments of the bus subsystem may use multiple busses.
[0100] Computer system 110 itself can be of varying types including a personal computer, a portable computer, a workstation, a computer terminal, a network computer, a television, a mainframe, a server farm, or any other data processing system or user device. Due to the ever changing nature of computers and networks, the description of computer system 110 is intended only as a specific example for purposes of illustrating the preferred embodiments of the present invention. Many other configurations of computer system 110 are possible having more or less components than the computer system.
[0101] In addition, while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes herein are capable of being distributed in the form of a computer readable medium of instructions and data and that the invention applies equally regardless of the particular type of signal bearing media actually used to carry out the distribution. As used herein, a computer readable medium is one on which information can be stored and read by a computer system. Examples include a floppy disk, a hard disk drive, a RAM, a CD, a DVD, flash memory, a USB drive, and so on. The computer readable medium may store information in coded formats that are decoded for actual use in a particular data processing system. A single computer readable medium, as the term is used herein, may also include more than one physical item, such as a plurality of CD ROMs or a plurality of segments of RAM, or a combination of several different kinds of media. As used herein, the term does not include mere time varying signals in which the information is encoded in the way the signal varies over time.
[0102]
[0103] Aspects of the invention can be used to support an integrated circuit design flow. At a high level, the process starts with the product idea (step 200) and is realized in an EDA (Electronic Design Automation) software design process (step 210). When the design is finalized, it can be taped-out (step 227). At some point after tape out, the fabrication process (step 250) and packaging and assembly processes (step 260) occur resulting, ultimately, in finished integrated circuit chips (result 270).
[0104] The EDA software design process (step 210) is itself composed of a number of steps 212-230, shown in linear fashion for simplicity. In an actual integrated circuit design process, the particular design might have to go back through steps until certain tests are passed. Similarly, in any actual design process, these steps may occur in different orders and combinations. This description is therefore provided by way of context and general explanation rather than as a specific, or recommended, design flow for a particular integrated circuit.
[0105] A brief description of the component steps of the EDA software design process (step 210) will now be provided.
[0106] System design (step 212): The designers describe the functionality that they want to implement, they can perform what-if planning to refine functionality, check costs, etc. Hardware-software architecture partitioning can occur at this stage. Example EDA software products from Synopsys, Inc. that can be used at this step include Model Architect, Saber, System Studio, and DesignWare products.
[0107] Logic design and functional verification (step 214): At this stage, the VHDL or Verilog code for modules in the system is written and the design is checked for functional accuracy. More specifically, the design is checked to ensure that it produces correct outputs in response to particular input stimuli. Example EDA software products from Synopsys, Inc. that can be used at this step include VCS, VERA, DesignWare, Magellan, Formality, ESP and LEDA products.
[0108] Synthesis and design for test (step 216): Here, the VHDL/Verilog is translated to a netlist. The netlist can be optimized for the target technology. Additionally, the design and implementation of tests to permit checking of the finished chip occurs. Example EDA software products from Synopsys, Inc. that can be used at this step include Design Compiler, Physical Compiler, DFT Compiler, Power Compiler, FPGA Compiler, TetraMA1, and DesignWare products.
[0109] Netlist verification (step 218): At this step, the netlist is checked for compliance with timing constraints and for correspondence with the VHDL/Verilog source code. Example EDA software products from Synopsys, Inc. that can be used at this step include Formality, PrimeTime, and VCS products.
[0110] Design planning (step 220): Here, an overall floor plan for the chip is constructed and analyzed for timing and top-level routing. Example EDA software products from Synopsys, Inc. that can be used at this step include Astro and Custom Designer products.
[0111] Physical implementation (step 222): The placement (positioning of circuit elements) and routing (connection of the same) occurs at this step, as can selection of library cells to perform specified logic functions. Example EDA software products from Synopsys, Inc. that can be used at this step include the Astro, IC Compiler, and Custom Designer products.
[0112] Analysis and extraction (step 224): At this step, the circuit function is verified at a transistor level, this in turn permits what-if refinement. Example EDA software products from Synopsys, Inc. that can be used at this step include AstroRail, PrimeRail, PrimeTime, and Star-RC1T products.
[0113] Physical verification (step 226): At this step various checking functions are performed to ensure correctness for: manufacturing, electrical issues, lithographic issues, and circuitry. Example EDA software products from Synopsys, Inc. that can be used at this step include the Hercules product.
[0114] Tape-out (step 227): This step provides the tape out data to be used (after lithographic enhancements are applied if appropriate) for production of masks for lithographic use to produce finished chips. Example EDA software products from Synopsys, Inc. that can be used at this step include the IC Compiler and Custom Designer families of products.
[0115] Resolution enhancement (step 228): This step involves geometric manipulations of the layout to improve manufacturability of the design. Example EDA software products from Synopsys, Inc. that can be used at this step include Proteus, ProteusAF, and PSMGen products.
[0116] Mask data preparation (step 230): This step provides mask-making-ready tape-out data for production of masks for lithographic use to produce finished chips. Example EDA software products from Synopsys, Inc. that can be used at this step include the CATS(R) family of products.
[0117] Parallel flow. The integrated circuit manufacturing flow includes a parallel flow, as follows:
[0118] (1) Develop individual process steps for manufacturing the integrated circuit. This can be modeled with EDA tools such as the Synopsys tools Sentaurus Process, Sentaurus Topography, and Sentaurus Lithography. The input information here is the process conditions like temperature, reactor ambient, implant energy, etc. The output information is the change in geometry or doping profiles or stress distribution.
[0119] (2) Integrate the individual process steps into the complete process flow. This can be modeled with EDA tools such as the Synopsys tool Sentaurus Process. The input information here is the collection of the process steps in the appropriate sequence. The output is the geometry, the doping profiles, and the stress distribution for the transistors and the space in between the transistors.
[0120] (3) Analyze performance of the transistor manufactured with this process flow. This can be done with EDA tools such as the Synopsys tool Sentaurus Device. The input information here is the output of step (3) and the biases applied to transistor terminals. The output information is the currents and capacitances for each bias combination. For silicon based processes or structures, much of the information about the materials needed for simulation of electrical behavior using these tools is well known. For other materials, it may be necessary to generate or provide material parameters like atomic structure, energy, and the like in order to support device and process scale simulations. An EDA tool for generating parameters like this is described herein.
[0121] (4) If necessary, modify the process steps and the process flow to achieve the desired transistor performance. This can be done iteratively by using tools such as the Synopsys tools mentioned above.
[0122] Once the process flow is ready, it can be used for manufacturing multiple circuit designs coming from different fabless companies. The EDA flow 212-230 will be used by such fabless companies. The parallel flow described here is used at a foundry to develop a process flow that can be used to manufacture designs coming from their fabless customers. A combination of the process flow and the masks 230 are used to manufacture any particular circuit. If the integrated circuit is manufactured at an IDM (integrated device manufacturer) company instead of the combination of a fables company and a foundry, then both parallel flows described above are done at the same IDM company.