//: version "1.6g" //: script "/home/xidus/mips/dlx.gss" module jtarg(Z, PC, IR); //: interface /sz:(63, 40) /bd:[ Li0>IR[31:0](5/40) Li1>PC[31:0](23/40) Ro0CI(37/78) Li0>B[15:0](68/85) Li1>A[15:0](9/85) Bo05 Li0>0 Li1>0 Ro0<1 Ro1<1 Ro2<0 ] concat g8 (.I0(w9), .I1(w26), .I2(w32), .I3(w13), .Z(Z)); //: @(675,105) /sn:0 /w:[ 1 1 1 3 0 ] /dr:0 concat g3 (.I0(w5), .I1(w24), .I2(w30), .I3(w8), .Z(B)); //: @(169,134) /sn:0 /R:2 /w:[ 1 1 1 3 1 ] /dr:1 add_4 g13 (.CI(w23), .A(w25), .B(w24), .p(w28), .g(w27), .S(w26)); //: @(342, 202) /sz:(63, 63) /sn:0 /p:[ Ti0>1 Li0>0 Li1>0 Ro0<1 Ro1<1 Ro2<0 ] concat g2 (.I0(w0), .I1(w25), .I2(w31), .I3(w4), .Z(A)); //: @(167,73) /sn:0 /R:2 /w:[ 1 1 1 3 1 ] /dr:1 //: input g1 (B) @(124,134) /sn:0 /w:[ 0 ] //: joint g16 (CI) @(376, 43) /w:[ 2 -1 1 4 ] and g11 (.I0(w3), .I1(w7), .I2(!w12), .Z(w17)); //: @(555,-43) /sn:0 /w:[ 3 3 5 0 ] or g10 (.I0(w17), .I1(w20), .Z(O)); //: @(610,-33) /sn:0 /w:[ 1 1 0 ] concat g19 (.I0(w10), .I1(w12), .Z(w13)); //: @(534,12) /sn:0 /w:[ 1 0 0 ] /dr:0 //: input g6 (CI) @(329,43) /sn:0 /tech:unit /w:[ 0 ] //: output g7 (Z) @(721,105) /sn:0 /w:[ 1 ] //: output g9 (O) @(655,-33) /sn:0 /w:[ 1 ] add_4 g15 (.CI(w35), .A(w4), .B(w8), .p(w40), .g(w39), .S(w13)); //: @(342, 395) /sz:(63, 63) /sn:0 /p:[ Ti0>1 Li0>5 Li1>5 Ro0<1 Ro1<1 Ro2<5 ] //: joint g20 (w3) @(504, -47) /w:[ 2 -1 1 4 ] concat g17 (.I0(w1), .I1(w3), .Z(w4)); //: @(417,-42) /sn:0 /R:2 /w:[ 1 0 0 ] /dr:1 //: joint g25 (w4) @(289, 58) /w:[ -1 1 2 4 ] CLA_4 g5 (.c1(CI), .p4(w40), .g4(w39), .p3(w34), .g3(w33), .p2(w28), .g2(w27), .p1(w22), .g1(w21), .c4(w35), .c3(w29), .c2(w23), .C(C), .gp(w15), .gg(w14)); //: @(560, 132) /sz:(70, 341) /sn:0 /p:[ Ti0>3 Li0>0 Li1>0 Li2>0 Li3>0 Li4>0 Li5>0 Li6>0 Li7>0 Lo0<0 Lo1<0 Lo2<0 Bo0<0 Ro0<1 Ro1<1 ] add_4 g14 (.CI(w29), .A(w31), .B(w30), .p(w34), .g(w33), .S(w32)); //: @(342, 302) /sz:(63, 63) /sn:0 /p:[ Ti0>1 Li0>0 Li1>0 Ro0<1 Ro1<1 Ro2<0 ] //: joint g21 (w7) @(496, -43) /w:[ 2 -1 1 4 ] //: joint g24 (w8) @(232, 119) /w:[ -1 1 2 4 ] //: joint g23 (w13) @(620, 90) /w:[ 2 1 4 -1 ] //: output g26 (C) @(620,509) /sn:0 /w:[ 1 ] //: input g0 (A) @(129,73) /sn:0 /w:[ 0 ] //: joint g22 (w12) @(511, -18) /w:[ 2 4 -1 1 ] and g12 (.I0(!w3), .I1(!w7), .I2(w12), .Z(w20)); //: @(555,-21) /sn:0 /w:[ 5 5 3 0 ] concat g18 (.I0(w6), .I1(w7), .Z(w8)); //: @(419,7) /sn:0 /R:2 /w:[ 1 0 0 ] /dr:1 endmodule module shift_32(Op, Z, B, A); //: interface /sz:(83, 70) /bd:[ Ti0>Op[2:0](41/83) Li0>B[31:0](49/70) Li1>A[31:0](14/70) Ro0CC[2:0](39/63) Li0>zero(5/59) Li1>neg(17/59) Li2>over(38/59) Bi0>sign(54/63) Ro0CI(32/63) Li0>B(47/59) Li1>A(18/59) Ro0CI(34/65) Li0>B[3:0](44/63) Li1>A[3:0](19/63) Ro01 Li0>0 Li1>0 Ro0<0 Ro1<0 Ro2<0 ] full g4 (.CI(CI), .A(w0), .B(w5), .S(w2), .p(w13), .g(w12)); //: @(299, 111) /sz:(63, 59) /sn:0 /p:[ Ti0>5 Li0>0 Li1>0 Ro0<0 Ro1<0 Ro2<0 ] //: output g13 (p) @(658,223) /sn:0 /w:[ 1 ] concat g3 (.I0(w5), .I1(w15), .I2(w21), .I3(w27), .Z(B)); //: @(151,143) /sn:0 /R:2 /w:[ 1 1 1 1 1 ] /dr:1 concat g2 (.I0(w0), .I1(w16), .I2(w22), .I3(w28), .Z(A)); //: @(151,84) /sn:0 /R:2 /w:[ 1 1 1 1 1 ] /dr:1 //: input g1 (B) @(86,143) /sn:0 /w:[ 0 ] CLA_4 g11 (.c1(CI), .p4(w31), .g4(w30), .p3(w25), .g3(w24), .p2(w19), .g2(w18), .p1(w13), .g1(w12), .c4(w43), .c3(w42), .c2(w41), .C(w44), .gp(p), .gg(g)); //: @(552, 137) /sz:(70, 341) /sn:0 /p:[ Ti0>3 Li0>1 Li1>1 Li2>1 Li3>1 Li4>1 Li5>1 Li6>1 Li7>1 Lo0<0 Lo1<0 Lo2<0 Bo0<1 Ro0<0 Ro1<0 ] full g10 (.CI(w43), .A(w28), .B(w27), .S(w29), .p(w31), .g(w30)); //: @(299, 401) /sz:(63, 59) /sn:0 /p:[ Ti0>1 Li0>0 Li1>0 Ro0<0 Ro1<0 Ro2<0 ] //: output g6 (S) @(670,70) /sn:0 /w:[ 1 ] full g9 (.CI(w42), .A(w22), .B(w21), .S(w23), .p(w25), .g(w24)); //: @(299, 308) /sz:(63, 59) /sn:0 /p:[ Ti0>1 Li0>0 Li1>0 Ro0<0 Ro1<0 Ro2<0 ] concat g7 (.I0(w2), .I1(w17), .I2(w23), .I3(w29), .Z(S)); //: @(614,70) /sn:0 /w:[ 1 1 1 1 0 ] /dr:0 //: joint g14 (CI) @(331, 38) /w:[ 2 -1 1 4 ] //: input g5 (CI) @(254,38) /sn:0 /w:[ 0 ] //: input g0 (A) @(87,84) /sn:0 /w:[ 0 ] //: output g12 (g) @(654,205) /sn:0 /w:[ 1 ] endmodule module add_32(CI, B, A, O, Z); //: interface /sz:(57, 57) /bd:[ Ti0>CI(30/57) Li0>B[31:0](41/57) Li1>A[31:0](16/57) Ro01 Li0>1 Li1>1 Bo0<0 Ro0<0 Ro1<0 ] concat g6 (.I0(w5), .I1(w11), .Z(Z)); //: @(542,239) /sn:0 /w:[ 1 1 0 ] /dr:0 //: output g7 (O) @(458,345) /sn:0 /w:[ 1 ] //: output g9 (Z) @(596,239) /sn:0 /w:[ 1 ] concat g5 (.I0(w2), .I1(w16), .Z(B)); //: @(203,301) /sn:0 /R:2 /w:[ 1 0 1 ] /dr:1 add_16 g0 (.CI(CI), .B(w2), .A(w12), .C(w3), .Z(w5), .O(w4)); //: @(311, 145) /sz:(78, 85) /sn:0 /p:[ Ti0>1 Li0>0 Li1>1 Bo0<0 Ro0<0 Ro1<0 ] endmodule module ALU(Z, Op, over, A, B, neg, zero); //: interface /sz:(99, 92) /bd:[ Ti0>Op[3:0](46/99) Li0>B[31:0](61/92) Li1>A[31:0](21/92) Ro07 Li0>9 Li1>0 Ro0<0 ] or g14 (.I0(A), .I1(B), .Z(w13)); //: @(299,353) /sn:0 /w:[ 15 15 1 ] //: joint g21 (A) @(231, 350) /w:[ 14 13 -1 16 ] //: joint g24 (B) @(127, 355) /w:[ 14 13 -1 16 ] //: joint g36 (w10) @(161, 173) /w:[ 2 4 -1 1 ] //: joint g23 (B) @(127, 326) /w:[ 1 2 -1 12 ] add_32 g0 (.CI(w9), .B(w14), .A(A), .O(over), .Z(w3)); //: @(272, 235) /sz:(57, 57) /sn:0 /p:[ Ti0>3 Li0>1 Li1>7 Ro0<1 Ro1<11 ] //: joint g22 (A) @(231, 381) /w:[ 18 17 -1 20 ] //: joint g26 (B) @(127, 140) /w:[ 8 -1 10 7 ] concat g35 (.I0(w4), .I1(w9), .I2(w5), .Z(w10)); //: @(173,203) /sn:0 /R:2 /w:[ 1 0 0 0 ] /dr:1 //: joint g12 (w3) @(474, 262) /w:[ 1 2 -1 12 ] //: joint g18 (A) @(137, 105) /w:[ 1 -1 2 4 ] //: output g30 (zero) @(686,195) /sn:0 /w:[ 1 ] concat g33 (.I0(w1), .I1(neg), .Z(Z)); //: @(611,157) /sn:0 /R:2 /w:[ 1 0 0 ] /dr:1 endmodule module CLA_4(c3, g1, gg, p1, C, p4, g3, p2, c4, g2, gp, c2, c1, p3, g4); //: interface /sz:(70, 341) /bd:[ Ti0>c1(37/70) Li0>g1(11/341) Li1>p1(24/341) Li2>g2(108/341) Li3>p2(121/341) Li4>g3(208/341) Li5>p3(221/341) Li6>g4(301/341) Li7>p4(314/341) Lo0PC[31:0](38/48) Li1>rset(11/48) Bi0>clk(29/58) Ri0>IW(13/48) Ri1>IR[31:0](39/48) ] supply0 w6; //: /sn:0 {0}(483,306)(483,282){1} supply0 [7:0] w7; //: /sn:0 {0}(451,418)(451,405)(399,405){1} input [31:0] IR; //: /sn:0 {0}(125,111)(135,111){1} input [31:0] PC; //: /sn:0 {0}(514,147)(574,147)(574,255)(507,255){1} supply1 w0; //: /sn:0 {0}(404,437)(404,447)(385,447)(385,413){1} input rset; //: /sn:0 {0}(344,201)(381,201)(381,217){1} input IW; //: /sn:0 {0}(490,232)(490,176)(393,176){1} //: {2}(389,176)(340,176){3} //: {4}(391,178)(391,217){5} input clk; //: /sn:0 {0}(376,305)(386,305)(386,293){1} supply1 w5; //: /sn:0 {0}(518,300)(518,310)(497,310)(497,282){1} wire [7:0] w4; //: /sn:0 {0}(370,389)(277,389)(277,255)(375,255){1} wire [7:0] A; //: /sn:0 /dp:2 {0}(396,255)(427,255){1} //: {2}(431,255)(446,255)(446,255)(472,255){3} //: {4}(429,257)(429,373)(399,373){5} wire w8; //: /sn:0 {0}(385,365)(385,355){1} //: enddecls //: joint g4 (IW) @(391, 176) /w:[ 1 -1 2 4 ] register g8 (.Q(A), .D(w4), .EN(!IW), .CLR(!rset), .CK(clk)); //: @(386,255) /sn:0 /R:1 /w:[ 0 1 5 1 1 ] //: supply0 g13 (w7) @(451,424) /sn:0 /w:[ 0 ] //: input g3 (clk) @(374,305) /sn:0 /w:[ 0 ] //: input g2 (IW) @(338,176) /sn:0 /w:[ 3 ] //: input g1 (PC) @(512,147) /sn:0 /w:[ 0 ] //: joint g11 (A) @(429, 255) /w:[ 2 -1 1 4 ] add g10 (.A(A), .B(w7), .S(w4), .CI(w0), .CO(w8)); //: @(383,389) /sn:0 /R:3 /w:[ 5 1 0 1 0 ] ram m1 (.A(A), .D(PC), .WE(!IW), .OE(w5), .CS(w6)); //: @(490,256) /sn:0 /w:[ 3 1 0 1 1 ] //: supply0 g6 (w6) @(483,312) /sn:0 /w:[ 0 ] //: input g9 (rset) @(342,201) /sn:0 /w:[ 0 ] //: supply1 g7 (w5) @(529,300) /sn:0 /w:[ 0 ] //: input g0 (IR) @(123,111) /sn:0 /w:[ 0 ] //: supply1 g12 (w0) @(415,437) /sn:0 /w:[ 0 ] endmodule module memory(WData, Data, Write, Addr); //: interface /sz:(91, 81) /bd:[ Ti0>Write(43/91) Li0>Addr[31:0](27/81) Bi0>WData[31:0](40/91) Ro00 Li0>3 Li1>1 Li2>3 Bi0>0 Ro0<0 ] nor g24 (.I0(op), .Z(w40)); //: @(98,126) /sn:0 /w:[ 5 0 ] //: input g21 (func) @(47,194) /sn:0 /w:[ 0 ] //: joint g41 (over) @(626, 179) /w:[ 2 -1 1 4 ] mux g23 (.I0(op), .I1(func), .S(w40), .Z(w35)); //: @(125,184) /sn:0 /R:1 /w:[ 3 1 5 0 ] rom mcode (.A(mpc), .D(mcode), .OE(w8)); //: @(457,322) /w:[ 3 0 1 ] //: comment g60 /dolink:0 /link:"" @(605,486) /sn:0 //: /line:"conditional PCWrite" //: /end //: output g54 (IRWrite) @(629,371) /sn:0 /w:[ 0 ] and g40 (.I0(over), .I1(w20), .Z(w18)); //: @(599,207) /sn:0 /R:2 /w:[ 5 1 1 ] //: output g46 (ALUSrcB) @(629,291) /sn:0 /w:[ 0 ] //: output g45 (ALUSrcA) @(629,281) /sn:0 /w:[ 1 ] //: output g35 (ALUOp) @(739,67) /sn:0 /w:[ 1 ] //: joint g26 (w40) @(125, 126) /w:[ 2 -1 1 4 ] concat g22 (.I0(w35), .I1(w40), .Z(w15)); //: @(192,179) /sn:0 /w:[ 1 3 0 ] /dr:0 concat g0 (.I0(w6), .I1(w28), .I2(IRWrite), .I3(RegW), .I4(RegWD), .I5(RegWA), .I6(MemWrite), .I7(MemAddr), .I8(PCSource), .I9(w5), .I10(ALUSrcB), .I11(ALUSrcA), .I12(w19), .I13(w20), .I14(w21), .Z(mcode)); //: @(501,321) /sn:0 /R:2 /w:[ 0 1 1 1 1 1 1 0 1 0 1 0 0 0 1 1 ] /dr:1 concat g66 (.I0(w1), .I1(w10), .Z(w6)); //: @(464,409) /sn:0 /w:[ 1 0 1 ] /dr:0 //: joint g12 (w15) @(215, 179) /w:[ 2 4 1 -1 ] or g33 (.I0(w19), .Z(w37)); //: @(644,20) /sn:0 /w:[ 5 0 ] concat g30 (.I0(w30), .I1(w33), .Z(w34)); //: @(532,116) /sn:0 /R:2 /w:[ 1 1 5 ] /dr:1 //: output g49 (MemAddr) @(629,321) /sn:0 /w:[ 1 ] endmodule module reg4(CLK, SB, WEN, SA, DA, ENA, CLR, WD, DB, WA, ENB); //: interface /sz:(102, 109) /bd:[ Ti0>WD[31:0](49/102) Li0>CLK(101/109) Li1>CLR(91/109) Li2>WEN(72/109) Li3>WA[1:0](61/109) Li4>ENB(46/109) Li5>ENA(35/109) Li6>SB[1:0](21/109) Li7>SA[1:0](9/109) Bo01 Li1>1 Li2>3 Li3>1 Li4>0 Li5>0 Li6>21 Ro0<5 Ro1<5 ] //: supply1 g16 (w7) @(366,253) /sn:0 /w:[ 0 ] //: supply0 g11 (w17) @(331,369) /sn:0 /w:[ 0 ] //: joint g50 (clk) @(41, 263) /w:[ -1 10 9 12 ] concat g28 (.I0(w1), .I1(w10), .Z(w70)); //: @(590,482) /sn:0 /w:[ 1 0 0 ] /dr:0 concat g10 (.I0(w26), .I1(w17), .Z(w47)); //: @(372,357) /sn:0 /w:[ 1 1 0 ] /dr:0 //: supply0 g32 (w11) @(870,191) /sn:0 /w:[ 0 ] //: joint g19 (w4) @(592, 271) /w:[ 2 -1 4 1 ] concat g38 (.I0(w42), .I1(w62), .Z(PC)); //: @(675,125) /sn:0 /R:2 /w:[ 1 0 0 ] /dr:1 mux g6 (.I0(w25), .I1(w48), .I2(w47), .I3(PC), .S(w0), .Z(WD)); //: @(403,351) /sn:0 /R:1 /w:[ 1 0 1 13 1 0 ] //: joint g9 (w48) @(377, 441) /w:[ 2 1 8 -1 ] //: joint g7 (Data) @(240, 223) /w:[ 1 -1 2 4 ] //: joint g53 (PC) @(72, 168) /w:[ 3 4 -1 6 ] //: comment g31 /dolink:0 /link:"" @(531,529) /sn:0 //: /line:"shl 2" //: /end //: dip g20 (w5) @(517,336) /sn:0 /R:1 /w:[ 0 ] /st:4 //: joint g15 (w53) @(380, 218) /w:[ 2 -1 1 4 ] memory memory (.Write(MemWrite), .Addr(Addr), .WData(w4), .Data(Data)); //: @(136, 196) /sz:(91, 81) /sn:0 /p:[ Ti0>1 Li0>1 Bi0>0 Ro0<3 ] concat g39 (.I0(w41), .I1(w32), .I2(w62), .Z(w71)); //: @(777,100) /sn:0 /w:[ 1 1 1 0 ] /dr:0 //: joint g48 (w2) @(248, 114) /w:[ 8 -1 10 7 ] //: supply0 g43 (w21) @(273,302) /sn:0 /w:[ 0 ] control control (.RSET(w2), .CLK(clk), .func(w22), .op(w55), .over(w14), .zero(w13), .neg(w12), .MemWrite(MemWrite), .Cond(w26), .RegWD(w0), .IRWrite(w19), .MemAddr(w34), .PCWrite(w27), .RegW(WEN), .RegWA(w8), .ALUOp(Op), .ALUSrcB(w63), .ALUSrcA(w57), .PCSource(w30)); //: @(353, 22) /sz:(108, 123) /sn:0 /p:[ Li0>9 Li1>5 Bi0>1 Bi1>1 Ri0>0 Ri1>0 Ri2>0 Lo0<0 Lo1<0 Lo2<0 Lo3<3 Lo4<0 Lo5<0 Bo0<1 Bo1<0 Ro0<0 Ro1<0 Ro2<0 Ro3<0 ] //: joint g29 (w61) @(478, 515) /w:[ 1 2 4 -1 ] and g25 (.I0(w6), .I1(w60), .Z(w67)); //: @(402,490) /sn:0 /w:[ 0 1 0 ] mux g17 (.I0(PC), .I1(w52), .S(w57), .Z(A)); //: @(619,220) /sn:0 /R:1 /w:[ 15 0 1 0 ] //: joint g42 (clk) @(265, 391) /w:[ 16 22 15 -1 ] //: joint g52 (clk) @(124, 125) /w:[ 4 6 3 -1 ] mux g14 (.I0(w53), .I1(w15), .I2(w7), .S(w8), .Z(WA)); //: @(414,249) /sn:0 /R:1 /w:[ 5 0 1 1 0 ] mux g5 (.I0(Z), .I1(w48), .I2(w71), .I3(w52), .S(w30), .Z(nextPC)); //: @(937,94) /sn:0 /R:1 /w:[ 3 5 1 3 1 0 ] //: joint g47 (w2) @(248, 175) /w:[ 4 6 -1 3 ] //: joint g44 (clk) @(253, 391) /w:[ 14 24 13 -1 ] register ALUOut (.Q(w48), .D(Z), .EN(w11), .CLR(w37), .CK(clk)); //: @(842,225) /R:1 /w:[ 7 0 1 1 19 ] clock clk (.Z(clk)); //: @(-81,125) /w:[ 0 ] /omega:400 /phi:0 /duty:50 //: joint g36 (w52) @(593, 230) /w:[ 1 2 4 -1 ] //: joint g24 (w65) @(334, 520) /w:[ 2 1 4 -1 ] concat g21 (.I0(w65), .I1(w67), .Z(w61)); //: @(457,515) /sn:0 /w:[ 3 1 5 ] /dr:0 register mdr (.Q(w25), .D(Data), .EN(w21), .CLR(!w2), .CK(clk)); //: @(253,333) /R:1 /w:[ 0 5 1 17 25 ] //: joint g41 (PC) @(580, 168) /w:[ -1 1 2 14 ] concat g23 (.I0(w59), .I1(w60), .Z(w65)); //: @(349,497) /sn:0 /R:2 /w:[ 1 0 0 ] /dr:1 //: supply0 g40 (w41) @(732,129) /sn:0 /w:[ 0 ] //: joint g54 (w19) @(265, 71) /w:[ 2 -1 4 1 ] //: joint g46 (w2) @(36, 114) /w:[ 11 12 -1 14 ] //: joint g45 (clk) @(458, 391) /w:[ 18 20 17 -1 ] //: joint g35 (w48) @(899, 225) /w:[ -1 4 6 3 ] concat g26 (.I0(w10), .I1(w50), .Z(w61)); //: @(505,495) /sn:0 /R:2 /w:[ 1 0 0 ] /dr:1 //: supply1 g22 (w6) @(389,459) /sn:0 /w:[ 1 ] ALU g0 (.Op(Op), .B(B), .A(A), .over(w14), .zero(w13), .neg(w12), .Z(Z)); //: @(687, 199) /sz:(99, 92) /sn:0 /p:[ Ti0>1 Li0>1 Li1>1 Ro0<1 Ro1<1 Ro2<1 Ro3<5 ] //: switch reset (w2) @(-79,81) /w:[ 13 ] /st:0 mux g18 (.I0(w4), .I1(w5), .I2(w61), .I3(w70), .S(w63), .Z(B)); //: @(641,289) /sn:0 /R:1 /w:[ 3 1 3 1 1 0 ] concat g12 (.I0(w65), .I1(w51), .Z(IR)); //: @(294,515) /sn:0 /R:2 /w:[ 5 1 7 ] /dr:1 //: supply1 g33 (w37) @(848,167) /sn:0 /w:[ 0 ] //: comment g30 /dolink:0 /link:"" @(333,526) /sn:0 //: /line:"sign-extend" //: /end //: joint g49 (clk) @(22, 125) /w:[ 2 -1 1 8 ] endmodule module reg32(CLR, DB, DA, CLK, WEN, WD, WA, SB, SA); //: interface /sz:(99, 111) /bd:[ Li0>CLK(99/111) Li1>CLR(89/111) Li2>WEN(40/111) Li3>WA[4:0](50/111) Li4>SB[4:0](19/111) Li5>SA[4:0](9/111) Li6>WD[31:0](63/111) Ro00 Li0>3 Li1>3 Li2>1 Li3>1 Li4>3 Li5>1 Li6>0 Li7>0 Bo0<5 Bo1<0 ] demux g16 (.I(w1), .E(w0), .Z0(w9), .Z1(w12)); //: @(166,-9) /sn:0 /R:1 /w:[ 0 1 0 0 ] //: joint g11 (CLK) @(239, 333) /w:[ 1 2 4 -1 ] and g28 (.I0(w4), .I1(WEN), .Z(w25)); //: @(104,483) /sn:0 /w:[ 1 1 0 ] //: input g10 (CLK) @(52,333) /sn:0 /w:[ 5 ] //: joint g32 (WA) @(67, 404) /w:[ 2 -1 1 4 ] //: input g27 (WEN) @(67,485) /sn:0 /w:[ 0 ] concat g19 (.I0(w2), .I1(w6), .Z(SB)); //: @(84,68) /sn:0 /R:2 /w:[ 0 1 1 ] /dr:1 //: input g6 (WD) @(138,163) /sn:0 /w:[ 3 ] //: joint g9 (CLR) @(233, 322) /w:[ 1 2 4 -1 ] //: joint g7 (WD) @(292, 163) /w:[ 1 -1 2 4 ] or g31 (.I0(WA), .Z(w4)); //: @(70,451) /sn:0 /w:[ 5 0 ] //: joint g20 (w5) @(212, 409) /w:[ 2 4 1 -1 ] //: supply1 g15 (w0) @(44,-55) /sn:0 /w:[ 0 ] demux g29 (.I(w7), .E(w25), .Z0(w27), .Z1(w28)); //: @(165,511) /sn:0 /R:1 /w:[ 0 1 0 0 ] concat g25 (.I0(w5), .I1(w7), .Z(WA)); //: @(83,404) /sn:0 /R:2 /w:[ 0 1 3 ] /dr:1 //: joint g17 (w2) @(221, 73) /w:[ 2 -1 1 4 ] //: joint g5 (DB) @(550, 355) /w:[ 2 1 4 -1 ] //: joint g14 (w3) @(238, -62) /w:[ 2 -1 4 1 ] //: input g24 (WA) @(51,404) /sn:0 /w:[ 0 ] demux g21 (.I(w6), .E(w8), .Z0(w23), .Z1(w24)); //: @(167,130) /sn:0 /R:1 /w:[ 0 1 0 0 ] reg16 g0 (.WD(WD), .SA(w3), .SB(w2), .ENA(w9), .ENB(w23), .WA(w5), .WEN(w27), .CLR(CLR), .CLK(CLK), .DA(DA), .DB(DB)); //: @(247, 185) /sz:(103, 111) /sn:0 /p:[ Ti0>5 Li0>0 Li1>5 Li2>1 Li3>1 Li4>5 Li5>1 Li6>3 Li7>3 Bo0<0 Bo1<5 ] //: supply1 g22 (w8) @(30,84) /sn:0 /w:[ 0 ] //: input g18 (SB) @(56,68) /sn:0 /w:[ 0 ] //: input g12 (SA) @(72,-67) /sn:0 /w:[ 0 ] //: comment g33 /dolink:0 /link:"" @(5,524) /sn:0 //: /line:"no writing to $0" //: /end endmodule module reg16(DA, ENA, SA, WD, DB, ENB, CLR, SB, WEN, CLK, WA); //: interface /sz:(103, 111) /bd:[ Ti0>WD[31:0](45/103) Li0>CLK(100/111) Li1>CLR(88/111) Li2>WEN(74/111) Li3>WA[3:0](64/111) Li4>ENB(47/111) Li5>ENA(37/111) Li6>SB[3:0](21/111) Li7>SA[3:0](9/111) Bo00 Li0>3 Li1>7 Li2>1 Li3>1 Li4>7 Li5>1 Li6>0 Li7>0 Bo0<9 Bo1<9 ] //: input g13 (ENA) @(-47,-100) /sn:0 /w:[ 0 ] //: input g34 (SA) @(-59,-126) /sn:0 /w:[ 0 ] reg4 g3 (.WD(WD), .SA(w13), .SB(w2), .ENA(w10), .ENB(w23), .WA(w11), .WEN(w22), .CLR(CLR), .CLK(CLK), .DA(DA), .DB(DB)); //: @(469, 141) /sz:(102, 109) /sn:0 /p:[ Ti0>13 Li0>0 Li1>9 Li2>1 Li3>1 Li4>9 Li5>1 Li6>3 Li7>3 Bo0<11 Bo1<11 ] //: joint g37 (w13) @(147, -121) /w:[ 7 -1 8 10 ] reg4 g2 (.WD(WD), .SA(w13), .SB(w2), .ENA(w9), .ENB(w14), .WA(w11), .WEN(w16), .CLR(CLR), .CLK(CLK), .DA(DA), .DB(DB)); //: @(311, 141) /sz:(102, 109) /sn:0 /p:[ Ti0>11 Li0>13 Li1>11 Li2>1 Li3>1 Li4>11 Li5>1 Li6>7 Li7>7 Bo0<13 Bo1<13 ] //: input g1 (WD) @(37,124) /sn:0 /w:[ 7 ] //: output g16 (DB) @(765,320) /sn:0 /w:[ 7 ] //: joint g11 (DA) @(499, 282) /w:[ 4 10 3 -1 ] //: joint g10 (DB) @(694, 320) /w:[ 6 8 5 -1 ] concat g28 (.I0(w11), .I1(w1), .Z(WA)); //: @(38,384) /sn:0 /R:2 /w:[ 0 1 1 ] /dr:1 demux g32 (.I(w1), .E(WEN), .Z0(w4), .Z1(w16), .Z2(w22), .Z3(w27)); //: @(87,466) /sn:0 /R:1 /w:[ 0 1 0 0 0 0 ] //: joint g27 (CLK) @(465, 309) /w:[ 1 2 4 -1 ] //: joint g19 (DB) @(389, 320) /w:[ 2 12 1 -1 ] //: input g38 (ENB) @(-24,52) /sn:0 /w:[ 0 ] //: joint g6 (WD) @(360, 124) /w:[ 3 -1 4 10 ] //: joint g9 (DA) @(646, 282) /w:[ 6 8 5 -1 ] //: joint g7 (WD) @(518, 124) /w:[ 1 -1 2 12 ] //: input g20 (CLR) @(39,291) /sn:0 /w:[ 13 ] //: joint g15 (w11) @(286, 389) /w:[ 4 10 3 -1 ] //: joint g31 (w11) @(120, 389) /w:[ 2 12 1 -1 ] //: input g39 (SB) @(-86,10) /sn:0 /w:[ 0 ] //: joint g43 (w2) @(446, 15) /w:[ 6 -1 5 8 ] //: input g29 (WEN) @(53,435) /sn:0 /w:[ 0 ] //: joint g25 (CLK) @(149, 309) /w:[ 9 10 12 -1 ] //: joint g17 (w13) @(459, -121) /w:[ 2 -1 4 1 ] //: joint g42 (w2) @(292, 15) /w:[ 4 -1 3 10 ] demux g14 (.I(w31), .E(ENA), .Z0(w8), .Z1(w9), .Z2(w10), .Z3(w12)); //: @(24,-69) /sn:0 /R:1 /w:[ 0 1 0 0 0 0 ] //: joint g5 (WD) @(203, 124) /w:[ 5 -1 6 8 ] //: joint g44 (w11) @(444, 389) /w:[ 6 8 5 -1 ] //: input g24 (CLK) @(39,309) /sn:0 /w:[ 13 ] //: joint g21 (CLR) @(143, 291) /w:[ 9 10 12 -1 ] //: joint g36 (w13) @(303, -121) /w:[ 5 -1 6 12 ] //: joint g23 (CLR) @(461, 291) /w:[ 1 2 4 -1 ] //: joint g41 (w2) @(135, 15) /w:[ 2 -1 1 12 ] concat g40 (.I0(w2), .I1(w40), .Z(SB)); //: @(-51,10) /sn:0 /R:2 /w:[ 0 1 1 ] /dr:1 concat g35 (.I0(w13), .I1(w31), .Z(SA)); //: @(-38,-126) /sn:0 /R:2 /w:[ 9 1 1 ] /dr:1 //: joint g26 (CLK) @(308, 309) /w:[ 5 6 8 -1 ] //: joint g22 (CLR) @(303, 291) /w:[ 5 6 8 -1 ] reg4 g0 (.WD(WD), .SA(w13), .SB(w2), .ENA(w8), .ENB(w6), .WA(w11), .WEN(w4), .CLR(CLR), .CLK(CLK), .DA(DA), .DB(DB)); //: @(154, 141) /sz:(102, 109) /sn:0 /p:[ Ti0>9 Li0>11 Li1>13 Li2>1 Li3>1 Li4>13 Li5>1 Li6>11 Li7>11 Bo0<0 Bo1<0 ] //: joint g18 (DB) @(547, 320) /w:[ 4 10 3 -1 ] //: joint g12 (DA) @(341, 282) /w:[ 2 12 1 -1 ] demux g33 (.I(w40), .E(ENB), .Z0(w6), .Z1(w14), .Z2(w23), .Z3(w25)); //: @(26,80) /sn:0 /R:1 /w:[ 0 1 0 0 0 0 ] //: input g30 (WA) @(2,384) /sn:0 /w:[ 0 ] endmodule