0% found this document useful (0 votes)
265 views53 pages

An Inverter I. CMOS Inverter Ii. Pseudo nMOS Inverter Iii. Tristate Inverter

1. The document describes the design and layout of various digital logic circuits using the ASIC design tools Microwind and DSCH. These include inverters, buffers, basic logic gates, flip flops, multiplexers, and half/full adders. 2. Schematics and Verilog code are provided for the CMOS implementation of each circuit using MOSFETs with specified widths and lengths. 3. The document also includes descriptions of manually drawing the layout of the circuits in Microwind.

Uploaded by

xyz333447343
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
265 views53 pages

An Inverter I. CMOS Inverter Ii. Pseudo nMOS Inverter Iii. Tristate Inverter

1. The document describes the design and layout of various digital logic circuits using the ASIC design tools Microwind and DSCH. These include inverters, buffers, basic logic gates, flip flops, multiplexers, and half/full adders. 2. Schematics and Verilog code are provided for the CMOS implementation of each circuit using MOSFETs with specified widths and lengths. 3. The document also includes descriptions of manually drawing the layout of the circuits in Microwind.

Uploaded by

xyz333447343
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 53

Draw the Schematic, Layout using MOSFET for the following using ASIC design tool

Microwind & DSCH


1. An inverter
i.
CMOS inverter
ii.
Pseudo nMOS Inverter
iii.
Tristate Inverter
i.

CMOS INVERTER

module SUNIL_INVERTER( A,Y);


input A;

output Y;
nmos #(17) nmos(Y,vss,A); // 1.0u 0.12u
pmos #(17) pmos(Y,vdd,A); // 2.0u 0.12u
endmodule

Manual Layout

ii.

Pseudo nMOS Inverter

module SUNIL_PSUEDO_INVERTER( A,Y);


input A;
output Y;
pmos #(17) pmos(Y,vdd,vss); // 2.0u 0.12u
nmos #(17) nmos(Y,vss,A); // 1.0u 0.12u
endmodule

iii.

Tristate Inverter

module SUNIL_TRISTATE_INVERTER( A,EN,Y);


input A,EN;
output Y;
pmos #(24) pmos(w2,vdd,A); // 2.0u 0.12u
nmos #(24) nmos(w2,vss,A); // 1.0u 0.12u
pmos #(17) pmos(Y,w2,w4); // 2.0u 0.12u
nmos #(17) nmos(Y,w2,EN); // 1.0u 0.12u
not #(10) inv(w4,EN);
endmodule

2. A Buffer
i. Using 2 Inverter

module SUNIL_BUFFER( A,Y);


input A;
output Y;
nmos #(30) sub_1(w2,vss,A);
pmos #(30) sub_2(w2,vdd,A);
nmos #(23) sub_3(Y,vss,w2);
pmos #(23) sub_4(Y,vdd,w2);
endmodule

//
//
//
//

ii. Using TG

module SUNIL_TG( A,out1);


input A;
output out1;
nmos #(17) nmos(out1,A,vdd); // 1.0u 0.12u
pmos #(17) pmos(out1,A,vss); // 2.0u 0.12u
endmodule

3. Basic/universal gates
a. AND,NAND,OR,NOR
b. XOR,XNOR
i. AND and NAND Gates

module SUNIL_AND_NAND_gate( A,B,Z,Y);


input A,B;
output Z,Y;
pmos #(17) pmos(Z,vdd,Y); // 2.0u 0.12u
nmos #(17) nmos(Z,vss,Y); // 1.0u 0.12u
nmos #(10) nmos(w4,vss,A); // 1.0u 0.12u
pmos #(38) pmos(Y,vdd,A); // 2.0u 0.12u
pmos #(38) pmos(Y,vdd,B); // 2.0u 0.12u
nmos #(38) nmos(Y,w4,B); // 1.0u 0.12u
endmodule

i.

OR and NOR

module SUNNY_NOR_OR( A,B,Y,Z);


input A,B;
output Y,Z;
pmos #(1) pmos(w2,vdd,A); // 2.0u 0.12u
pmos #(1) pmos(Y,w2,B); // 2.0u 0.12u
nmos #(1) nmos(Y,vss,A); // 1.0u 0.12u
nmos #(1) nmos(Y,vss,B); // 1.0u 0.12u
nmos #(1) nmos(Z,vss,Y); // 1.0u 0.12u
pmos #(1) pmos(Z,vdd,Y); // 2.0u 0.12u
endmodule

ii.

XOR

