INTRODUCTION TO VLSI LAB - cittumkur.org MANUAL_2017-18.pdf · VLSI LAB MANUAL (10ECL77) ... The...

97
DEPARTMENT OF ELECTRONICS AND COMMUNICATION ENGINEERING Page 1 VLSI LAB MANUAL (10ECL77) 2017 - 18 INTRODUCTION TO VLSI LAB VLSI lab allows the theoretical concepts studied as part of subjects CMOS VLSI Design, Microelectronics Circuits and HDL, to experience in practical with the help of Cadence tool framework. The lab introduces the complete custom IC design flow, ASIC design flow and AMS (Analog and Mixed Signal) flow for Analog circuits, Digital circuits and Analog and mixed signal circuits design respectively. The analog design involves schematic (standard cell), test schematic capture and symbolic representation of circuit topologies using Virtuoso schematic editor/ Composer. Simulation of the test circuit to perform various analyses such as transient, DC and AC is facilitated by Multimode Simulator/Spectre. Once the simulation results are obtained as per the specifications the physical design is carried out using Virtuoso Layout suite followed by the physical verification using Assura DRC (Design Rule Check), LVS (Layout Versus Schematic) and Parasitic RC extraction. The floor planning, Power planning, placement and routing can be performed later using Encounter. The digital design involves the realization of various digital circuit components using Register Transfer Logic (RTL) code, Compilation of the same using Native Compiler, elaboration using elaborator and simulation using Incisive. The synthesis of the verified RTL code to obtain the gate level netlist is performed thereon. The AMS circuit design is performed by importing the digital modules as configuration files into the analog environment, followed by the steps of the analog design and simulating the same using AMS simulator instead of Spectre. Introduction to Cadence Design Systems Cadence is an Electronic Design Automation (EDA) environment which allows different applications and tools to integrate into a single framework thus allowing supporting all the stages of IC design and verification from a single environment. These tools are completely general, supporting different fabrication technologies. When a particular technology is selected, a set of configuration and technology-related files are employed for customizing the cadence environment. This set of files is commonly referred to as a design kit. The Cadence Development System consists of a bundle of software packages such as schematic editors, simulators, and layout editors. This software manages the development process for analog, digital, and mixed-mode circuits. In this lab, we will

Transcript of INTRODUCTION TO VLSI LAB - cittumkur.org MANUAL_2017-18.pdf · VLSI LAB MANUAL (10ECL77) ... The...

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 1

VLSI LAB MANUAL (10ECL77) 2017 - 18

INTRODUCTION TO VLSI LAB

VLSI lab allows the theoretical concepts studied as part of subjects CMOS VLSI

Design, Microelectronics Circuits and HDL, to experience in practical with the help of

Cadence tool framework. The lab introduces the complete custom IC design flow, ASIC

design flow and AMS (Analog and Mixed Signal) flow for Analog circuits, Digital circuits

and Analog and mixed signal circuits design respectively.

The analog design involves schematic (standard cell), test schematic capture and

symbolic representation of circuit topologies using Virtuoso schematic editor/ Composer.

Simulation of the test circuit to perform various analyses such as transient, DC and AC is

facilitated by Multimode Simulator/Spectre. Once the simulation results are obtained as per

the specifications the physical design is carried out using Virtuoso Layout suite followed by

the physical verification using Assura DRC (Design Rule Check), LVS (Layout Versus

Schematic) and Parasitic RC extraction. The floor planning, Power planning, placement and

routing can be performed later using Encounter.

The digital design involves the realization of various digital circuit components

using Register Transfer Logic (RTL) code, Compilation of the same using Native Compiler,

elaboration using elaborator and simulation using Incisive. The synthesis of the verified

RTL code to obtain the gate level netlist is performed thereon.

The AMS circuit design is performed by importing the digital modules as

configuration files into the analog environment, followed by the steps of the analog design

and simulating the same using AMS simulator instead of Spectre.

Introduction to Cadence Design Systems

Cadence is an Electronic Design Automation (EDA) environment which allows

different applications and tools to integrate into a single framework thus allowing

supporting all the stages of IC design and verification from a single environment. These

tools are completely general, supporting different fabrication technologies. When a

particular technology is selected, a set of configuration and technology-related files are

employed for customizing the cadence environment. This set of files is commonly referred

to as a design kit. The Cadence Development System consists of a bundle of software

packages such as schematic editors, simulators, and layout editors. This software manages

the development process for analog, digital, and mixed-mode circuits. In this lab, we will

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 2

VLSI LAB MANUAL (10ECL77) 2017 - 18

strictly use the tools associated with analog circuit design and digital design. All the

Cadence design tools are managed by a software package called the Design Framework II.

This program supervises a common database which holds all circuit information including

schematics, layouts, and simulation data.

LINUX Operating System

Using the LINUX operating system is similar to using other operating systems such

as DOS. LINUX commands are issued to the system by typing them in a “shell”. LINUX

commands are case sensitive so be careful when issuing a command, usually they are given

in lower-case.

The following list summarizes all the basic commands required to manage the data

files you will be creating in this lab course. All LINUX commands are entered from the

shell window (Terminal window).

Caution: Do not use LINUX commands for modifying, deleting, or moving any Cadence

data files.

Commands Description

ls [–la] Lists files in the current directory. ”l” lists with properties and “a”

also lists hidden files (ones beginning with a “.”).

cd XXXX Changes the current directory to XXXX.

cd .. Changes the current directory back one level.

cp XXXX YYYY Copies the file XXXX to YYYY.

mv XXXX YYYY Moves file XXXX to YYYY. Also used for rename

rm XXXX Deletes the file XXXX

mkdir XXXX Creates the directory XXXX.

lp -dXXXX YYYY Prints the textfile or postscript file YYYY to the printer named

XXXX, where XXXX can be either “ipszac” or “hpszac”.

Table 1: Common LINUX commands

Note: The command “&” tells LINUX to execute the command and return the prompt to the active shell.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 3

VLSI LAB MANUAL (10ECL77) 2017 - 18

ANALOG DESIGN

Custom IC Design Flow

Fig: Flow chart of custom IC design flow

Procedure for analog design

1. Login to your workstation using the username and password.

The home directory has a cshrc file with paths to the cadence installation.

2. In a terminal window, type csh at the command prompt to invoke C shell.

> csh

>cd cadence_db

> source cshrc_client

>ls

>cd cadence_ms_labs_613

In the terminal window, enter:

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 4

VLSI LAB MANUAL (10ECL77) 2017 - 18

>virtuoso &

The virtuoso or Command Interpreter Window (CIW) appears at the bottom of

the screen.

3. If the “What’s New…” window appears, close it with the File-Close command.

4. Keep opened CIW window for the labs.

Creating a new Library:

1. In the CIW window click on Tools-Library manager. The library manager window

will be opened.

2. Click File-New-Library. Specify the name for the new library. Click ok.

3. In the next “Technology File for New Library” form, select option Attach an

existing techfile and click ok.

4. In the “Attach Design Library to technology file” form, select gpdk180 from the

cyclic field and click ok

5. After creating a new library you can verify it from the Library manager.

Creating a Schematic Cellview:

1. In the CIW or Library manager, execute File-New-Cellview.

2. Setup the new file form.

3. Click ok. A blank schematic window for the design appears.

Adding Components to Schematics:

1. In the design window click the Instance fix menu icon to display add instance form.

2. Click on the browse button. This opens up a library browser from which you can

select the components and the symbol view.

3. After you complete the add instance form, move your cursor to the schematic

window and click left to place a component. If you place a component with wrong

parameter values, use the Edit-Properties-Objects command to change the

parameter. Use Edit-Move command if you place components in the wrong

location. You can rotate components using Edit-Rotate command.

4. After entering components, click cancel in the Add instance form or press Esc.

Adding Pins to Schematic:

1. Click the Pin fixed menu icon in the schematic window.

2. Make sure that the direction field is set to input/output/inout when placing the pins

respectively.

3. Select cancel from the Add-Pin form after placing the pins.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 5

VLSI LAB MANUAL (10ECL77) 2017 - 18

Adding Wires to a Schematic:

1. Click the wire (narrow) icon in the schematic window.

2. In the schematic window, click on a pin of one of your components as the first point

for your wiring. A diamond shape appears over the starting point of this wire.

3. Follow the prompts at the bottom of the design window and click left on the

destination point for your wire. A wire is routed between the source and destination

points.

4. Complete the wiring as shown in figure and when done wiring press ESC key in the

schematic window to cancel wiring.

5. Click the Check and Save icon in the Schematic editor window.

6. Observe the CIW output area for any errors.

Symbol Creation:

1. In the schematic window, execute

Create -Cellview -From Cellview.

The Cellview form appears. With the Edit options function active, you can control

the appearance of the symbol to generate.

2. Verify that the From View Name field is set to schematic, and the To View Name

field is set to symbol, with the Tool/Data Type set as Schematic symbol. Click ok.

3. Modify the pin specification.

4. Click ok.

Editing a Symbol:

1. Move the cursor over the automatically generated symbol, until the green rectangle

is highlighted, click left to select it.

2. Click Delete icon in the symbol window, similarly select the red rectangle and delete

that.

3. Execute Create-Shape-Polygon.

4. After creating the shape press ESC key.

5. You can move the pin names according to the location.

6. Execute Create-Selection Box. In the Add Selection Box form, click Automatic. A

new red selection box is automatically added.

7. After creating symbol, click on the save icon in the symbol editor window to save

the symbol. In the symbol editor, execute File-Close to close the symbol view

window.

Simulation with Spectre:

1. In the schematic window, execute Launch-ADE L

2. In the simulation window execute Setup- Simulator/Directory/Host.

3. In the choosing simulator form, set the simulator field to Spectre and click ok.

4. In the simulation window execute setup-Model Libraries.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 6

VLSI LAB MANUAL (10ECL77) 2017 - 18

5. Click the Browse button to add gpdk.scs if not added by default as shown in the

Model Library setup form, remember to select the section type as start in front of

gpdk.scs file. Click ok.

6. Click the Choose- Analysis icon .

7. To setup for transient analysis select tran icon, click at the moderate or enabled

button at the bottom, click Apply.

8. To setup for DC analysis select dc, turn on Save Dc Operating Point. Turn on the

Component Parameter. Click the select Component, which takes you to the

schematic window. Select input signal, Vpulse or DC analysis. Select start and stop

voltages. Click Apply and ok.

Selecting outputs for plotting:

1. Execute Outputs- To be plotted- Select on Schematic in the simulation window.

2. Follow the prompt at the bottom of the schematic window, click on the output net,

input net of the design. Press ESC with the cursor in the schematic after selecting it.

3. Execute Simulation-Netlist and Run to start the simulation.

Saving and Loading Simulator State:

1. In the simulation window, execute Session- Save State. Set the Save as field and

click ok.

2. In the simulation window execute Session- Load State, set the state name and click

ok.

Creating a Layout View:

1. From the schematic window menu execute Launch- Layout XL. A startup Option

form appears.

2. Select Create New option.

3. Check the cell name, View name. Click ok.

Adding Components to Layout:

1. Execute Connectivity-Generate-All from Source. Generate Layout form appears.

Click ok, which imports the schematic components into the layout window

automatically.

2. Rearrange the components within PR boundary.

