VLSI Manual

58
VLSI Lab Manual Department of Electronics & Communication Engineering BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 1 Program- 1 Aim: To write the verilog code for an Inverter and the Test bench for Verification, Observe the waveform and synthesize the code Truth Table Logic Diagram Verilog code for inverter module NOTgate1(A, Y); input A; output Y; reg Y; always @ (A) begin Y<= ~A; end endmodule Test bench for verification module Inv_tb_v; // Inputs reg A; // Outputs wire F; // Instantiate the Unit Under Test (UUT) NOTgate1 uut ( .A(A), .Y(Y) ); initial begin // Initialize Inputs A = 0;

Transcript of VLSI Manual

Page 1: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 1

Program- 1

Aim: To write the verilog code for an Inverter and the Test bench for Verification, Observe the waveform

and synthesize the code

Truth Table Logic Diagram

Verilog code for inverter

module NOTgate1(A, Y);

input A;

output Y;

reg Y;

always @ (A)

begin

Y<= ~A;

end

endmodule

Test bench for verification

module Inv_tb_v; // Inputs reg A; // Outputs wire F; // Instantiate the Unit Under Test (UUT) NOTgate1 uut ( .A(A), .Y(Y) ); initial begin

// Initialize Inputs A = 0;

Page 2: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 2

// Wait 100 ns for global reset to finish

#10; // Add stimulus here A = 1; end endmodule Waveforms

Page 3: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 3

Program- 2

Aim: To write the verilog code for an Buffer and the Test bench for Verif ication, Observe the waveform and

synthesize the code

Logic Diagram Truth Table

Verilog code for Buffer

module BUFFER(A, B);

input A;

output B;

reg B;

always @ (A)

begin

B <= A;

end

endmodule

Test bench for verification

module BUFFER_tb_v; // Inputs reg A; // Outputs wire B; // Instantiate the Unit Under Test (UUT) BUFFER uut ( .A(A), .B(B) );

Page 4: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 4

initial begin

// Initialize Inputs A = 0; // Wait 100 ns for global reset to finish #10; // Add stimulus here A = 1; end endmodule Waveforms

Page 5: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 5

Program- 3

Aim: To write the verilog code for an Transmission Gate and the Test bench for Verification, Observe the

waveform and synthesize the code

Truth Table Logic Diagram

Verilog code for Transmission gate

module TG(data_enable_low, in, data_bus, out1, out2);

input data_enable_low, in;

output data_bus, out1, out2;

//reg data_enable_low [4:0], in[4:0];

//wire data_bus, out1, out2;

bufif0 U1(data_bus,in, data_enable_low);

buf U2(out1,in);

not U3(out2,in);

endmodule

Test bench for verification

module TG_tb_v;

// Inputs

reg data_enable_low;

reg in;

// Outputs

data_enable_low, in Out1 Out2 Data_bus

0 0 0 1 0

1 0 1 0 1

0 1 0 1 2

1 1 1 0 2

0 1 0 1 2

1 1 1 0 2

Page 6: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 6

wire data_bus;

wire out1;

wire out2;

// Instantiate the Unit Under Test (UUT)

TG uut (

.data_enable_low(data_enable_low),

.in(in),

.data_bus(data_bus),

.out1(out1),

.out2(out2)

);

initial begin

// Initialize Inputs

data_enable_low = 0;

in = 0;

// Wait 100 ns for global reset to finish

#10;

// Add stimulus here

end

initial begin

$monitor(

"@%g in=%b data_enable_low=%b out1=%b out2= b data_bus=%b",

$time, in, data_enable_low, out1, out2, data_bus);

data_enable_low = 0;

in = 0;

#4 data_enable_low = 1;

#8 $finish;

end

always #2 in = ~in;

endmodule

Waveforms

Page 7: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 7

Program- 4 Aim: To write the verilog code for an Basic/Universal Gate and the Test bench for Verification, Observe the

waveform and synthesize the code

A) AND Gate

Truth Table Logic Diagram

Verilog code for AND gate

module AND1 (A, B, Y); input A; input B; output Y; reg Y; always @ (A or B) begin Y <= A & B; end endmodule

Test bench for verification

module AND1_tb_v; // Inputs reg A; reg B; // Outputs wire Y; // Instantiate the Unit Under Test (UUT) AND1 uut ( .A(A), .B(B), . Y (Y) );

Page 8: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 8