module SUNNYXOR( A,B,XOR);


input A,B;
output XOR;
pmos #(1) pmos(XOR,vdd,w1); // 2.0u 0.12u
nmos #(1) nmos(XOR,vss,w1); // 1.0u 0.12u
pmos #(1) pmos(w1,w4,B); // 2.0u 0.12u
pmos #(1) pmos(w4,vdd,A); // 2.0u 0.12u
nmos #(1) nmos(w4,vss,A); // 1.0u 0.12u
nmos #(1) nmos(w1,A,B); // 1.0u 0.12u
endmodule

iii.

XNOR

module SUNNYXNOR( A,B,XNOR);


input A,B;
output XNOR;
pmos #(1) pmos(w5,w3,B); // 2.0u 0.12u
pmos #(1) pmos(w3,vdd,A); // 2.0u 0.12u
nmos #(1) nmos(w3,vss,A); // 1.0u 0.12u
nmos #(1) nmos(w5,A,B); // 1.0u 0.12u
nmos #(1) nmos(XNOR,vss,w6); // 1.0u 0.12u
pmos #(1) pmos(XNOR,vdd,w6); // 2.0u 0.12u
pmos #(1) pmos(w6,vdd,w5); // 2.0u 0.12u
nmos #(1) nmos(w6,vss,w5); // 1.0u 0.12u
endmodule

4. Flip flop
a.
b.
c.
d.

D
T
JK
RS

a. D FF

module sunny_d_ff( Reset,Data,CLCK,Q,nQ);


input Reset,Data,CLCK;
output Q,nQ;

nmos #(1)
nmos #(1)
nmos #(1)
pmos #(1)
nmos #(1)
pmos #(1)
pmos #(1)
nmos #(1)
pmos #(1)
nmos #(1)
pmos #(1)
nmos #(1)
pmos #(1)
nmos #(1)
endmodule

nmos(w5,Data,CLCK); // 1.0u 0.12u


nmos(w5,vss,Reset); // 1.0u 0.12u
nmos(w7,vss,Reset); // 1.0u 0.12u
pmos(w7,w2,CLCK); // 2.0u 0.12u
nmos(w7,Q,CLCK); // 1.0u 0.12u
pmos(w5,w2,CLCK); // 2.0u 0.12u
sub_1(w2,vdd,w1); //
sub_2(w2,vss,w1); //
sub_3(w1,vdd,w5); //
sub_4(w1,vss,w5); //
sub_5(nQ,vdd,w7); //
sub_6(nQ,vss,w7); //
sub_7(Q,vdd,nQ); //
sub_8(Q,vss,nQ); //

b. T FF

module sym13( RESET,T,CLOCK,Q,NQ);


input RESET,T,CLOCK;
output Q,NQ;
wire w7,w8,w9,w10,w11,w12;
pmos #(9) sub_1(w3,vdd,w7); //
nmos #(9) sub_2(w3,vss,w7); //
pmos #(13) sub_3(w7,w8,Q); //
pmos #(9) sub_4(w8,vdd,T); //
nmos #(9) sub_5(w8,vss,T); //
nmos #(13) sub_6(w7,T,Q); //
nmos #(1) sub_7(w9,w3,CLOCK); //
nmos #(1) sub_8(w9,vss,RESET); //
nmos #(1) sub_9(w10,vss,RESET); //
pmos #(1) sub_10(w10,w11,CLOCK); //
nmos #(1) sub_11(w10,Q,CLOCK); //
pmos #(1) sub_12(w9,w11,CLOCK); //
endmodule

c. SR FF

module SRSUNNY( R,S,CLOCK,RESET,NQ,Q);


input R,S,CLOCK,RESET;
output NQ,Q;
wire w9,w10,w11,w12,w13,w14;
nmos #(1) nmos(NQ,vss,RESET); // 1.0u 0.12u
pmos #(1) sub_1(w9,vdd,w2); //
pmos #(2) sub_2(Q,w9,NQ); //
nmos #(2) sub_3(Q,vss,w2); //
nmos #(2) sub_4(Q,vss,NQ); //
pmos #(1) sub_5(w10,vdd,w4); //
pmos #(2) sub_6(NQ,w10,Q); //
nmos #(2) sub_7(NQ,vss,w4); //
nmos #(2) sub_8(NQ,vss,Q); //
pmos #(1) sub_9(w2,vdd,w11); //
nmos #(1) sub_10(w2,vss,w11); //
nmos #(1) sub_11(w12,vss,R); //
pmos #(1) sub_12(w11,vdd,R); //
pmos #(1) sub_13(w11,vdd,CLOCK); //
nmos #(1) sub_14(w11,w12,CLOCK); //
pmos #(1) sub_15(w4,vdd,w13); //
nmos #(1) sub_16(w4,vss,w13); //
nmos #(1) sub_17(w14,vss,S); //
pmos #(1) sub_18(w13,vdd,S); //