3. To rotate a component, select the component and execute Edit-Properties. Now

select the degree of rotation.

4. To move a component, select the component and execute Edit-Move command.

Making Interconnection:

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 7

VLSI LAB MANUAL (10ECL77) 2017 - 18

1. Execute Connectivity-Nets-Show/Hide Selected incomplete nets.

2. Move the mouse pointer over the device and click LMB to get the connectivity

information, which shows the guidelines for the interconnections of the components.

3. From the layout window execute Create-Shape-Path or Create-Shape-Rectangle

and select the appropriate layers from the LSW window and Vias for making

interconnections.

Creating Contacts/Vias:

1. Execute Create-Via to place different contacts as given in the table below.

Connection Contact Type

For Metal1-Poly Metal1-Poly

For Metal1-P substrate Metal1-Psub

For Metal1-Nwell Metal1-Nwell

2. Save the design by selecting File-Save.

Running DRC:

1. Select Assura-Run DRC from Layout window. The DRC form appears. The

Library and cell name are taken from the current design window, but rule file may be

missing. Select the technology as gpdk180. This automatically loads the rule file.

2. Click ok to start DRC. A progress form will appear. You can click on the watch

clock file to see the Log file.

3. When DRC finishes, a dialog box appears, Click Yes to view the results.

4. If there are any DRC error exits in the design View Layer Window (VLW) and

Error Layer Window (ELW) appears. Also the errors highlight in the design itself.

5. Click View- Summary in the ELW to find the details of errors.

6. You can refer to rule file also for more information, correct all DRC errors and Re –

run the DRC.

7. If there are no errors in the layout then a dialog box appears with No DRC errors

found written in it, Click on close to terminate the DRC run.

ASSURA LVS:

1. Select Assura-Run LVS from the layout window. The Assura Run LVS form

appears, it will automatically load both the schematic and layout view of the cell.

2. Click OK. The LVS begins and a progress form appears.

3. If the schematic and layout matches completely, you will get the form displaying

Schematic and Layout Match.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 8

VLSI LAB MANUAL (10ECL77) 2017 - 18

4. If the schematic and Layout do not matches, a form informs that the LS completed

successfully and results form will appear, click YES in the form.

5. In the LVS debug form, find the details of mismatches and correct all those

mismatches and Re-Run the LVS.

ASSURA RCX:

1. From the layout window execute Assura-Run QRC.

2. Change the Assura Parasitic Extraction form, select Output Type under Setup tab

of the form.

3. In the Extraction tab of the form, choose Extraction type, Cap coupled mode and

specify the reference node for extraction.

4. In the filtering tab of the form, Enter Power Nets as Vdd!, Vss! and Enter Ground

Nets as gnd!

5. Click ok. The RCX progress form appears, in the progress form click Watch log file

to see the output log file.

6. When RCX completes, a dialog box appears, shows Assura RCX Run completed

successfully.

7. Open the av_extracted view from the Library manager and view the parasitic.

Configuration View:

1. In the CIW or Library manager, execute File-New-Cell view.

2. Click ok in Create New File form. The Hierarchy editor form opens and a New

Configuration form opens in front of it.

3. Click Use template at the bottom of the New Configuration form and select

Spectre in the cyclic field and click ok.

4. Change the Top Cell view to schematic and remove the default entry from the

Library List field.

5. Click ok. The Hierarchy editor displays the Hierarchy for the design using table

format.

6. Click the Tree View tab. The Design hierarchy changes to Tree format. Save the

current configuration.

7. Close the Hierarchy window, execute File-Close window.

To run the circuit without parasites:

1. From the Library manager open cell config view.

2. In the form, turn on the both cyclic buttons to Yes and click ok.

3. Execute Launch-ADE L from the schematic window.

4. Follow the same procedure for running the simulation. Execute Session-Load state.

5. Click Netlist and Run icon to start the simulation.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 9

VLSI LAB MANUAL (10ECL77) 2017 - 18

6. In the CIW, note the netlisting statistics in the circuit inventory section. This list

includes all nets, design devices, source and loads. There are no parasitic

components.

Measuring the Propagation Delay:

1. In the waveform window execute Tools-Calculator.

2. From the functions select delay, this will open the delay data panel.

3. Place the cursor in the text box for signal1, select the wave button and select the

input waveform from the waveform window.

4. Repeat the same for signal2, select the output form.

5. Set the Threshold value1 and Threshold value2.

6. Execute ok and observe the expression created in the calculator.

7. Click on Evaluate the Buffer icon to perform the calculation. Close calculator

window.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 10

VLSI LAB MANUAL (10ECL77) 2017 - 18

DIGITAL DESIGN

1. Login to your workstation using the username and password.

The home directory has a cshrc file with paths to the cadence installation.

2. In a terminal window, type csh at the command prompt to invoke C shell.

> csh

> cd cadence_db

> source cshrc_client

> cd Cadence_digital_labs

> cd Workarea

3. Create the directory by USN using a command mkdir USN

4. Enter the directory by using a command cd USN.

5. Create a new directory for each program using command mkdir programname.

6. Enter to the program directory using command cd programname.

7. Create a file to write a code using command vi filename.v Ex: vi inverter.v

8. Create a file to write a testbench using command vi filename_t.v Ex: vi inverter_t.v

9. Use :wq command to save and exit the file.

10 Create the local library directory. Ex mkdir design.lib

11 Create the cds.lib(vi cds.lib) file and make the following entry.

Ex: Define design_lib ./design.lib

12 Create the hdl.var file and make the following entry.

Ex: Define WORK design_lib

Define NCELABOPTS -messages

13. Compile the code using ncvlog filename.v –MESS. Ex: ncvlog inverter.v –MESS

14. Compile the test bench using ncvlog filename_t.v –MESS.

Ex: ncvlog inverter_t.v –MESS

15. Elaborate the testbench once again to place the testcode and snapshot in local library

using command ncelab topmodulename(of test bench) –access +rwc -MESS.

16. Simulate the testbench with gui option: ncsim topmodulename(of test bench) –gui.

17. Once the simulation is done see the waveform window and console window with the

outputs.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 11

VLSI LAB MANUAL (10ECL77) 2017 - 18

STEPS FOR SYNTHESIS: 1. Move into the rclabs directory inside the Workarea using the command – cd Cadence_digital_labs/Workarea/rclabs 2. There will be four directories inside rclabs namely – library , rtl , tcl and work , as shown

First, move into rtl directory using the command –

cd rtl

3. Inside rtl directory, copy the verilog program which has to be synthesized, using the

command –

cp ../../Design1/Codefile1.v Codefile1.v

e.g cp ../../USN/programmename/inverter.v inverter.v

This is required because the synthesis is performed only on the design file, and not on the

test bench. Now, edit the program file and delete all of the compiler directives which are