initial begin

// Initialize Inputs A = 0; B = 1; // Wait 100 ns for global reset to finish #10; // Add stimulus here A = 1; B = 1; end endmodule Waveforms

Page 9: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 9

B) OR Gate

Truth table Logic diagram

Verilog code for OR gate

module Orgate(a, b, y);

input a;

input b;

output y;

reg y;

always @ (a or b)

begin

y <= (a | b);

end

endmodule

Test bench for verification

module Orgate_tb_v; // Inputs reg a; reg b; // Outputs wire y; // Instantiate the Unit Under Test (UUT) Orgate uut ( .a(a), .b(b), .y(y) ); initial begin // Initialize Inputs a = 0; b = 0;

Page 10: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 10

// Wait 100 ns for global reset to finish #10;

// Add stimulus here a = 1; b = 1; end endmodule Waveforms

Page 11: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 11

C) NAND Gate

Truth table Logic diagram

Y= A NAND B =~ (A. B)

Verilog code for NAND gate

module NAND2gate(A, B, Y);

input A;

input B;

output Y;

reg Y;

always @ (A or B)

begin

Y <= ~(A & B);

end

endmodule

Test bench for verification

module Testbench; reg A_t, B_t; wire Y _t; NAND2gate NAND2gate_1(A_t, B_t, Y t); initial begin //case 0 A_t <= 0; B_t <= 0; #1 $display("Y _t = %b", Y _t); //case 1 A_t <= 0; B_t <= 1; #1 $display("Y _t = %b", Y _t); //case 2 A_t <= 1; B_t <= 0; #1 $display("Y _t = %b", Y _t);

Page 12: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 12

//case 3 A_t <= 1; B_t <= 1; #1 $display("Y _t = %b", Y_t); end endmodule Waveforms

Page 13: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 13

D) NOR Gate

Truth table Logic diagram

Y= A NOR B

=~(A+ B)

Verilog code for NOR gate

module NOR2gate(A, B, Y); input A; input B; output Y; reg Y; always @ (A or B) begin Y <= ~(A | B); end endmodule Test bench for verification

module NOR2gate_tb_v;

// Inputs

reg A;

reg B;

// Outputs

wire Y;

// Instantiate the Unit Under Test (UUT)

NOR2gate uut (

.A(A),

.B(B),

.Y(Y)

);

Page 14: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 14

initial begin

// Initialize Inputs

A = 0;

B = 0;

// Wait 100 ns for global reset to finish

#10;

// Add stimulus here

A = 1;

B = 1;

end

endmodule Waveforms

Page 15: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 15

Program- 5

Aim: To write the verilog code for an Flip Flops ( RS,D,JK,MS.T) and the Test bench for Verification,

Observe the waveform and synthesize the code

Flip-flop: Flip-flop is a sequential logic circuit, which is ‘One ‘-bit memory element. OR It is a basic memory

element in digital systems (same as the bi-stable multivibrator) It has two stable state logic ‘1’ and logic ‘0’.

a) S-R Flip-flop (Set-Reset)

In a memory device set and Reset is often required for synchronization of the device in such case S-R

Flip-flop is need & this is refereed as clocked set-reset.

S-R Flip-flop Logic diagram Set-Reset Truth table

Illegal - 1 1

Set 1 0 1

Reset 0 1 0

No

Change Q 0 0

Action Q+ R S

Page 16: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 16

Verilog code for SR - Flip Flop Test bench for verification

Waveforms

Page 17: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 17

b) D- FF (Delay Flip-flop)

In D-Flip-flop the transfer of data from the input to the Output is delayed and hence the name delay

D-Flip-flop. The D-Type Flip-flop is either used as a delay device or as a latch to store ‘1’ bit of

binary information.

D input transferred to Q output when clock asserted

Logic Diagram Truth table

Verilog code for D - Flip Flop

module d_ff( d, clk, q, q_bar);

input d, clk;

output q, q_bar;

reg q;

reg q_bar;

always @ (posedge clk)

begin

q <= d;

q_bar <= !d;

end

endmodule

Test bench for verification

module DFF_tb_v;

// Inputs

reg d;

reg clk;

// Outputs

wire q;

wire q_bar;

// Instantiate the Unit Under Test (UUT)

d_ff uut (

.d(d),

Page 18: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 18

.clk(clk),

.q(q),

.q_bar(q_bar)

);

initial begin

