Professional Documents
Culture Documents
School of Engineering, Built Environment and Information Technology Department of Electrical, Electronic and Computer Engineering
Microelectronics Group
Table of contents
INTRODUCTION
Introduction to the Microelectronic design and manufacturing process Emphasis on software and EDA in the design process Explanation of Tanner packages included as available to UP
2
2 3 3
GETTING STARTED
Installation
3
3
4
4 6 7 7 7 7 15 19 19 23 24 24 25 32 33 35
Introduction
Introduction to the Microelectronic design and manufacturing process
Today is marked by a consumer driven society always pushing the limits of technology to facilitate a lifestyle emphasizing easy of use and an always-connected philosophy. No other field in engineering is as much under this continuous performance pressure than solid-state circuit development and the field of microelectronics. The field of microelectronics is the main implementation layer, where high density integration of huge systems can be made possible. One of the most successful technologies is CMOS, where both NMOS and PMOS devices can be fabricated on the same die by using dual wells, or single wells within a doped substrate. The processing steps used in standard CMOS foundries can be found in many texts. As inputs to an IC to be fabricated, the foundry requires a layout description, which contains the physical layout of the devices, using the applicable layers, and basically all information necessary for them to accommodate the design in their foundry. The design process of most CMOS microelectronic projects, which follows the same principle in other technologies (BiCMOS, bipolar etc.), can be summarized by: Conceptual design on systems level (top down design of block diagrams, MATLAB prototyping, etc.) Breakdown of the system into smaller subsystems Hand-and-paper drafts of ideas on how to realize the subsystems Detailed calculations for refining subsystem realizations Schematic capture of the subsystem design, using devices realizable in the foundry technology, following a hierarchical approach (bottom up design) Netlist extraction of the schematic design to generate a SPICE netlist SPICE simulation of the individual subsystems, applicable interfaces (testing loading effects) and then the system as a whole (if possible) Further refinement of the designs where problems/issues occurred during simulations, followed by more simulations, until the design satisfy the set specifications Creation of layout cells (hierarchical) using the parameters as set by the verified design, which defines the devices itself. This part also includes good layout techniques, and adherence to the requirements and rules as set by the foundry Post-layout simulation is then done by extracting device information from the layout file and doing further SPICE simulation using the extracted netlist Layout-vs-schematic (LVS), which compares the netlist of the schematic design to the extracted netlist of the layout of the design. Assessment of the results, and further refinements if required. In practice, CMOS processes are subject to show extremities in what is called the four process corners, with a typical mean. All four corners should be thoroughly simulated and verified, as well as the typical mean (tm). (This might be limited in the academic environment, due to time limitations)
Getting started
Installation
Tanner EDA uses a dongle and license file method to grant access to Tanner Tools software. The University of Pretoria owns a number of dongle supported licenses (called local licenses), as well as a few network licenses, available from b120pc040.up.ac.za, the network address of the license server inside CEFIM room 2-8. Therefore, before continuing, make sure that either one of the following conditions is satisfied:
You are connected directly to UPs internal network via wireless access or an Ethernet network point You have one parallel port dongle, as well as the applicable license file (.tlu) to fit with the dongle
After a successful installation, you can now access the Tanner Tools packages either via desktop shortcuts (if the option was chosen during installation), or via the start menu, usually Start>Programs>Tanner EDA> Be sure to have your dongle installed, or that you are connected to the network.
o resistors tm
rdiffn.md rdiffn3.md rdiffp.md rdiffp3.md res.md rnwell.md rpoly2.md rpolyb.md Tanner_tut_models.md Tanner_tut_models_lvs.md Ams_C35_dig.lib These include the model definitions as provided by AMS for the C35 process. The second is a directory containing standard cell libraries and technology information obtained from Europractice. The following tree describes its directory structure: Ams_C35_dig doc o ams_C35_dig.pdf l_edit o ams_C35.ext o ams_C35_3M.xst o ams_C35_3M_v7.tdb o ams_C35_3M_v8.tdb o ams_C35_4M.xst o ams_C35_4M_v7.tdb o ams_C35_4M_v8.tdb o ams_C35_dig.tdb o README_LEDIT.txt lvs o ams_C35_dig.map o README_LVS.txt o Test_all.sp o Test_all.vdb o Test_core.lst o Test_core.out o Test_core.vdb o Test_pads.lst o Test_pads.out 5
o Test_pads.sp o Test_pads.spc o Test_pads.vdb mod o ams_C35_dig.lib o README_MOD.txt s_edit o ams_C35_dig.sdb o README_SEDIT.txt spr o README_spr.txt o Test_core.tdb o Test_core.tpr o Test_pads.tdb o Test_pads.tpr ams_C35.txt README_dig.txt Revision_ams_C35.txt Most of the above mentioned files that will be used will be from the Tanner_tut tree.
Introduction to S-Edit
Start S-Edit by double-clicking on Tanner_tut>S-Edit>EPR_template.sdb If everything goes well, you will be welcomed by the following screen:
By setting up the S-Edit environment, one can customize the look, feel and behavior of the workspace.
In the Module Name box, type RFNMOS. This defines the name the module will be using when instancing it. Optionally, the Author, Organization and Information boxes may be filled in. The following screen should appear:
Note the content inside the red circle. This basically states that in EPR_template, the module RFNMOS is currently open for editing in Schematic mode. Since there is no schematic that can be defined, use Shift+? to switch to symbol editing mode. You will notice a change in the toolbars, making it possible to draw lines, circles etc. and add properties. To add a picture defining the RFNMOS device, one can either draw this, or copy an existing picture from an existing module. To copy from an existing module, press o, which will open the Open Module box. Then go to the module where you want to obtain the picture, say NMOS. Open it in symbol mode, select the graphic and copy it to the clipboard. Now go back to RFNMOS by again pressing o, and selecting it. Make sure it is open in symbol mode. Paste the picture, and there you have it! Sometimes the picture might be misaligned with the grid. Go to Setup>Grid and reduce the Mouse Snap Grid units. Change it back after alignment.
Alternatively, one can draw the picture by hand, using the tools on the left toolbar. After completion, you should have the following:
This is still just a picture and contains no device information. The next step is to add ports to the device, to define the terminals. A standard NMOS has four terminals, namely Gate [G], Source [S], Drain [D] and the Substrate/Bulk [B]. On the toolbar to the left, select , defined as Other port. Just above this symbol, there are three other port types listed. But since a transistor port is not necessarily an input, output or bi-directional port, we use the Other port to define its terminals. After selecting the applicable port type, create the port on the terminal of interest in the picture. An Edit selected port dialog box will appear. Set the Name appropriately and be sure to set the Text size option to a size that is more easily readable (for instance 1 in this case). After adding the ports, your device should look like this:
The device now has ports defined, but still no behavioral properties. One purpose of schematic capture is to eventually write a netlist readable by a SPICE engine. Therefore, a SPICE model definition and device statement should be assigned to the primitive module.
where MODN is the model definition, N3, N2, N1 and N4 are the nodes of the terminals and L, W etc. are describing the attributes of the specific device in the circuit. For detailed information, refer to the T-Spice manual. In the RF NMOSs case, the model is fitted to RF data, and the model is described by a sub circuit rather a single model definition. Refer to Tanner_tut>Models>rfdevices>tm>modnrf.md for more details. A statement for this devices takes the following parameters: Node1 : Drain Node2 : Gate Node3 : Source Node4 : Bulk W : Transistor width L : Transistor length Ad : Drain area Pd : Drain perimeter As : Source area
10
: Source perimeter : Number of squares diffusion drain : Number of squares diffusion source : Additional contact resistance drain : Additional contact resistance source : Multiplicity
Most of the above can be calculated from the transistor width and length and the diffusion area cross section of the drain and source diffusion strips. For the tutorial, we will stick to defining only W and L. In the symbol page, click on the button, which puts the pointer into Edit properties mode. Now click somewhere on the workspace. A Create property dialog box will appear. The first thing we want to do is make an editable property for transistor width, W, which can easily be edited. Therefore, in the Name field, type W. The default Value type is set to integer, but we want to enter values such as 1u which the SPICE engine recognize, therefore change the Value type field to Text. Now enter the default value as 1u. Furthermore, we want the W propertys name and value to be visible when instancing(creating/using) it in a circuit, therefore set the Show field to Name and Value. Also, change the text size to a reasonable value, such as 1. The module should now look like this:
Do exactly the same in creating an L property, and set the default as 0.35u. Now a device statement property should be created. In the Name field, enter SPICE OUTPUT, which is what the netlist generator will be looking for when generating SPICE netlists. In the Value field (after setting Value type to Text), the device statement argument should follow. The details of this can be obtained in the T-Spice manual and model definition files. Because we have already created the W and L properties, we want to use that in the statement. This can be done very similarly to variables in programming. We also want to include the defined ports in the right order in the device statement. By noting that S-Edit recognizes %{G} as a port named G, ${W} as a property named W and the # as an incremental value, we define the device statement as: XRFNMOS# %{D} %{G} %{S} %{B} MODNRF W=${W} L=${L}
11
Set the Show field to None, otherwise this will appear in the schematic when instancing the device. You have now successfully created an RF NMOS device, which you can use in circuits and which is described in SPICE when netlisting a schematic. A netlist extract shows that the following when creating a netlist with this device in it:
XRFNMOS1 N2 N1 N4 N3 MODNRF W=1u L=0.35u
First, we will have to define global nodes, such as Vdd and Gnd. This is already done in the tutorial files, but can be done for other global nodes such as clocks etc. For a clock node that is name CLK throughout the design, create a new module name CLK. In symbol mode, draw a picture to represent the global node. Assign a global port to the picture using the button.
Note that the module and port name may differ, but to keep confusion to a minimum, use the same name describing both. To instance a global node, use the button. Now it is time to design an analogue circuit with some of the primitives already defined in the database used in the tutorial. Create a new module, Module>New, and name it diff_amp. An open workspace will be presented stating EPR_template:diff_amp:Schematic:Page0 at the top. If the workspace is in symbol mode, switch using Shift+?. Instance the following components using the button: Two NMOS transistors, defined by module name NMOS Two PMOS transistors, defined by module name PMOS One DC current source, defined by module name Source_I Instance a Vdd and Gnd global node using the button.
12
Change the W and L values of the NMOS to 1u and 0.35u respectively, by selecting a device and pressing Ctrl+E. A property box will then appear where the parameters can be edited. Note that only that specific devices properties will be changed, whereas editing a primitive module results in a global change. Further, change both PMOSes to W = 1u and L = 1u, and set the current sources value to 100u. Using the wire tool connect the circuit as follows:
13
Now we are going to add port to this amplifier and give it a symbol. Using the input ports, label the two NMOS gates as V+ and V-, and using the output port, label the right hand NMOSs drain node as Vout. Note the bulk terminals are always connected to the supplies. This results in the body effect occurring, but is necessary in CMOS technologies to ensure continual reverse biasing if the wells.
Switch to symbol mode, and draw a picture to represent the amplifier. Use the same ports and port names as in the schematic page. Tip: Use the h key to flip a selected object horizontally, and r to rotate it by 90 degrees. The symbol should now look like this:
You have now created an analogue differential amplifier. The next step would be to test if this amplifier works, and the method to do this is via SPICE simulations. Save your design by selecting File>Save.
14
Netlisting schematics
The module diff_amp designed in the previous section will now be used to illustrate the use of T-Spice in the design process. The first thing to create is a test bench for the amplifier. The best way to do this is by creating a module, for instance Spice test. Once this is done, instance the amplifier in the new modules schematic page. The symbol will now appear without any port names, but instead with circles indicating the port locations. For SPICE to understand what Vdd and Gnd does, one has to define at what potential these nodes are set. SPICE looks for the first character in netlist lines, and then determine what type of device it is. A voltage source is defined by
vname Node1 Node2 Parameters
A DC power supply of 3.3V between nodes GND and VDD are defined by
v1 VDD GND 3.3
The statement has a lot of other parameters, such as sine wave generation etc. (refer to TSpice manual). In this tutorials S-Edit database, a module named PowerSupply is defined to facilitate ease of use. You can instance it and it immediately sets the potential between GND and VDD. Open the module and have a look for more insight. Instance PowerSupply to the Spice test module. This will define the global node voltages as used inside the amplifier. A reference to the model definition files must now be included in the netlist to define the models used in the NMOS and PMOS devices. This can be done by creating a module with a .include statement in the SPICE OUTPUT property, and then instancing this module in the Spice test testbench module. The file Tanner_tut>Tanner_tut_models.md contains references to all the available models. Have a look at that file using a text editor. The tutorial contains a module named .include, which states that S-Edit should look at the Tanner_tut>Tanner_tut_models.md file when creating a netlist, and further tells SPICE to include all the necessary model definitions. Now instance the .include module into Spice test. Now we have to define what kind of simulation is to be run; an AC sweep, a DC sweep, a parametric sweep or a transient analysis. We will look at each of these. Transient analysis Transient analysis is done when a .tran statement with the appropriate parameters are included in the netlist. This is again made easier if a module is created containing fields for all those parameters. The module named .tran is a perfect example. Instance it into Spice test and have a look at its internals to get an understanding of the statement. 15
The default values are sufficient for this simulation. Note : Modules such as .tran and .include can be easily tailored, and new ones made. This is examples from the authors final year project setup. An input voltage source is now necessary to test the circuit. Instance the Source_sine_wave source, and set the frequency to 1E6 and the peak voltage to 1E-2 (or 10 mV). This is again done by selecting the source and pressing Ctrl+E. Hook it to the V+ terminal and hook the V- terminal to GND. Now we still have to define what is to be viewed after the simulation, i.e. what data is to be generated. For that, SPICE uses a .print statement. An easy way, once again, is to create a module with a port, where the .print statement includes the port variable to which it is attached. Instance the .print module, and connect its port to the output of the amplifier. You will notice that a MODE property is necessary. This tells the .print statement that the data will be in transient format (i.e. data vs. time).
The above setup is what the testbench should look like. It is now ready for SPICE netlist exporting. This can be done manually, by using the File>Export option and selecting the exporting data type to SPICE format. Note the destination of the output file, which will have a .sp extension. Another method is to use the button. Pressing this button will result in a SPICE netlist being generated with the same name as the module, Spice test.sp in this case, and in the
16
same directory as the S-Edit database. This will also automatically open T-Spice with the netlist active in the editing area. AC Sweep In doing an AC analysis, SPICE needs to read a .ac statement in the netlist. This can be manually entered into the netlist, or a S-Edit module can be used, named .ac sweep, instead of the .tran module as in the previous case. Instance the .ac sweep module into Spice test. Now the sine wave source wont work, since the voltage source should be of the AC type. This is easily modified in the .ac statement in the netlist. Alternatively, a module called Source_v_ac exists. Please open and dissect this module to understand the statement. Intance this module into Spice test and edit its MAG property to 1e-2. This analysis will study the AC behaviour over a frequency range, in other words, it is a frequency sweep type of analysis. The .print statement also needs modification. This is easily done in the instances .print statement by setting its MODE property to ac. The type of sweep is determined by the .ac statement, and can be edited in the .ac sweep module.
Again export this netlist using one of the previously described methods. DC Sweep A DC sweep is done on a specified DC voltage or current source, using a .dc statement in the netlist. A module named .dc sweep is available to assist in this. But here the source to be swept must be defined in the .dc statement. To do this, replace the source at V+ of the amplifier with a DC source, module Source_v_dc. Now, to create a deterministic voltage
17
source name, edit the sources properties, and change v# in the SPICE OUTPUT property to vswp. This permanently names the source to be swept. Now instance a .dc sweep module, and set the SOURCE parameter to vswp. The rest is straightforward. Change STEPSIZE to 0.001, VAL1 to 0 and VAL2 to 3.3. This will sweep source vswp from 0 to 3.3 Volt in 0.001 Volt steps. The .print statement should also be changed, therefore, set the MODE to dc, to let SPICE know that the output will be of the DC sweep type.
Export the netlist using one of the above mentioned methods. Parameter sweep The parameter sweep is a bit tricky, since a parameter has to be defined which is stepped during each analysis run. Firstly, a parameter is to be defined in SPICE. A .param Parameter module is available to do this directly from within S-Edit. Using the same setup from the DC sweep analysis, instance the module .param Parameter. Set the PARAMSTATEMENT property to Vmin = 0, which creates a parameter named Vmin with a default value of 0. Instance a new DC source at V- of the amplifier, and enter its value as Vmin. This will be the parameter that will be stepped. Next, instance the .step parameter sweep module, and set its properties so that DEVICE=Vmin, START=0, STOP=1 and INC=0.2. This will run the DC analysis with Vmin staring at 0, then again with Vmin equal to 0.2 and so forth, until the analysis is run with Vmin as 1.
18
These statements are well documented in the T-Spice manual. It is important to see what statements these helpful modules create and how they do it. It then becomes easy to understand the SPICE engine and how to make things easier for the designer. Export the netlist as described earlier.
19
This contains the netlist information in the editable area. For the transient analysis, the netlist is as follows:
* SPICE netlist written by S-Edit Win32 9.13 * Written on Mar 10, 2005 at 00:18:56 * Beneath is the amplifier subcircuit description with the terminals * defined in the definition .SUBCKT diff_amp V+ V- Vout GND MST_RST VDD * This is an NMOS statement Refer to the T-Spice manual MN1 N4 V+ N5 GND MODN L=0.35u W=1u M=1 AD='1u*1u' PD='2*1u+2*1u' AS='1u*1u' PS='2*1u+2*1u' NRD='1u/1u' NRS='1u/1u' MN2 Vout V- N5 GND MODN L=0.35u W=1u M=1 AD='1u*1u' PD='2*1u+2*1u' AS='1u*1u' PS='2*1u+2*1u' NRD='1u/1u' NRS='1u/1u' MP3 N4 N4 VDD VDD MODP L=1u W=1u M=1 +AD='1u*1u' PD='2*1u+2*1u' AS='1u*1u' PS='2*1u+2*1u' +NRD='1u/1u' NRS='1u/1u' MP4 Vout N4 VDD VDD MODP L=1u W=1u M=1 +AD='1u*1u' PD='2*1u+2*1u' AS='1u*1u' PS='2*1u+2*1u' +NRD='1u/1u' NRS='1u/1u' i5 N5 GND 100u .ENDS * This is the power supply subcircuit .SUBCKT PowerSupply GND MST_RST VDD * V1 is not applicable v1 MST_RST GND pulse(0 3.3 10n 0.001ns 0.001ns 1/2 1) * v2 defines the power supply -> VDD and GND nodes v2 VDD GND 3.3 .ENDS * Main circuit: Spice test * The include statement as generated by the S-Edit module (Note the * file pathname, CHECK IT OUT!!!!) .include ../Tanner_tut_models.md * This is the statement printing the voltage at the specified node .print tran v(N2)
20
* This sets up the simulation for transient analysis .tran/op 0.01u 20u start=0 * This is the main circuit desription Xdiff_amp_1 N1 GND N2 GND MST_RST VDD diff_amp XPowerSupply_1 GND MST_RST VDD PowerSupply * Note v1 is a sine wave source v1 N1 GND sin(0 1E-2 1E6 0 0 0) * End of main circuit: Spice test
To simulate the above circuit, press the button. A dialog box appears, which states the input filename (default is the one open in the edit area) and the destination file for the output. This contains the requested output data in text format. Confirm this and continue. W-Edit will then automatically open with the plotted data. This should look like this:
That is all there is to it. W-Edit calls these graphs traces. One can add more traces to a graph, or do arithmetic operations on them, such as scaling, or adding two traces etc. The best is to play around with it. With more than one .print statement, more traces are generated. AC sweep Open the netlist for the AC sweep. The netlist looks exactly like the previous one, except that the following statements changed from
.print tran v(N2) .tran/op 0.01u 20u start=0
to
.ac lin 100 1 1E9 .print ac v(N3)
21
This graph does not have a logarithmic x-axis. This can be changed by changing the
.ac lin 100 1 1E9
to
.ac dec 100 1 1E9
This will tell T-Spice to do a logarithmic sweep with the x-axis in decades. DC Sweep The DC sweep netlist looks similar to the two above, except for the following:
.dc vswp 0 3.3 0.001 .print dc v(N3) * NOTE THE NAME OF THE VOLTAGE SOURCE vswp N2 GND 3.3
22
Therefore, a current into a sub circuit might be difficult to determine. The easiest way to alleviate this is to insert a 0V voltage source in series with the branch under examination. Name this source something like vcur or such, and the modify the .print S-Edit modules ARG property to, for instance, i(vcur,%{output}) so that the current going into device vcur at node %{output} can be measured. A lot of similar tricks is necessary, but with a little experience, it becomes a breeze. Once a circuit performs satisfactorily, and the design is done, the next step is to draw the device in terms of layers on the silicon substrate, or commonly referred to as layout.
23
Introduction to L-Edit
L-Edit is a powerful tool used to define the geometrical properties of devices in the format necessary for manufacturing. In short, it is a program where you physically draw microelectronic devices. The differential amplifier designed in the previous part of the tutorial will be used as a basis to create a layout. To start of, one needs to be reminded of the physical operation of NMOS and PMOS transistors in the AMS C35 process used for EPR400. The file that will be used from here on is Tanner_tut>L-Edit>EPR_template.tdb, which is an L-Edit database containing information of process layers as well as design rules.
p+
n+ p-substrate
n+
The above diagram is very basic, but it shows the basic layers in an NMOS device. The first thing to mention is that during the manufacturing process, a layer of SiO2 is grown over the p-substrate, where SiO2 is a dielectric and an extremely good insulator. For more accurate gate layout and automatic alignment of the gate over the channel, the gate is lain down before the n+ regions are doped. This ensures a good alignment of the gate to the channel. The gate is made of polycrystalline silicon, or poly in short, which is conductive. The channel is then formed in the substrate when inversion occurs between the two n+ regions, thereby forming an NMOS device. The bulk is accessed through a p-tap, which is a p+ region diffused into the substrate, and this causes a low impedance path to the ptype material in the substrate. The drain and source are then connected via contacts to the n+ diffusion areas.
24
n+
p+ n-well p-substrate
p+
The PMOS is almost exactly the same, except that it lies within an n-well with p+ diffusion regions defining the drain and source. The bulk is accessed through an n+ region connecting to the well. It becomes apparent why the substrate is always kept at the lowest potential and the n-well at the highest potentials. This creates reverse-biased pnjunctions, thereby eliminating most of the leakage currents that might slip through the substrate. Layers in a process Referring to AMSs process documents, one can find all the relevant information on what layers are available and how it works, as well as what the design rules for the process are (minimum diffusion spacing, etc.). This will be made available by your study leader.
25
The toolbar on the left contains the different process layers used to draw the devices and interconnects. The toolbar above the workspace contains the tools for drawing and instancing cells. Cells are analogous to modules in S-Edit. A primitive cell is a cell created from scratch. One can than hierarchically create larger cells containing primitives, and then even larger cells until a complete chip is made. To create a new cell, select Cell>New and enter the applicable cell name in the Cell name field. For the tutorial, enter NMOS_0.35x1 so that we know we are creating a 0.35 micron by 1 micron transistor. Creating the required NMOS The NMOS in question has a length of 0.35 m and a width of 1 m. Remember that the length is the distance between the diffusion contacts, drain and source, the width is the distance the channel runs orthogonally to the length. First of all, let us define the gate. Select the poly layer on the left hand side, , named POLY1. This will be used to define the gate. Now select the wire tool , since the wire of POLY1 is defined as 0.35 m thick in the top menu Setup>Layers>POLY1>Default wire settings. Draw a vertical wire of 1.8 m long and end by right clicking. As you draw, you will notice that the drawn length is displayed, and actively reflects the length of the current wire being drawn. Alternatively, select the Drawing box button and draw a box, also using the measurements as a guide.
The next step is to define where the diffusion should take place. Select the diffusion layer DIFF from the left hand toolbar. Remember now, the diffusion will define the width of the transistor. Therefore, draw a box of 1.4 x 1 m2 and centre it on the gate, so that the gate extends on both sides by 0.4 m. Use the arrow to check the length of the sideway diffusion overlap by left clicking and dragging it along from the edge of the gate to the edge of the diffusion. It should extend the gate to both sides by 0.525 m.
26
Now we have to define the source and drain regions. Instance a CON_NSUB cell using the button. This cell consists of a box of diffusion 0.7 x 0.7 m2 of size, a box of MET1, the first metal layer, also of size 0.7 x 0.7 m2, a block of CONT, 0.4 x 0.4 m2 of size and a box of NPLUS, the n+ definition layer, of 1.2 x 1.2 m2 of size. The CONT layer defines a contact that, if over the diffusion layer, hits right down into it. NPLUS defines what type of diffusion should be done (n+ or p+) and MET1 is a conductor, used to carry signals and (possibly) supply rails. Please refer to AMSs process documentation for details on all of these. The CON_NSUB cell was instanced, because it provides a direct contact from MET1 to the diffused n+ regions. Therefore, a terminal can be formed. Place the instanced cell in the center, down the width of the transistor, on one side. Instance another and mirror it on the other side. The transistor now looks like this:
The NPLUS layer now defines the diffusion used in the transistor also, so, at this stage, this should suffice. Next, the process documentation should be queried to determine if any design rules are being broken. And yes, some have been broken: Rule NP.E.1 states that the minimum NPLUS extension of DIFF should be larger than 0.25 m, which is not the case at the top and bottom of the transistor.
27
The easiest way around this is to draw a box of NPLUS exactly on the currently existing block. After that, we measure that the NPLUS box extends the DIFF area by only 0.1 m. Select the newly created NPLUS box by repeatedly left clicking on the NPLUS area, until the box is outlined and the appropriate selection name is displayed in the bottom left of the window. Using the middle mouse button and gripping the edge of our newly created NPLUS box, drag the box a further 0.15 m upwards. This should then give a net extension of 0.25 m. Do this on both sides. The transistor should then look like this:
Rule CO.C.1 is also broken. DIFFCON is defined as a contact box using CONT over a diffusion area, DIFF. The area where both CONT and DIFF lies is called DIFFCON. The spacing of DIFFCON to GATE, defined as POLY1 plus DIFF, should be more than 0.3 m, but is currently only 0.15 m. Select the CON_NSUB cell y repeatedly clicking on it until the correct object is selected, and drag it away from the gate by 0.15 m. This should be done on both sides.
To eliminate sharp features, drag the initial diffusion block to the edges of the contacts diffusion edges and extend the NPLUS to form a square:
28
So far so good! Now the gate of the transistor also needs to be connected to the MET1 layer. There is an existing cell called CON_P1, which connects POLY1 to MET1. This consists of layers CONT, MET1 and POLY1. Note that the contact will stop at the poly layer (This is process specific). Hook the contact to the bottom end of the transistors gate, so that the POLY1 of the connector touches the POLY1 of the gate.
We now have a three terminal n-channel MOSFET device. The bulk contact has yet to be defined. Use the cell CON_PSUB, which connects MET1 to the substrate via CONT into a p+ region.
Make sure all the rules are met, such as minimum DIFF spacings and minimum NPLUS to DIFF etc. This then defines a complete NMOS transistor. Running DRC on the drawn transistor To verify that all of the design rules are met, L-Edit as a design rule checker (DRC) built in. The .tdb file used in this tutorial contains all the necessary information to ensure proper operation, but for setting up and changing rules, use the top menu, Tools>DRC Setup To run DRC, open the cell under examination (currently still NMOS_0.35x1) and go to Tools>DRC. This will initiate the rule verification program. On completion a dialog box opens displaying the results. If rules have been broken, one can easily navigate this box to locate the error (Try moving the CON_PSUB closer to the transistor). Creating the required PMOS The PMOS will be created in exactly the same fashion. Create a new cell called PMOS_1x1. Create a gate by using the box tool and drawing a piece of POLY1 with 1 x 1.8 m. Create a diffusion block by drawing a 2.7 x 1 m box of DIFF, and centre it
29
around the transistor so that the DIFF layer extends the gate on both sides by 0.850 m and that the POLY1 structure extends the DIFF layer by 0.4 m at the top and bottom.
Now add CON_PSUB contact to both sides. Cover all the diffusion in PPLUS to define it as p+ diffusion areas. Be sure to make the PPLUS extend all diffusion areas by at least 0.25 m. Add a poly to MET1 connector using the CON_P1_2, which has two contacts, thereby reducing the contact resistance. Wherever possible, use as much contacts as possible to reduce this resistance. Now add a CON_NSUB connector as a bulk contact.
There is still one thing missing, and that is to describe that the transistor lies in an n-well. Using the NTUB layer, draw a box around the transistor. Be sure to let the NTUB box extend all diffusion areas by at least 1.2 m.
Once the NMOS and PMOS devices are completed, the amplifier can now be constructed. Constructing the differential amplifier Using the cells created, it is now time to construct the complete amplifier. Create a new cell called diff_amp. Center the workspace around the origin (crosshair) and zoom in two NMOS_0.35x1 and two PMOS_1x1. Space the cells as appropriately. Instance follows:
Notice the shared gates of the PMOS transistors. Now select MET1 and the wiring tool, and connect the nodes, as designed in the schematic.
31
The yellow-in-blue box between the sources of the two NMOS devices is called a via. Vias are used to connect different layers to each other, very similar to CONT contacts. The specific cell is called VIA and connects MET1 to MET2. In doing so, one can jump over other metal or conductive tracks, but only where the layer capacitances will not seriously affect the circuit performance (for instance, the node at the sources of the two NMOS devices are carrying a fixed current). To define ports, one should realize that L-Edit is capable of handling two-dimensional ports on each existing layer. Let us define the input ports as V+ and V-, etc.: Since we want to add the port to the MET1 layer, select it on the left toolbar. Now select the port tool, and draw either a box or (preferably) a line on one side of the terminal. A dialog box will appear, containing a number of properties. Enter the appropriate names for the ports. Because we cannot create ideal current sources on silicon, we need to adjust the schematic of the amplifier. Remove the current source in diff_amp in S-Edit schematic, and create an extra port in both schematic and symbol modes, named Ibias. Now we can still simulate the circuit by externally adding a current source.
32
Next, select the Output tab and edit the SPICE include statement to point to the following file: Tanner_tut>Tanner_tut_models_lvs.md This has to be done, since the LVS program gets confused with the path names. Once this setup is done, press Run, and a netlist will be extracted to the diff_amp.spc file in the above case. This netlist can now be used for post-layout simulations, where the designer is free to add a lot of fringe and overlap capacitances in the layer setup (something not done by default by Europractice, supplying UPs Tanner Design Kits) and a very detailed netlit can be compiled. This netlist will now also be used in the LVS system, to compare the schematics to the extracted layout information.
33
Enter the appropriate path and filenames to the necessary files. A very simple comparison will be done as an example. Click on the Output tab and define an Output file, where the comparative results can be stored. After that, select the Device Parameters tab. Check the boxes next to Lengths and widths in the MOSFET Elements box. The other boxes may be checked if the designer extends the description in the layout extraction definition. Click on the button. The comparison should run and give verbose results:
Note that the circuits were found to be equal on the netlist level. Play around with the layout, such as connecting extra pieces of metal between nodes, and view the output again. This was a very primitive comparison. For reliable results, he designer should feed the programs with all the appropriate data necessary to create accurate netlists. After all, the rule still applies: A simulation is only as good as its models.
34
Conclusion
This tutorial has touched on each and every subject necessary to complete, simulate and verify a design on microelectronic level. This should give the user a good feel of how the system is put together, and how to optimize the system for a specific designers use. The best advice in trying to learn new software is to EXPLORE. Use the examples and gain insight into the process by playing around with it!
35
C NAND20
36
a1 b1
A B SEL_B !SEL_B
C_0
b1
CBU1P
C
CBU1P A_1
A Y
a2 B_1
A
CBU1P
Y
a2 b2
A B SEL_B !SEL_B
C_1
b2
CBU1P
C
CBU1P A_2
A Y
CBU1P a3 B_2
A Y
a3 b3
A B SEL_B !SEL_B
C_2
b3
CBU1P
C
CBU1P A_3
A Y
CBU1P a4 B_3
A Y
a4 b4
A B SEL_B !SEL_B
C_3
b4
CBU1P
C
CBU1P A_4
A Y
CBU1P a5 B_4
A Y
a5 b5
A B SEL_B !SEL_B
C_4
b5
CBU1P
C
CBU1P A_5
A Y
CBU1P a6 B_5
A Y
a6 b6
A B SEL_B !SEL_B
C_5
b6
CBU1P
C
CBU1P A_6
A Y
CBU1P a7 B_6
A Y
a7 b7
A B SEL_B !SEL_B
C_6
b7
CBU1P a8 B_7
A Y
b8
a8 b8
A B SEL_B !SEL_B
C_7
The use of the nodes becomes quite apparent when examining the schematic closely. To generate a netlist for the Place and Route program to understand, a .tpr netlist is created, which conveys connectivity and cell data to the place and router. If you open one of these standard modules, you will notice a TPR= property. If no value is defined, the value becomes the name of the cell, otherwise one can specify and arbitrary name. The netlister searches down the hierarchy for these properties until it is found, and then compiles a file describing connectivity and names. After the circuit is complete, export it using File>Export, but select now, instead of SPICE, the TPR option. This will create a TPR file, by default called 8BITMUX.TPR.
37
38
There are numerous option available to customize and optimize the process for a specific purpose, but this should be able to give the reader a good idea of how the system works.
39