present in the program file (the commands preceded by `).

As the next step, if switch primitives are present in the program, then they have to be

replaced by the RTL description, because of the fact that, the switch primitives are not

synthesizable. The output of synthesis is a schematic using logic gates. This is called as

“logic synthesis”, which is technology independent.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 12

VLSI LAB MANUAL (10ECL77) 2017 - 18

4. Then come out of that directory using the command –

cd ../

5. Now enter into the tcl directory using the command – cd tcl 6. Inside tcl directory there is a file named setup.g . Open this file using the command – gedit setup.g & 7. In this file, you have to update two variables –

(a) FILE_LIST {filename} e.g: FILE_LIST {Codefile1.v}

(b) DESIGN modulename

Save the setup.g file and come out of tcl directory.

8. Next, enter into the directory work . Create a file named Contraints_file.g . The timing

constraints are defined in this file. Example of one such file is as shown –

create_clock -name clk -period 10 -waveform {0 5} [get_ports "clk"]

set_clock_transition -rise 0.1 [get_clocks "clk"]

set_clock_transition -fall 0.1 [get_clocks "clk"]

set_clock_uncertainty 1.0 [get_ports "clk"]

set_input_delay -max 1.0 [get_ports "A"] -clock [get_clocks "clk"]

set_input_delay -max 1.0 [get_ports "B"] -clock [get_clocks "clk"]

set_output_delay -max 1.0 [get_ports "sum"] -clock [get_clocks "clk"]

There are three different parts in the constraint file:

a. Clock definition and clock constraints –

create_clock -name clk -period 10 -waveform {0 5} [get_ports "clock"] �Clock definition

set_clock_transition -rise 0.1 [get_clocks " clk "] �Clock rise time

set_clock_transition -fall 0.1 [get_clocks " clk "] � Clock fall time

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 13

VLSI LAB MANUAL (10ECL77) 2017 - 18

set_clock_uncertainty 1.0 [get_ports " clk "] � Uncertainties of Clock

b. Input port timing constraints –

set_input_delay -max 1.0 [get_ports " A"] -clock [get_clocks " clk "]� Input port delay

set_input_delay -max 1.0 [get_ports " B"] -clock [get_clocks " clk "] � Input port delay

c. Output port timing constraints –

set_output_delay -max 1.0 [get_ports " sum "] -clock [get_clocks " clk "]�Output port

delay

The port names that are used in the constraint file (bolded) must match with the names that

are used in the Verilog program of the main design module. The constraints are defined for

all the ports in the design.

9. Now, invoke the Encounter tool using the command –

rc –gui

The tool will be invoked and you will get the rc prompt in the terminal, along with a

synthesis window. Next, the following commands are to be typed in the rc prompt –

1. include ../tcl/setup.g

2. set_attribute library $LIBRARY

3. set SYN_EFF medium

4. set MAP_EFF medium

5. read_hdl $FILE_LIST

6. elaborate $DESIGN

7. read_sdc ./Constraints_file.g

8. synthesize -to_generic -eff $SYN_EFF

9. report timing

10. report area

11. report power

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 14

VLSI LAB MANUAL (10ECL77) 2017 - 18

11. The tool will execute each command as and when it is entered. To come out of the

synthesis environment, exit or quit command in the rc prompt is used.

12. The commands of step-10 can be saved in a .tcl file in the work directory, and that

script file can be invoked in the rc prompt, by using the include command. Optionally, the

synthesis can be performed by going to the GUI window and clicking on File, and then

clicking on Source Script, and then selecting the respective script file.

NOTES 1. Linux commands:

ls list files cp copy files

mv rename files rm remove files

cd change directory pwd print working directory

mkdir make directory rmdir remove directory

When ls command is given, the directories are displayed in blue color, the files in black color, the link files in green color, and the tar files in red color respectively. 2. Command options:

~ � for root directory

. � for present directory

.. � for parent directory

-mess � for displaying messages

+rwc � for obtaining read, write, compilation access

& � for making the process a background one

3. Abbreviations:

GDS Generic Data Stream

IUS Incisive Unified Simulator

NC Native compiler

RC RTL compiler

RTL Register Transfer Level

TCL Tool Command Language

4. Cadence tools used:

IUS and Simvision - to compile, elaborate and simulate

rc and Encounter - for RTL Compilation & Synthesis

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 15

VLSI LAB MANUAL (10ECL77) 2017 - 18

LAB 1: INVERTER

Objective: To design an Inverter with given specifications and verifying the following

1. Schematic: i) DC Analysis ii) Transient Analysis

2. Layout: i) DRC ii) LVS iii) RCX

Design:

Device Cutoff Non saturation Saturation

P device

Vgsp>Vtp Vin > Vtp+Vdd

Vgsp<Vtp Vin < Vtp+Vdd Vdsp>Vgsp-Vtp Vout> Vin-Vtp

Vgsp<Vtp Vin<Vtp+Vdd Vdsp<Vgsp-Vtp Vout<Vin-Vtp

n device

Vgsn<Vtn Vin<Vtn

Vgsn>Vtn Vin> Vtn Vdsn<Vgs-Vtn Vout<Vin-Vtn

Vgsn>Vtn Vin>Vtn Vdsn>Vgs-Vtn Vout>Vin-Vtn

Region A: 0<= Vin<= Vtn, Vout=Vdd;

Region B: Vtn<= Vin<Vdd/2, Idsn=βn2

)( 2VtnVin −

Idsp= - βp[(Vin-Vdd-Vtp)(Vout-Vdd)- 2

)( 2VddVout −

]

Vout = (Vin-Vtp)+p

nVddVtp

VddVinVtpVin

β

β−−−−− )

2(2)( 2 2)( VtnVin −

Region C: Vin = Vdd/2, Idsp = - 2)(2

VtpVddVinp

−−β

Idsn= 2)(2

VtnVinn

−β

, With βn=βp and Vtn =-Vtp

Vin = Vdd/2

Region D: Vdd/2 < Vin<=Vdd+Vtp, Idsp = - 2)(2

VtpVddVinp

−−β

Idsn= ]2

)[(2

VoutVoutVtnVinn −−β

Vout = 22 )()()( VtpVddVinn

pVtnVinVtnVin −−−−−−

β

β

Region E: Vin>= Vdd-Vtp, Vout = 0

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 16

VLSI LAB MANUAL (10ECL77) 2017 - 18

Region Condition P device n device A 0≤Vin< Vtn Nonsaturation Cutoff

B Vtn≤ Vin<Vdd/2 Nonsaturation Saturation

C Vin=Vdd/2 Saturation Saturation

D Vdd/2<Vin≤Vdd - Vtp| Saturation Nonsaturation

E Vin>Vdd-|Vtp| Cutoff Nonsaturation

Inverter Schematic: Specifications:

Library name Cell name Properties gpdk180 pmos W=2µ, L=180n

gpdk180 nmos W=2µ, L=180n

Pin Names Direction Vin Input

Vout Output

vdd vss Input

Figure 1: Inverter Schematic

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 17

VLSI LAB MANUAL (10ECL77) 2017 - 18

Inverter_test Schematic: Specifications:

Library name Cell name Properties

analoglib Vpulse V1=0,V2=1.8,td=0,tr=tf=1ns, pulse width=10n, Period=20ns

analoglib Vdc Vdc=1.8

analoglib Gnd -

Analysis Values

Transient Stop time = 200ns

Dc Start time =0, stop time =2.

Figure 2: Inverter_test Schematic

Result

Figure 3(a): Transient response Figure 3(a): DC response

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 18

VLSI LAB MANUAL (10ECL77) 2017 - 18

Inverter Layout:

Figure 4: Inverter Layout

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 19

VLSI LAB MANUAL (10ECL77) 2017 - 18

LAB 2: COMMON SOURCE AMPLIFIER

Objective: To design a Common Source Amplifier with given specifications and Verify the following

1. Schematic: i) DC Analysis ii) AC Analysis iii) Transient Analysis

2. Layout: i) DRC ii) LVS iii) RCX

Design:

Av =Vout/Vin= - [resistance in drain/resistance in source]

= -

1

0201

1

||

gm

rr

Av = -gm 1 ( 0201 || rr )

CS Amplifier Schematic:

Specifications:

Library name Cell name Properties gpdk180 pmos W=50µ, L=1µ

gpdk180 nmos W=10µ, L=1µ

Pin Names Direction

vin vbias Input

vout Output

vdd vss Input

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 20

VLSI LAB MANUAL (10ECL77) 2017 - 18

Figure 5: CS Amplifier Schematic

CS Amplifier_test Schematic:

Specifications:

Library name Cell name Properties

analoglib Vsin AC Magnitude=1, Amplitude=5m,

Frequency=1k, offset voltage=0, DC voltage=0

analoglib Vdc,Vdc,Vdc

For Vdd: DC voltage =2.5, For Vss: DC voltage ==-2.5 For Vbias: DC voltage ==2.5

analoglib gnd -

Analysis Values

Transient Stop time = 5ms

Dc Start time = -5, stop time = 5.

Ac Start time= 100, stop time= 100M, Points per decade = 20.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 21

VLSI LAB MANUAL (10ECL77) 2017 - 18

Figure 6: CS Amplifier_test Schematic

Result

CS Amplifier Layout:

Figure 7: CS Amplifier Layout

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 22

VLSI LAB MANUAL (10ECL77) 2017 - 18

LAB 3: COMMON DRAIN AMPLIFIER

Objective: To design a Common Drain Amplifier with given specifications and verify the following

1. Schematic: i) DC Analysis ii) AC Analysis iii) Transient Analysis

2. Layout: i) DRC ii) LVS iii) RCX

Design:

I1=0; I2= - gm1 Vgs1 +(gmb1+gds1)Vo = - gm1 (V1 – V2) +(gmb1+gds1)Vo

Av= 2111

1

gdsgdsgmbgm

gm

+++

CD Amplifier Schematic:

Specifications:

Library name Cell name Properties gpdk180 nmos W=50µ, L=1µ

gpdk180 nmos W=10µ, L=1µ

Pin Names Direction vin vbias Input

vout Output

vdd vss Input

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 23

VLSI LAB MANUAL (10ECL77) 2017 - 18

Figure 8: CD Amplifier Schematic

CD Amplifier_test Schematic: Specifications:

Library name Cell name Properties

Analoglib Vsin AC Magnitude=1, Amplitude=5m,

Frequency=1k, offset voltage=0, DC voltage=0

Analoglib Vdc,Vdc,Vdc

For Vdd: DC voltage =2.5, For Vss: DC voltage ==-2.5 For Vbias: DC voltage ==2.5

Analoglib gnd -

Analysis Values Transient Stop time = 5ms

Dc Start time = -5, stop time = 5.

Ac Start time= 100,stop time= 100M,points per decade = 20.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 24

VLSI LAB MANUAL (10ECL77) 2017 - 18

Figure 9: CD Amplifier_test Schematic

Result

CD Amplifier Layout:

Figure 10: CD Amplifier Layout

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 25

VLSI LAB MANUAL (10ECL77) 2017 - 18

LAB 4: DIFFERENTIAL AMPLIFIER

Objective: To design a single stage Differential Amplifier with given specifications and verifying the following

1. Schematic: i) DC Analysis ii) AC Analysis iii) Transient Analysis

2. Layout: i) DRC ii) LVS iii) RCX

Design:

Iout = 221

13

131

1VgsgmVgs

rpgm

rpgmgm−

+

Where gm1=gm2=gmd, rp1= rds1||rds3

rout = 42

1

gdsgds + or

5)(

2

Ipn λλ +

Av = 42 gdsgds

gmd

+

(W/L) 1= (W/L) 2

Av = )2/)((

/'

42

111

Iss

lwIssk

λλ +

(W/L) 3 = (W/L) 4

Vgs3 = Vtnlwk

I

p

+3

5

)/('

2

(W/L) 5 = )('

22

5

5

satVdsk

I

n

Vds 5 (sat) = V Ic min – Vss – Vgs1

Diff Amp Schematic:

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 26

VLSI LAB MANUAL (10ECL77) 2017 - 18

Specification:

Library name

Cell name Properties

gpdk180 nmos Model name(NM0, NM1);

W=3µ, L=1µ

gpdk180 nmos Model name(NM2, NM3);

W=4.5µ, L=1µ

gpdk180 pmos Model name(PM0, PM1);

W=15µ, L=1µ

Figure 11: Diff Amp Schematic

Diff Amp_test Schematic:

Specifications:

Library name Cell name Properties

analoglib Vsin AC Magnitude=1, Amplitude=5m,

Frequency=1k

analoglib Vdc,Vdc For Vdd: DC voltage =2.5,

For Vss: DC voltage ==-2.5

analoglib gnd -

analoglib Idc DC Current =30u

Analysis Values Transient Stop time = 5ms

Pin Names Direction Idc, V1, V2 Input

vout Output

vdd vss InputOutput

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 27

VLSI LAB MANUAL (10ECL77) 2017 - 18

Dc Start time = -5, stop time = 5.

Ac Start time= 100,stop time= 100M,points per decade = 20.

Figure 12: Diff Amp_test Schematic

Result

Diff Amp Layout:

Figure 13: Diff Amp Layout

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 28

VLSI LAB MANUAL (10ECL77) 2017 - 18

LAB 5: OPERATIONAL AMPLIFIER

Objective: To design a Single Stage Operational Amplifier using Common Source and Common Drain Amplifier with given specifications and verifying the following

1. Schematic: i) DC Analysis ii) AC Analysis iii) Transient Analysis

2. Layout: i) DRC ii) LVS iii) RCX

Design:

51

2

11

')(

Ik

gm

L

W=

Where I5 = SR (Cc), gm1 = GB (Cc), Cc= (2.2/10)CL

2

133

53

(min)](max)||(max)[')(

VtVtoVinVddk

I

L

W

+−−=

2

55

55

)('

2)(

Vdsk

I

L

W=

Vds5 = Vin (min) – Vss - √ I5/β1 –Vt1 (max)

)(')(

66

66

satVdsk

gm

L

W=

gm6 = 2.2(gm2)(CL/Cc)

)()()(5

657

I

I

L

W

L

W=

)()(

2

766425

62

λλλλ ++=

II

gmgmAv

OP-AMP Schematic: Specifications: Library name Cell name Properties Design Lib Diff_amplifier Symbol

Design Lib cs_amplifier Symbol

Pin Names Direction Idc, Vinv, Vnoninv Input

Vo Output

vdd vss Input

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 29

VLSI LAB MANUAL (10ECL77) 2017 - 18

Figure 14: OP-AMP Schematic

OP-AMP_test Schematic:

Specifications:

Library name Cell name Properties

analoglib Vsin AC Magnitude=1, Amplitude=5µ,

Frequency=1k, offset voltage=0, DC voltage=0

analoglib Vdc,Vdc For Vdd: DC voltage =2.5,

For Vss: DC voltage ==-2.5

analoglib gnd -

analoglib Idc DC Current=30µ

Analysis Values Transient Stop time = 5ms

Dc Start time = -5, stop time = 5.

Ac Start time= 100,stop time= 100M,points per decade = 20.

Figure 15: OP-AMP_test Schematic

Result

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 30

VLSI LAB MANUAL (10ECL77) 2017 - 18

OP-AMP Layout:

Figure 16: OP-AMP Layout

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 31

VLSI LAB MANUAL (10ECL77) 2017 - 18

LAB 6: R-2R DAC

Objective: To design 4 bit R-2R DAC using Op-amp with given specifications and verifying the following

1. Schematic: i) DC Analysis ii) AC Analysis iii) Transient Analysis

2. Layout: i) DRC ii) LVS iii) RCX

R-2R DAC Schematic:

Specifications:

Library name Cell name Properties gpdk180 Polyres R=2k

gpdk180 Polyres R=1k

analoglib Idc Idc=30µ

analoglib gnd -

Figure 17: R-2R DAC Schematic

R-2R DAC_test Schematic:

Specifications:

Library name Cell name Properties

analoglib Vpulse For V0: v1=0, v2=2, Ton=5n, T=10n For V1: v1=0, v2=2, Ton=10n, T=20n For V2: v1=0, v2=2, Ton=20n, T=40n For V3: v1=0, v2=2, Ton=40n, T=80n

analoglib Vdc,Vdc For Vdd: DC voltage =2.5, For Vss: DC voltage ==-2.5

analoglib gnd -

Analysis Values Transient Stop time = 300ns

Pin Names Direction D0 D1 D2 D3 Input

Vout Output

vdd vss Input

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 32

VLSI LAB MANUAL (10ECL77) 2017 - 18

Figure 18: R-2R DAC_test Schematic

Result

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 33

VLSI LAB MANUAL (10ECL77) 2017 - 18

R-2R DAC Layout:

Figure 19: R-2R DAC Layout

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 34

VLSI LAB MANUAL (10ECL77) 2017 - 18

DIGITAL DESIGN

LAB 1: INVERTER Objective: To Compile and simulate the Verilog Code for an inverter circuit and observe the waveform.

Inverter: `resetall `timescale 1 ns / 1 ns `view vlog //Define our own Inverter, module inverter ( out , in ); // Declarations of I/O, Power and Ground Lines output out; input in; supply1 pwr; supply0 gnd; // Instantiate pmos and nmos switches pmos (out,pwr,in); nmos (out,gnd,in); endmodule `noview

Inverter_test: `resetall `timescale 1 ns / 1 ns `view vlog // Testbench for Inverter Module module inv_test; wire out ; reg in ; `uselib view = vlog // Instantiate inverter Module

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 35

VLSI LAB MANUAL (10ECL77) 2017 - 18

inverter i ( out, in ) ; `nouselib // Display task display ; begin $display ( "time=%0d" , $time , " ns" , " Input=" , in , " Output=", out ) ; end endtask // Apply Stimulus initial begin in = 1'b0 ; #10 ; display ; in = 1'b1 ; #10 ; display ; in = 1'bx ; #10 ; display ; in = 1'bz ; #10 ; display ; end endmodule `noview Note: The task “display” is used to display the output on the monitor, in the form of a truth table. For observing the waveforms, the Simvision tool can be invoked.

Constraints file for Synthesis: Constraints_Inverter.g set_input_delay -max 1.0 [get_ports "in"] set_output_delay -max 1.0 [get_ports "out"]

Truth Table

Input Output

A Y

0 1

1 0

X X

Z X

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 36

VLSI LAB MANUAL (10ECL77) 2017 - 18

Result

For synthesis, follow the steps that are mentioned previously. After synthesis, the synthesis window will be shown as follows –

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 37

VLSI LAB MANUAL (10ECL77) 2017 - 18

LAB 2: BUFFER Objective: To write Verilog Code for the Buffer circuit and Test Bench for Verification, observe the waveform. Buffer: `resetall `timescale 1 ns / 1 ns `view vlog //Define our own Inverter, module inverter( Y, A ); // Declarations of I/O, Power and Ground Lines output Y; input A; supply1 pwr; supply0 gnd; // Instantiate pmos and nmos switches pmos (Y,pwr,A); nmos (Y,gnd,A); endmodule // Define our own Buffer module buffer ( out, in ); // Declarations of I/O Lines output out; input in; // Wire Declaration wire a; // Instantiate Inverter module inverter i1 (a,in); inverter i2 (out,a); endmodule `noview

Buffer_test: `resetall `timescale 1 ns / 1 ns `view vlog // Testbench for Buffer Module

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 38

VLSI LAB MANUAL (10ECL77) 2017 - 18

module buf_test; wire out ; reg in ; `uselib view = vlog // Instantiate Buffer Module buffer b1( out,in ) ; `nouselib // Display task display ; begin $display ( "time=%0d" , $time , " ns", " Input=" , in , " Output=", out ) ; end endtask // Apply Stimulus initial begin in = 1'b0 ; #10 ; display ; in = 1'b1 ; #10 ; display ; in = 1'bx ; #10 ; display ; in = 1'bz ; #10 ; display ; end endmodule `noview

Constraints file for Synthesis: Constraints_Buffer.g set_input_delay -max 1.0 [get_ports "in"] set_output_delay -max 1.0 [get_ports "out"]

Truth Table

Input Output

A Y

0 0

1 1

X X

Z X

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 39

VLSI LAB MANUAL (10ECL77) 2017 - 18

Result

The snapshot obtained after synthesis is as shown below –

When double-clicked inside the blocks shown, the subsystem is displayed as shown –

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 40

VLSI LAB MANUAL (10ECL77) 2017 - 18

LAB 3: TRANSMISSION GATE Objective: To write Verilog Code for the Transmission gate circuit and Test Bench For Verification, observe the waveform.

TG: `resetall `timescale 1 ns / 1 ns `view vlog //Define our own Transmission Gate, module trangate ( out , in , cntrl1, cntrl2 ); // Declarations of I/O and Control Lines output out; input in; input cntrl1,cntrl2; // Instantiate pmos and nmos switches pmos (out,in,cntrl1); nmos (out,in,cntrl2); endmodule `noview

TG_test:

`resetall `timescale 1 ns / 1 ns `view vlog // Testbench for Inverter Module module trangate_test; wire out ; reg in ; reg cntrl1,cntrl2; `uselib view = vlog // Instantiate trangate Module

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 41

VLSI LAB MANUAL (10ECL77) 2017 - 18

trangate t1 ( out, in, cntrl1, cntrl2 ) ; `nouselib // Display task display ; begin $display ( "time=%0d" , $time , " ns", " Input=" , in, " Output=", out, " Control1=",cntrl1, " Control2=",cntrl2 ) ; end endtask // Apply Stimulus initial begin in = 1'b0 ; cntrl1 = 1'b0 ; cntrl2 = 1'b1 ; #10 ; display ; in = 1'b0 ; cntrl1 = 1'b1 ; cntrl2 = 1'b0 ; #10 ; display ; in = 1'b1 ; cntrl1 = 1'b0 ; cntrl2 = 1'b1 ; #10 ; display ; in = 1'b1 ; cntrl1 = 1'b1 ; cntrl2 = 1'b0 ; #10 ; display ; end endmodule `noview

Truth Table Input Cntrl1 Cntrl2 Output

0 0 1 0

0 1 0 Z

1 0 1 1

1 1 0 Z

Result

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 42

VLSI LAB MANUAL (10ECL77) 2017 - 18

LAB 4: BASIC/ UNIVERSAL GATES

Objective: To write Verilog Code for the Basic/ Universal gates and Test Bench For Verification, observe the waveform.

1) AND: `resetall `timescale 1 ns / 1 ns `view vlog //Define our own And Gate, module andgate ( out ,in1 , in2 ); // Declarations of I/O ,Power and Ground Lines output out; input in1,in2; supply1 pwr; supply0 gnd; // Declaration of Wires wire contact; wire nout // Instantiate pmos and nmos switches to form Nand gate pmos (nout,pwr,in1); pmos (nout,pwr,in2); nmos (nout,contact,in2); nmos (contact,gnd,in1); // Instantiate pmos and nmos switches to form Inv pmos (out,pwr,nout); nmos (out,gnd,nout); endmodule `noview