pmos #(1) sub_19(w13,vdd,CLOCK); //


nmos #(1) sub_20(w13,w14,CLOCK); //
endmodule

d. JK FF

module SUNNYJK( K,J,CLOCK,RESET,Q,nQ);


input K,J,CLOCK,RESET;
output Q,nQ;
wire w14,w15,w16,w17,w18,w19,w20,w21;
wire w22,w23,w24,w25,w26,w27;
nmos #(2) nmos(w9,vss,RESET); // 1.0u 0.12u
pmos #(1) sub_1(w4,vdd,w14); //
nmos #(1) sub_2(w4,vss,w14); //
nmos #(1) sub_3(w15,vss,Q); //
pmos #(2) sub_4(w14,vdd,Q); //
pmos #(2) sub_5(w14,vdd,K); //
nmos #(2) sub_6(w14,w16,K); //
nmos #(1) sub_7(w16,w15,CLOCK); //
pmos #(2) sub_8(w14,vdd,CLOCK); //
pmos #(1) sub_9(w7,vdd,w17); //
nmos #(1) sub_10(w7,vss,w17); //
nmos #(1) sub_11(w18,vss,nQ); //
pmos #(2) sub_12(w17,vdd,nQ); //

pmos #(2)
nmos #(2)
nmos #(1)
pmos #(2)
pmos #(1)
pmos #(2)
nmos #(2)
nmos #(2)
pmos #(1)
pmos #(2)
nmos #(2)
nmos #(2)
pmos #(1)
nmos #(1)
nmos #(1)
pmos #(1)
pmos #(1)
nmos #(1)
pmos #(1)
nmos #(1)
nmos #(1)
pmos #(1)
pmos #(1)
nmos #(1)
pmos #(1)
pmos #(2)
nmos #(2)
nmos #(2)
pmos #(1)
pmos #(2)
nmos #(2)
nmos #(2)
pmos #(2)
nmos #(2)
endmodule

sub_13(w17,vdd,J); //
sub_14(w17,w19,J); //
sub_15(w19,w18,CLOCK); //
sub_16(w17,vdd,CLOCK); //
sub_17(w20,vdd,w4); //
sub_18(w9,w20,w8); //
sub_19(w9,vss,w4); //
sub_20(w9,vss,w8); //
sub_21(w21,vdd,w7); //
sub_22(w8,w21,w9); //
sub_23(w8,vss,w7); //
sub_24(w8,vss,w9); //
sub_25(w11,vdd,w22); //
sub_26(w11,vss,w22); //
sub_27(w23,vss,w8); //
sub_28(w22,vdd,w8); //
sub_29(w22,vdd,w10); //
sub_30(w22,w23,w10); //
sub_31(w12,vdd,w24); //
sub_32(w12,vss,w24); //
sub_33(w25,vss,w9); //
sub_34(w24,vdd,w9); //
sub_35(w24,vdd,w10); //
sub_36(w24,w25,w10); //
sub_37(w26,vdd,w11); //
sub_38(Q,w26,nQ); //
sub_39(Q,vss,w11); //
sub_40(Q,vss,nQ); //
sub_41(w27,vdd,w12); //
sub_42(nQ,w27,Q); //
sub_43(nQ,vss,w12); //
sub_44(nQ,vss,Q); //
sub_45(w10,vdd,CLOCK); //
sub_46(w10,vss,CLOCK); //

5. Multiplexor
a. 2:1 MUX
b. 4:1 MUX using 2:1 MUX
c. 8:1 MUX using 2:1 MUX

a. 2:1 MUX

module SUNNY_MUX21( b,s,a,Y);


input b,s,a;
output Y;
pmos #(1) pmos(Y,b,w2); // 2.0u 0.12u
nmos #(1) nmos(Y,b,s); // 1.0u 0.12u
pmos #(1) pmos(Y,a,s); // 2.0u 0.12u
nmos #(1) nmos(Y,a,w2); // 1.0u 0.12u
nmos #(1) nmos(w2,vss,s); // 1.0u 0.12u
pmos #(1) pmos(w2,vdd,s); // 2.0u 0.12u
endmodule

