//: version "1.8.7" module ha(carry, sum, y, x); //: interface /sz:(41, 48) /bd:[ Li0>y(26/48) Li1>x(8/48) Ro0op[1:0](172/186) Ti1>cin(126/186) Ti2>ainvert(29/186) Ti3>binvert(76/186) Li0>a(25/86) Li1>b(57/86) Li2>less(74/86) Bo03 Li1>3 Li2>9 Ro0<3 Ro1<0 ] //: joint g7 (a) @(142, 258) /w:[ 1 -1 2 4 ] //: output g22 (overflow) @(386,418) /sn:0 /w:[ 0 ] //: joint g12 (w6) @(198, 293) /w:[ 6 5 -1 8 ] or g5 (.I0(w6), .I1(w11), .Z(w2)); //: @(283,296) /sn:0 /w:[ 7 7 1 ] xor g11 (.I0(cout), .I1(cin), .Z(overflow)); //: @(334,418) /sn:0 /w:[ 5 5 1 ] //: joint g14 (cin) @(227, 348) /w:[ 2 1 -1 4 ] //: input g19 (b) @(131,362) /sn:0 /w:[ 3 ] //: input g21 (less) @(330,325) /sn:0 /R:1 /w:[ 0 ] //: joint g20 (b) @(147, 362) /w:[ 1 -1 2 4 ] mux g15 (.I0(a), .I1(!a), .S(ainvert), .Z(w6)); //: @(173,268) /sn:0 /R:1 /w:[ 0 5 1 0 ] /ss:0 /do:0 //: joint g0 (w6) @(198, 268) /w:[ 2 -1 1 4 ] //: joint g13 (w11) @(210, 372) /w:[ 2 4 1 -1 ] endmodule module MIPS_ALU(op, ainvert, r, a, binvert, cin, cout, b, less); //: interface /sz:(186, 86) /bd:[ Ti0>binvert(128/186) Ti1>ainvert(65/186) Ti2>cin(17/186) Ti3>op[1:0](172/186) Li0>less(74/86) Li1>b(57/86) Li2>a(25/86) Bo01 Li1>3 Li2>9 Ro0<1 Ro1<0 ] //: joint g7 (a) @(75, 149) /w:[ 1 -1 2 4 ] //: joint g12 (w6) @(131, 184) /w:[ 6 5 -1 8 ] or g5 (.I0(w6), .I1(w11), .Z(w2)); //: @(216,187) /sn:0 /w:[ 7 7 1 ] //: output g11 (cout) @(277,262) /sn:0 /w:[ 0 ] //: input g19 (b) @(64,253) /sn:0 /w:[ 3 ] //: input g21 (less) @(263,216) /sn:0 /R:1 /w:[ 0 ] //: joint g20 (b) @(80, 253) /w:[ 1 -1 2 4 ] mux g15 (.I0(a), .I1(!a), .S(ainvert), .Z(w6)); //: @(106,159) /sn:0 /R:1 /w:[ 0 5 1 0 ] /ss:1 /do:1 //: joint g0 (w6) @(131, 159) /w:[ 2 -1 1 4 ] //: joint g13 (w11) @(143, 263) /w:[ 2 4 1 -1 ] endmodule module fa(cout, sum, cin, y, x); //: interface /sz:(51, 42) /bd:[ Li0>cin(5/42) Li1>y(30/42) Li2>x(19/42) Ro013 Ti1>13 Ti2>1 Ti3>0 Li0>1 Li1>1 Li2>0 Bo0<1 Ro0<0 Ro1<1 Ro2<0 ] //: dip g26 (w21) @(68,210) /sn:0 /w:[ 1 ] /st:4 //: dip g17 (w0) @(489,86) /sn:0 /w:[ 7 ] /st:2 led g2 (.I(w3)); //: @(577,223) /sn:0 /w:[ 0 ] /type:1 //: joint g30 (w20) @(515, 286) /w:[ 2 -1 4 1 ] //: supply0 g23 (w1) @(262,335) /sn:0 /w:[ 1 ] led g1 (.I(w24)); //: @(558,343) /sn:0 /R:3 /w:[ 1 ] /type:0 //: supply0 g24 (w13) @(266,457) /sn:0 /w:[ 1 ] concat g29 (.I0(w17), .I1(w29), .I2(w25), .I3(w33), .Z(w15)); //: @(137,380) /sn:0 /R:2 /w:[ 1 0 1 0 1 ] /dr:0 MIPS_ALU g18 (.binvert(w2), .ainvert(w5), .cin(w22), .op(w0), .less(w13), .b(w25), .a(w26), .cout(w27), .r(w32)); //: @(279, 371) /sz:(186, 86) /sn:0 /p:[ Ti0>11 Ti1>11 Ti2>0 Ti3>13 Li0>0 Li1>0 Li2>0 Bo0<0 Ro0<3 ] //: supply0 g25 (w14) @(266,573) /sn:0 /w:[ 0 ] //: joint g10 (w2) @(248, 83) /w:[ 2 -1 1 4 ] //: joint g6 (w0) @(489, 362) /w:[ -1 2 12 1 ] //: joint g9 (w5) @(240, 128) /w:[ 2 -1 1 4 ] concat g7 (.I0(w6), .I1(w20), .I2(w32), .I3(w19), .Z(w3)); //: @(557,281) /sn:0 /w:[ 0 3 0 3 1 ] /dr:0 //: comment g22 /dolink:0 /link:"" @(543,316) /sn:0 //: /line:"Zero" //: /line:"" //: /end //: joint g31 (w32) @(520, 276) /w:[ 1 -1 2 4 ] //: comment g33 /dolink:0 /link:"" @(558,195) /sn:0 //: /line:"Result" //: /line:"" //: /end //: switch ainvert (w5) @(173,128) /w:[ 0 ] /st:0 //: joint g12 (w5) @(240, 241) /w:[ 6 5 -1 8 ] //: comment g34 /dolink:0 /link:"" @(452,55) /sn:0 //: /line:"Op" //: /line:"" //: /end concat g28 (.I0(w16), .I1(w35), .I2(w26), .I3(w9), .Z(w21)); //: @(100,249) /sn:0 /R:2 /w:[ 1 1 1 1 0 ] /dr:0 //: joint g14 (w5) @(240, 362) /w:[ 10 9 -1 12 ] //: joint g11 (w2) @(248, 230) /w:[ 6 5 -1 8 ] //: joint g5 (w0) @(489, 237) /w:[ -1 4 10 3 ] //: switch cin (w4) @(296,109) /R:3 /w:[ 1 ] /st:0 led g21 (.I(w12)); //: @(522,533) /sn:0 /R:3 /w:[ 1 ] /type:0 MIPS_ALU g19 (.binvert(w2), .ainvert(w5), .cin(w31), .op(w0), .less(w1), .b(w29), .a(w35), .cout(w22), .r(w20)); //: @(279, 252) /sz:(186, 79) /sn:0 /p:[ Ti0>7 Ti1>7 Ti2>0 Ti3>11 Li0>0 Li1>1 Li2>0 Bo0<1 Ro0<5 ] //: comment g20 /dolink:0 /link:"" @(504,508) /sn:0 //: /line:"Overflow" //: /end //: joint g32 (w19) @(525, 266) /w:[ 2 -1 1 4 ] nor g0 (.I0(w19), .I1(w32), .I2(w20), .I3(w6), .Z(w24)); //: @(518,322) /sn:0 /R:3 /w:[ 5 5 0 5 0 ] //: joint g15 (w2) @(248, 348) /w:[ 10 9 -1 12 ] //: switch binvert (w2) @(175,83) /w:[ 0 ] /st:0 //: dip g27 (w15) @(71,424) /sn:0 /R:2 /w:[ 0 ] /st:5 MIPS_ALU g13 (.binvert(w2), .ainvert(w5), .cin(w4), .op(w0), .less(w8), .b(w17), .a(w16), .cout(w31), .r(w6)); //: @(279, 138) /sz:(186, 86) /sn:0 /p:[ Ti0>3 Ti1>3 Ti2>0 Ti3>9 Li0>0 Li1>0 Li2>0 Bo0<1 Ro0<3 ] endmodule