// Initialize Inputs

d = 0;

clk = 0;

// Wait 100 ns for global reset to finish

#10;

// Add stimulus here

d = 1;

clk = 1;

end

endmodule

Waveforms

Page 19: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 19

c) J.K Flip-flop:

module jkff(clk, rst, j, k, q, qn);

input clk;

input rst;

input j;

input k;

output q;

output qn;

reg ff;

assign q=ff;

assign qn=~ff;

always @ (posedge clk)

begin

if (rst==0)

ff=1'b0;

else

case({j,k})

2'b01:ff=1'b0;

2'b10:ff=1'b1;

2'b01:ff=~ff;

default:ff=ff;

endcase

end

endmodule

Page 20: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 20

d) J.K Master Slave Flip-flop:

The race conditions in S-R Flip-flop can be eliminated by converting it in to J.K, the data inputs

J and K are ANDed with ~Q and Q to obtain S & R inputs.

Here SR, T, or D depending on inputs.

S=J. ~Q

R=K.Q

JK-MS-F/F Truth table JK-MS-F/F Truth table

Verilog code for JK Masterslave- Flip Flop

module JKff(q,qb, j,k, clk); input j,k,clk; inout q,qb; //reg q,qb; wire a, b, c, d; wire y, yb; wire cbar; wire q1,qb1; not (cbar, clk); nand (a,j,qb,clk); nand (b, k, q, clk); nand ( y, a, yb); nand ( yb, b, y); nand (c, y, cbar); nand (d, yb, cbar); //q==q1; qb == qb1; nand (q, c, qb); nand (qb, d, q); endmodule

Toggle Q 1 1

Set 1 0 1

Reset 0 1 0

No

Change

Q 0 0

Action Q+ K J

Toggle Q 1 1

Set 1 0 1

Reset 0 1 0

No

Change

Q 0 0

Action Q+ K J

Toggle Q 1 1

Set 1 0 1

Reset 0 1 0

No

Change

Q 0 0

Action Q+ K J

Toggle Q 1 1

Set 1 0 1

Reset 0 1 0

No

Change

Q 0 0

Action Q+ K J

Page 21: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 21

Test bench for verification

module JKMS_tb_v; // Inputs reg j; reg k; reg clk; // Bidirs wire q; wire qb; // Instantiate the Unit Under Test (UUT) JKff uut ( .q(q), .qb(qb), .j(j), .k(k), .clk(clk) ); initial begin // Initialize Inputs j = 0; k = 0; clk = 1; // Wait 100 ns for global reset to finish #10; // Add stimulus here j = 1; k = 1; clk = 1; j = 0; k = 1; clk = 1; end Waveforms

Page 22: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 22

e) T-Flip-flop (Toggle Flip-flop): On every change in clock pulse the output ‘Q’ changes its state

(Toggle). A Flip-flop with one data input which changes state for every clock pulse.

T-F/F Logic Diagram T-F/F Truth table

Verilog code for T - Flip Flop module tff_async_reset (data, clk, reset ,q); //-----------Input Ports--------------- input data, clk, reset ; //-----------Output Ports--------------- output q; //------------Internal Variables-------- reg q; //-------------Code Starts Here--------- always @ ( posedge clk or negedge reset) if (~reset) begin q <= 1'b0; end else if (data) begin q <= !q; end endmodule //End Of Module tff_async_reset Test bench for verification

module tff_tb_v; // Inputs reg data; reg clk; reg reset; // Outputs wire q; // Instantiate the Unit Under Test (UUT) tff_async_reset uut ( .data(data), .clk(clk), .reset(reset), .q(q)

initial begin // Initialize Inputs data = 0; clk = 0; reset = 0;

Toggle Q 1

No Change Q 0

Action Q+

T

Page 23: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 23

// Wait 100 ns for global reset to finish #10;

// Add stimulus here end initial begin $monitor ("data =%b, clk =%b, q =%b, reset =%b", data, clk,q, reset); reset = 0; clk =1; data = 1; #5 reset= ~reset; #10 $finish; end always begin #5 clk= ~clk; end tff_async_reset to( .data(data), .clk(clk), .q(q), .reset(reset)); endmodule Waveforms

Page 24: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 24

Program- 6

Aim: To write the verilog code for Serial & Parallel Adder and the Test bench for Verification, Observe the

waveform and synthesize the code

a) Serial Adder

