Method and apparatus for converting field-programmable gate array implementations into mask-programmable logic cell implementations
This is a continuation of application Ser. No. 08/175,658 filed on Dec. 30, 1993 now abandoned. 
    
    
     BACKGROUND OF INVENTION 
     1. Field Of Invention 
     The present invention relates generally a method and apparatus for converting field-programmable logic cell implementations into mask-programmable logic cell implementations. More particularly, the present invention relates to an improved method and apparatus for converting field-programmable gate array (FPGA) implementations into mask-programmable gate array (MPGA) implementations or into mask-programmable standard cell (MPSC) implementations. 
     2. Brief Description Of The Prior Art 
     Electronic devices, such as integrated circuit (IC) chips, are presently used in diverse fields of human endeavor, including, for example, manufacturing, industry, science, defense, recreation, and education. Practically speaking, the purpose of such devices is to perform various functions upon the signals provided to the terminals (i.e., pins) thereof. 
     From a design standpoint, each device is characterized by the functions it performs, namely: relating (i.e., &#34;mapping&#34;) its input signals to its output signals. In the case of digital electronic type devices, the input and output signals are constrained to discrete (i.e., binary) values or variables, and the number of mappings (i.e., functions) that can be performed between the digital input and output signals of the device is limited by the number of possible states that the device may attain and the state transitions that the device may undergo. The various mappings performed between the digital input and output variables of devices are universally described using Boolean algebra, and often these mappings are referred to as Boolean functions. The manner in which these Boolean functions are physically implemented or realized for any particular &#34;digital electronic design&#34; necessarily involves the use of simpler components (such as logic gates) which are capable of performing basic Boolean functions. The resulting logic circuits are typically simplified using conventional algebraic simplification methods, Karnaugh maps, truth tables and the like. Thus, by combining and interconnecting the inputs and outputs of a number of such logic gates in a particular manner, any particular digital logic design can be physically realized. 
     In general, the underlying technology that is to used to implement a particular digital logic design determines the types of logic gates that will be available for combination and interconnection to realize the input-output functions of the digital logic design. Thus in theory, there are an infinite number of ways in which to implement a particular digital logic design characterized by a specified set of Boolean expressions. The object in most cases, of course, is to find an implementation that realizes the functions of the design using a minimal number of logic gates. 
     Upon completion of a specific digital logic design, it is necessary to physically implement the digital logic design using an available technology. In recent times, field-programmable gate array (FPGA) devices have enjoyed great popularity in low-risk prototyping and low-volume production applications. 
     Structurally, each field-programmable gate array device comprises a number of basic components realized on a silicon substrate that is contained in a chip package, namely: the pins on the chip package; an array of configurable logic blocks (CLB) for performing basic logic operations; a set of input/output interface blocks (IOB) for interfacing the pins on the chip package with particular CLBs; and programmable interconnect switching gates for performing signal routing functions among the CLBs and the IOBs. 
     Typically, each CLB and IOB has combinational and sequential logic which can be selectively configured to realize a desired logic function defined between the inputs and outputs thereof. Each CLB and IOB also has associated random access memory (RAM) for storing a configuration program that serves to select particular logic functions to be implemented. Similarly, each switching gate also has associated random access memory for storing digital code that serves to effect signal routing among the input and output ports of the CLBs and IOBs. The function of the interconnect switching gates are to facilitate controlled routing of signals among the CLBs and IOBs, as determined by the digital code stored in the random access memory of these switching gates. In order to physically implement (i.e., realize) a particular digital logic design using a FPGA device, all that is required is programming a suitable digital code into the RAM of each utilized CLB, IOB, and switching gate on the silicon substrate of the FPGA device. 
     It will be helpful to describe in greater detail below how a digital logic design is implemented using a conventional FPGA device. 
     As illustrated in Block A of FIG. 1A, the first step in the FPGA implementation method involves generating a digital logic design using, for example, logic synthesis or schematic capture techniques well known in the art. This step provides a set of Boolean logic expressions which fully represent the digital logic design. 
     As indicated at Block B in FIG. 1A, the second step in the method involves using a computer to produce a hardware description of the FPGA implementation. This subprocess requires using a high-level hardware description language that can be interpreted by the computer running the development program. For the Xilinx 2000 and 3000 Series FPGA devices, the FPGA implementation is described using a language specified by the Xilinx Netlist File Format (XNF). Taken together, the set of descriptive statements which describe the components in the FPGA implementation, is referred to as an original &#34;netlist&#34;. Notably, each CLB and IOB description in the original netlist does not have a Logic Model Description, which specifies the logic within each CLB (i.e., subnetwork) and IOB. The syntax of the XNF hardware description language and the Logic Cell Array (LCA) library are described in great detail in the LCA Xilinx Netlist Specification, Version 2.00-Jan. 26, 1989, (69 pages) by Xilinx, Inc. of San Jose, Calif., which is incorporated herein by reference in its entirety. 
     As indicated at Block C in FIG. 1A, the third step of the method involves using the original XNF netlist and the &#34;xnfmap&#34; program from Xilinx in order to map groups of logic in the digital logic design, to CLBs in the FPGA device. This step produces a Logic Cell Array (LCA) description for each CLB and each IOB. The &#34;map21ca&#34; program from Xilinx is then used to produce an LCA description which may include up to 64 CLB descriptions, 60 IOB descriptions, a signal pin-out description, and a clock driver description. 
     As indicated at Block D in FIG. 1A, the fourth step in the method involves using the &#34;lca2xnf&#34; program from Xilinx in order to translate the LCA description into a final FPGA netlist which contains CLB and IOB placement specifications, and signal routing information for the FPGA implementation. The set of XNF statements that realize a CLB description in an exemplary FPGA netlist is shown in FIG. 2. 
     Thereafter, as indicated at Block E in FIG. 1B, computer system 2 executes the &#34;makebits&#34; program from Xilinx using the final FPGA XNF netlist in order to generate &#34;configuration programs&#34; (i.e., digital code) for the random access memories of the CLB, IOB and signal routing components aboard the FPGA device. In essence, the functions of the CLBs, IOBs and interconnect switches are controlled by these programs. These programs are stored in external memory. Upon power up or command, these digital codes are loaded into respective RAM elements, as indicated at Block G, to complete the programming of the FPGA device and thus physically realize the digital logic design. 
     Notably, the FPGA has both advantages and disadvantages. For example, after testing a programmed FPGA device using test vectors, it is easy and inexpensive to modify the original digital logic design and then reprogram the device accordingly. However, typical FPGA implementations have a high piece-part cost, and while suitable for prototyping and low-volume production, are often too expensive for high volume production. Consequently, when the demand for a particular digital logic design exceeds a certain threshold, economic considerations dictate that a different, more economically feasible technology be used to implement the successful digital logic design. 
     The process of implementing the functionality of a FPGA implementation in another digital technology, such as a mask-programmable gate array (MPGA) device is commonly referred to as &#34;migration&#34; or &#34;implementation conversion&#34; and has received much attention in recent times. In general, the conversion process requires mapping logic elements (such as flip-flops) and input/output (I/O) pads in the FPGA device, to their equivalent structures in the MPGA device and then resynthesizing the logic elements using logic elements available in the MPGA Library. However, when it is time to carry out the conversion process, it is often the case that the original designers of the FPGA implementation are not available to assist in the conversion (i.e., migration) of the FPGA implementation to another technology, such as mask-programmable gate array (MPGA) or mask-programmable standard cell (MPSC) technology. 
     In response to the need for FPGA to MPGA implementation conversions, a number of semi-automated conversion processes have been developed and are presently being used in commercial practice. In FIG. 3, a prior art method is shown for converting from an FPGA implementation into a MPGA implementation. As indicated at Block A, the first step of this method involves converting the XNF description of the FPGA implementation (produced by the process of FIG. 1), into a &#34;flat&#34; XNF description of the FPGA implementation. The object of this step is to remove all network level constraints on the FPGA implementation, which are imposed by the CLB boxes in the FPGA netlist. In the resulting &#34;flat&#34; netlist description, only gate-level logic specifications are presented. With this flat description, the logic gates, which were once confined within a CLB in the FPGA implementation, are now free to be regrouped with other logic gates and subsequently relocated on the MPGA substrate. The actual regrouping and relocation of these logic gates will be determined in accordance with the implementation scheme determined by the target technology being used in the conversion. 
     As indicated at Block B of FIG. 3, the second step of the method involves converting the flat FPGA netlist into the desired MPGA netlist for subsequent implementation. Then as indicated at Block C, the method involves using the MPGA netlist and the MPGA Library in order to generate a MPGA geometrical database. Notably, this geometrical database contains place and route information necessary to produce a number of &#34;processing masks&#34; needed to form a composite metalization pattern upon the MPGA substrate. Notably, the composite metalization pattern ultimately programs the device and realizes a MPGA implementation that is functionally equivalent to the FPGA implementation and the original digital logic design. Then at Block D, the MPGA geometrical database is used to produce the processing masks. The final step, indicated at Block E, involves using the produced processing masks to physically deposit the metalization pattern at the interconnect level of the MPGA substrate and thus realize the MPGA implementation. 
     While the above described method of converting from an FPGA implementation to a MPGA implementation has proved useful, it has suffered from a number of serious problems which have been described in detail in following articles: &#34;FPGA Conversion&#34; by Charles H. Small, in Electronic Design News, Jun. 4, 1992, pages 107-116; &#34;FPGA-to-ASIC move takes planning&#34; by Richard Goering, in Electronic Engineering Times, Apr. 27, 1992, Pages 45 and 46; and &#34;AT&amp;T AIC Application Note: Softpath Migrations: Field Programmable Gate Array to Gate Array or Standard Cell&#34;, August, 1992. 
     The most general statement of these problems is provided in the article &#34;FPGA Conversion&#34;, supra. The first problem relates to the fact that each combinational logic block in the FPGA device has associated with it an inherent time delay, which is substantially constant and independent of the particular function being emulated thereby. The second problem relates to the fact that the programmable interconnect points and switching gates, required to perform signal routing operations in the FPGA device, introduce substantial signal delays which oftentimes can change or alter the logic functions being implemented within the device. 
     When implementing desired logic functions in a FPGA device, the above problems are easily handled by modeling these signal delays in the FPGA implementation (i.e., by the introduction of time delay blocks in the FPGA netlist). Notably, these time delays are explicitly represented in the statements used to realize various components described in the netlist. 
     However, when performing FPGA to MPGA implementation conversions using prior art methodologies, there typically is an unpredictable spatial mapping of CLB logic from the FPGA substrate onto the MPGA substrate, as illustrated in schematic representation of FIG. 4. Consequently, it has not been possible to solve the time delay problems described above and, in fact, other timing problems are oftentimes created during the technology conversion process. 
     Thus, there is a great need in the art to provide a method and apparatus for converting a FPGA implementation into a mask-programmable logic cell implementation, such as a MPGA implementation or MPSC implementation, while overcoming the problems associated with prior art systems and processes. 
     OBJECTS AND SUMMARY OF THE PRESENT INVENTION 
     Accordingly, it is a primary object of the present invention to provide a method and system for converting FPGA implementations into a mask-programmable logic cell implementations, such as MPGA or MPSC implementations, while avoiding the problems associated with prior art systems and processes. 
     A further object of the present invention is to provide such a conversion method and system, in which the relative physical placement of configurable logic blocks, network-level signal pathways, and clock distribution trees of the FPGA implementation is preserved on the mask programmable logic cell (MPLC) substrate after the conversion process is completed. By constraining the physical placement of corresponding structures on the MPLC substrate at the network level of the MPLC implementation, the relative signal and clock delays presented during the FPGA implementation are maintained in the MPLC implementation, thereby assuring functional equivalence between the FPGA and MPLC implementations. 
     A further object of the present invention is to provide such a system in the form of a computer-based workstation suitably programmed to provide logic resynthesis, and placement and routing tools necessary to perform the method of the present invention. 
     An even further object of the present invention is to provide very large scale integrated (VLSI) circuit on a semiconductor chip which has been manufactured in accordance with the method of the present invention. 
     These and further objects of the present invention will become apparent hereinafter and in the Claims to Invention. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     For a more complete understanding of the Objects of the Present Invention, the Detailed Description of the Illustrative Embodiments set forth below is to be read in conjunction with the accompanying drawings, wherein: 
     FIGS. 1A and 1B, taken together, show a high level flow chart illustrating the steps performed in the method of a implementing a digital logic design using a conventional FPGA device; 
     FIG. 2 is a set of the XNF statements for a single CLB Description in an exemplary FPGA netlist; 
     FIG. 3 is a high level flow chart illustrating the steps performed during the process of converting a FPGA implementation into a MPGA implementation using a prior art methodology; 
     FIG. 4 is a schematic representation illustrating the prior art process of mapping logic cells in a FPGA implementation into functionally equivalent logic cells in a MPGA implementation using the prior art methodology described in FIG. 3; 
     FIG. 5 is a system block diagram illustrating the components of the programmed machinery of the present invention; 
     FIG. 6 is a schematic diagram of an exemplary FPGA device, showing the configurable logic blocks and the input and output interface blocks interconnected at the network level via programmable interconnect switches; 
     FIG. 7 is a schematic representation of the (logic cell) component placement map for the FPGA device shown in FIG. 6; 
     FIG. 8 is a schematic representation showing the elements of an FPGA netlist for a FPGA implementation of a particular digital logic design; 
     FIG. 8A is a set of the XNF statements for the File Name Description of an exemplary FPGA netlist; 
     FIG. 8B is a set of the XNF statements for a single CLB Description in an exemplary FPGA netlist; 
     FIG. 8C is a set of the XNF statements for a single IOB Description in an exemplary FPGA netlist; 
     FIG. 8D is a set of the XNF statements for a Clock Driver Description in an exemplary FPGA netlist; 
     FIG. 8E is a listing of the components in the FPGA, MPGA, and MPSC Libraries of the illustrated embodiments of the present invention; 
     FIG. 9 is a geometrical plan view of a MPGA substrate preprocessed up to the metalization stage; 
     FIG. 10 is a schematic representation illustrating the process of producing a modified MPGA netlist description from an FPGA netlist of a FPGA implementation for a particular digital logic design; 
     FIG. 11A is a set of the LSL statements for the File Name Description of an exemplary MPGA netlist; 
     FIG. 11B is a set of the LSL statements for a single Soft-CLB Description in an exemplary MPGA netlist; 
     FIG. 11C is a set of the LSL statements for the Soft-CLB Connectivity Description in an exemplary MPGA netlist; 
     FIG. 11D is a set of the LSL statements for the Soft-IOB Connectivity Description in an exemplary MPGA netlist; 
     FIG. 11E is a set of the LSL statements for an A-Clock Distribution Tree Description in an exemplary MPGA netlist; 
     FIG. 11F is a set of the LSL statements for an G-Clock Distribution Tree Description in an exemplary MPGA netlist; 
     FIG. 11G is a set of the LSL statements for an Global Reset Distribution Tree Description in an exemplary MPGA netlist; 
     FIG. 11H is a set of the LSL statements for a CLB Load Description in an exemplary MPGA netlist description; 
     FIG. 12 is a schematic representation illustrating the process of mapping a FPGA implementation into a MPGA implementation using the methodology of the present invention; and 
     FIGS. 13A and 13B, taken together, show a high level flow chart illustrating the steps performed in the process of converting a FPGA implementation into a MPGA implementation using the method of the present invention. 
    
    
     DETAILED DESCRIPTION OF THE ILLUSTRATIVE EMBODIMENTS OF THE PRESENT INVENTION 
     The method and machinery of the present invention will now be described in detail with reference to FIGS. 5 to 14. 
     In general, the method of the present invention can be used to convert any FPGA implementation into any desired MPLC implementation such as, for example, an MPGA or MPSC implementation. For purposes of illustration only, the method and machinery of the present invention will be described in connection with an exemplary digital logic design that has been originally implemented in either a Xilinx 2000 Series FPGA device, Xilinx 3000 Series FPGA device, or an AT&amp;T 3000 Series FPGA device. In a first illustrative embodiment of the present invention, the method is used to convert the FPGA implementation into a functionally equivalent MPGA implementation realized using an AT&amp;T Series ATT656 MPGA Library. In a second illustrative embodiment of the present invention, the method is used to convert the FPGA implementation into a functionally equivalent, MPSC implementation realized using an AT&amp;T Series HS900C Library. It is understood, however, that the method and machinery of the present invention can be practiced using different types of FPGA and MPLC based devices. 
     As illustrated in FIG. 5, the machinery of the present invention 1 comprises a number of integrated subsystems, namely: a computer workstation 2, photolithic mask producing system 3, and metalization layer depositing system 5. Specifically, the primary function of workstation 2 is to perform logic synthesis and resynthesis, component placement and routing, and other functions to be described hereinafter. The function of system 3 is to produce photolithic mask works 4. The primary function of system 5 is to use these produced masks in order to form metalization patterns 6 on &#34;MPGA substrates&#34; (and MPSC substrates) 7. 
     As used hereinafter, it is understood that each &#34;MPGA substrate&#34; has been preprocessed up to the &#34;metalization stage&#34;. In this stage of material processing, the location of each logic gate is predefined, and all that is required to program the MPGA device is to form on the substrate: (i) electrical interconnections for signal routing purposes; and (ii) clock lines for the A-CLK and G-CLK Distribution Trees and the Global Reset Distribution Tree. In order to form these structures by way of conventional metalization processes, it is necessary to first determine the physical dimensions (i.e., areas) and location of these electrical interconnections, and the physical dimensions and location of the clock lines over the surface of the MPGA substrate. As will be described below, this required information is ultimately produced upon completion of the conversion process. 
     As shown in FIG. 5, the workstation 2 comprises a number of integrated system components, namely: one or more central processing units 10 (e.g., microprocessor); program memory storage 11 for storing an operating system program, application programs, and various development and conversion programs (i.e., tools) of the present invention; random access data storage memory (RAM) 12 for storing various data structures utilized during the design and conversion processes; a mass-type data storage memory 13 for storing information regarding the components in the LCA (i.e., FPGA) Library, the MPGA Library, and the MPGA geometrical database; a visual display unit 14 having a visual display screen or surface; a keyboard or other text input device 15; a pointing and selecting device (e.g., mouse or track-ball) 16; and one or more system interfaces 17 for interfacing with mask-generating and metalization depositing machines 3 and 5. As illustrated, each of these system components is operably associated with processor 10 by way of one or more system buses 18 in a manner known in the art. In the preferred embodiment, the operating system is Unix® X-Windows, allowing the processor to support at least two input/output windows, pointing and selecting device 16, and multi-tasking operations. It is understood, however, that other suitable operating system programs can be used with acceptable results. 
     As shown in FIG. 6, FPGA device 20 of the illustrative embodiment comprises an array of CLBS formed on a silicon substrate. In order to provide interconnections between the pins on the chip package of the FPGA device and the input and output ports of the selected CLBs, a ring of IOBs is formed about the CLB array on the FPGA substrate. In the illustrated embodiment, each CLB has both combinational and sequential logic which can be selectively configured as required, by simply programming the RAM associated with the CLB. Similarly, each IOB has both combinational and sequential logic which can be selectively figured as required by simply programming the RAM associated with the IOB. 
     In FIG. 7, there is shown a logic cell map for the FPGA device of the illustrative embodiment. As illustrated, each CLB is assigned a specific location on the silicon substrate which is specified by a row and column address, e.g., AA, BD, etc., as shown. Similarly, each location of IOB is identified by a perimeter address specified by pin number, e.g., P21. 
     In FIG. 9, there is shown a Cartesian (x-y) coordinate system embedded within the plane of a MPGA substrate preprocessed up to the metalization stage. As shown, the physical location of each logic cell (logic gate) on the MPGA substrate is specified by a range of x and y values. Typically, it is necessary to interconnect a number of logic gates on the MPGA substrate in order to realize equivalent logic functions performed by a particular CLB in the FPGA implementation. In the MPGA implementation, this block of logic does not have hard or physically defined boundaries as does its corresponding CLB in the FPGA implementation, and thus it shall be referred to hereinafter and in the claims as a &#34;Soft-CLB&#34;, to indicate its virtual character. In accordance with the present invention, a network (i.e., interconnect) level is defined for the MPGA implementation, and although there are no physical boundaries at the network level of the MPGA implementation, as there is in the case of the FPGA implementation, each Soft-CLB has predefined input and output ports at the network (or interconnect) level. For purposes of practicing the method of present invention, these input and output ports are specified in the Soft-CLB Connectivity Description in the MPGA netlist, shown in FIG. 11C. 
     Similarly, in the MPGA implementation, the equivalent structure for an IOB does not have hard or physically defined boundaries as does its corresponding IOB in the FPGA implementation. Thus the equivalent structure for an IOB in the MPGA implementation shall be referred to hereinafter and in the claims as a &#34;Soft-IOB&#34;, to indicate its virtual character. Thus, for each IOB in the netlist of the FPGA implementation, a &#34;Soft-IOB&#34; is defined in the MPGA netlist. In most implementations, the Soft-IOB is realized by an I/O pad, and sometimes with simple logic level drivers. Also, while combinational and/or sequential logic functions are infrequently required in most common applications, these functionalities are available in most MPGA Libraries. At the network or interconnect level of the MPGA implementation, each Soft-IOB has predefined input and output ports for purposes of practicing the method of present invention. These input and output ports are specified in the Soft-IOB Connectivity Description in the MPGA netlist, shown in FIG. 11D. 
     Referring to FIGS. 13A and 13B, the conversion method of the present invention will now be described in great detail. 
     As indicated at Block A in FIG. 13A, the first step of the method involves performing the present steps shown at Blocks A to D in FIG. 1, in order to produce a final FPGA (XNF) netlist for the FPGA implementation which is to be converted. Notably, the resulting netlist description of this FPGA implementation contains hierarchical information regarding the physical placement of the combinational logic blocks (CLB) on the silicon substrate of the FPGA device. The exemplary FPGA netlist produced from this stage of the conversion process is schematically illustrated at FIG. 10. 
     As shown in FIG. 10, the FPGA netlist contains a number of component descriptions, namely: a file or circuit name; a CLB description for each CLB used in the FPGA implementation; an IOB description for such IOB used in the FPGA implementation; a clock driver description for the clocks used is the FPGA implementation; and a signal pinout description for the pins on the chip package. 
     In general, each CLB description contains a number of informational items, namely: a CLB name; a CLB I/O port description expressed in terms of signal names (e.g., IBLANE --  1); a CLB location description (e.g., AA) expressed in terms of the logic cell array location shown in FIG. 7; and a CLB Logic Model description which describes the FPGA library components used to realize the CLB. Notably, the description of each input port to each CLB includes a signal time-delay field which contains signal routing delay information regarding the signal route portion between the input port of the CLB and the source of the signal provided to the CLB. This signal routing delay information is typically generated by a computer-based &#34;layout&#34;  tool well known in the art, and is used during circuit design simulations conducted in a manner well known in the art. 
     Also, each IOB description contains a number of informational items, namely: an IOB Name; IOB location on the substrate expressed in terms of a pin number; an IOB I/O port description expressed in terms of a signal name (e.g., IBLANE --  1); and an IOB Logic Model description expressed in terms of FPGA Library components. At the network level of the FPGA implementation, each individual group of logic is defined by its CLB name (e.g., IRELAY --  1), and is described by a set of XNF statements listed in the FPGA XNF netlist. Notably, the description of each input port of each IOB that is configured as an output driver, includes a signal time-delay field which contains signal routing delay information regarding the signal route portion between the IOB and the source of the signal provided to IOB. This signal routing delay information is also generated by computer-based &#34;layout tool&#34; described above, and is also used during circuit design simulations. For the AT&amp;T 3020 Series FPGA device having 64 Logic Cells, the hierarchical FPGA XNF netlist contains up to 64 CLB descriptions, 60 IOB descriptions, a clock driver description, and a signal pin-out description. While not shown, sets of XNF statements are used to realize each of the descriptive elements specified in the FPGA netlist shown in FIG. 10. The XNF format for such statements is exemplified in the CLB description of FIG. 8A. 
     As indicated at Block B in FIG. 13A, the next step of the method involves locally performing &#34;logic resynthesis&#34; upon each individual group of logic defined by its CLB Name in the FPGA netlist description (i.e., confined within the CLB in the FPGA implementation). Any conventional logic synthesis technique may be used. This step begins the translation of the FPGA XNF netlist into a MPGA LSL netlist as schematically illustrated in FIG. 10. For a FPGA implementation using the AT&amp;T Series 3020 FPGA device (having 64 Logic Cells), this step of the conversion process yields a &#34;hierarchical&#34; MPGA netlist comprising a number of component descriptions, namely: a file or circuit name which corresponds to the name of the file name selected for the FPGA netlist; a Soft-CLB description for each CLB utilized in the FPGA implementation; a Soft-IOB description for each IOB utilized in the FPGA implementation; a Soft-CLB Connectivity description as described above; and a Soft-IOB Connectivity description as described above. Notably, the A-CLK Signal Distribution Tree description, the G-CLK Signal Distribution Tree description, and a Global Reset Signal Distribution Tree description shown in the MPGA netlist of FIG. 10 are not produced during this stage of the conversion process, but rather must be manually added to the netlist during step C to be described below. 
     As illustrated in FIG. 10, each Soft-CLB description contains a number of informational items, namely: a Soft-CLB I/O description describing the input and output ports thereof; a Soft-CLB Name, which is the same as the location of the corresponding CLB in the FPGA implementation; and a Logic Description Model for each Soft-CLB, specifying the resythesized logic components comprising the subnetwork of the corresponding CLB. The soft-CLB connectivity Description in the MPGA Netlist contains a listing of the Soft-CLBs in the network and a specification for the interconnections of the input and output ports thereof at the network level of the MPGA implementation. Notably, these port interconnections are expressed in terms of signal names (e.g., X00228X illustrated in FIG. 11C). Similarly, the Soft-IOB connectivity description in the MPGA netlist contains a listing of the Soft-IOBs in the network and a specification for interconnections of the input and output ports thereof at the network level of the MPGA implementation. These port interconnections are also expressed in terms of signals illustrated in FIG. 11D. The sets of Logical Simulation Language (LSL) statements used to realize each of these descriptions in the produced MPGA netlist are set forth in FIGS. 11A to 11D. 
     During the logic resynthesis step graphically illustrated for a CLB in FIG. 12, the same XNF code that is used to specify the location of a CLB in the FPGA netlist, is used to specify the Soft-CLB name of its corresponding Soft-CLB in the MPGA netlist. By using the same code to coindex (i) the logic contained within a particular CLB (i.e., subnetwork) in the FPGA netlist and (ii) the resynthesized logic contained within the corresponding Soft-CLB in the MPGA netlist, the method of the present invention guarantees that corresponding blocks of logic in the MPGA implementation are correctly identified and physically placed in the same relative location on the MPGA substrate, during the &#34;placement and routing&#34; step below. As shown in FIG. 10, the CLB Logic Model Description for a particular CLB is used to resynthesize the logic in the corresponding Soft-CLB on the MPGA substrate. 
     As indicated at Block C in FIG. 13A, the third step of the method of the present invention involves modifying the hierarchical MPGA netlist produced during step B above, in order to specify (i.e., list) four additional items of information which relate to particular structures that are required in order to carry out the MPGA implementation in accordance with the present invention. As illustrated in the netlist of FIG. 10, these additional structures are identified as the A-CLK Signal Distribution Tree, the G-CLK Signal Distribution Tree, the Global Reset Signal Distribution Tree, and CLB Clock Loads which are to be formed on the MPGA substrate. 
     The first informational item to be added to the MPGA netlist is a LSL netlist description for the A-CLK Signal Distribution Tree to be realized on the MPGA substrate. As illustrated in LSL statements realizing the A-CLK Signal Distribution Tree description shown in FIG. 11E, each column line in the A-CLK Signal Distribution Tree has a clock driver synthesized from available components (e.g., F102) in the MPGA Library. In the exemplary embodiment, the Tree has 10 columns and thus 10 clock drivers are specified in LSL statement of the A-CLK Signal Distribution Tree. 
     The second informational item to be added to the MPGA Netlist is a LSL netlist description for the G-CLK Signal Distribution Tree to be realized on the MPGA substrate. As illustrated in FIG. 11F, each column line in the G-CLK Signal Distribution Tree has a clock driver synthesized from available components (e.g., F102) in the MPGA Library. In the exemplary embodiment, the Tree has 10 columns and thus 10 clock drivers are specified in the LSL statement of the G-CLK Signal Distribution Tree. 
     The third informational item to be added to the MPGA Netlist is a LSL netlist description for the Global Reset Signal Distribution Tree to be formed on the MPGA substrate. As illustrated in FIG. 11G, each column line in the Global Reset Signal Distribution Tree has a clock driver synthesized from available components (e.g., F102) in the MPGA Library. In the exemplary embodiment, the Tree has 10 columns and thus 10 drivers are specified in the LSL statement for the Global Reset Signal Distribution Tree. 
     The fourth informational item to be added to the MPGA netlist is a LSL description for the CLB Clock Load to be formed on the MPGA substrate for each CLB that was not specified in the FPGA netlist. As illustrated in FIG. 11H, each of these Soft-CLB Loads has input and output ports and a subnetwork description which specifies, at the network (i.e., interconnect) level of the MPGA implementation, the interconnections among the ports of the Soft-CLBs and the lines of either the A-CLK and/or the G-CLK Signal Distribution Trees. Each input port in each soft-CLB is represented by a logic gate which introduces into the clock signal routing network, an impedence (i.e., load) that is substantially equal to the impedence presented to (i.e., &#34;seen by&#34;) the associated clock driver in the FPGA implementation. Typically, each CLB Load is specified in terms of a &#34;distributed&#34; type capacitance and/or resistance measures which are well known in the art. As will be explained in greater detail hereinafter, the purpose of introducing such impedence measures is to ensure that impedence seen by the clock signal drivers in the FPGA implementation, are substantially the same as the impedence measure seen by the clock signal drivers in the MPGA implementation, thereby preserving clock signal skews (and thus, logic functions) between the implementations. Notably, while each CLB load introduces a desired load in the clock signal routing network in the MPGA implementation, the CLB loads do not, however, present any loading effects upon (I/O) signals passing through the (I/O) signal routing network realized at the interconnect level of the MPGA implementation, as their corresponding CLB in the FPGA implementation are not connected to the (I/O) signal routing network formed in the FPGA device. 
     The result of the above four substeps in the method hereof results in a modified hierarchical MPGA netlist for the MPGA implementation. Notably, the resulting MPGA netlist does not contain information regarding the physical placement of the MPGA Library components, or the physical routing of the A-CLK, G-CLK, and Global Reset Signal Distribution Trees described in the MPGA netlist. 
     As indicated at Block D in FIG. 13B, the next step of the method of the present invention involves using the modified hierarchical MPGA netlist produced above and the MPGA Library in order to generate a geometrical database. The function of this geometrical database is to specify where on the MPGA substrate, all of the library components, including the logic gates, clock drivers, clock lines, and Soft-CLB Loads described in the modified MPGA netlist of FIG. 10 are to be physically realized. In general, this process of generating placement and routing information is performed by a &#34;Place and Route&#34; program which uses (i) information specified in the particular component descriptions of the modified MPGA netlist and (ii) geometrical information regarding these particular components specified in the MPGA Library, in order to compute the exact physical placement of each such component on the MPGA substrate, shown in FIG. 9. 
     For each Soft-CLB and CLB Clock Load described in the modified MPGA netlist, the Place and Route program produces a range of x and y coordinates (i.e., geometrical data) which specify a particular area (i.e., region) on the MPGA substrate where logic gates are to be interconnected by a metalization pattern in order to realize the resynthesized combinational and/or sequential logic within the Soft-CLB. The procedure by which this set of coordinate data is computed employs the CLB location (e.g., AA) of the CLB and an offset parameter in order to map the row, column indices of the FPGA substrate, into a spatially corresponding set of x, y coordinates on the MPGA substrate. This one-to-one coordinate conversion process is schematically illustrated in FIG. 12, and is most significant in ensuring that each Soft-CLB is placed in relatively the same location on the MPGA substrate, as its corresponding CLB on the FPGA substrate. This mapping condition guarantees that the same clock signal skews that occur in the MPGA implementation, are relatively the same as those which occur in the FPGA implementation, thus assuring functional equivalence in the resynthesized logic at the network level of MPGA implementation. 
     For each Soft-CLB described in the Soft-CLB Connectivity Description of the MPGA netlist, the program generates a range of x and y coordinates that define the physical placement of metallic interconnections among the input and output ports of the Soft-CLBs at the network level of the MPGA implementation. The procedure by which this set of coordinate data is computed employs the IOB location (e.g., pin number P21) of the IOB and an offset parameter in order to map the pin number on the perimeter of the FPGA substrate, into a spatially corresponding set of x, y coordinates on the perimeter of the MPGA substrate. This is one-to-one coordinate conversion process as schematically illustrated in FIG. 12, and it is also critical in ensuring that each Soft-IOB is placed in relatively the same location on the MPGA substrate, as its corresponding IOB on the FPGA substrate. By maintaining this condition throughout the conversion process, it is thus possible to ensure that the (I/O) signal delays aboard the MPGA implementation are relatively the same as those which occur aboard the FPGA implementation. 
     For each of the drivers in the A-CLK Signal Distribution Tree description, the Place and Route program generates a range of x and y coordinates that specify the physical placement of the clock driver and the metallic clock distribution branch extending from the clock driver to each of the Soft-CLBs and CLB Loads described in the MPGA netlist. The procedure by which this set of coordinate data is computed for each clock driver and distribution branch employs the drivers&#39; name and an empirically determinable offset parameter in order to map the location of each clock driver on the FPGA substrate, into a spatially corresponding set of x, y coordinates on the perimeter of the MPGA substrate. The procedure also uses the driver&#39;s name and offset parameters to map the location of the branches of the A-CLK Signal Distribution Tree on the FPGA substrate, into a set of spatially corresponding x,y coordinates on the MPGA substrate. This is also one-to-one coordinate conversion process and it is also critical in ensuring that each clock driver and its associated clock pulse distribution branch is placed in relatively the same location on the MPGA substrate, as its corresponding clock driver and its associated clock pulse distribution branch on the FPGA substrate. 
     For each of the drivers in the G-CLK Signal Distribution Tree description, the Place and Route program generates a range of x and y coordinates that specify the physical placement of the clock driver and the metallic clock distribution branch extending from the clock driver to each of the Soft-CLBs and CLB Loads described in the MPGA netlist. The procedure by which this set of coordinate data is computed for each clock driver and distribution branch employs the drivers&#39; name and an empirically determinable offset parameter in order to map the location of each clock driver on the FPGA substrate, into a spatially corresponding set of x, y coordinates on the perimeter of the MPGA substrate. The procedure also uses the driver&#39;s name and offset parameters to map the location of the branches of the G-CLK Signal Distribution Tree on the FPGA substrate, into a set of spatially corresponding x, y coordinates on the MPGA substrate. This is also one-to-one coordinate conversion process and it is also critical in ensuring that each clock driver and its associated clock pulse distribution branch is placed in relatively the same location on the MPGA substrate, as its corresponding clock driver and its associated clock pulse distribution branch on the FPGA substrate. Maintaining this condition throughout the conversion process, ensures that the clock signal delays aboard the MPGA implementation are relatively the same as those which occur aboard the FPGA implementation. 
     For each of the drivers in the Global Reset Signal Distribution Tree description, the Place and Route program generates a range of x and y coordinates that specify the physical placement of the driver and the metallic clock distribution branch extending-from the driver to each of the Soft-CLBs and CLB Loads described in the MPGA netlist. The procedure by which this set of coordinate data is computed for each clock driver and signal distribution branch employs the drivers&#39; name and an empirically determinable offset parameter in order to map the location of each driver on the FPGA substrate, into a spatially corresponding set of x, y coordinates on the perimeter of the MPGA substrate. The procedure also uses the driver&#39;s name and offset parameters to map the location of the branches of the Global Reset Signal Distribution Tree on the FPGA substrate, into a set of spatially corresponding x, y coordinates on the MPGA substrate. This is also one-to-one coordinate conversion process, and it is also helpful in ensuring that each driver and its associated signal signal distribution branch is placed in relatively the same location on the MPGA substrate, as its corresponding driver and associated signal distribution branch are placed on the FPGA substrate. Since most Global Reset mechanisms are asynchronous in operation, it is not necessary to control the reset signal &#34;skews&#34; to the same degree necessary for the clock signals in the MPGA implementation. However, the use of a reset signal distribution tree with multiple drivers, as in the present invention, is preferred over the use of a single reset signal driver and a random reset signal routing network, as used in prior art implementations. 
     Maintaining the above-described conditions throughout the conversion process, ensures that the clock delays aboard the MPGA implementation are relatively the same as those which occur aboard the FPGA implementation. 
     All of the coordinate information produced during the Place and Routing step above is organized in a number of files stored in memory 13 to form a geometrical database. In essence, this database contains sufficient coordinate data that precisely specifies the physical dimensions and placement of several metalizations sub-patterns that are to be formed upon the preprocessed MPGA substrate. 
     As indicated in Block E in FIG. 13B, the next step of the method involves providing to system 3 with the geometrical information contained in the files of the geometrical database produced at Block E. Using such geometrical information, system 3 generates a number of photo-lithographic processing masks 4 for use in forming a metalization layer at the interconnect level of a preprocessed MPGA substrate. In effect these metalization layers, together, program the preprocessed MPGA substrate to produce a MPGA implementation characterized by the logical functions described in the modified MPGA netlist. 
     At Block F in FIG. 13B, the last step of the method of the present invention involves system 5 using the photo-lithographic processing mask(s) 4 produced at Block F in order to form a metalization layer upon a preprocessed MPGA substrate. As mentioned, this final stage of material processing results in a MPGA implementation that is functionally equivalent to the FPGA implementation. 
     The present invention can also be used to convert a FPGA implementation into a MPSC implementation by simply modifying the above-described method as follows. 
     At Block B in FIG. 13A, the method of the present invention uses a MPSC Library in lieu of the MPGA Library. This modification results in a MPSC netlist having Soft-CLB descriptions, Soft IOB descriptions, and a Soft IOB Connectivity description essentially the same as in the MPGA embodiment. In addition, the MPSC netlist includes a Soft-CLB Connectivity description which contains not only port connectivity information at the network level, but also port connectivity information at one or more subnetwork levels in the MPSC implementation. At Block C in FIG. 13A, the MPSC netlist is modified in a manner described above. During placement and routing at Block D in FIG. 13B, all of the structures listed in the modified MPSC netlist are either physically placed or routed on the MPSC substrate in a manner essentially same as described above, to produce a geometrical database for the MPSC implementation. Then at Block E, the geometrical database is used to produce sets of processing masks for the predefined network and subnetwork levels of the MPSC implementation. At Block F, these processing masks are utilized to form a composite metalization layer on the MPSC substrate sufficient to physically realize a MPSC implementation that is functionally equivalent to the FPGA implementation. 
     The method and apparatus of the present invention has shown to be most useful in converting FPGA implementations of digital logic designs into MPLC implementations of such digital logic designs. It is understood, however, that various modifications to the illustrative embodiments of the present invention will readily occur to persons with ordinary skill in the art. All such modifications and variations are deemed to be within the scope and spirit of the present invention as defined by the accompanying Claims to Invention.