VLSI Record 2022-23
VLSI Record 2022-23
The sequence of steps to design an ASIC is known as the design flow. The various steps involved
in ASIC design flow are given below.
1. Design entry: Design entry is a stage where the micro architecture is implemented in a
Hardware Description language like VHDL, Verilog, and System Verilog etc. In early days, a
schematic editor was used for design entry where designers instantiated gates. Increased
complexity in the current designs requires the use of HDLs to gain productivity. Another
advantage is that HDLs are independent of process technology and hence can be re-used over
time.
2. Logic synthesis: Use an HDL (VHDL or Verilog) and a logic synthesis tool to produce a net
list a description of the logic cells and their connections.
3. System partitioning: Divide a large system into ASIC-sized pieces.
4. Pre-layout simulation: Check to see if the design functions correctly.
5. Floor planning: Arrange the blocks of the net list on the chip.
6. Placement: Decide the locations of cells in a block.
7. Routing: Make the connections between cells and blocks.
8. Extraction: Determine the resistance and capacitance of the interconnect.
9. Post layout simulation. It is used to check to see whether the design still works with the added
loads of the interconnect or not
DIGITAL DESIGN
4. Select the following project settings, select parameters & press next & finish
5. right click on xc9572-15pc84 New source select verilog module give file name next initialize
inputs & outputs press on nextfinish.
6. Type the verilog Program & save it, select file expand implement design, double click on synthesize –
XST
7. Process "Synthesize - XST" completed successfully message should be displayed on console which
indicates no errors if errors click on errors tab & correct the error & rerun synthesize – XST.
8. right click on file_name.v & select new source & select verilog test fixture & give file_name_test.
9. in view select simulation select alu_test.v and expand ISim Simulator. Double click on Behavioral Check
Syntax.
12. click on Zoom to Full View to view all the output combinations in a single screen.
1. Write a Verilog code for 4 bit adder with test bench for Verification.
a)Verilog Code:
module four_bit_adder(A,B,C0,S,C4);
input [3:0] A,B;
input C0;
output [3:0] S;
output C4;
wire C1,C2,C3;
full_adder fa0 (A[0],B[0],C0,S[0],C1);
full_adder fa1 (A[1],B[1],C1,S[1],C2);
full_adder fa2 (A[2],B[2],C2,S[2],C3);
full_adder fa3 (A[3],B[3],C3,S[3],C4);
endmodule
// Initialize Inputs
initial
fork
A=4'b0011;A=#100 4'b1011;A=#200 4'b1111;
B=4'b0011;B=#100 4'b0111;B=#200 4'b1111;
C0 = 1'b0;C0 =#100 1'b1; C0 =#200 1'b1;
#300 $finish;
join
endmodule
RESULT:
Waveform of D Flip-Flop
2. a)Write a Verilog code for D Flip-Flop with test bench for Verification.
a)Verilog Code:
module df(d,clk,q,qb);
input d,clk;
output q,qb;
reg q,qb;
always @(posedge(clk))
begin
q=d;
qb=~q;
end
endmodule
b)Testbench Code:
// Initialize Inputs
initial
fork
clk=1'b1;
RESULT:
Waveform of SR Flip-Flop
2. b)Write a Verilog code for SR Flip-Flop with test bench for Verification.
a)Verilog Code:
module sr_ff(sr,clk,q,qb);
input [1:0]sr;
input clk;
output q,qb;
reg q,qb;
always @(posedge(clk))
begin
case(sr)
2'b00:q=q;
2'b01:q=0;
2'b10:q=1;
2'b11:q=1'bz;
endcase
qb=~q;
end
endmodule
b)Testbench Code:
// Initialize Inputs
initial
fork
clk=1'b1;
forever clk=#50 ~clk;
sr=2'b01;sr=#100 2'b10;sr=#200 2'b00;sr=#300 2'b11;
#400 $finish;
join
endmodule
RESULT:
Waveform of JK Flip-Flop
2. c)Write a Verilog code for JK Flip-Flop with test bench for Verification.
a)Verilog Code:
module jk(jk,clk,q,qb);
input [1:0]jk;
input clk;
output q,qb;
reg q,qb;
always @(posedge(clk))
begin
case(jk)
2'b00:q=q;
2'b01:q=0;
2'b10:q=1;
2'b11:q=~q;
endcase
qb=~q;
end
endmodule
b)Testbench Code:
// Initialize Inputs
initial
fork
clk=1'b1;
forever clk=#50 ~clk;
jk=2'b01;jk=#100 2'b10;jk=#200 2'b11;jk=#300 2'b00;jk=#400 2'b01;
#500 $finish;
join
endmodule
RESULT:
Waveform of T Flip-Flop
2. d)Write a Verilog code for T Flip-Flop with test bench for Verification.
a)Verilog Code:
module tf(t,clk,q,qb);
input t,clk;
output q,qb;
reg q=1'b0,qb;
always @(posedge(clk))
begin
if(t==1'b0)
q=q;
else
q=~q;
qb=~q;
end
endmodule
b)Testbench Code:
// Initialize Inputs
initial
fork
clk=1'b1;
forever clk=#50 ~clk;
t=1'b0;t=#100 1'b1;t=#200 1'b0;t=#300 1'b1;
#400 $finish;
join
endmodule
RESULT:
Waveform of D Latch
3. a) Write a Verilog code for D Latch with test bench for Verification.
a)Verilog Code:
module dlatch(d,en,q,qb);
input d,en;
output q,qb;
reg q,qb;
always @(en,d)
if(en==1'b1)
begin
q=d;
qb=~q;
end
endmodule
b)Testbench Code:
// Initialize Inputs
initial
fork
en=1'b1;d=1'b1;
d=#100 1'b0;
en=#200 1'b0;
d=#300 1'b1;
en=#400 1'b1;
#500 $finish;
join
endmodule
RESULT:
Waveform of SR Latch
3 b) Write a Verilog code for SR Latch with test bench for Verification.
a)Verilog Code:
module sr_latch(sr,en,q,qb);
input [1:0]sr;
input en;
output q,qb;
reg q,qb;
always @(en or sr)
if (en==1)
begin
case(sr)
2'b00:q=q;
2'b01:q=0;
2'b10:q=1;
2'b11:q=1'bz;
endcase
qb=~q;
end
endmodule
b)Testbench Code:
// Initialize Inputs
initial
fork
en=1'b1;sr=2'b10;
sr=#100 2'b00;
en=#200 1'b0;
sr=#300 2'b01;
en=#400 1'b1;
sr=#500 2'b11;
#600 $finish;
join
endmodule
RESULT:
Waveform of JK Latch
3 c) Write a Verilog code for JK Latch with test bench for Verification.
a)Verilog Code:
module jk_latch(jk,en,q,qb);
input [1:0]jk;
input en;
output q,qb;
reg q,qb;
always @(en,jk)
begin
if(en==1'b1)
case(jk)
2'b00:q=q;
2'b01:q=0;
2'b10:q=1;
2'b11:q=~q;
endcase
qb=~q;
end
endmodule
b)Testbench Code:
// Initialize Inputs
initial
fork
en=1'b1;jk=2'b10;
jk=#100 2'b00;
en=#200 1'b0;
jk=#300 2'b01;
en=#400 1'b1;
jk=#500 2'b11;
#600 $finish;
join
endmodule
RESULT:
Waveform of T Latch
3 d) Write a Verilog code for T Latch with test bench for Verification.
a)Verilog Code:
module tlatch(t,en,q,qb);
input t,en;
output q,qb;
reg q=1'b0,qb;
always @(en,t)
begin
if(en==1'b1)
if(t==1'b0)
q=q;
else
q=~q;
qb=~q;
end
endmodule
b)Testbench Code:
// Initialize Inputs
initial
fork
en=1'b1;t=1'b1;
t=#100 1'b0;
en=#200 1'b0;
t=#300 1'b1;
en=#400 1'b1;
#500 $finish;
join
endmodule
RESULT:
4. a) Write a Verilog code for Asynchronous up counter with test bench for Verification.
a)Verilog code
module async_up(clk,rst,q);
input clk,rst;
output [3:0] q;
reg q0,q1,q2,q3;
always@(posedge(clk)or posedge(rst))
begin
if(rst)
begin
q0=1'b0;
end
else
q0=~q0;
end
always@(negedge(q0)or posedge(rst))
begin
if(rst)
begin
q1=1'b0;
end
else
q1=~q1;
end
always@(negedge(q1)or posedge(rst))
begin
if(rst)
begin
q2=1'b0;
end
else
q2=~q2;
end
always@(negedge(q2)or posedge(rst))
begin
if(rst)
begin
q3=1'b0;
end
else
q3=~q3;
end
assign q={q3,q2,q1,q0};
endmodule
b)Testbench Code:
// Initialize Inputs
initial
fork
clk=1'b1;
#3700 $finish;
join
endmodule
RESULT:
4 b) Write a Verilog code for Asynchronous down counter with test bench for Verification.
a)Verilog code
module async_down(clk,rst,q);
input clk,rst;
output [3:0] q;
reg q0,q1,q2,q3;
always@(posedge(clk)or posedge(rst))
begin
if(rst)
begin
q0=1'b0;
end
else
q0=~q0;
end
always@(posedge(q0)or posedge(rst))
begin
if(rst)
begin
q1=1'b0;
end
else
q1=~q1;
end
always@(posedge(q1)or posedge(rst))
begin
if(rst)
begin
q2=1'b0;
end
else
q2=~q2;
end
always@(posedge(q2)or posedge(rst))
begin
if(rst)
begin
q3=1'b0;
end
else
q3=~q3;
end
assign q={q3,q2,q1,q0};
endmodule
b)Testbench Code:
// Initialize Inputs
initial
fork
clk=1'b1;
#3700 $finish;
join
endmodule
RESULT:
5. a) Write a Verilog code for 32 bit ALU with test bench for Verification.
a)Verilog code
module alu_32bit_case(y,a,b,op);
input [31:0]a;
input [31:0]b;
input [2:0]op;
output reg [31:0]y;
always@(*)
begin
case(op)
3'b000:y=a&b;
3'b001:y=a|b;
3'b010:y=~(a&b);
3'b011:y=~(a|b);
3'b010:y=a+b;
3'b011:y=a-b;
3'b100:y=a*b;
default:y=32'bx;
endcase
end
endmodule
b)Testbench Code:
// Initialize Inputs
initial
fork
a=32'h00000011; b=32'hFFFFFFAF; op=3'b000;
op=#100 3'b001;
op=#200 3'b010;
op=#300 3'b100;
op=#400 3'b011;
#500 $finish;
join
endmodule
RESULT:
ANALOG DESIGN
RESULT:
RESULT:
RESULT:
RESULT:
RESULT:
RESULT:
VIVA Questions
Part A:
1. Define HDL
HDL stand for Hardware description language, it is a computer aided design tool (CAD) for the
modern design and synthesis of digital system.
2. What is Verilog? Give IEEE std for Verilog.
Verilog is a general purpose hardware descriptor language. It is similar in syntax to the C
programming language. It can be used to model a digital system at many levels of abstraction
ranging from the algorithmic level to the switch level.
IEEE STD for Verilog 1364-1995
3. Give the different types of descriptions or styles in verilog with keywords.
1. Behavioral: Program is written with respect to functionality behavior of the output with
respect to input.
Keywords: always/initial
2. Dataflow: Output is written with respect to logical diagram or logical expression.
Keywords: wire, assign: these are used for intermediate outputs.
3. Structural: Structural modeling describes a digital logic networks in terms of the
components that make up the system.
Keywords: gates (and, or, xor, nor etc....)
4. Switch level: Digital circuits at the MOS-transistor level are described using the
MOSFET switches.
Keywords: nmos, cmos, pmos, tranifo, tran etc....
5. Mixed type: Combination of behavioral, dataflow, structural or switch level.
6. Mixed language: Combination of VHDL and Verilog.
4. Differentiate between combination circuit and sequential circuit.
Slno Combinational circuit Sequential circuit
Inputs Outputs
Combinational logic
Previous
Outputs
Memory
element
2 Flip flops are edge triggered( rising or Latches are level triggered
falling)
3 A flip-flop, on the other hand, is edge- In latch the outputs can change as
triggered and only changes state when soon as the inputs do (or at least
a control signal goes from high to low after a small propagation delay).
or low to high.
3
T J Q
clk
K Q
clk
1 Output depends both upon present state Output depends only upon the present
and present input. state.
If if(Boolean expression)
begin
---------; ---------;
end
else
begin
---------; ---------;
end
Diffusion
Ion Implantation
Isolation technique
Metallization
Assembly processing & Packaging
3. Different types of oxidation?
Dry & Wet Oxidation
4. What is MOSFET?
The MOSFET (Metal Oxide Semiconductor Field Effect Transistor) transistor is a semiconductor
device which is widely used for switching and amplifying electronic signals in the electronic
devices. The MOSFET is a core of integrated circuit and it can be designed and fabricated in a
single chip because of these very small sizes. The MOSFET is a four terminal device with
source(S), gate (G), drain (D) and body (B) terminals. The body of the MOSFET is frequently
connected to the source terminal so making it a three terminal device like field effect transistor.
5. What is Enhancement mode transistor?
The device that is normally cut-off with zero gate bias.
6. What is Depletion mode Device?
The Device that conduct with zero gate bias.
7. When the channel is said to be pinched –off?
If a large Vds is applied this voltage with deplete the Inversion layer .This Voltage
effectively pinches off the channel near the drain.
8. Give the different types of CMOS process?
p-well process
n-well process
Silicon-On-Insulator Process
Twin- tub Process
9. What are the advantages of CMOS process?
Low power Dissipation
High Packing density
Bi directional capability
10. Compare between CMOS and bipolar technologies.
CMOS Technology Bipolar technology
• High input impedance (low drive • Low input impedance (high drive
current) current)
• Bidirectional capability
The voltage difference between the source and the bulk, V BS changes the width of the
depletion layer and therefore also the voltage across the oxide due to the change of the charge
in the depletion region. This results in a difference in threshold voltage which equals the
difference in charge in the depletion region divided by the oxide capacitance.
17. Give the MOS symbols for Enhancement and Depletion mode FETs.
When VGS < VT, no conductive channel is present and ID = 0, the cutoff region
If VGS < VT and VDS < VDS, sat, the device is in the triode region of operation. Increasing
VDS increases the lateral field in the channel, and hence the current. Increasing V GS
increases the transverse field and hence the inversion layer density, which also increases
the current.
If VGS < VT and VDS > VDS, sat, the device is in the saturation region of operation. Since
the drain end channel density has become small, the current is much less dependent on
VDS, but is still dependent on VGS, since increased VGS still increases the inversion layer
density.
Fig: Shows the output characteristics and transfer characteristics of nMOS FET.
For VGS < VT , ID = 0
As VDS increases at a fixed VGS, ID increases in the triode region due to the increased
lateral field, but at a decreasing rate since the inversion layer density is decreasing
Once pinch off is reached, further VDS increases only increase ID due to the formation of
the high field region
The device starts in triode and ,moves into saturation at higher VDS
As ID is increased at fixed VDS, no current flows until the inversion layer is established
For VGS slightly above threshold, the device is in saturation since there is little inversion
layer density(the drain end is pinched off)
As VGS increases, a point is reached where the drain end is no longer pinched off, and the
device is in the triode region
A larger VDS value postpones the point of transition to triode.
19. Give the voltage and current equations of MOSFET(enhancement NMOS)
Sl.no Range of Region Current (ID)
operation
1 𝑉𝐺𝑆 − 𝑉𝑇 < 0 Cutoff 0
2
2 𝑉𝐺𝑆 − 𝑉𝑇 > 0 Triode 𝐾 2 𝑉𝐺𝑆 − 𝑉𝑇 𝑉𝐷𝑆 − 𝑉𝐷𝑆
𝑉𝐷𝑆 < 𝑉𝐺𝑆 − 𝑉𝑇
2
3 𝑉𝐺𝑆 − 𝑉𝑇 > 0 Saturation 𝐾 𝑉𝐺𝑆 − 𝑉𝑇
𝑉𝐷𝑆 > 𝑉𝐺𝑆 − 𝑉𝑇
COURSE OUTCOMES
Staff Name: Mr. Lokesh.K.S/ Mrs.Anitha A. Sem: 7 Sec: A/B
/ Mrs.Chinna V Gowdar/ Mr.Sharana Basavaraj B.
Course Name: VLSI -Lab Course Code:18ECL77
Academic year:2021-22
Course Outcomes
Use Xilinix Tool to write the Verilog Code and Test Bench for combinational
C407.1 circuits and verify the simulation results.
Use Xilinix Tool to write the Verilog Code and Test Bench for Sequential circuits
C407.2 and verify the simulation results.
Sketch the Schematic & layout for CMOS Inverter, CMOS 2 input NAND gate
C407.3 and Common Source using microwind Tool to verify DRC & LVS.
Sketch the Schematic for Differential Amplifier & Operational Amplifier &
C407.4 compute gain.
[Staff Signature]