Вы находитесь на странице: 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

Вам также может понравиться