Designing for the CMOS Gate Array


Introduction to the CMOS Gate Array

  • Gate Arrays

    The design of an integrated circuit is an expensive and time consuming task, requiring a high degree of skill from the designer. As a result, full custom IC design tends to be limited to high volume production chips.

    Various strategies are used in order to reduce the cost of designing ICs, particularly the design turnaround time and the level of skill and experience required of the designer. The gate array is one approach to the problem. Gate arrays provide a relatively cheap means of designing integrated circuits, particularly when only small numbers of chips are required.

    In its simplest form the gate array consists of a regular array of uncommitted logic gates which can be connected together to form more complex digital systems. This is the process of customization. In many cases the customization of the gate array can be accomplished using a single metallization mask which connects together the gates as required.

    Design costs are reduced because only one or two masks need to be generated for each new design, consequently the design is relatively simple and considerably less time consuming. Fabrication costs are reduced because most of the masks are common to many designs, allowing mass production of uncustomized chips.

  • The CMOS Process

    The CMOS Gate Array has been designed for the department's own 4um single layer metal CMOS process. The masks which must be generated for this process are:

    
    Mask 1 		NW  		 N Well 		 Pre-defined
    Mask 2 		AA  		 Active Area 		 Pre-defined
    Mask 3 		FI  		 Field Implant 		 Pre-defined
    Mask 4 		NA  		 N-Channel Area 	 Pre-defined
    Mask 5 		PA  		 P-Channel Area 	 Pre-defined
    Mask 7 		P1  		 PolySilicon 		 Pre-defined
    Mask 8 		CW  		 Contact Windows 	 Customized
    Mask 9 		M1  		 Metal 			 Customized
    

    The M1 metal mask is customized to produce the tracks for intra-gate and inter-gate connections. The CW contact window mask defines where the M1 mask connects to the circuit elements defined on the uncustomized chip. Note that Mask 6 (BA) is not used in this process.

  • Layout of the uncustomized Gate Array

    The uncustomized CMOS Gate Array has:

    The layout of these items is shown below:

  • Customization of the gate sites

    Each gate site contains 12 transistors ( 6 N-type and 6 P-type ). These transistors can be connected together in a number of different ways to produce different gates.

    To aid in the customization 13 gate overlays have been provided. Not surprisingly, when correctly placed over a gate site a gate overlay will create a gate.

    Some gate overlays are full size overlays and occupy a whole gate site, these are:

    
    		NAND4 		4 input NAND gate
    		XOR2 		2 input XOR gate
    		XNOR2 		2 input XNOR gate
    

    The remaining overlays are half size overlays, these are:

    
    		NAND2 		 2 input NAND gate
    		NAND3 		 3 input NAND gate
    		NOR2 		 2 input NOR gate
    		NOR3 		 3 input NOR gate
    		AND2 		 2 input AND gate
    		OR2 		 2 input OR gate
    		INV 		 Inverter
    		GND 		 For connection to Logic 0
    		VDD 		 For connection to Logic 1
    		X_X 		 For feedthrough connections
    

    It is possible to place two half size gate overlays over a single gate site provided that the lower of the two is placed upside down (i.e. reflected in the x-axis).

    N.B. You are strongly advised not to attempt to design your own gate overlays as this would make my job much harder!

  • Macro Cells

    As well as the standard gate overlays, you are provided with an overlay for an edge triggered D-Type flip-flop.

    The D-Type design is shown below as a schematic with four 3-input NAND gates and two 2-input NAND gates.

    The corresponding DFF overlay contains four NAND3 overlays and two NAND2 overlays together with a number of tracks and contact windows to perform the necessary interconnections.

    The DFF overlay is described as a macro because it is not a single flat cell since it contains references to other cells.

    With careful thought it is possible to design your own macros for sub-circuits within your design.

  • Routing

    Any area not occupied by anything else is taken up by routing channels. There are five vertical routing channels and two horizontal routing channels.

    Pads and gates are joined by tracks drawn in metal (M1). Where a track needs to cross another track or power rail, there are polysilicon underpasses (well over a thousand of them) pre-defined on the Gate Array. Connections are made to the polysilicon underpasses by etching contact windows in the oxide layer which would otherwise insulate the polysilicon from the metal. These are defined as rectangles on the CW mask layer.

  • Feed Through Routing

    Although it appears that horizontal routing is restricted to the two horizontal channels at the top and bottom of the cell, this is not the case. An examination of the gate overlays shows that many gates have two extra terminals (marked X). These terminals make use of a polysilicon underpass built into the gate site in order to pass a signal under the power rails running through the site. Thus we have a feed through connection allowing horizontal routing through the gate.

    Note that the routing problems are significantly reduced by the duplication of most gate terminals at the left and right of each overlay.


    Circuit Design and Simulation

  • Design Constraints

    The first stage of the design is the schematic diagram of the circuit. The elements of the circuit diagram should be symbols from the set below:

    Each symbol corresponds to one of the gate overlays.

  • Schematic Capture

    The following is a schematic diagram for a simple sequencer circuit as you might draw it on paper. In addition to the symbols shown above it has INPAD and OUTPAD symbols at its inputs and outputs. These symbols will map to the input pads and output pads of the Gate Array.

    The first stage of the CAD design cycle is to capture the schematic such that it can be checked and simulated. It is anticipated that you will go through several iterations of the schematic capture process before you are satisfied with your design. Since schematic capture is very much faster than layout for the Gate Array, extra time spent here in order to ensure a correct and efficient design will save you considerably more time in later stages.

  • Notes on the creation of Icebox Schematics

  • Finished Schematic

    The following shows a complete schematic for the simple sequencer drawn using icebox.

  • Netlist Extraction

    Netlist extraction converts your schematic into a netlist text file which can be understood by the simulator. It also helps to identify any errors in the construction of the schematic.

    A remote netlisting utility is available for those using Icebox on the department's Windows 2000 machines in Zepler.

  • Simulation

    Having successfully extracted a netlist, you know that you have designed a circuit, with the aid of simulation you will hopefully be able to predict whether the circuit will work.

    A remote simulation utility is available for those using Icebox on the department's Windows 2000 machines in Zepler.


    Testability

    Before committing your design to silicon you must consider testability. With simple designs such as those implementable on a Gate Array it is relatively easy to say whether the circuit works but much harder to determine why a circuit doesn't work.

    Faults in the finished design will be of two types :

    Following fabrication you will have to test a number of samples of your design. Your task will be to prove that your design is correct. Given that there are errors in your design, you will have to identify them and prove that the rest of the circuit still works.

    There are two techniques that you should use to increase the testability of your design :

    Taking the simple sequencer circuit as an example we can see how testability can be improved :

  • Division of circuit into testable blocks.

    The circuit has been divided into three blocks; D-Types, Next State Logic and Output Logic. Each sub-circuit has its own inputs and outputs in order to maintain independence.

    During testing it is possible to re-connect the blocks to check overall functionality, or keep the blocks separate in order to isolate faults and prove functionality of correctly designed blocks.

  • Addition of ad-hoc testability.

    Certain internal nodes have been connected to output pads such that their state can be monitored. This will also help in the isolation of faults and in proving the functionality of correctly designed blocks.

    You should make your design as testable as possible. The major limit on testability is the availability of I/O pads.

    If you have more than a few unused I/O pads then your design is not testable enough.

    Some of the most common systematic errors result in the failure of all d-types.

    How much of your design will you be able to demonstrate if all your d-types fail?

  • Schematic Annotation and Pad Naming

    Each symbol in the schematic diagram should be uniquely labelled for ease of identification. These identifiers should be added as text items on the text layer; TXT.

    At this point we must also ensure that the inputs and outputs have unique names (even where it is intended to re-connect them after fabrication). To help with netlisting and simulation we use the convention that signal uvw_xyx is an input signal which will be driven by the output signal uvw.

    The following figure illustrates this process for our simple sequencer:

    Points to note:

  • Finished Schematic with Testability and Annotation

    The following shows a complete schematic for the simple sequencer drawn using icebox.

    This schematic can be netlisted and simulated as before. Provided that the rules and conventions are obeyed, the simulation results will be unchanged.


    Layout

  • Preparation

    CGA Placement Template

    To aid with the gate placement and i/o allocation a template has been created. Its usage is best illustrated by example:

    The proposed position of each gate and each pad from the annotated schematic is marked on the template. The unique gate and pad names are used to avoid ambiguity. Gates and pads which will be interconnected are placed in close proximity.

    Notes:

  • Starting Icebox for Gate Array Place & Route

    You should use H:\design_2\layout as your design directory, CGA LAYOUT as technology and cgaLib.gds as reference library.

    For details on the use of reference libraries with Icebox together with tips on choice of cell and library names, see appendix 1.

  • Gate Placement

    Armed with your completed CGA placement template, you are now ready place the gate overlays on the Gate Array.

  • Labelling

    Text may be added by selecting the appropriate mask layer and using the Create Text command.

    Since they don't modify the function of the circuit, neither of these layers will exist on the finished design. Text on the LAB layer will be used by the netlister to provide you with additional feedback before your design is fabricated.

  • Routing

    For this operation you should have a copy of the fully annotated circuit diagram. You may find it useful to tick off connections and nodes as you route them.

  • Design Rules

    Certain Design Rules must be obeyed in order to ensure successful manufacture. The design rules that effect routing on the Gate Array are:

    You should aim to layout tracks in a logical manner in order to avoid design rule violations.

    Remote design rule checking is available for those using the department's Windows 2000 machines in Zepler.

    You may like to experiment with the DRC by breaking these design rules to check that they are spotted.

  • Routing Styles

    There are two different routing styles which lend themselves to use on the Gate Array.

    The first, log style, makes use of the regular layout of the polysilicon underpasses on a 14um grid. Metal tracks are drawn as 8um wide paths with a gap of 6um between adjacent tracks. Where a contact is required the CONTACT cell is placed rather than explicitly drawing metal and contact window rectangles. All this can be done on a very coarse 14um snap grid making this routing quick and simple. Being correct by design it is very easy to spot any design rule errors.

    For these reasons, log style is the preferred style for this exercise.

    With the alternative dumbbell style there is room for more tracks in the routing channels. Tracks can be as thin as 4um (widened to 8um around the 4um contact window) with a metal to metal minimum spacing of 4um. When using this style the snap grid must be reduced to 2um making the task much more difficult. You should only use this style when space is restricted.

  • Netlist Extraction

    Netlist extraction helps you to debug and hopefully simulate your design BEFORE it is fabricated.

    The following is the netlist for the simple sequencer described in this document:

          //Netlist for cell final from library teamz
    
          nand #1 I1 ( nSYNC , Q0_fo , Q1_fo , OUT_fo );
          not #1 I2 ( SYNC , nSYNC );
          dtype #1 I3 ( OUT , d3nq , CLOCK , nRESET , Q1_fd );
          dtype #1 I4 ( Q0 , nQ0 , CLOCK , nRESET , D0_fd );
          dtype #1 I5 ( Q1 , d5nq , CLOCK , nRESET , Q0_fd );
          or #1 I74 ( D0 , XOR , START );
          nand #1 I75 ( nand75 , TESTnR , TESTQ );
          nand #1 I76 ( TESTQ , TESTnS , nand75 );
          xor #1 I77 ( XOR , Q1_fn , OUT_fn );
    

    Boolean gates are indicated as:

    function #1 instance ( out, in1, in2, ... );

    Whereas d-types are indicated as:

    dtype #1 instance ( q, nq clock, notreset, d );

    The name of a net is derived from the gate that drives it:

    e.g. nand75 is driven by nand gate instance I75.

    unless it is connected to an external pin, in which case it takes the name of that pin.

    e.g. START is connected to input labelled START.

  • Interpretation of Netlist Errors

    Obvious errors such as floating inputs and shorted outputs are explicitly indicated in the netlist.

    The following is the netlist for the simple sequencer including some rather less obvious errors:

          //Netlist for cell design from library teamz
    
          nand #1 I1 ( nSYNC , Q0_fo , Q1_fo , OUT_fo );
          not #1 I2 ( SYNC , nSYNC );
          dtype #1 I3 ( OUT , d3nq , nRESET , CLOCK , Q1_fd );
          dtype #1 I4 ( Q0 , nQ0 , nRESET , CLOCK , D0_fd );
          dtype #1 I5 ( Q1 , d5nq , nRESET , CLOCK , Q0_fd );
          or #1 I74 ( D0 , xor77 , START );
          nand #1 I75 ( nand75 , TESTnR , TESTQ );
          nand #1 I76 ( TESTQ , TESTnS , nand75 );
          xor #1 I77 ( xor77 , Q1_fn , OUT_fn );
    

    Less obvious errors include:

  • Simulation

    The procedure for layout simultion is identical to that of schematic simulation with the exception that the SIMULATE LAYOUT option should be chosen in place of SIMULATE SCHEMATIC.

    Since the layout should be node for node identical to the annotated schematic, the simulation results should be unchanged.


    Outline Timetable


    END BIT

  • Advice

  • Information

  • Web Resources

    GOOD LUCK!


    Iain McNally

    18-10-2000