AND_test: `resetall `timescale 1 ns / 1 ns `view vlog // Testbench for And Module

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 43

VLSI LAB MANUAL (10ECL77) 2017 - 18

module and_test; wire out ; reg in1,in2 ; `uselib view = vlog // Instantiate And Gate Module andgate a1 ( out, in1, in2 ) ; `nouselib // Display task display ; begin $display ( "time=%0d" , $time , " ns" ," Input1=" , in1 , " Input2=" , in2 , " Output=" , out ) ; end endtask // Apply Stimulus initial begin in1 = 1'b0 ; in2 = 1'b0 ; #10 ; display ; in1 = 1'b0 ; in2 = 1'b1 ; #10 ; display ; in1 = 1'b1 ; in2 = 1'b0 ; #10 ; display ; in1 = 1'b1 ; in2 = 1'b1 ; #10 ; display ; end endmodule `noview

Truth Table

Result

Input Output

A B Y

0 0 0

0 1 0

1 0 0

1 1 1

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 44

VLSI LAB MANUAL (10ECL77) 2017 - 18

2) OR: `resetall `timescale 1 ns / 1 ns `view vlog //Define our own Or Gate, module orgate ( out , in1 , in2 ); // Declarations of I/O ,Power and Ground Lines output out; input in1,in2; supply1 pwr; supply0 gnd; // Declaration of Wires wire contact; wire nout; // Instantiate pmos and nmos switches for Nor gate pmos (contact,pwr,in2); pmos (nout,contact,in1); nmos (nout,gnd,in1); nmos (nout,gnd,in2); // Instantiate pmos and nmos switches for Not gate pmos (out,pwr,nout); nmos (out,gnd,nout); endmodule `noview

OR_test:

`resetall `timescale 1 ns / 1 ns `view vlog // Testbench for Nor Gate Module module or_test; wire out ; reg in1,in2 ; `uselib view = vlog // Instantiate Orgate Module

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 45

VLSI LAB MANUAL (10ECL77) 2017 - 18

orgate n1 ( out, in1, in2) ; `nouselib // Display task display ; begin $display ( "time=%0d" , $time , " ns" ," Input1=" , in1 , " Input2=" , in2 , " Output=" , out ) ; end endtask // Apply Stimulus initial begin in1 = 1'b0 ; in2 = 1'b0 ; #10 ; display ; in1 = 1'b0 ; in2 = 1'b1 ; #10 ; display ; in1 = 1'b1 ; in2 = 1'b0 ; #10 ; display ; in1 = 1'b1 ; in2 = 1'b1 ; #10 ; display ; end endmodule `noview

Truth Table

Result

Input Output

A B Y

0 0 0

0 1 1

1 0 1

1 1 1

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 46

VLSI LAB MANUAL (10ECL77) 2017 - 18

3) NAND: `resetall `timescale 1 ns / 1 ns `view vlog //Define our own Nand Gate, module nandgate ( out , in1 , in2 ); // Declarations of I/O ,Power and Ground Lines output out; input in1,in2; supply1 pwr; supply0 gnd; // Declaration of Wire wire contact; // Instantiate pmos and nmos switches pmos (out,pwr,in1); pmos (out,pwr,in2); nmos (out,contact,in2); nmos (contact,gnd,in1); endmodule `noview

NAND_test: `resetall `timescale 1 ns / 1 ns `view vlog // Testbench for Nand Gate Module module nand_test; wire out ; reg in1,in2 ; `uselib view = vlog // Instantiate Nand Gate Module nandgate n1 ( out, in1, in2 ) ;

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 47

VLSI LAB MANUAL (10ECL77) 2017 - 18