Logic Diagram

Truth Table

Page 25: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 25

Verilog code for Serial Adder

module sradd(a,b,start,clock,ready,result);

input a,b,start,clock;

output ready;

output [7:0] result;

reg [7:0] result;

reg sum,carry,ready;

integer count;

initial count = 8;

always @(negedge clock)

begin

if (start)

begin

count =0;carry = 0; result = 0;

end

else

begin

if (count <8)

begin

count = count + 1;

sum = a ^ b ^ carry ;

carry = (a&b)|(a & carry)|(b& carry);

result ={sum,result[7:1]};

end

end

if(count == 8)

ready = 1;

else

ready = 0;

end

endmodule

Page 26: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 26

Test bench for verification module sradd_tb_v; // Inputs

reg a;

reg b;

reg start;

reg clock;

// Outputs

wire ready;

wire [7:0] result;

// Instantiate the Unit Under Test (UUT)

sradd uut (

.a(a),

.b(b),

.start(start),

.clock(clock),

.ready(ready),

.result(result)

);

initial begin

// Initialize Inputs

a = 0;

b = 0;

start = 0;

clock = 0;

// Wait 100 ns for global reset to finish

#100;

// Add stimulus here

end

initial

begin

clock = 1'b1;

a = 1'b0;

b = 1'b1;

#05 start = 1'b1;

#11 start = 1'b0;

#50 $finish;

end

always #2 clock = ~ clock;

always #3.1 a = ~ a;

always #5.1 b = ~ b;

endmodule

Page 27: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 27

Waveforms

Page 28: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 28

b) Parallel Adder:

Logic Diagram

Truth Table

Page 29: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 29

Verilog code for Parallel Adder

module addsub (A, B, C0, S);

input [3:0] A;

input [3:0] B;

input C0;

output [4:0] S;

reg [4:0] S;

always @(A or B or C0)

begin

if (C0)

S = A + B;

else

S = A - B;

end

endmodule

Test bench for verification

module padder_tb_v;

// Inputs

reg [3:0] A;

reg [3:0] B;

reg C0;

// Outputs

wire [4:0] S;

// Instantiate the Unit Under Test (UUT)

addsub uut (

.A(A),

.B(B),

.C0(C0),

.S(S)

);

initial begin

// Initialize Inputs

A = 0;

B = 0;

C0 = 0;

// Wait 100 ns for global reset to finish

#10;

// Add stimulus here

end

Page 30: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 30

initial

begin

$monitor($time,

"A=%b,B=%b, c_in=%b, sum = %b\n",A,B,C0,S);

end

// These statements conduct the actual circuit test

initial

begin

A = 4'd0; B = 4'd0; C0 = 1'b0;

#50 A = 4'd3; B = 4'd4;

#50 A = 4'b0001; B = 4'b0010;

#50 A = 4'hc; B=4'h2;

end

endmodule

Waveforms

Page 31: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 31

Program- 7

Aim: To write the verilog code for. 4-bit counter [Synchronous and Asynchronous counter]and the Test

bench for Verification, Observe the waveform and synthesize the code

A) Synchronous counter

Logic Diagram

Page 32: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 32

Verilog code for Synchronous counter

module countr (

clock ,

reset ,

enable ,

counter_out

);

input clock ;

input reset ;

input enable ;

output [3:0] counter_out ;

//-------------Input ports Data Type-------------------

// By rule all the input ports should be wires

wire clock ;

wire reset ;

wire enable ;

//-------------Output Ports Data Type------------------

// Output port can be a storage element (reg) or a wire

reg [3:0] counter_out ;

always @ (posedge clock)

begin : COUNTER

