//: version "1.6i" module ALU(F, B, N, C, A, Z); //: interface /sz:(180, 121) /bd:[ Ri0>B[7:0](21/121) Ri1>A[7:0](58/121) Ri2>F[3:0](105/121) Lo0rst(200/360) Li1>clk(166/360) Li2>PI[7:0](82/360) Ri0>MD[31:0](327/360) Ri1>DI[7:0](170/360) Lo01 Ri1>1 Ri2>1 Lo0<1 Lo1<1 Lo2<21 ] //: switch g5 (w3) @(415,100) /sn:0 /anc:1 /w:[ 0 ] /st:1 led g117 (.I(w49)); //: @(1950,-366) /sn:0 /anc:1 /w:[ 0 ] /type:0 led g95 (.I(w24)); //: @(1133,596) /sn:0 /R:2 /anc:1 /w:[ 9 ] /type:2 //: joint g94 (w28) @(1134, 449) /anc:1 /w:[ 5 -1 6 12 ] //: joint g44 (w7) @(744, 507) /anc:1 /w:[ 10 9 -1 12 ] //: comment g47 /dolink:0 /link:"" @(702,165) /sn:0 /R:1 //: /line:"C Bus" //: /end //: comment g80 /dolink:0 /link:"" @(1701,151) /sn:0 /anc:1 //: /line:"MBR addr" //: /end //: joint g79 (w45) @(2081, -25) /anc:1 /w:[ 30 29 -1 32 ] //: joint g21 (w25) @(985, 96) /anc:1 /w:[ -1 9 10 12 ] //: joint g92 (w30) @(1134, 335) /anc:1 /w:[ 3 -1 4 10 ] //: joint g36 (w45) @(784, 563) /anc:1 /w:[ 20 19 -1 22 ] //: joint g24 (w25) @(985, 213) /anc:1 /w:[ 14 13 16 18 ] //: joint g105 (w25) @(985, -63) /anc:1 /w:[ 2 -1 1 8 ] //: supply0 g84 (w36) @(2052,290) /sn:0 /anc:1 /w:[ 0 ] led g85 (.I(w35)); //: @(2057,369) /sn:0 /anc:1 /w:[ 1 ] /type:0 //: joint g23 (w45) @(784, 218) /anc:1 /w:[ 8 7 -1 10 ] //: joint g41 (w25) @(985, 558) /anc:1 /w:[ -1 29 30 32 ] //: comment g116 /dolink:0 /link:"" @(1445,-74) /sn:0 /anc:1 //: /line:"Delay to allow the" //: /line:"rest of the circuit" //: /line:"to catch up." //: /end or g101 (.I0(w18), .I1(rst), .Z(w25)); //: @(895,-63) /sn:0 /anc:1 /w:[ 1 1 0 ] led g93 (.I(w28)); //: @(1134,466) /sn:0 /R:2 /anc:1 /w:[ 13 ] /type:2 //: comment g81 /dolink:0 /link:"" @(840,966) /sn:0 /anc:1 //: /line:"0000 = A + B" //: /line:"0001 = A and B" //: /line:"0010 = A or B" //: /line:"0011 = INC A" //: /line:"0100 = INC B" //: /line:"0101 = DEC A" //: /line:"0110 = DEC B" //: /line:"0111 = Left shift A" //: /line:"1000 = Left shift B" //: /line:"1001 = A x B" //: /line:"1010 = B div A" //: /line:"1011 = B mod A" //: /line:"1100 = A xor B" //: /line:"1101 = NOT A" //: /line:"1110 = NOT B" //: /line:"1111 = B - A" //: /line:"" //: /end concat g60 (.I0(w23), .I1(w8), .I2(w12), .I3(w14), .I4(w57), .I5(w19), .I6(w17), .I7(w53), .I8(w37), .Z(w5)); //: @(1787,44) /sn:0 /anc:1 /w:[ 0 0 0 0 0 0 0 1 1 1 ] /dr:0 //: joint g40 (w25) @(985, 423) /anc:1 /w:[ -1 25 26 28 ] //: joint g54 (w30) @(1093, 335) /anc:1 /w:[ 5 -1 6 8 ] //: joint g90 (w42) @(1134, 234) /anc:1 /w:[ 4 -1 3 10 ] //: joint g35 (w45) @(784, 428) /anc:1 /w:[ 16 15 -1 18 ] //: comment g26 /dolink:0 /link:"" @(882,210) /sn:0 /anc:1 //: /line:"MAR" //: /end register g22 (.Q(w30), .D(w7), .EN(!w38), .CLR(!w25), .CK(w45)); //: @(887,319) /sn:0 /anc:1 /w:[ 7 0 1 23 13 ] //: joint g45 (w7) @(744, 641) /anc:1 /w:[ 14 13 -1 16 ] //: joint g46 (w7) @(744, 174) /anc:1 /w:[ 4 6 -1 3 ] //: joint g70 (w45) @(620, 101) /w:[ 2 28 1 -1 ] //: joint g0 (w42) @(1332, 234) /w:[ 6 -1 5 8 ] //: comment g120 /dolink:0 /link:"" @(1958,-337) /sn:0 /anc:1 //: /line:"N=0" //: /end //: joint g114 (w57) @(1487, -31) /anc:1 /w:[ 2 -1 1 4 ] led g97 (.I(w20)); //: @(1134,732) /sn:0 /R:2 /anc:1 /w:[ 9 ] /type:2 led g82 (.I(DO)); //: @(1135,135) /sn:0 /R:2 /anc:1 /w:[ 13 ] /type:2 //: comment g66 /dolink:0 /link:"" @(1700,120) /sn:0 /anc:1 //: /line:"NEXT_ADDR" //: /end //: input g12 (PI) @(851,395) /sn:0 /anc:1 /w:[ 1 ] //: input g18 (rst) @(846,-61) /sn:0 /anc:1 /w:[ 0 ] led g91 (.I(w30)); //: @(1134,353) /sn:0 /R:2 /anc:1 /w:[ 11 ] /type:2 register g33 (.Q(w15), .D(w7), .EN(!w6), .CLR(!w25), .CK(w45)); //: @(883,837) /sn:0 /anc:1 /w:[ 7 19 1 37 27 ] //: joint g30 (w45) @(784, 319) /anc:1 /w:[ 12 11 -1 14 ] //: dip g108 (w41) @(1669,385) /sn:0 /R:1 /anc:1 /w:[ 0 ] /st:0 and g118 (.I0(w54), .I1(w52), .Z(w46)); //: @(1852,-341) /sn:0 /w:[ 0 1 0 ] mux g49 (.I0(w0), .I1(w15), .I2(w20), .I3(w24), .I4(w28), .I5(w30), .I6(w42), .I7(DO), .S(w8), .Z(w33)); //: @(1316,953) /sn:0 /anc:1 /w:[ 0 0 0 0 0 13 9 0 1 0 ] endmodule module main; //: root_module supply0 w14; //: /sn:0 {0}(366,391)(366,408){1} supply0 w11; //: /sn:0 /dp:1 {0}(444,211)(444,197){1} supply0 w13; //: /sn:0 /dp:1 {0}(-14,183)(-14,199){1} wire [7:0] w6; //: /sn:0 {0}(178,364)(308,364){1} //: {2}(312,364)(348,364){3} //: {4}(310,366)(310,375){5} wire [7:0] w7; //: /sn:0 /dp:5 {0}(60,120)(-32,120){1} //: {2}(-34,118)(-34,96){3} //: {4}(-36,120)(-66,120)(-66,156)(-32,156){5} wire w4; //: /sn:0 {0}(458,197)(458,207){1} //: {2}(460,209)(478,209)(478,137)(453,137){3} //: {4}(451,135)(451,123){5} //: {6}(451,139)(451,147){7} //: {8}(458,211)(458,236)(424,236)(424,196)(389,196){9} //: {10}(385,196)(280,196)(280,162)(178,162){11} //: {12}(387,198)(387,275){13} wire [7:0] w0; //: /sn:0 /dp:5 {0}(178,121)(325,121){1} //: {2}(327,119)(327,78){3} //: {4}(327,123)(327,170)(433,170){5} wire [31:0] w20; //: /sn:0 {0}(484,376)(484,366){1} //: {2}(486,364)(598,364)(598,449)(266,449)(266,401)(178,401){3} //: {4}(482,364)(383,364){5} wire [7:0] w1; //: /sn:0 {0}(178,204)(253,204)(253,280)(379,280){1} wire [7:0] w8; //: /sn:0 /dp:7 {0}(395,280)(559,280)(559,172){1} //: {2}(561,170)(614,170)(614,314)(226,314)(226,244)(178,244){3} //: {4}(559,168)(559,93)(387,93)(387,78){5} //: {6}(557,170)(468,170){7} wire w12; //: /sn:0 {0}(15,274)(60,274){1} wire [7:0] w5; //: /sn:0 /dp:2 {0}(3,156)(19,156){1} //: {2}(23,156)(60,156){3} //: {4}(21,154)(21,96){5} wire w9; //: /sn:0 /dp:1 {0}(14,240)(60,240){1} //: enddecls //: joint g8 (w8) @(559, 170) /anc:1 /w:[ 2 4 6 1 ] //: supply0 g4 (w11) @(444,217) /sn:0 /anc:1 /w:[ 0 ] led g13 (.I(w5)); //: @(21,89) /sn:0 /anc:1 /w:[ 5 ] /type:2 bufif1 g3 (.Z(w8), .I(w1), .E(w4)); //: @(385,280) /sn:0 /anc:1 /w:[ 0 1 13 ] //: comment g2 /dolink:0 /link:"" @(481,183) /sn:0 /anc:1 //: /line:"DATA RAM" //: /end //: comment g1 /dolink:0 /link:"" @(385,347) /sn:0 /R:2 /anc:1 //: /line:"Microcode ROM" //: /end //: comment g16 /dolink:0 /link:"" @(-47,48) /sn:0 /anc:1 //: /line:"Addr" //: /end //: comment g11 /dolink:0 /link:"" @(-91,168) /sn:0 /anc:1 //: /line:"Text ROM" //: /end led g28 (.I(w4)); //: @(451,116) /sn:0 /anc:1 /w:[ 5 ] /type:0 cpu g10 (.rst(w12), .clk(w9), .PI(w5), .MD(w20), .DI(w8), .PA(w7), .DA(w0), .MA(w6), .DO(w1), .DWE(w4)); //: @(61, 74) /sz:(116, 360) /sn:0 /anc:1 /p:[ Li0>1 Li1>1 Li2>3 Ri0>3 Ri1>3 Lo0<0 Ro0<0 Ro1<0 Ro2<0 Ro3<11 ] //: joint g27 (w4) @(458, 209) /w:[ 2 1 -1 8 ] //: joint g19 (w0) @(327, 121) /anc:1 /w:[ -1 2 1 4 ] led g6 (.I(w8)); //: @(387,71) /sn:0 /anc:1 /w:[ 5 ] /type:2 //: switch g9 (w12) @(-2,274) /sn:0 /anc:1 /w:[ 0 ] /st:0 //: switch g7 (w9) @(-3,240) /sn:0 /anc:1 /w:[ 0 ] /st:1 //: comment g20 /dolink:0 /link:"" @(315,29) /sn:0 /anc:1 //: /line:"Addr" //: /end //: joint g15 (w5) @(21, 156) /anc:1 /w:[ 2 4 1 -1 ] //: joint g29 (w4) @(451, 137) /anc:1 /w:[ 3 4 -1 6 ] //: comment g17 /dolink:0 /link:"" @(6,48) /sn:0 /anc:1 //: /line:"Inst" //: /end //: joint g25 (w20) @(484, 364) /w:[ 2 -1 4 1 ] //: joint g14 (w7) @(-34, 120) /anc:1 /w:[ 1 2 4 -1 ] //: supply0 g5 (w14) @(366,414) /sn:0 /anc:1 /w:[ 1 ] rom MicrocodeROM (.A(w6), .D(w20), .OE(w14)); //: @(366,365) /sn:0 /anc:1 /w:[ 3 5 0 ] led g24 (.I(w20)); //: @(484,383) /sn:0 /R:2 /anc:1 /w:[ 0 ] /type:2 //: comment g21 /dolink:0 /link:"" @(371,29) /sn:0 /anc:1 //: /line:"Data" //: /end ram DataRAM (.A(w0), .D(w8), .WE(!w4), .OE(w4), .CS(w11)); //: @(451,171) /sn:0 /anc:1 /w:[ 5 7 7 0 1 ] //: joint g23 (w6) @(310, 364) /anc:1 /w:[ 2 -1 1 4 ] //: joint g0 (w4) @(387, 196) /w:[ 9 -1 10 12 ] led g22 (.I(w6)); //: @(310,382) /sn:0 /R:2 /anc:1 /w:[ 5 ] /type:2 //: supply0 g26 (w13) @(-14,205) /sn:0 /anc:1 /w:[ 1 ] led g18 (.I(w0)); //: @(327,71) /sn:0 /anc:1 /w:[ 3 ] /type:2 led g12 (.I(w7)); //: @(-34,89) /sn:0 /anc:1 /w:[ 3 ] /type:2 rom TextROM (.A(w7), .D(w5), .OE(w13)); //: @(-14,157) /sn:0 /anc:1 /w:[ 5 0 0 ] endmodule