`nouselib // Display task display ; begin $display ( "time=%0d" , $time , " ns"," Input1=" , in1 , " Input2=" , in2 , " Output=" , out ) ; end endtask // Apply Stimulus initial begin in1 = 1'b0 ; in2 = 1'b0 ; #10 ; display ; in1 = 1'b0 ; in2 = 1'b1 ; #10 ; display ; in1 = 1'b1 ; in2 = 1'b0 ; #10 ; display ; in1 = 1'b1 ; in2 = 1'b1 ; #10 ; display ; end endmodule `noview

Truth Table

Result

Input Output

A B Y

0 0 1

0 1 1

1 0 1

1 1 0

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 48

VLSI LAB MANUAL (10ECL77) 2017 - 18

4) NOR: `resetall `timescale 1 ns / 1 ns `view vlog //Define our own Nor Gate, module norgate ( out , in1 , in2 ); // Declarations of I/O ,Power and Ground Lines output out; input in1,in2; supply1 pwr; supply0 gnd; // Declaration of Wire wire contact; // Instantiate pmos and nmos switches pmos (contact,pwr,in2); pmos (out,contact,in1); nmos (out,gnd,in1); nmos (out,gnd,in2); endmodule `noview

NOR_test

`resetall `timescale 1 ns / 1 ns `view vlog // Testbench for Nor Gate Module module nor_test; wire out ; reg in1,in2 ; `uselib view = vlog // Instantiate Nor Gate Module norgate n1 ( out, in1, in2 ) ; `nouselib

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 49

VLSI LAB MANUAL (10ECL77) 2017 - 18

// Display task display ; begin $display( "time=%0d" , $time , " ns" , " Input1=" , in1 , " Input2=" , in2 , " Output=" , out ) ; end endtask // Apply Stimulus initial begin in1 = 1'b0 ; in2 = 1'b0 ; #10 ; display ; in1 = 1'b0 ; in2 = 1'b1 ; #10 ; display ; in1 = 1'b1 ; in2 = 1'b0 ; #10 ; display ; in1 = 1'b1 ; in2 = 1'b1 ; #10 ; display ; end endmodule `noview

Truth Table

Result

Input Output

A B Y

0 0 1

0 1 0

1 0 0

1 1 0

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 50

VLSI LAB MANUAL (10ECL77) 2017 - 18

5) XNOR: Schematic diagram using pass transistor logic

`resetall `timescale 1 ns / 1 ns `view vlog //Define our own XNOR Gate, module xnorgate ( out , in1 , in2 ); // Declarations of I/O ports output out; input in1,in2; wire in2bar; assign in2bar = ~in2; // Instantiate pmos and nmos switches : pmos (out,in2bar,in1); nmos (out,in2,in1); pmos (out,in1,in2bar); nmos (out,in1,in2); endmodule `noview

XNOR_test

`resetall `timescale 1 ns / 1 ns `view vlog // Testbench for Xnor Module

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 51

VLSI LAB MANUAL (10ECL77) 2017 - 18

module xnor_test; wire out ; reg in1,in2 ; `uselib view = vlog // Instantiate Xnor gate Module xnorgate x1 ( out, in1, in2 ) ; `nouselib // Display task display ; begin $display ( "time=%0d" , $time , " ns"," Input1=" , in1 ," Input2=" , in2 , " Output=" , out ) ; end endtask // Apply Stimulus initial begin in1 = 1'b0 ; in2 = 1'b0 ; #10 ; display ; in1 = 1'b0 ; in2 = 1'b1 ; #10 ; display ; in1 = 1'b1 ; in2 = 1'b0 ; #10 ; display ; in1 = 1'b1 ; in2 = 1'b1 ; #10 ; display ; end endmodule `noview

Truth Table

Input Output

A B Y

0 0 1

0 1 0

1 0 0

1 1 1

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 52

VLSI LAB MANUAL (10ECL77) 2017 - 18

Result

6) XOR: Schematic diagram using pass transistor logic

`resetall `timescale 1 ns / 1 ns `view vlog //Define our own XOR Gate, module xorgate ( out , in1 , in2 ); // Declarations of I/O ports output out; input in1,in2; wire in2bar; assign in2bar = ~in2; // Instantiate pmos and nmos switches : pmos (out,in2,in1); nmos (out,in2bar,in1); pmos (out,in1,in2); nmos (out,in1,in2bar);

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 53

VLSI LAB MANUAL (10ECL77) 2017 - 18

endmodule `noview

XOR_test:

`resetall `timescale 1 ns / 1 ns `view vlog // Testbench for Xor Module module xor_test; wire out ; reg in1,in2 ; `uselib view = vlog // Instantiate Xorgate Module xorgate x1 ( out, in1, in2 ) ; `nouselib // Display task display ; begin $display( "time=%0d" , $time , " ns" , " Input1=" , in1," Input2=" , in2, " Output=" , out ) ; end endtask // Apply Stimulus initial begin in1 = 1'b0 ; in2 = 1'b0 ; #10 ; display ; in1 = 1'b0 ; in2 = 1'b1 ; #10 ; display ; in1 = 1'b1 ; in2 = 1'b0 ; #10 ; display ; in1 = 1'b1 ; in2 = 1'b1 ; #10 ; display ; end endmodule `noview

Truth Table

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 54

VLSI LAB MANUAL (10ECL77) 2017 - 18

Result

Alternate Code: Verilog Code to Realize all logic gates

module gates(input a_in,b_in,

output not_op,and_op,nand_op,or_op,nor_op,xor_op,xnor_op);

assign not_op=~a_in;

assign and_op=(a_in&b_in);

assign nand_op=~(a_in&b_in);

assign or_op=(a_in|b_in);

assign nor_op=~(a_in|b_in);

assign xor_op=(a_in^b_in);

assign xnor_op=~(a_in^b_in);

endmodule

Simulation Result:

Input Output

A B Y

0 0 0

0 1 1

1 0 1

1 1 0

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 55

VLSI LAB MANUAL (10ECL77) 2017 - 18

Constraints file for Synthesis: Constraints_gates.g set_input_delay -max 1.0 [get_ports "a"] set_input_delay -max 1.0 [get_ports "b"] set_output_delay -max 1.0 [get_ports "andg"] set_output_delay -max 1.0 [get_ports "org"] set_output_delay -max 1.0 [get_ports "nandg"] set_output_delay -max 1.0 [get_ports "norg”] set_output_delay -max 1.0 [get_ports "xorg"] set_output_delay -max 1.0 [get_ports "xnorg"]

3. The synthesis result snapshot using RTL description is as shown –

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 56

VLSI LAB MANUAL (10ECL77) 2017 - 18

LAB 5: FLIP FLOPS

Objective: To write Verilog Code for various Flip flop circuits and Test Bench For Verification, observe the waveform.

1) D-FF: module d_ff(d, rst, clk, q, qb); input d, rst, clk; output q, qb; reg q,qb; always@(posedge clk) begin

if (rst==1) begin

q=0; qb=1;

end else begin

q=d; qb=~d;

end end endmodule

D-FF_test: module d_ff_test; reg clk, d, rst; wire q,qb, d1, clk1; d_ff df1 (d, rst, clk, q, qb); assign d1=d; assign clk1=clk; initial clk = 1'b0; always #5 clk = ~clk; initial begin d = 1'b0; rst = 1'b1; #30 rst = 1'b0; #40 d = 1'b1; #20 d = 1'b0; #10 ; end specify $setup(d1, posedge clk1, 2);

D

FLIP-FLOP

d

clk

rst

q

qb

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 57

VLSI LAB MANUAL (10ECL77) 2017 - 18

$hold(posedge clk1, d1, 2); $width(negedge d1, 2); endspecify endmodule

Truth Table

RESET D Q QBAR 1 X 0 1

0 0 0 1

0 1 1 0

Result

2) JK-ff: module jk_ff(jk, clk, rst, q, qb); input [1:0]jk; input clk,rst; output q, qb; reg q, qb; always @ (posedge clk) begin

if(rst==1) begin

q=0; qb=1;

end else begin

case (jk) 2'b00: begin q=q; qb=qb; end 2'b01: begin q=0; qb=1; end 2'b10: begin q=1; qb=0; end 2'b11: begin q=~(q); qb=~(qb); end

endcase end

end endmodule

JK-FF_test:

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 58

VLSI LAB MANUAL (10ECL77) 2017 - 18

module jk_ff_test; reg clk,rst; reg [1:0] jk; wire q,qb; wire clk1; wire [1:0] jk1; jk_ff jkff(jk, clk, rst, q, qb); assign clk1=clk; assign jk1=jk; initial clk = 1'b0; always #5 clk = ~clk; initial begin jk = 2'b00; rst = 1'b1; #20 rst = 1'b0; #20 jk = 2'b01; #20 jk = 2'b10; #20 jk = 2'b11; #20 rst = 1'b1; #10 ; end specify $setup(j1, posedge clk1, 2);

$setup(k1, posedge clk1, 2);

$hold(posedge clk1, j1, 2);

$hold(posedge clk1, k1, 2);

endspecify

endmodule

Constraints file for Synthesis: Constraints_JK_ff.g create_clock -name clk -period 10 -waveform {0 5} [get_ports "clk"]

set_clock_transition -rise 0.1 [get_clocks "clk"]

set_clock_transition -fall 0.1 [get_clocks "clk"]

set_clock_uncertainty 1.0 [get_ports "clk"]

set_input_delay -max 1.0 [get_ports "rst"] -clock [get_clocks "clk"]

set_input_delay -max 1.0 [get_ports "j"] -clock [get_clocks "clk"]

set_input_delay -max 1.0 [get_ports "k"] -clock [get_clocks "clk"]

set_output_delay -max 1.0 [get_ports "q"] -clock [get_clocks "clk"]

set_output_delay -max 1.0 [get_ports "qbar"] -clock [get_clocks "clk"]

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 59

VLSI LAB MANUAL (10ECL77) 2017 - 18

Following is the synthesis result snapshot for the JK flip-flop –

Truth Table

RESET J K Q QBAR

1 X X 0 1

0 0 0 Q QBAR

0 0 1 0 1

0 1 0 1 0

0 1 1 ~Q ~QBAR

Result

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 60

VLSI LAB MANUAL (10ECL77) 2017 - 18

3) MS-FF: module ms_jkff(q,q_bar,clk,j,k); output q,q_bar; input clk,j,k; reg tq,q,q_bar; always @(clk) begin if (!clk) begin if (j==1'b0 && k==1'b1) tq <= 1'b0; else if (j==1'b1 && k==1'b0) tq <= 1'b1; else if (j==1'b1 && k==1'b1) tq <= ~tq; end if (clk) begin q <= tq; q_bar <= ~tq; end end endmodule

MS-FF_test: module tb_ms_jkff; reg clk,j,k; wire q,q_bar; wire clk2,j2,k2; ms_jkff inst(q,q_bar,clk,j,k); assign clk2=clk; assign j2=j; assign k2=k; initial clk = 1'b0; always #10 clk = ~clk; initial begin j = 1'b0; k = 1'b0; #60 j = 1'b0; k = 1'b1; #40 j = 1'b1; k = 1'b0; #20 j = 1'b1; k = 1'b1; #40 j = 1'b1; k = 1'b0; #5 j = 1'b0; #20 j = 1'b1; #10 ; end

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 61

VLSI LAB MANUAL (10ECL77) 2017 - 18