if (reset == 1'b1) begin

counter_out <= #1 4'b0000;

end

else if (enable == 1'b1) begin

counter_out <= #1 counter_out + 1;

end

end

endmodule

Page 33: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 33

Test bench for verification

module counter_tb_v;

// Inputs

reg clock;

reg reset;

reg enable;

// Outputs

wire [3:0] counter_out;

// Instantiate the Unit Under Test (UUT)

counter uut (

.clock(clock),

.reset(reset),

.enable(enable),

.counter_out(counter_out)

);

initial begin

// Initialize Inputs

clock = 0; reset = 0; enable = 0;

// Wait 100 ns for global reset to finish #100;

// Add stimulus here

end

initial begin

$display ("time\t clk reset enable counter");

$monitor ("%g\t %b %b %b %b",

$time, clock, reset, enable, counter_out);

clock = 1; // initial value of clock

reset = 0; // initial value of reset

enable = 0; // initial value of enable

#5 reset = 1; // Assert the reset

#10 reset = 0; // De-assert the reset

#15 enable = 1; // Assert enable

#100 enable = 1; // De-assert enable

#5 $finish; // Terminate simulation

end

// Clock generator

always begin

#5 clock = ~clock; // Toggle clock every 5 ticks

end

endmodule

Page 34: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 34

Waveforms

Page 35: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 35

B) Asynchronous counter

Logic Diagram

Page 36: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 36

Verilog code for Asynchronous counter

module acounter( clk, count );

input clk;

output[3:0] count;

reg[3:0] count;

wire clk;

initial

count = 4'b0;

always @( negedge clk )

count[0] <= ~count[0];

always @( negedge count[0] )

count[1] <= ~count[1];

always @( negedge count[1] )

count[2] <= ~count[2];

always @( negedge count[2] )

count[3] <= ~count[3];

endmodule

Test bench for verification

module acounter_tb_v;

// Inputs

reg clk;

// Outputs

wire [3:0] count;

// Instantiate the Unit Under Test (UUT)

acounter uut (

.clk(clk),

.count(count)

);

initial begin

// Initialize Inputs

clk = 0;

// Wait 100 ns for global reset to finish

#10;

// Add stimulus here

Page 37: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 37

end

initial

begin

clk = 0;

#100 $finish;

end

always

begin

#2 clk = ~clk;

end

always @( posedge clk)

$display("Count = %b", count );

endmodule

Waveforms

Page 38: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 38

Program- 1

Aim: To Draw the schematic & Layout of Inverter and verify the a) DC Analysis ,b) Transient Analysis, and to draw the Layout of Inverter & verify the DRC & ERC.

Schematic design of Inverter.

Page 39: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 39

Layout of Inverter

Page 40: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 40

Waveforms:

Page 41: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 41

Program- 2

Aim: To Draw the schematic and verify the a) DC Analysis ,b) AC Analysis c)Transient Analysis,

and to draw the Layout & verify DRC & ERC . Extract RC and back annotate the same and verify the following Design.

I. A Single Stage differential amplifier II. Common source and Common Drain amplifier

.

I. Schematic design of A Single Stage differential amplifier

Page 42: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 42

Layout design of A Single Stage differential amplifier

Page 43: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 43

Waveforms:

Page 44: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 44

II. Schematic design of Common Drain amplifier

Page 45: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 45

Layout design of Common Drain amplifier

Page 46: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 46

Waveforms:

Page 47: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 47

Schematic design of Common source amplifier

Page 48: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 48

Layout design of Common source amplifier

Page 49: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 49

Waveforms:

Page 50: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 50

Program- 3

Aim: To Draw the schematic of OP-AMP using given differential amplifier Common source and Common Drain amplifier in library and verify the a) DC Analysis ,b) AC Analysis c)Transient Analysis, and to draw the Layout & verify DRC & ERC . Extract RC and back annotate the same and verify the Design.

OP-AMP Symbol

Schematic design of OP-AMP

Page 51: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 51

Layout design of OP-AMP

Page 52: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 52

Waveforms:

Page 53: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 53

Program- 4

Aim: To Draw the schematic of 4 bit R-2R based DAC for the given specification and completing the

design flow mentioned using given op-amp in the library and verify the a) DC Analysis ,b) AC Analysis

c)Transient Analysis, and to draw the Layout & verify DRC & ERC . Extract RC and back annotate the

same and verify the Design.

Circuit Diagram of 4 bit R-2R based DAC:

Schematic design of 4 Bit R-2R based DAC

Page 54: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 54

Layout design of 4 Bit R-2R based DAC

Page 55: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 55

Waveforms :

Page 56: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 56

Program- 5

Aim: To Draw5 the SAR based ADC mentioned in the figure below draw the mixed signal schematic and

verify the functionality by completing ASIC Design FLOW

Schematic design of SAR based ADC

Page 57: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 57

Layout design of SAR based ADC

Page 58: VLSI Manual

VLSI Lab Manual Department of Electronics & Communication Engineering

BALLARI INSTITUTE OF TECHNOLOGY & MANAGEMENT, BELLARY. Page 58

Waveforms: