vlsi merged

Download VLSI Merged

If you can't read please download the document

Upload: xyz333447343

Post on 25-Oct-2015

31 views

Category:

Documents


0 download

DESCRIPTION

hi

TRANSCRIPT

  • 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. D b. T c. JK d. RS

    a. D FF

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

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

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

  • 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