b. 4:1 MUX

module SUNNY_MUX41( S0,S1,A,B,C,D,Y);


input S0,S1,A,B,C,D;
output Y;
wire w10,w11,w12;
pmos #(2) sub_1(w4,B,w10); //
nmos #(2) sub_2(w4,B,S0); //
pmos #(2) sub_3(w4,A,S0); //
nmos #(2) sub_4(w4,A,w10); //
nmos #(1) sub_5(w10,vss,S0); //
pmos #(1) sub_6(w10,vdd,S0); //
pmos #(2) sub_7(w7,D,w11); //
nmos #(2) sub_8(w7,D,S0); //
pmos #(2) sub_9(w7,C,S0); //
nmos #(2) sub_10(w7,C,w11); //
nmos #(1) sub_11(w11,vss,S0); //
pmos #(1) sub_12(w11,vdd,S0); //
pmos #(1) sub_13(Y,w7,w12); //
nmos #(1) sub_14(Y,w7,S1); //
pmos #(1) sub_15(Y,w4,S1); //
nmos #(1) sub_16(Y,w4,w12); //
nmos #(1) sub_17(w12,vss,S1); //
pmos #(1) sub_18(w12,vdd,S1); //
endmodule

6. Adders
a. Half Adder and Full adder
b. Parallel adder

I.

Half Adder

module SUNNY_HALFADDER( A,B,SUM,CARRY);


input A,B;
output SUM,CARRY;
nmos #(1) nmos(w2,vss,B); // 1.0u 0.12u
nmos #(1) nmos(w3,vss,B); // 1.0u 0.12u
nmos #(1) nmos(SUM,w3,A); // 1.0u 0.12u
nmos #(1) nmos(SUM,w6,w7); // 1.0u 0.12u
nmos #(1) nmos(w6,vss,w2); // 1.0u 0.12u
pmos #(1) pmos(SUM,w8,w7); // 2.0u 0.12u
pmos #(1) pmos(SUM,w8,w2); // 2.0u 0.12u
pmos #(1) pmos(w8,vdd,A); // 2.0u 0.12u
pmos #(1) pmos(w8,vdd,B); // 2.0u 0.12u
pmos #(1) pmos(w2,vdd,B); // 2.0u 0.12u
pmos #(1) pmos(w7,vdd,A); // 2.0u 0.12u
nmos #(1) nmos(w7,vss,A); // 1.0u 0.12u
nmos #(1) nmos(CARRY,vss,w7); // 1.0u 0.12u
nmos #(1) nmos(CARRY,vss,w2); // 1.0u 0.12u
pmos #(1) pmos(w10,vdd,w7); // 2.0u 0.12u
pmos #(1) pmos(CARRY,w10,w2); // 2.0u 0.12u
endmodule

II.

Full adder

module SUNNY_FULLADDER_USING 2 HA( A,B,Cin,CARRY,SUM);


input A,B,Cin;
output CARRY,SUM;
wire w9,w10,w11,w12,w13,w14,w15,w16;
wire w17,w18,w19,w20,w21,w22;
nmos #(20) sub_1(w9,vss,w2); //
nmos #(5) sub_2(w10,vss,w2); //
nmos #(16) sub_3(SUM,w10,Cin); //
nmos #(16) sub_4(SUM,w11,w12); //
nmos #(5) sub_5(w11,vss,w9); //
pmos #(16) sub_6(SUM,w13,w12); //
pmos #(16) sub_7(SUM,w13,w9); //
pmos #(13) sub_8(w13,vdd,Cin); //
pmos #(13) sub_9(w13,vdd,w2); //
pmos #(20) sub_10(w9,vdd,w2); //
pmos #(20) sub_11(w12,vdd,Cin); //
nmos #(20) sub_12(w12,vss,Cin); //
nmos #(13) sub_13(w4,vss,w12); //
nmos #(13) sub_14(w4,vss,w9); //
pmos #(5) sub_15(w14,vdd,w12); //
pmos #(13) sub_16(w4,w14,w9); //
nmos #(20) sub_17(w15,vss,A); //
nmos #(5) sub_18(w16,vss,A); //
nmos #(17) sub_19(w2,w16,B); //
nmos #(17) sub_20(w2,w17,w18); //
nmos #(5) sub_21(w17,vss,w15); //
pmos #(17) sub_22(w2,w19,w18); //
pmos #(17) sub_23(w2,w19,w15); //
pmos #(13) sub_24(w19,vdd,B); //
pmos #(13) sub_25(w19,vdd,A); //
pmos #(20) sub_26(w15,vdd,A); //
pmos #(20) sub_27(w18,vdd,B); //
nmos #(20) sub_28(w18,vss,B); //
nmos #(13) sub_29(w7,vss,w18); //
nmos #(13) sub_30(w7,vss,w15); //
pmos #(5) sub_31(w20,vdd,w18); //
pmos #(13) sub_32(w7,w20,w15); //
pmos #(65) sub_33(w22,w21,w7); //
nmos #(57) sub_34(CARRY,vss,w22); //
nmos #(65) sub_35(w22,vss,w4); //
pmos #(57) sub_36(CARRY,vdd,w22); //
nmos #(65) sub_37(w22,vss,w7); //
pmos #(54) sub_38(w21,vdd,w4); //
endmodule