always #5 $display($time," clk=%b j=%b k=%b ",clk,j,k); initial #200 $finish; specify $setup(j2, posedge clk2, 2); $setup(k2, posedge clk2, 2); $hold(posedge clk2, j2, 2); $hold(posedge clk2, k2, 2); endspecify endmodule

Truth Table

RESET J K Q QBAR

0 X X 0 1

1 0 0 0 1

1 0 1 0 1

1 1 0 1 0

1 1 1 1 0

Result

4) T-FF:

module t_ff(t, clk, rst, q, qb); input t, clk, rst; output q, qb; reg q,qb; always @ (posedge clk) begin if (rst==1) begin

T

FLIP-FLOP

t

clk

rst

q

qb

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 62

VLSI LAB MANUAL (10ECL77) 2017 - 18

q=1’b0; qb=1’b1;

end else begin

case t 1’b0:begin q=q; qb=qb; end 1’b1:begin q=~(q); qb=~(qb); end

endcase end end endmodule

T-FF_test:

module t_ff_t; reg clk,t,rst; wire q,qb; t_ff t1(t, clk, rst, q, qb); initial clk = 1'b0; always #10 clk = ~clk; initial begin rst = 1'b1; t = 1'b0; #30 rst = 1'b0; #10 t = 1'b1; #30 t = 1'b0; #20 rst = 1'b1; #20 ; end endmodule

Truth Table

RESET T Q QBAR

1 X 0 1

0 0 Q QBAR

0 1 ~Q ~QBAR

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 63

VLSI LAB MANUAL (10ECL77) 2017 - 18

Result

5) RS-FF: module sr_ff(sr, clk, rst, q, qb); input [1:0] sr; input rst, clk; output q,qb; reg q,qb; always @ (posedge clk) begin if (rst==1) begin q=0; qb=1; end else begin case (sr) 2'b00: begin q=q; qb=qb; end 2'b01: begin q=0; qb=1; end 2'b10: begin q=1; qb=0; end 2'b11: begin q=1'bx; qb=1'bx; end endcase end end endmodule

RS-FF_test: module sr_ff_test; reg clk,rst; wire q,qb; reg [1:0] sr; wire [1:0] sr1;

wire clk1; sr_ff sr1(sr, clk, rst, q, qb); assign sr1=sr; assign clk1=clk; initial clk = 1'b0; always

S-R

FLIP-FLOP

S

CLK

R

Q

QBAR

RST

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 64

VLSI LAB MANUAL (10ECL77) 2017 - 18

#5 clk = ~clk; initial begin sr = 2'b00; rst=1’b1; #30 rst =1’b0; #30 sr = 2'b01; #40 sr = 2'b10; #30 sr = 2'b11; #10 ; end specify $setup(s1, posedge clk1, 2); $setup(r1, posedge clk1, 2); $hold(posedge clk1, s1, 2); $hold(posedge clk1, r1, 2); endspecify endmodule

Truth Table

INPUTS OUTPUTS

RST S R Q QBAR 1 X X 0 1

0 0 0 Q QBAR

0 0 1 0 1

0 1 0 1 0

0 1 1 X X

Result

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 65

VLSI LAB MANUAL (10ECL77) 2017 - 18

LAB 6: PARALLEL AND SERIAL ADDERS Objective: To write Verilog Code for the Serial and Parallel Adder and Test Bench For Verification, observe the waveform.

1) i) Parallel Adder module adder4 ( carryin,x,y,sum,carryout); input carryin; input [3:0] x,y; output [3:0] sum; output carryout; fulladd stage0 (carryin,x[0],y[0],sum[0],c1); fulladd stage1 (c1,x[1],y[1],sum[1],c2); fulladd stage2 (c2,x[2],y[2],sum[2],c3); fulladd stage3 (c3,x[3],y[3],sum[3],carryout); endmodule module fulladd (cin,x,y,s,cout); input cin,x,y; output s,cout; assign s = x^y^cin; assign cout =( x & y) | (x & cin) |( y & cin); endmodule

ii) Parallel Adder_test module adder4_t ; reg [3:0] x,y; reg carryin; wire [3:0] sum; wire carryout; adder4 a1 ( carryin,x,y,sum,carryout); initial begin x = 4'b0000; y= 4'b0000;carryin = 1'b0; #20 x =4'b1111; y = 4'b1010; #40 x =4'b1011; y =4'b0110; #40 x =4'b1111; y=4'b1111; #50 $finish; end endmodule

Result

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 66

VLSI LAB MANUAL (10ECL77) 2017 - 18

i) Serial adder Code 1

module serial_adder ( A,B, reset, clock, sum); input [7:0] A,B; input reset,clock; output [7:0] sum; reg [3:0] count; reg s,y,Y; wire [7:0] qa,qb,sum; wire run; parameter G=0,H=1; shiftrne shift_A (A,reset,1,0,clock,qa); shiftrne shift_B (B,reset,1,0,clock,qb); shiftrne shift_sum (0,reset,run,s,clock,sum); //adder fsm //output and next state combinational circuit always @(qa or qb or y) case (y) G: begin s = qa[0]^qb[0]; if (qa[0] & qb[0]) Y = H; else Y = G; end H: begin s = qa[0] ~^qb[0]; if (~qa[0] & ~qb[0]) Y =G; else Y = H; End default : Y = G; endcase //sequential block always @(posedge clock) if (reset) y <= G;

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 67

VLSI LAB MANUAL (10ECL77) 2017 - 18

else y <= Y; //control the shifting process always @(posedge clock) if (reset) count = 8; else if (run) count = count - 1; assign run=|count; endmodule

ii) Serial adder_test

module serial_adder_t ; reg [7:0] A,B; reg reset,clock; wire [7:0] sum ; initial clock = 1'b0; always #5 clock =~clock; serial_adder s1 (A,B,reset,clock,sum); initial begin reset = 1'b0;A = 8'b10101010; B = 8'b11111111; #20 reset = 1'b1; #20 reset = 1'b0; #150 reset = 1'b1; A = 11110000 ; B = 8'b11110011; #20 reset = 1'b0; #200 $finish; end initial $monitor ($time, " SUM = %d ", sum); endmodule iii) Shift reg:

module shiftrne ( R,L,E,w,clock,q); parameter n=8; input [n-1:0] R; input L,E,w,clock; output [n-1:0] q; reg [n-1:0] q; integer k; always @(posedge clock) if (L) q <= R; else if (E)

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 68

VLSI LAB MANUAL (10ECL77) 2017 - 18

begin for (k=n-1;k>0;k=k-1) q[k-1] <= q[k]; q[n-1] <= w; end endmodule

Result

ii)SERIAL ADDER DESIGN CODE module adder_serial( input clk,rst, input en, // on Enable, addition will start input a, // 4-bit adder input b, output [3:0] result ); reg [3:0] y; reg carry; always@(posedge rst or posedge clk) begin if (rst) begin y = 4'b0; carry = 1'b0; end else if (en) begin y[3] = y[2]; y[2] = y[1]; y[1] = y[0]; {carry,y[0]} = a + b + carry;

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 69

VLSI LAB MANUAL (10ECL77) 2017 - 18

end end assign result = y; endmodule TEST BENCH CODE module serial_adder_test;

reg clk,rst,en,a,b;

Wire [3:0] result;

adder_serial U1 (clk,rst,en,a,b,result); //instantiation

Initial

clk=1’b0;

always

#5 clk=~clk;

Initial

begin

Rst =1’b1;en=1’b0;a=0;b=0;

#10 Rst =1’b0;en=1’b1;a=1;b=0;

#10 Rst =1’b0;en=1’b1;a=0;b=1;

#10 Rst =1’b0;en=1’b1;a=1;b=1;

#10 Rst =1’b0;en=1’b1;a=0;b=1;

#10 Rst =1’b0;en=1’b1;a=1;b=0;

#200 $finish;

end

endmodule

Result

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 70

VLSI LAB MANUAL (10ECL77) 2017 - 18

LAB 7: 4-BIT COUNTERS Objective: To write Verilog Code for the 4-bit Synchronous and Asynchronous counter And Test Bench for Verification, observe the waveform.

1) Asynchronous counter: module counter_behav ( count,reset,clk); input wire reset, clk; output reg [3:0] count; always @(posedge clk or posedge rst) begin if (reset) count <= 4'b0000; else count <= count + 4'b0001; end endmodule

Asynchronous counter_test

module mycounter_t ; wire [3:0] count; reg reset,clk; initial clk = 1'b0; always #5 clk = ~clk; counter_behav m1 ( count,reset,clk); initial begin reset = 1'b0 ; #15 reset =1'b1; #30 reset =1'b0; #300 $finish; end initial $monitor ($time, "Output count = %d ",count ); endmodule

Result

2) Synchronous Counter

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 71

VLSI LAB MANUAL (10ECL77) 2017 - 18

module counter_behav ( count,reset,clk); input wire reset, clk; output reg [3:0] count; initial count =4’b0000; always @(posedge clk) if (reset) count <= 4'b0000; else count <= count + 4'b0001; endmodule

Synchronous counter_test module mycounter_t ; wire [3:0] count; reg reset,clk; initial clk = 1'b0; always #5 clk = ~clk; counter_behav m1 ( count,reset,clk); initial begin reset = 1'b0 ; #15 reset =1'b1; #30 reset =1'b0; #300 $finish; end initial $monitor ($time, "Output count = %d ",count ); endmodule

Result

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 72

VLSI LAB MANUAL (10ECL77) 2017 - 18

LAB 8: SUCCESSIVE APPROXIMATION REGISTER Aim: To compile and to simulate the Verilog code for the successive approximation register. Design Files: I Main Design Module: sar.v module sar (digitalout,done,comp,start,reset,clk); output [3:0] digitalout; output done; input clk, start, reset, comp; reg [3:0]ring_count; reg [3:0]digital; wire D4,set0,set1,set2,set3; assign D4 = ring_count[0]; assign done = !D4; always @(posedge clk or negedge reset) begin if (~reset) ring_count <= 4'b1000; else begin if (start) ring_count <= 4'b1000; else ring_count <= (ring_count>>1); end end assign set3 = ring_count[3]; assign set2 = ring_count[2]; assign set1 = ring_count[1]; assign set0 = ring_count[0]; always @(posedge clk or negedge reset) begin if(~reset) digital[3] <= 1'b1; else if(start) digital[3] <= 1'b1; else if(set3) digital[3] <= comp; end always @(posedge clk or negedge reset) begin if(~reset) digital[2] <= 1'b1; else if(start)

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 73

VLSI LAB MANUAL (10ECL77) 2017 - 18

digital[2] <= 1'b1; else if(set2) digital[2] <= comp; end always @(posedge clk or negedge reset) begin if(~reset) digital[1] <= 1'b1; else if(start) digital[1] <= 1'b1; else if(set1) digital[1] <= comp; end always @(posedge clk or negedge reset) begin if(~reset) digital[0] <= 1'b1; else if(start) digital[0] <= 1'b1; else if(set0) digital[0] <= comp; end assign digitalout = (digital) | (ring_count); endmodule II Sub Design Module: dac.v module dac (comp,sar_out,vref_d,vin_d,clk,start); output comp; input clk,start; input [3:0]sar_out; input [63:0]vref_d; input [63:0]vin_d; reg comp; real v_dac,vref,vin; always @ (vin_d or start) begin vref = $bitstoreal(vref_d); vin = $bitstoreal(vin_d); end always @* begin if(start) comp = 1'b0; else begin v_dac = (vref/15)*(sar_out); if (vin<v_dac)

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 74

VLSI LAB MANUAL (10ECL77) 2017 - 18

comp = 1'b0; else comp = 1'b1; end end endmodule III Test Bench Module: sar_tb.v module sar_tb; reg clk,reset,start; reg [63:0] vref_d,vin_d; wire done, comp; wire [3:0] digitalout; real vref_real = 7.5; sar s1 (digitalout,done,comp,start,reset,clk); dac d1 (comp,digitalout,vref_d,vin_d,clk,start); initial begin clk = 1'b1; start = 1'b1; #4000 $finish; end always #10 clk = ~clk; initial begin #1;reset = 1'b1; #10; reset = 1'b0; #1; reset = 1'b1; end initial begin #10 ; stimulus (0.0,0.5,vref_real,8'd5); end task stimulus (input analog, input step, input reference, input [7:0]delay); real analog,step; real reference; begin while(analog <= reference) begin repeat(delay) @(posedge clk); start <= 1'b0; vref_d = $realtobits (reference); vin_d = $realtobits (analog); @(posedge done) analog = analog + step; @(posedge clk); start <= 1'b1;

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 75

VLSI LAB MANUAL (10ECL77) 2017 - 18

end end endtask endmodule

Result

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 76

VLSI LAB MANUAL (10ECL77) 2017 - 18

SAR BASED ADC

Schematic Capture

Analog Components Digital Modules vsin signal source Successive Approximation Register (SAR) Sample and Hold circuit(S/H) Clock generator Comparator R-2R DAC

1. In a terminal window, change directory to the dig_source directory where there are 2

Verilog modules.

sreg.v ------------------------------- Succesive Approximation Register

clock.v ------------------------------ Divider with factor 2, used for SAR input clock

2. In the CIW or Virtuoso window, click File — Import — Verilog A Verilog In form

appears.

3. In the Verilog In form, double-click on the dig_source directory, then click on the

sreg.v file, type myDesignLib in the Target Library Name field (or use the browser to

specify it) and click Add to the right of the Verilog Files To Import field. The full path of

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 77

VLSI LAB MANUAL (10ECL77) 2017 - 18

this verilog file appears in the field. Next click clock.v file and click Add next to the same

verilog files to Import field. clock.v will be added to the field after the sreg.v file.

4. Scroll down the form to Structural View Names and change the view name in the

Functional field to verilog.

4. In the Power Net Name field under Global Net Option tab of the Verilog In form,

change VDD! to VDD1! and click OK in the Verilog In form.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 78

VLSI LAB MANUAL (10ECL77) 2017 - 18

5. When the import is complete, a message appears asking if you want to see the log file.

Click Yes to display the log file window.

6. Close the log file window. Click Tools — Library Manager to open the Library

Manager. Click View — Refresh.In the Library column, click myDesignLib to

show all the cells in it. In the Cell column, two new cells (sreg and

Verilog_clock) are generated.

Creating a Schematic cellview

Open a new schematic window in the myDesignLib library and build the SAR Based

ADC design.

1. In the CIW or Library manager, execute File – New – Cellview.

2. Set up the Create New file form as follows:

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 79

VLSI LAB MANUAL (10ECL77) 2017 - 18

3. Click OK when done. A blank schematic window for the design appears.

Adding Components to schematic

1. In the SAR_ADC schematic window, execute Create— Instance or to display the Add

Instance form.

2. Click on the Browse button. This opens up a Library browser from which you can

select components and the Symbol view. You will update the Library Name, Cell Name,

and the property values given in the table on the next page as you place each component.

3. After you complete the Add Instance form, move your cursor to the schematic window

and click left to place a component.

This is a table of components for building the SAR_ADC schematic.

4. After entering components, click Cancel in the Add Instance form or press Esc with

your cursor in the schematic window

Adding pins to Schematic Use Create – Pin or the menu icon to place the pins on the schematic window.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 80

VLSI LAB MANUAL (10ECL77) 2017 - 18

1. Click the Pin fixed menu icon in the schematic window. You can also execute Create

– Pin or press p. The Add pin form appears.

2. Type the following in the Add pin form in the exact order leaving space between the

pin names.

Make sure that the direction field is set to input/ouput/inputoutput when placing the

input/output/inout pins respectively and the Usage field is set to schematic.

3. Select Cancel from the Add pin form after placing the pins. In the schematic window,

execute View— Fit or press the f bindkey.

Adding Wires to a Schematic

Add wires to connect components and pins in the design.

1. Click the Wire (narrow) icon in the schematic window. You can also press the w key, or

execute Create - Wire (narrow).

2. Complete the wiring as shown in figure and when done wiring press ESC key in the

schematic window to cancel wiring.

Saving the Design 1. Click the Check and Save icon in the schematic editor window. 2. Observe the CIW output area for any errors.

Mixed Signal Simulation Using AMS in ADE

Set Up a Configuration to Run Simulations from ADE 1. In the Library Manager, click the library: myDesignLib, cell: SAR_ADC.

2. Highlight SAR_ADC schematic in the Library Manager and click File — New — Cell

View.

3. In Create New File form, select config option in the Type field. The form should look

like the following figure:

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 81

VLSI LAB MANUAL (10ECL77) 2017 - 18

4. Click OK. A New Configuration form opens. Enter schematic as the Top Cell View

or click Browse button to select it. Next, click Use Template at the bottom of the

form.

5. Select AMS in the Template Name field and click OK. Click OK on the New

Configuration form as well.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 82

VLSI LAB MANUAL (10ECL77) 2017 - 18

The hierarchy editor is filled with values for global bindings taken from the New

Configuration form. The cells in the design are bound to views depending on

• Which views of the cell exist

• Which existing view comes first in the view list

6. Click File - Save (Needed) to save the configuration. The update icon in the menu

Changes as shown in the hierarchy editor. Click the update icon.

7. Lose the schematic and exit the hierarchy editor.

Set Up ADE Options and Customize the Connect Module

1. In the Library Manager, double-click config view in the View column. The Open

Configuration or Top CellView form opens.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 83

VLSI LAB MANUAL (10ECL77) 2017 - 18

2. Under Open for editing, click yes for configuration “SAR_ADC_Test config” and

click yes for open the Top Cell View “SAR_ADC_Test schematic” and click OK.

Both Configuration and schematic window appears.

3. Execute Launch – ADE L from schematic window to open the Analog Design

Environment (ADE) window.

4. In the ADE window, click Setup Simulator/Directory/Host and set the simulator

to ams in the Simulator cyclic field. Click OK.

In the upper right corner of the ADE window, confirm that simulator is

ams(Spectre).

If not, click Simulation — Solver, change the solver to spectre and click OK.

5. Click Analyses — Choose. Then type 30u in Stop Time field of tran analysis.

Click Enabled and click OK.

6. Click Setup - Model Libraries. In the Model Library Setup form, click Browse

and find the gpdk180.scs file in the ./models/spectre directory. Type NN in

Section field, click Add and click OK.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 84

VLSI LAB MANUAL (10ECL77) 2017 - 18

8. Click Setup — Connect Rules. In the Select Connect Rules form, highlight

ConnRules_18V_full_fast in the List of Connect Rules Used in Simulation and

click Delete to remove the default selection. In the Built-in rules section, click

connectLib. ConnRules_3V_full_fast in the Rules Name cyclic field. Because

the power supply in this SAR is 2.5V, which doesn’t exist in the Built-in rules list,

you need to customize the rule.

9. Click Customize in the above form. In the Customize Built-in Rules form, change the

Description to “This is the description for My_ConnRules_25V_full_fast”In the

Connect Module Declarations list, click on L2E_2. In the Parameters list, click vsup,

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 85

VLSI LAB MANUAL (10ECL77) 2017 - 18

change 3.3 to 2.5 in Value field and click Change. Next highlight both E2L_2 and

Bidir_2 and change the values of the following parameters:

E2L_2 vsup=2.5 vthi=1.7 vtlo=0.8

Bidir_2 vsup=2.5 vthi=1.7 vtlo=0.8

Click OK. In the Information form, which reminds you to add the customized connect

rules to the list, click OK.

10.In the Select Connect Rules form, click Add and select the new modified connect

rules. Click Rename and edit the rule name to My_ConnRules_25V_full_fast.

Click OK.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 86

VLSI LAB MANUAL (10ECL77) 2017 - 18

11.In the ADE window, click Outputs — To Be Plotted — Select on Schematic and

click vsin, D0, D1, D2, D3, Vsh, Vcomp, clk, trigg and Vdac in the SAR_ADC

Schematic.

12.In the Schematic window, click Simulation — Netlist — Create. After the netlist

process is finished, click Simulation — Netlist — Display to display the Verilog-

AMS format netlist.

13. Click Session — Save State. In the Saving State form, change the name in State Save

Directory field to artist_states, change the state name to state_ams in the Save As field

and click OK.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 87

VLSI LAB MANUAL (10ECL77) 2017 - 18

14. In the upper right corner of the ADE window, confirm that simulator is ams(Spectre).

Click Simulation — Netlist and Run Options After the simulation finishes running, the

VIVA automatically shows the plotted waveforms.

RESULT:

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 88

VLSI LAB MANUAL (10ECL77) 2017 - 18

Additional/Study Digital Designs

1. Synchronous FIFO

Objective: To design synchronous FIFO (single Clock) using verilog. module syn_fifo (

clk , // Clock input

rst , // Active high reset

wr_cs , // Write chip select

rd_cs , // Read chipe select

data_in , // Data input

rd_en , // Read enable

wr_en , // Write Enable

data_out , // Data Output

empty , // FIFO empty

full // FIFO full

);

// FIFO constants

parameter DATA_WIDTH = 8;

parameter ADDR_WIDTH = 8;

parameter RAM_DEPTH = (1 << ADDR_WIDTH);

// Port Declarations

input clk ;

input rst ;

input wr_cs ;

input rd_cs ;

input rd_en ;

input wr_en ;

input [DATA_WIDTH-1:0] data_in ;

output full ;

output empty ;

output [DATA_WIDTH-1:0] data_out ;

//-----------Internal variables-------------------

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 89

VLSI LAB MANUAL (10ECL77) 2017 - 18

reg [ADDR_WIDTH-1:0] wr_pointer;

reg [ADDR_WIDTH-1:0] rd_pointer;

reg [ADDR_WIDTH :0] status_cnt;

reg [DATA_WIDTH-1:0] data_out ;

wire [DATA_WIDTH-1:0] data_ram ;

//-----------Variable assignments---------------

assign full = (status_cnt == (RAM_DEPTH-1));

assign empty = (status_cnt == 0);

//-----------Code Start---------------------------

always @ (posedge clk or posedge rst)

begin : WRITE_POINTER

if (rst) begin

wr_pointer <= 0;

end else if (wr_cs && wr_en ) begin

wr_pointer <= wr_pointer + 1;

end

end

always @ (posedge clk or posedge rst)

begin : READ_POINTER

if (rst) begin

rd_pointer <= 0;

end else if (rd_cs && rd_en ) begin

rd_pointer <= rd_pointer + 1;

end

end

always @ (posedge clk or posedge rst)

begin : READ_DATA

if (rst) begin

data_out <= 0;

end else if (rd_cs && rd_en ) begin

data_out <= data_ram;

end

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 90

VLSI LAB MANUAL (10ECL77) 2017 - 18

end

always @ (posedge clk or posedge rst)

begin : STATUS_COUNTER

if (rst) begin

status_cnt <= 0;

// Read but no write.

end else if ((rd_cs && rd_en) && !(wr_cs && wr_en)

&& (status_cnt != 0)) begin

status_cnt <= status_cnt - 1;

// Write but no read.

end else if ((wr_cs && wr_en) && !(rd_cs && rd_en)

&& (status_cnt != RAM_DEPTH)) begin

status_cnt <= status_cnt + 1;

end

end

ram_dp_ar_aw #(DATA_WIDTH,ADDR_WIDTH)DP_RAM (

.address_0 (wr_pointer) , // address_0 input

.data_0 (data_in) , // data_0 bi-directional

.cs_0 (wr_cs) , // chip select

.we_0 (wr_en) , // write enable

.oe_0 (1'b0) , // output enable

.address_1 (rd_pointer) , // address_q input

.data_1 (data_ram) , // data_1 bi-directional

.cs_1 (rd_cs) , // chip select

.we_1 (1'b0) , // Read enable

.oe_1 (rd_en) // output enable

);

Endmodule

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 91

VLSI LAB MANUAL (10ECL77) 2017 - 18

2. Single Port RAM Synchronous Read/Write

objective:To design Single Port RAM Synchronous Read/Write using Verilog

module ram_sp_sr_sw (

clk , // Clock Input

address , // Address Input

data , // Data bi-directional

cs , // Chip Select

we , // Write Enable/Read Enable

oe // Output Enable

);

parameter DATA_WIDTH = 8 ;

parameter ADDR_WIDTH = 8 ;

parameter RAM_DEPTH = 1 << ADDR_WIDTH;

//--------------Input Ports-----------------------

input clk ;

input [ADDR_WIDTH-1:0] address ;

input cs ;

input we ;

input oe ;

//--------------Inout Ports-----------------------

inout [DATA_WIDTH-1:0] data ;

//--------------Internal variables----------------

reg [DATA_WIDTH-1:0] data_out ;

reg [DATA_WIDTH-1:0] mem [0:RAM_DEPTH-1];

reg oe_r;

//--------------Code Starts Here------------------

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 92

VLSI LAB MANUAL (10ECL77) 2017 - 18

// Tri-State Buffer control

// output : When we = 0, oe = 1, cs = 1

assign data = (cs && oe && !we) ? data_out : 8'bz;

// Memory Write Block

// Write Operation : When we = 1, cs = 1

always @ (posedge clk)

begin : MEM_WRITE

if ( cs && we ) begin

mem[address] = data;

end

end

// Memory Read Block

// Read Operation : When we = 0, oe = 1, cs = 1

always @ (posedge clk)

begin : MEM_READ

if (cs && !we && oe) begin

data_out = mem[address];

oe_r = 1;

end else begin

oe_r = 0;

end

end

endmodule // End of Module ram_sp_sr_sw

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 93

VLSI LAB MANUAL (10ECL77) 2017 - 18

QUESTION BANK

1. a) Design an Inverter with given specifications, completing the design flow mentioned below.

i. Draw the schematic and verify DC analysis and Transient analysis. ii. Draw the Layout, verify DRC, check for LVS and extract RC.

b) Write Verilog code and test bench for verification, for Parallel / Serial Adder and observe the waveform.

2. a) Design an Inverter with given specifications, completing the design flow mentioned below.

i. Draw the schematic and verify DC analysis and Transient analysis. ii. Draw the Layout, verify DRC, check for LVS and extract RC.

b) Write Verilog code and test bench for verification, for 4-bit Synchronous / Asynchronous Counter and observe the waveform

3. a) Design a Common Source Amplifier with given specifications, completing the design flow mentioned below.

i. Draw the schematic and verify AC analysis, DC analysis and Transient analysis.

ii. Draw the Layout, verify DRC, check for LVS and extract RC. b) Write Verilog code, their test bench for verification and observe the waveform for RS Flip Flop

4. a) Design a Common Drain Amplifier with given specifications, completing the design flow mentioned below.

i. Draw the schematic and verify AC analysis, DC analysis and Transient analysis.

ii. Draw the Layout, verify DRC, check for LVS and extract RC. b) Write Verilog code and test bench for verification, for an NAND Gate and observe the waveform.

5. a) Design a Differential Amplifier with given specifications, completing the design flow mentioned below.

i. Draw the schematic and verify AC analysis, DC analysis and Transient analysis.

ii. Draw the Layout, verify DRC, check for LVS and extract RC. b) Write Verilog code and test bench for verification, for a transmission gate and observe the waveform.

6. a) Design an Operational Amplifier ( Diff amp + CS amp ) with given specifications, completing the design flow mentioned below.

i. Draw the schematic and verify AC analysis, DC analysis and Transient analysis.

ii. Draw the Layout, verify DRC, check for LVS and extract RC. b) Write Verilog code and test bench for verification and observe the waveform for D FF.

7. a) Design a 4-bit R-2R based DAC with given specifications, completing the design flow mentioned below.

i. Draw the schematic and verify the Transient analysis. ii. Draw the Layout, verify DRC, check for LVS and extract RC.

b) Write Verilog code and test bench for verification, for an inverter and observe the waveform

8. a) Design a Common Source Amplifier with given specifications, completing the design flow mentioned below.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 94

VLSI LAB MANUAL (10ECL77) 2017 - 18

i. Draw the schematic and verify AC analysis, DC analysis and Transient analysis.

ii. Draw the Layout, verify DRC, check for LVS and extract RC. b) Write Verilog code, their test bench for verification and observe the waveform for OR gate.

9. a) Design a Common Drain Amplifier with given specifications, completing the design flow mentioned below.

i. Draw the schematic and verify AC analysis, DC analysis and Transient analysis.

ii. Draw the Layout, verify DRC, check for LVS and extract RC. b) Write Verilog code and test bench for verification, for a JK FF and observe the waveform.

10. a) Design a Differential Amplifier with given specifications, completing the design flow mentioned below.

i. Draw the schematic and verify AC analysis, DC analysis and Transient analysis.

ii. Draw the Layout, verify DRC, check for LVS and extract RC. b) Write Verilog code and test bench for verification, for a buffer and observe the waveform.

11. a) Design a Common Source Amplifier with given specifications, completing the design flow mentioned below.

i. Draw the schematic and verify AC analysis, DC analysis and Transient analysis.

ii. Draw the Layout, verify DRC, check for LVS and extract RC. b) Write Verilog code, their test bench for verification and observe the waveform for AND gate

12. a) Design a Common Drain Amplifier with given specifications, completing the design flow mentioned below.

i. Draw the schematic and verify AC analysis, DC analysis and Transient analysis.

ii. Draw the Layout, verify DRC, check for LVS and extract RC. b) Write Verilog code, their test bench for verification and observe the waveform for XOR gate.

13. a) Design an Inverter with given specifications, completing the design flow mentioned below.

i. Draw the schematic and verify DC analysis and Transient analysis. ii. Draw the Layout, verify DRC, check for LVS and extract RC.

b) Write Verilog code and test bench for verification, for SAR based ADC and observe the waveform.

14. a) Design an Inverter with given specifications, completing the design flow mentioned below.

i. Draw the schematic and verify DC analysis and Transient analysis. ii. Draw the Layout, verify DRC, check for LVS and extract RC.

b) Write Verilog code and test bench for verification, for an XNOR gate and observe the waveform.

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 95

VLSI LAB MANUAL (10ECL77) 2017 - 18

VIVA – VOCE MODEL QUESTIONS

1. What is CMOS technology?

2. Which is the technology used in VLSI lab?

3. Explain ASIC design flow?

4. Explain the operation of NMOS and PMOS MOSFETS.

5. Explain the regions of operations for both NMOS and PMOS.

6. Which are majority carriers in NMOS and PMOS?

7. Explain the operation of CMOS inverter.

8. What is the difference between CMOS and BIPOLAR technology?

9. What are advantages and disadvantages of CMOS technology?

10. Explain 5 regions of operation for an inverter.

11. What is transient, DC and AC analysis?

12. What is noise margin?

13. What is channel length modulation?

14. What is HOT electron effect?

15. What is routing?

16. What is floor plan?

17. What is placement?

18. What is DRC, LVS?

19. Explain the fabrication process of both NMOS and PMOS.

20. What is an amplifier?

21. Write the design of common source and common drain amplifier.

22. What is differential amplifier? Explain the design.

23. What are CMRR, SNR, and PSRR?

24. What is operational amplifier and explain the basic building block of an OP-AMP?

25. Explain the design procedure of an OP-AMP.

26. What is test bench?

27. What is the difference between simulation and synthesis?

28. What is a buffer?

29. Explain the CMOS circuits for basic gates.

30. What is the difference between stick diagram and layout?

31. Which is the layer used to connect the components?

32. What are the different styles of programming?

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 96

VLSI LAB MANUAL (10ECL77) 2017 - 18

33. What is user defined packages?

34. What is the function of task and display?

35. Explain the operation of transmission gates.

36. Explain D flip-flop with truth table?

37. Explain T flip-flop with truth table?

38. Explain JK flip-flop with truth table?

39. Explain SR flip-flop with truth table?

40. Explain MS flip-flop with truth table?

41. What are glitches?

42. What is pinch of region?

43. What is setup and hold time?

44. What is race around condition?

45. Explain latch up problem with circuit.

46. How to overcome from latch up problem?

47. What is the difference between serial adder and parallel adder?

48. Explain the circuits for half adder and full adder.

49. What is the difference between asynchronous and synchronous counter?

50. Design ripple counter?

51. Design a synchronous counter for given mod.

52. Write the layout for the basic gates and given expression.

53. Write the stick diagram for the basic gates and given expression.

54. Write the color code for n+ and p+ diffusion?

55. What is lambda based design rules?

56. What is metallization?

57. What are Vias and guard rings?

58. What is a function?

59. What are diffusion, oxidation, ion implantation and etching?

60. What is SOI?

D E P A R T M E N T O F E L E C T R O N I C S A N D C O M M U N I C A T I O N E N G I N E E R I N G

Page 97

VLSI LAB MANUAL (10ECL77) 2017 - 18

REFERENCES

[1] Design of analog CMOS integrated circuits, B Razavi, First Edition, Mcgraw Hill 2001

[2] Design, Layout, simulation, R.jacob Baker, Harry W Li, David E Boyci, CMOS

Circuit, PHI edition , 2005.

[3] CMOS Mixed Signal Circuit Design (Vol II of CMOS: Circuit design, Layout and simulation), R. Jacob. Baker, CMOS-IEEE press and wiley interscience 2002.

[4] CMOS analog circuit design, P E Allen and D R Holberg , Second Edition ,

oxford university press 2002.

[5] Fundamentals of logic design with VHDL, Stephen Brown & Zvonko vranesic, Tata McGraw-Hill, New Delhi, Second Edition, 2007.

[6] Verilog HDL: A guide to digital design and synthesis, Samir palnitkar, Second edition