A system and associated data structure that can be utilized within a chip design platform to define the structure of an mbist architecture. A system for generating a memory built in self test (mbist) design file in described, including a tool for processing an organization file (org file), wherein the org file includes lines of code that dictate a structure of the mbist design file and conform to a data structure defined by the tool; wherein said data structure provides an infrastructure to describe: associations between mbist components at a design level; associations between mbist components and hierarchical test ports at the design level; and a serial order of daisy chains among mbist components within the design level.
|
5. A system for generating a memory built in self test (mbist) design file, comprising:
a tool for processing an organization file (org file), wherein the org file includes lines of code that dictate a structure of the mbist design file and conform to a data structure defined by the tool;
wherein said data structure provides an infrastructure to describe:
associations between mbist components at a design level;
associations between mbist components and hierarchical test ports at the design level;
associations between mbist components at the design level and test ports of a hierarchically designed module contained within said design level, in which mbist components and test ports already exist within said hierarchically designed module;
associations between hierarchical test ports at the design level and test ports of a hierarchically designed module contained within the design level, in which mbist components and test ports already exist within the hierarchically designed module; and
a serial order of daisy chains wherein said daisy chains traverse at least one of: mbist components within said design level, and hierarchical boundaries of said hierarchically designed modules contained within said design level, such that said specific arrangement of a desired mbist architecture organization for a design level is completely described with specific coding of said data structure into said org file.
1. A data structure,
wherein said data structure is stored on a non-transitory computer readable storage medium and is used to describe a specific arrangement for a memory built-in self-test (mbist) architecture at a design level, and wherein said specific arrangement is coded into an mbist organization file (org file), such that content of said org file conforms to said data structure,
wherein said data structure provides a means to describe:
associations between mbist components at said design level,
associations between mbist components and hierarchical test ports of said design level,
associations between mbist components at said design level and test ports of hierarchically designed modules contained within said design level, in which mbist components and test ports already exist within said hierarchically designed modules,
associations between hierarchical test ports at said design level and test ports of hierarchically designed modules contained within said design level, in which mbist components and test ports already exist within said hierarchically designed modules,
a serial order of daisy chains, wherein said daisy chains may traverse: mbist components within said design level, and hierarchical boundaries of said hierarchically designed modules contained within said design level, such that said specific arrangement of a desired mbist architecture organization for a design level is completely described with specific coding of said data structure into said org file.
9. A program product stored on a non-transitory computer readable storage medium for generating a memory built in self test (mbist) design file when processed by a design tool, comprising:
program code for implementing an organization file (org file), wherein the org file encodes a structure of the mbist design file and conforms to a data structure defined by the design tool;
wherein said data structure provides an infrastructure to describe:
associations between mbist components at a design level;
associations between mbist components and hierarchical test ports at the design level;
associations between mbist components at the design level and test ports of a hierarchically designed module contained within said design level, in which mbist components and test ports already exist within said hierarchically designed module;
associations between hierarchical test ports at the design level and test ports of a hierarchically designed module contained within the design level, in which mbist components and test ports already exist within the hierarchically designed module; and
a serial order of daisy chains wherein said daisy chains traverse at least one of: mbist components within said design level, and hierarchical boundaries of said hierarchically designed modules contained within said design level, such that said specific arrangement of a desired mbist architecture organization for a design level is completely described with specific coding of said data structure into said org file.
2. The data structure of
3. The data structure of
4. The data structure of
6. The system of
7. The system of
8. The system of
10. The program product of
11. The program product of
12. The program product of
|
The present invention relates to implementing Memory Built-In Self Test (MBIST) architectures, and more particularly to a data structure that can be inputted into a design tool for describing a specific arrangement of an MBIST architecture.
Integrated circuit (IC) chips are typically designed within a software platform, e.g., using a register transfer language (RTL) tool. Along with laying out the functional components of the chip, an MBIST architecture arrangement must also be incorporated into the design to provide Design For Test (DFT) capabilities. As chip designs become increasingly more complex, MBIST architectures likewise need to evolve.
The MBIST architectural arrangement may often be driven by the needs of a particular customer. For instance, a customer may define which memories will share a given MBIST engine. For system test partitioning, especially related to the use of voltage islands, the customer may decide to partition the embedded memories into multiple MBIST partitions, in which case they must also define which memories will belong to each memory BIST partition. The customer may also decide, in the case of multiple voltage islands, to divide the memories into multiple fuse partitions.
It is, therefore, becoming increasingly more important to offer methods to help a customer streamline the DFT insertion of MBIST blocks into a design to provide the customer's desired MBIST architectural arrangement.
Disclosed is a system and data structure that can be utilized within a chip design platform to define the structure, for a particular arrangement, of an MBIST architecture. In a first aspect, the invention provides a data structure, wherein said data structure is used to describe a specific arrangement for a memory built-in self-test (MBIST) architecture at a (e.g., customer specified) design level, and wherein said specific arrangement is coded into a MBIST Organization File (Org File), such that the content of said Org File conforms to said data structure, wherein said data structure provides a means to describe: associations between MBIST components at said design level, associations between MBIST components and hierarchical test ports of said design level, associations between MBIST components at said design level and test ports of hierarchically designed modules (e.g., as specified by the customer) contained within said design level, in which MBIST components and test ports already exist within said hierarchically designed modules, associations between design hierarchy test ports at said design level and test ports of hierarchically designed modules contained within said design level, in which MBIST components and test ports already exist within said hierarchically designed modules, a serial order of daisy chains, wherein said daisy chains may traverse: MBIST components within said design level, and hierarchical boundaries of said hierarchically designed modules contained within said design level, such that said specific arrangement of a desired MBIST architecture organization for a design level is completely described with specific coding of said data structure into said Org File.
In a second aspect, the invention provides a system for generating a memory built in self test (MBIST) design file, comprising: a tool for processing an organization file (Org File), wherein the Org File includes lines of code that dictate a structure of the MBIST design file and conform to a data structure defined by the tool; wherein said data structure provides an infrastructure to describe: associations between MBIST components at a design level; associations between MBIST components and hierarchical test ports at the design level; and a serial order of daisy chains among MBIST components within the design level.
In a third aspect, the invention provides a program product stored on a computer readable storage medium for generating a memory built in self test (MBIST) design file when processed by a design tool, comprising: program code for implementing an organization file (Org File), wherein the Org File encodes a structure of the MBIST design file and conforms to a data structure defined by the design tool; wherein said data structure provides an infrastructure to describe: associations between MBIST components at a design level; associations between MBIST components and hierarchical test ports at the design level; and a serial order of daisy chains among MBIST components within the design level.
These and other features of this invention will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings.
The drawings are merely schematic representations, not intended to portray specific parameters of the invention. The drawings are intended to depict only typical embodiments of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like reference numbering represents like elements.
Described herein is a system and associated data structure that allows a designer to easily describe a particular memory BIST (MBIST) architectural arrangement. Namely, the system allows the designer to input an organization file (Org File) that conforms to the data structure, in which the Org File is utilized to describe a desired MBIST arrangement. The Org File can be read in and parsed by a software tool that then outputs a “Design File” that will be used by a vendor software tool to perform an actual DFT insertion, into the customer's RTL or synthesized gate-level netlist, of the specified MBIST intellectual property (IP) components and perform the interconnections of the various MBIST IP necessary to implement the designer's desired MBIST architecture arrangement. This DFT insertion may take place in either the RTL version (pre-synthesis) or gate-level netlist version (post-synthesis) of the design.
For the purposes of this disclosure the term “customer” refers to any entity for which an MBIST arrangement and/or chip is being designed. In a common situation, this process may be done by an ASIC vendor for a third party. However, it is understood that a customer may also comprise a separate group within a common company.
Also, for the purposes of this disclosure, terms “MBIST architecture,” “MBIST arrangement,” “MBIST architectural arrangement,” and “MBIST and Repair architecture” are to be considered synonymous and may be used interchangeably throughout this description. It should be also noted that the use of the word “hierarchy” is utilized in two separate contexts, namely, the MBIST architectural hierarchy as well as a customer's design hierarchy. The MBIST architectural hierarchy refers to the parent-child or sibling relationships between the various BIST IP components of the MBIST architecture. Design hierarchy implies the notion of the customer constructing their chip logic design as separate design blocks, and then integrating these separate design blocks into higher level design blocks (i.e., design hierarchy), until finally all of these blocks are represented in the overall chip design. For purposes of clarity, the terms “MBIST architectural hierarchy” and “design hierarchy” are used to describe separate concepts that are readily understood by one well-versed in the field of semiconductor logic design or design-for-test thereof.
The present approach provides a data structure that allows the end user to describe such a hierarchy using an Org File that can read by an MBIST insertion software tool.
At the next level down in the MBIST architecture hierarchy, there are multiple branches, and each branch of the MBIST architecture hierarchy is completely listed, prior to listing the components of the next branch. In this example there are six branches from the BISTCNTL09 to its associated BIST engines. Each BIST engine branch is completely listed (BIST engine and subordinate memory wrappers), before starting to list the next branch of the MBIST architecture hierarchy.
The order of the various components in the list also relates to the positioning of the various components in the various daisy chains. In this example, there are multiple BIST engines associated with BISTCNTL09 (BC1) and they are listed in order of (by hierarchical instance name) W11—1_BIST1D, W12—1_BIST2R, W21—1_BIST1S, W22—1_BIST3P, W31—1_BIST2R, W32—1_BIST4P, which corresponds to the order as they are connected in the BISTCNTL-BIST daisy chain.
The ordering of the list takes into account the MBIST architecture hierarchy, for each complete branch description, with the branch order corresponding to the order of the daisy chain through the component where the branch starts. In the example of
Also notice that at each level of the MBIST architecture hierarchy, all lower branches are exhausted, prior to ascending the hierarchy back to FC2 and then to the next branch starting at FC3. In other words, all sub-components of a BIST IP block are listed, prior to continuing to the next BIST IP (FC3 in this example) in the daisy chain.
As shown in these examples, the Org File order follows the upper-most daisy chain order, descending and tracing through into each lower branch and lower daisy chain, before resuming the trace to the next block in the upper-most daisy chain. This protocol is followed when creating the Org File at every level of the MBIST and Repair architecture.
When moving a FUSECNTL in the list, all of its subordinate components must also move with it. If this does not happen, then the components which are left behind would end up being associated with a different FUSECNTL instance. Coding the Org File must conform to the following rules. A FUSECNTL component must be followed by at least one BISTCNTL. Each BISTCNTL must be followed by at least one BIST engine. Each BIST engine must be followed by at least one memory wrapper. The keywords at the beginning of each line in the Org File are used by the Org File processing software to identify each component as belonging to a certain position in the MBIST architecture hierarchy. As such, these keywords are used by the software to insure that the Org File is being coded in a legal fashion, such that it conforms to what is allowed within the constraints of the MBIST architecture rules.
Each of the previous examples are cases where all MBIST components are inserted by running the MBIST insertion software at the top level of the customer's chip design hierarchy. However, the data structure and Org File allow for hierarchical design MBIST insertion, where the MBIST insertion software may be run on lower level blocks of design hierarchy, and then also at the top-level of design hierarchy.
In particular,
Note that there is an Org File defined for each block of design hierarchy where MBIST insertion is to be performed, as shown in
In the lower level blocks (Block1 and Block2) shown in
Within the current module description shown in
The set of test ports 30 associated with “view=WRAP_FUSECNTL_ref1” are indicated with dotted circles in
Note also that there are actually two views of type FUSECNTL associated with Block1. Also note within the Org File for Block1, that there are two sets of “view=/end_view” statements, each one corresponding to the two FUSECNTL views shown in
In the Org File for Block2 there is a CCECID type of view defined through the use of the statement “view=WRAP_CCECID_ref1”. The first component listed under the “view=” statement is an instance of a FUSECNTL. The test ports 34 associated with this view are indicated with slashed circles in
The “ref” construct is used to indicate connections from a component or view of the current design hierarchy module, to test ports associated with a view on a lower level BIST block. In the Org File for Chip_Top in
The position of the first ref statement (1st in the list), “ref block1::WRAP_FUSECNTL_ref1” indicates that all subordinate daisy chain components of the first FUSECNTL view of Inst_A are to be connected first in any relevant daisy chain ordering. The position of the second ref statement (2nd in the list), “ref Block1::WRAP_FUSECNTL_ref2” indicates that all subordinate daisy chain components of the second FUSECNTL view of Inst_A are to be connected next in any relevant daisy chain ordering.
This can be seen in
Notice also that for both of these daisy chains, since the “ref” statement for the “WRAP_CC_ECID_ref1” view of Block 2 appears last in the Org File, Block2 appears last in the relevant daisy chains. In this example, the relevant daisy chains for Block2 are the CCECID-FUSECNTL and the CCECID-BISTCNTL daisy chains.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including Instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.
Ouellette, Michael R., Sprague, Douglas E., Monroe, Craig M., Varghese, Georgy S.
Patent | Priority | Assignee | Title |
10095822, | Dec 12 2016 | Cadence Design Systems, INC | Memory built-in self-test logic in an integrated circuit design |
10192013, | Dec 12 2016 | Cadence Design Systems, INC | Test logic at register transfer level in an integrated circuit design |
10685730, | Mar 20 2018 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Circuit including efficient clocking for testing memory interface |
8661399, | Aug 06 2012 | CAVIUM INTERNATIONAL; MARVELL ASIA PTE, LTD | Built-in-self-test (BIST) organizational file generation |
9286181, | Jul 31 2013 | CAVIUM INTERNATIONAL; MARVELL ASIA PTE, LTD | Apparatus for capturing results of memory testing |
Patent | Priority | Assignee | Title |
6456961, | Apr 30 1999 | Mentor Graphics Corporation | Method and apparatus for creating testable circuit designs having embedded cores |
6560740, | Aug 03 1999 | Advanced Micro Devices, INC | Apparatus and method for programmable built-in self-test and self-repair of embedded memory |
6671843, | Nov 13 2000 | Siemens Industry Software Inc | Method for providing user definable algorithms in memory BIST |
7284166, | Aug 06 2004 | STMICROELECTRONICS S R L | Programmable multi-mode built-in self-test and self-repair structure for embedded memory arrays |
7360134, | Sep 21 2004 | Oracle America, Inc | Centralized BIST engine for testing on-chip memory structures |
7434131, | Nov 18 2004 | Siemens Industry Software Inc | Flexible memory built-in-self-test (MBIST) method and apparatus |
7603603, | May 31 2005 | STMICROELECTRONICS PVT LTD | Configurable memory architecture with built-in testing mechanism |
20020194558, | |||
20050273683, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Apr 04 2011 | VARGHESE, GEORGY S | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 026220 | /0605 | |
Apr 04 2011 | SPRAGUE, DOUGLAS E | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 026220 | /0605 | |
Apr 04 2011 | OUELLETTE, MICHAEL R | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 026220 | /0605 | |
Apr 04 2011 | MONROE, CRAIG M | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 026220 | /0605 | |
Apr 05 2011 | International Business Machines Corporation | (assignment on the face of the patent) | / | |||
Jun 29 2015 | International Business Machines Corporation | GLOBALFOUNDRIES U S 2 LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 036550 | /0001 | |
Sep 10 2015 | GLOBALFOUNDRIES U S INC | GLOBALFOUNDRIES Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 036779 | /0001 | |
Sep 10 2015 | GLOBALFOUNDRIES U S 2 LLC | GLOBALFOUNDRIES Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 036779 | /0001 | |
Nov 27 2018 | GLOBALFOUNDRIES Inc | WILMINGTON TRUST, NATIONAL ASSOCIATION | SECURITY AGREEMENT | 049490 | /0001 | |
Aug 21 2019 | GLOBALFOUNDRIES Inc | GLOBALFOUNDRIES U S INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 050122 | /0001 | |
Nov 05 2019 | GLOBALFOUNDRIES U S INC | MARVELL INTERNATIONAL LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 051070 | /0625 | |
Dec 31 2019 | CAVIUM INTERNATIONAL | MARVELL ASIA PTE, LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 053475 | /0001 | |
Dec 31 2019 | MARVELL INTERNATIONAL LTD | CAVIUM INTERNATIONAL | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 052918 | /0001 | |
Nov 17 2020 | WILMINGTON TRUST, NATIONAL ASSOCIATION | GLOBALFOUNDRIES Inc | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 054636 | /0001 |
Date | Maintenance Fee Events |
Jan 20 2016 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Feb 07 2020 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Jan 30 2024 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Aug 07 2015 | 4 years fee payment window open |
Feb 07 2016 | 6 months grace period start (w surcharge) |
Aug 07 2016 | patent expiry (for year 4) |
Aug 07 2018 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 07 2019 | 8 years fee payment window open |
Feb 07 2020 | 6 months grace period start (w surcharge) |
Aug 07 2020 | patent expiry (for year 8) |
Aug 07 2022 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 07 2023 | 12 years fee payment window open |
Feb 07 2024 | 6 months grace period start (w surcharge) |
Aug 07 2024 | patent expiry (for year 12) |
Aug 07 2026 | 2 years to revive unintentionally abandoned end. (for year 12) |