III.

Parallel adder

module SUNNYPARALLELFULLADDER( A0,B0,c0,A1,B1,A2,B2,A3,


B3,S0,S3,COUT,S2,S1);
input A0,B0,c0,A1,B1,A2,B2,A3;
input B3;
output S0,S3,COUT,S2,S1;
wire w18,w19,w20,w21,w22,w23,w24,w25;
wire w26,w27,w28,w29,w30,w31,w32,w33;
wire w34,w35,w36,w37,w38,w39,w40,w41;
wire w42,w43,w44,w45,w46,w47,w48,w49;
wire w50,w51,w52,w53,w54,w55,w56,w57;
wire w58,w59,w60,w61,w62,w63,w64,w65;
wire w66,w67,w68,w69,w70,w71,w72,w73;
wire w74,w75,w76,w77,w78,w79,w80,w81;
wire w82,w83,w84,w85;
endmodule

7. Counters
a. Asynchronous Counter
b. Synchronous Counter
a. Asynchronous Counter

module Counta16( Clock1,Reset,Count3,Count2,Count1,Count0);


input Clock1,Reset;
output Count3,Count2,Count1,Count0;
dreg #(1) dreg(Count0,w7,w7,Reset,Clock1);
dreg #(1) dreg(Count1,w8,w8,Reset,Count0);
dreg #(1) dreg(Count2,w9,w9,Reset,Count1);
dreg #(1) dreg(Count3,w10,w10,Reset,Count2);
endmodule

b. Synchronous Counter

module Counts16( Reset,clk1,digit23,digit22,digit21,digit20);


input Reset,clk1;
output digit23,digit22,digit21,digit20;
xor #(1) xor(w2,digit20,vdd);
xor #(1) xor(w5,digit23,w4);
xor #(1) xor(w8,digit21,w7);
dreg #(1) dreg(digit22,w13,w10,Reset,clk1);
xor #(1) xor(w10,digit22,w14);
and #(1) and(w14,digit21,w7);
dreg #(1) dreg(digit20,w15,w2,Reset,clk1);
dreg #(1) dreg(digit21,w16,w8,Reset,clk1);
and #(1) and(w4,digit22,w14);
and #(1) and(w7,digit20,vdd);
dreg #(1) dreg(digit23,w17,w5,Reset,clk1);
endmodule

8. Comparator

module COMPARATORSUNNY( B,A,ALB,AGB,AEB);


input B,A;
output ALB,AGB,AEB;
wire w8,w9,w10;
pmos #(1) sub_1(w8,vdd,AGB); //
pmos #(1) sub_2(AEB,w8,ALB); //
nmos #(1) sub_3(AEB,vss,AGB); //
nmos #(1) sub_4(AEB,vss,ALB); //
pmos #(1) sub_5(w9,vdd,A); //
pmos #(2) sub_6(ALB,w9,w6); //
nmos #(2) sub_7(ALB,vss,A); //
nmos #(2) sub_8(ALB,vss,w6); //
pmos #(1) sub_9(w10,vdd,w7); //
pmos #(2) sub_10(AGB,w10,B); //
nmos #(2) sub_11(AGB,vss,w7); //
nmos #(2) sub_12(AGB,vss,B); //
pmos #(1) sub_13(w6,vdd,B); //
nmos #(1) sub_14(w6,vss,B); //
pmos #(1) sub_15(w7,vdd,A); //
nmos #(1) sub_16(w7,vss,A); //
endmodule

9. Memory Circuits
6T -SRAM

Synchronous Mod-3 counter using JK FF

A counter has a natural count of


modulus of 3 is Mod-3 counter.

where n is the number of flip flops in the counter. Counter of

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy