Tfe

Ongi etorri tfe-ren webgunera...

Old stuff/ecole_etude_fac_de_pau/licence_3/archi/ual3.v~

(Deskargatu)
//: version "1.8.6"

module soustr(s, b, a);
//: interface  /sz:(40, 40) /bd:[ ]
input [7:0] b;    //: /sn:0 {0}(171,287)(161,287)(161,297)(171,297)(171,309)(313,309)(313,322)(398,322){1}
//: {2}(402,322)(606,322){3}
//: {4}(400,320)(400,298)(389,298){5}
supply1 [8:0] w45;    //: /sn:0 {0}(361,639)(361,649)(396,649)(396,619){1}
supply0 w7;    //: /sn:0 {0}(816,234)(816,230)(805,230){1}
supply1 w14;    //: /sn:0 {0}(715,275)(715,306)(760,306)(760,294)(775,294)(775,304){1}
supply0 w0;    //: /sn:0 {0}(788,407)(799,407)(799,409){1}
supply1 w24;    //: /sn:0 {0}(852,143)(852,165)(831,165)(831,175){1}
supply0 w44;    //: /sn:0 {0}(388,605)(360,605)(360,615){1}
output [7:0] s;    //: /sn:0 /dp:1 {0}(93,407)(255,407)(255,363)(339,363){1}
//: {2}(343,363)(349,363)(349,362)(353,362){3}
//: {4}(341,361)(341,298)(373,298){5}
input [7:0] a;    //: /sn:0 /dp:1 {0}(232,189)(215,189)(215,217)(318,217)(318,198)(341,198){1}
//: {2}(345,198)(460,198){3}
//: {4}(343,196)(343,137)(374,137){5}
supply0 w5;    //: /sn:0 {0}(566,278)(566,268)(581,268)(581,312)(606,312){1}
supply0 w33;    //: /sn:0 {0}(753,113)(753,100)(768,100)(768,103){1}
//: {2}(770,105)(821,105)(821,175){3}
//: {4}(766,105)(765,105)(765,113){5}
//: {6}(767,115)(811,115)(811,175){7}
//: {8}(765,117)(765,121){9}
//: {10}(767,123)(801,123)(801,175){11}
//: {12}(765,125)(765,133){13}
//: {14}(767,135)(791,135)(791,175){15}
//: {16}(765,137)(765,146){17}
//: {18}(767,148)(781,148)(781,175){19}
//: {20}(765,150)(765,151)(758,151)(758,155){21}
//: {22}(760,157)(771,157)(771,175){23}
//: {24}(758,159)(758,166)(761,166)(761,175){25}
wire [7:0] w6;    //: /sn:0 {0}(476,198)(672,198){1}
wire w32;    //: /sn:0 {0}(589,453)(628,453)(628,438)(629,438){1}
//: {2}(633,438)(636,438){3}
//: {4}(640,438)(644,438){5}
//: {6}(648,438)(650,438){7}
//: {8}(654,438)(656,438){9}
//: {10}(660,438)(661,438){11}
//: {12}(665,438)(667,438){13}
//: {14}(671,438)(684,438){15}
//: {16}(669,440)(669,523)(585,523){17}
//: {18}(663,440)(663,513)(585,513){19}
//: {20}(658,440)(658,503)(585,503){21}
//: {22}(652,440)(652,493)(586,493){23}
//: {24}(646,440)(646,483)(585,483){25}
//: {26}(638,440)(638,473)(587,473){27}
//: {28}(631,440)(631,463)(588,463){29}
wire w46;    //: /sn:0 {0}(585,498)(692,498){1}
//: {2}(696,498)(723,498){3}
//: {4}(694,500)(694,648)(571,648){5}
wire w61;    //: /sn:0 {0}(552,621)(518,621)(518,623)(485,623){1}
wire [8:0] w16;    //: /sn:0 {0}(748,393)(748,317)(612,317){1}
wire [7:0] w15;    //: /sn:0 {0}(797,216)(797,200)(796,200)(796,181){1}
wire w4;    //: /sn:0 {0}(700,438)(703,438){1}
//: {2}(707,438)(710,438){3}
//: {4}(714,438)(723,438){5}
//: {6}(712,436)(712,428)(541,428)(541,593)(485,593){7}
//: {8}(705,440)(705,583)(659,583){9}
//: {10}(655,583)(652,583){11}
//: {12}(648,583)(647,583){13}
//: {14}(643,583)(642,583){15}
//: {16}(638,583)(636,583){17}
//: {18}(632,583)(627,583){19}
//: {20}(623,583)(618,583){21}
//: {22}(614,583)(609,583)(609,603)(575,603){23}
//: {24}(616,585)(616,613)(574,613){25}
//: {26}(625,585)(625,623)(573,623){27}
//: {28}(634,585)(634,633)(571,633){29}
//: {30}(640,585)(640,643)(572,643){31}
//: {32}(645,585)(645,653)(571,653){33}
//: {34}(650,585)(650,663)(571,663){35}
//: {36}(657,585)(657,673)(571,673){37}
wire w38;    //: /sn:0 {0}(361,517)(361,497)(351,497)(351,477)(361,477){1}
wire [7:0] w51;    //: /sn:0 {0}(393,486)(371,486)(371,517){1}
wire w69;    //: /sn:0 {0}(415,144)(389,144)(389,152)(380,152){1}
wire [7:0] w3;    //: /sn:0 {0}(781,245)(781,294)(785,294)(785,304){1}
wire w64;    //: /sn:0 {0}(550,671)(517,671)(517,673)(485,673){1}
wire w66;    //: /sn:0 {0}(415,129)(393,129)(393,122)(380,122){1}
wire w37;    //: /sn:0 {0}(587,468)(685,468){1}
//: {2}(689,468)(713,468)(713,468)(723,468){3}
//: {4}(687,470)(687,618)(573,618){5}
wire w63;    //: /sn:0 {0}(415,124)(403,124)(403,112)(380,112){1}
wire w34;    //: /sn:0 {0}(588,458)(679,458){1}
//: {2}(683,458)(713,458)(713,458)(723,458){3}
//: {4}(681,460)(681,608)(574,608){5}
wire [8:0] w21;    //: /sn:0 {0}(729,478)(764,478)(764,422){1}
wire w43;    //: /sn:0 {0}(586,488)(690,488){1}
//: {2}(694,488)(723,488){3}
//: {4}(692,490)(692,638)(572,638){5}
wire w67;    //: /sn:0 {0}(415,134)(389,134)(389,132)(380,132){1}
wire w54;    //: /sn:0 {0}(564,521)(486,521){1}
wire w58;    //: /sn:0 {0}(550,631)(517,631)(517,633)(485,633){1}
wire w31;    //: /sn:0 {0}(486,451)(568,451){1}
wire w28;    //: /sn:0 {0}(486,471)(566,471){1}
wire [8:0] w36;    //: /sn:0 {0}(479,633)(428,633)(428,619){1}
wire [8:0] w41;    //: /sn:0 {0}(366,523)(366,560)(412,560)(412,590){1}
wire w23;    //: /sn:0 {0}(550,661)(517,661)(517,663)(485,663){1}
wire w65;    //: /sn:0 {0}(338,278)(324,278)(324,178)(466,178){1}
//: {2}(468,176)(468,171){3}
//: {4}(468,167)(468,136)(436,136){5}
//: {6}(466,169)(376,169)(376,377)(361,377)(361,367){7}
//: {8}(468,180)(468,193){9}
wire w40;    //: /sn:0 {0}(585,478)(687,478){1}
//: {2}(691,478)(713,478)(713,478)(723,478){3}
//: {4}(689,480)(689,628)(571,628){5}
wire w35;    //: /sn:0 {0}(554,601)(519,601)(519,603)(485,603){1}
wire w68;    //: /sn:0 {0}(415,139)(389,139)(389,142)(380,142){1}
wire w71;    //: /sn:0 {0}(415,154)(389,154)(389,172)(380,172){1}
wire w30;    //: /sn:0 {0}(589,448)(674,448){1}
//: {2}(678,448)(723,448){3}
//: {4}(676,450)(676,598)(575,598){5}
wire w22;    //: /sn:0 {0}(436,605)(454,605)(454,597){1}
wire [7:0] w59;    //: /sn:0 {0}(369,362)(419,362)(419,394){1}
wire [7:0] w53;    //: /sn:0 {0}(409,486)(416,486)(416,415){1}
wire w62;    //: /sn:0 {0}(415,119)(411,119)(411,102)(380,102){1}
wire [8:0] w12;    //: /sn:0 {0}(780,393)(780,310){1}
wire w11;    //: /sn:0 {0}(486,511)(564,511){1}
wire w49;    //: /sn:0 {0}(585,508)(696,508){1}
//: {2}(700,508)(723,508){3}
//: {4}(698,510)(698,658)(571,658){5}
wire w57;    //: /sn:0 {0}(354,278)(366,278)(366,313)(381,313)(381,303){1}
wire w70;    //: /sn:0 {0}(415,149)(389,149)(389,162)(380,162){1}
wire [7:0] w10;    //: /sn:0 {0}(688,198)(765,198)(765,216){1}
wire w13;    //: /sn:0 {0}(757,230)(735,230)(735,221){1}
wire w27;    //: /sn:0 {0}(551,641)(518,641)(518,643)(485,643){1}
wire w48;    //: /sn:0 {0}(564,501)(486,501){1}
wire w52;    //: /sn:0 {0}(585,518)(699,518){1}
//: {2}(703,518)(723,518){3}
//: {4}(701,520)(701,668)(571,668){5}
wire w29;    //: /sn:0 {0}(486,461)(567,461){1}
wire [7:0] w47;    //: /sn:0 {0}(421,415)(421,486)(480,486){1}
wire w50;    //: /sn:0 {0}(550,651)(517,651)(517,653)(485,653){1}
wire w42;    //: /sn:0 {0}(564,481)(486,481){1}
wire w9;    //: /sn:0 {0}(740,407)(723,407)(723,398){1}
wire w39;    //: /sn:0 {0}(553,611)(519,611)(519,613)(485,613){1}
wire w26;    //: /sn:0 {0}(486,491)(565,491){1}
//: enddecls

  //: joint g8 (w33) @(768, 105) /w:[ 2 1 4 -1 ]
  //: supply0 g4 (w33) @(753,119) /sn:0 /w:[ 0 ]
  and g61 (.I0(w37), .I1(w4), .Z(w61));   //: @(562,621) /sn:0 /R:2 /w:[ 5 27 0 ]
  //: output g3 (s) @(96,407) /sn:0 /R:2 /w:[ 0 ]
  //: joint g13 (a) @(343, 198) /w:[ 2 4 1 -1 ]
  or g86 (.I0(w53), .I1(w47), .Z(w59));   //: @(419,404) /sn:0 /R:1 /w:[ 1 0 1 ]
  and g58 (.I0(w43), .I1(w4), .Z(w27));   //: @(561,641) /sn:0 /R:2 /w:[ 5 31 0 ]
  and g55 (.I0(w30), .I1(w4), .Z(w35));   //: @(564,601) /sn:0 /R:2 /w:[ 5 23 0 ]
  //: joint g51 (w32) @(663, 438) /w:[ 12 -1 11 18 ]
  not g37 (.I(w4), .Z(w32));   //: @(694,438) /sn:0 /R:2 /w:[ 0 15 ]
  //: supply0 g34 (w5) @(566,284) /sn:0 /w:[ 0 ]
  not g89 (.I(w65), .Z(w57));   //: @(344,278) /sn:0 /w:[ 0 0 ]
  //: comment g2 /dolink:0 /link:"" @(457,409) /sn:0 /R:3
  //: /line:"si le chiffre resultat est positif"
  //: /end
  //: joint g77 (w49) @(698, 508) /w:[ 2 -1 1 4 ]
  //: joint g76 (w46) @(694, 498) /w:[ 2 -1 1 4 ]
  //: joint g65 (w4) @(625, 583) /w:[ 19 -1 20 26 ]
  and g59 (.I0(w49), .I1(w4), .Z(w23));   //: @(560,661) /sn:0 /R:2 /w:[ 5 35 0 ]
  //: input g1 (b) @(173,287) /sn:0 /R:2 /w:[ 0 ]
  //: joint g72 (w34) @(681, 458) /w:[ 2 -1 1 4 ]
  //: joint g64 (w4) @(616, 583) /w:[ 21 -1 22 24 ]
  led g11 (.I(w9));   //: @(723,391) /sn:0 /w:[ 1 ] /type:0
  //: comment g16 /dolink:0 /link:"" @(443,687) /sn:0 /R:3
  //: /line:"si le chiffre resultat est negatif"
  //: /end
  //: comment g10 /dolink:0 /link:"" @(823,395) /sn:0 /R:3
  //: /line:"addition du chiffre + le complement a2"
  //: /end
  led g87 (.I(w38));   //: @(368,477) /sn:0 /R:3 /w:[ 1 ] /type:0
  //: joint g78 (w52) @(701, 518) /w:[ 2 -1 1 4 ]
  //: joint g50 (w32) @(658, 438) /w:[ 10 -1 9 20 ]
  //: joint g28 (w33) @(765, 123) /w:[ 10 9 -1 12 ]
  //: joint g27 (w33) @(765, 135) /w:[ 14 13 -1 16 ]
  //: supply0 g19 (w7) @(816,240) /sn:0 /w:[ 0 ]
  //: supply1 g32 (w14) @(726,275) /sn:0 /w:[ 0 ]
  //: joint g69 (w4) @(650, 583) /w:[ 11 -1 12 34 ]
  and g38 (.I0(w30), .I1(w32), .Z(w31));   //: @(578,451) /sn:0 /R:2 /w:[ 0 0 1 ]
  concat g9 (.I0(w71), .I1(w70), .I2(w69), .I3(w68), .I4(w67), .I5(w66), .I6(w63), .I7(w62), .Z(a));   //: @(375,137) /sn:0 /R:2 /w:[ 1 1 1 1 1 1 1 1 5 ] /dr:1
  //: joint g75 (w43) @(692, 488) /w:[ 2 -1 1 4 ]
  and g57 (.I0(w46), .I1(w4), .Z(w50));   //: @(560,651) /sn:0 /R:2 /w:[ 5 33 0 ]
  concat g53 (.I0(w54), .I1(w11), .I2(w48), .I3(w26), .I4(w42), .I5(w28), .I6(w29), .I7(w31), .Z(w47));   //: @(481,486) /sn:0 /R:2 /w:[ 1 0 1 0 1 0 0 0 1 ] /dr:1
  //: joint g71 (w30) @(676, 448) /w:[ 2 -1 1 4 ]
  led g20 (.I(w13));   //: @(735,214) /sn:0 /w:[ 1 ] /type:0
  add g15 (.A(w10), .B(w15), .S(w3), .CI(w7), .CO(w13));   //: @(781,232) /sn:0 /w:[ 1 0 0 1 0 ]
  concat g31 (.I0(w3), .I1(w14), .Z(w12));   //: @(780,309) /sn:0 /R:3 /w:[ 1 1 1 ] /dr:1
  //: joint g68 (w4) @(645, 583) /w:[ 13 -1 14 32 ]
  //: joint g67 (w4) @(640, 583) /w:[ 15 -1 16 30 ]
  and g39 (.I0(w34), .I1(w32), .Z(w29));   //: @(577,461) /sn:0 /R:2 /w:[ 0 29 1 ]
  //: joint g48 (w32) @(646, 438) /w:[ 6 -1 5 24 ]
  and g43 (.I0(w46), .I1(w32), .Z(w48));   //: @(574,501) /sn:0 /R:2 /w:[ 0 21 0 ]
  bufif1 g88 (.Z(s), .I(b), .E(w57));   //: @(383,298) /sn:0 /R:2 /w:[ 5 5 1 ]
  //: joint g73 (w37) @(687, 468) /w:[ 2 -1 1 4 ]
  and g62 (.I0(w52), .I1(w4), .Z(w64));   //: @(560,671) /sn:0 /R:2 /w:[ 5 37 0 ]
  //: joint g29 (w33) @(765, 115) /w:[ 6 5 -1 8 ]
  //: joint g25 (w33) @(758, 157) /w:[ 22 21 -1 24 ]
  not g17 (.I(w6), .Z(w10));   //: @(678,198) /sn:0 /w:[ 1 0 ]
  //: joint g63 (w4) @(705, 438) /w:[ 2 -1 1 8 ]
  //: joint g52 (w32) @(669, 438) /w:[ 14 -1 13 16 ]
  and g42 (.I0(w43), .I1(w32), .Z(w26));   //: @(575,491) /sn:0 /R:2 /w:[ 0 23 1 ]
  concat g83 (.I0(w51), .I1(w38), .Z(w41));   //: @(366,522) /sn:0 /R:3 /w:[ 1 0 0 ] /dr:1
  //: joint g74 (w40) @(689, 478) /w:[ 2 -1 1 4 ]
  add g14 (.A(w16), .B(w12), .S(w21), .CI(w0), .CO(w9));   //: @(764,409) /sn:0 /w:[ 0 0 1 0 0 ]
  and g56 (.I0(w34), .I1(w4), .Z(w39));   //: @(563,611) /sn:0 /R:2 /w:[ 5 25 0 ]
  //: joint g95 (s) @(341, 363) /w:[ 2 4 1 -1 ]
  //: joint g94 (w65) @(468, 169) /w:[ -1 4 6 3 ]
  //: joint g47 (w32) @(638, 438) /w:[ 4 -1 3 26 ]
  and g44 (.I0(w49), .I1(w32), .Z(w11));   //: @(574,511) /sn:0 /R:2 /w:[ 0 19 1 ]
  concat g79 (.I0(w64), .I1(w23), .I2(w50), .I3(w27), .I4(w58), .I5(w61), .I6(w39), .I7(w35), .I8(w4), .Z(w36));   //: @(480,633) /sn:0 /R:2 /w:[ 1 1 1 1 1 1 1 1 7 0 ] /dr:1
  //: joint g80 (w4) @(712, 438) /w:[ 4 6 3 -1 ]
  bufif1 g92 (.Z(s), .I(w59), .E(w65));   //: @(363,362) /sn:0 /R:2 /w:[ 3 0 7 ]
  led g85 (.I(w22));   //: @(454,590) /sn:0 /w:[ 1 ] /type:0
  //: supply0 g84 (w44) @(360,621) /sn:0 /w:[ 1 ]
  concat g21 (.I0(w24), .I1(w33), .I2(w33), .I3(w33), .I4(w33), .I5(w33), .I6(w33), .I7(w33), .Z(w15));   //: @(796,180) /sn:0 /R:3 /w:[ 1 3 7 11 15 19 23 25 1 ] /dr:1
  and g41 (.I0(w40), .I1(w32), .Z(w42));   //: @(574,481) /sn:0 /R:2 /w:[ 0 25 0 ]
  //: supply1 g23 (w24) @(863,143) /sn:0 /w:[ 0 ]
  //: joint g93 (b) @(400, 322) /w:[ 2 4 1 -1 ]
  bufif1 g54 (.Z(w6), .I(a), .E(w65));   //: @(466,198) /sn:0 /w:[ 0 3 9 ]
  and g60 (.I0(w40), .I1(w4), .Z(w58));   //: @(560,631) /sn:0 /R:2 /w:[ 5 29 0 ]
  and g40 (.I0(w37), .I1(w32), .Z(w28));   //: @(576,471) /sn:0 /R:2 /w:[ 0 27 1 ]
  add g81 (.A(w36), .B(w45), .S(w41), .CI(w44), .CO(w22));   //: @(412,603) /sn:0 /R:2 /w:[ 1 1 1 0 0 ]
  //: input g0 (a) @(234,189) /sn:0 /R:2 /w:[ 0 ]
  or g22 (.I0(w62), .I1(w63), .I2(w66), .I3(w67), .I4(w68), .I5(w69), .I6(w70), .I7(w71), .Z(w65));   //: @(426,136) /sn:0 /w:[ 0 0 0 0 0 0 0 0 5 ]
  not g90 (.I(w51), .Z(w53));   //: @(399,486) /sn:0 /w:[ 0 0 ]
  //: joint g70 (w4) @(657, 583) /w:[ 9 -1 10 36 ]
  //: joint g46 (w32) @(631, 438) /w:[ 2 -1 1 28 ]
  and g45 (.I0(w52), .I1(w32), .Z(w54));   //: @(574,521) /sn:0 /R:2 /w:[ 0 17 0 ]
  concat g35 (.I0(w52), .I1(w49), .I2(w46), .I3(w43), .I4(w40), .I5(w37), .I6(w34), .I7(w30), .I8(w4), .Z(w21));   //: @(728,478) /sn:0 /w:[ 3 3 3 3 3 3 3 3 5 0 ] /dr:0
  //: joint g26 (w33) @(765, 148) /w:[ 18 17 -1 20 ]
  //: joint g66 (w4) @(634, 583) /w:[ 17 -1 18 28 ]
  //: supply1 g82 (w45) @(372,639) /sn:0 /w:[ 0 ]
  //: supply0 g12 (w0) @(799,415) /sn:0 /w:[ 1 ]
  //: comment g18 /dolink:0 /link:"" @(631,213) /sn:0 /R:3
  //: /line:"complement a2"
  //: /end
  //: joint g91 (w65) @(468, 178) /w:[ -1 2 1 8 ]
  concat g33 (.I0(b), .I1(w5), .Z(w16));   //: @(611,317) /sn:0 /w:[ 3 1 1 ] /dr:0
  //: joint g49 (w32) @(652, 438) /w:[ 8 -1 7 22 ]

endmodule

module ramme(val, rw, adr, s);
//: interface  /sz:(40, 40) /bd:[ ]
supply0 w0;    //: /sn:0 /dp:1 {0}(367,425)(367,435)(352,435)(352,424)(301,424)(301,459){1}
input [7:0] val;    //: /sn:0 {0}(477,399)(566,399)(566,388)(544,388){1}
input rw;    //: /sn:0 {0}(470,316)(446,316){1}
//: {2}(442,316)(376,316){3}
//: {4}(374,314)(374,294)(366,294){5}
//: {6}(374,318)(374,343){7}
//: {8}(372,345)(333,345)(333,461)(342,461){9}
//: {10}(374,347)(374,362)(374,362)(374,375){11}
//: {12}(444,318)(444,343){13}
input [2:0] adr;    //: /sn:0 {0}(356,398)(295,398){1}
output [7:0] s;    //: /sn:0 {0}(452,348)(538,348)(538,349)(549,349){1}
wire w6;    //: /sn:0 {0}(358,461)(381,461)(381,425){1}
wire [7:0] w7;    //: /sn:0 {0}(461,399)(428,399){1}
//: {2}(426,397)(426,348)(436,348){3}
//: {4}(424,399)(407,399)(407,398)(391,398){5}
wire w10;    //: /sn:0 {0}(469,404)(469,414)(496,414)(496,316)(486,316){1}
//: enddecls

  //: supply0 g4 (w0) @(301,465) /sn:0 /w:[ 1 ]
  bufif1 g8 (.Z(w7), .I(val), .E(w10));   //: @(471,399) /sn:0 /R:2 /w:[ 0 0 0 ]
  //: joint g3 (rw) @(374, 316) /w:[ 3 4 -1 6 ]
  not g2 (.I(rw), .Z(w6));   //: @(348,461) /sn:0 /w:[ 9 0 ]
  bufif1 g1 (.Z(s), .I(w7), .E(rw));   //: @(442,348) /sn:0 /w:[ 0 3 13 ]
  //: joint g11 (w7) @(426, 399) /w:[ 1 2 4 -1 ]
  //: input g10 (val) @(542,388) /sn:0 /w:[ 1 ]
  //: input g19 (rw) @(364,294) /sn:0 /w:[ 5 ]
  //: joint g6 (rw) @(444, 316) /w:[ 1 -1 2 12 ]
  //: input g7 (adr) @(293,398) /sn:0 /w:[ 1 ]
  //: output g15 (s) @(546,349) /sn:0 /w:[ 1 ]
  not g5 (.I(rw), .Z(w10));   //: @(476,316) /sn:0 /w:[ 0 1 ]
  ram g0 (.A(adr), .D(w7), .WE(rw), .OE(w6), .CS(w0));   //: @(374,399) /sn:0 /w:[ 0 5 11 1 0 ]
  //: joint g12 (rw) @(374, 345) /w:[ -1 7 8 10 ]

endmodule

module additi(s, b, a);
//: interface  /sz:(40, 40) /bd:[ ]
input [7:0] b;    //: /sn:0 {0}(390,101)(438,101)(438,154)(334,154)(334,181){1}
supply0 w0;    //: /sn:0 {0}(342,195)(401,195)(401,219){1}
output [7:0] s;    //: /sn:0 {0}(326,294)(318,294)(318,210){1}
input [7:0] a;    //: /sn:0 {0}(168,100)(197,100)(197,154)(302,154)(302,181){1}
wire w2;    //: /sn:0 {0}(294,195)(200,195)(200,207)(210,207){1}
//: enddecls

  led g4 (.I(w2));   //: @(217,207) /sn:0 /R:3 /w:[ 1 ] /type:0
  //: output g3 (s) @(323,294) /sn:0 /w:[ 0 ]
  //: input g2 (b) @(388,101) /sn:0 /w:[ 0 ]
  //: input g1 (a) @(166,100) /sn:0 /w:[ 0 ]
  //: supply0 g5 (w0) @(401,225) /sn:0 /w:[ 1 ]
  add g0 (.A(a), .B(b), .S(s), .CI(w0), .CO(w2));   //: @(318,197) /sn:0 /w:[ 1 1 1 0 0 ]

endmodule

module unite_centrale(b, s, a, ope);
//: interface  /sz:(40, 40) /bd:[ ]
input [7:0] b;    //: /sn:0 {0}(93,216)(103,216)(103,268)(303,268){1}
input [2:0] ope;    //: /sn:0 {0}(317,-79)(317,-52){1}
output [7:0] s;    //: /sn:0 {0}(788,356)(875,356){1}
//: {2}(877,354)(877,343){3}
//: {4}(877,339)(877,247)(927,247){5}
//: {6}(875,341)(768,341){7}
//: {8}(877,358)(877,360)(877,360)(877,394){9}
//: {10}(875,396)(811,396)(811,396)(823,396){11}
//: {12}(877,398)(877,454)(844,454){13}
input [7:0] a;    //: /sn:0 {0}(94,194)(224,194)(224,258)(303,258){1}
wire [7:0] w32;    //: /sn:0 {0}(641,396)(807,396){1}
wire w56;    //: /sn:0 {0}(430,140)(430,90)(390,90){1}
//: {2}(386,90)(306,90)(306,-10)(290,-10){3}
//: {4}(288,-12)(288,-13)(307,-13)(307,-46){5}
//: {6}(288,-8)(288,7)(288,7)(288,24){7}
//: {8}(388,92)(388,119)(388,119)(388,139){9}
wire [7:0] w14;    //: /sn:0 {0}(513,234)(563,234)(563,231)(596,231){1}
wire [15:0] w16;    //: /sn:0 {0}(507,239)(490,239)(490,303)(368,303){1}
wire [7:0] w4;    //: /sn:0 {0}(596,249)(567,249)(567,244)(513,244){1}
wire [15:0] w3;    //: /sn:0 {0}(309,263)(346,263)(346,301){1}
//: {2}(348,303)(352,303){3}
//: {4}(346,305)(346,316){5}
//: {6}(348,318)(372,318){7}
//: {8}(346,320)(346,387){9}
//: {10}(348,389)(376,389)(376,389)(407,389){11}
//: {12}(346,391)(346,446)(428,446){13}
wire [15:0] w34;    //: /sn:0 {0}(444,446)(509,446){1}
wire [15:0] w31;    //: /sn:0 {0}(423,389)(515,389){1}
wire [7:0] w20;    //: /sn:0 {0}(531,294)(588,294)(588,291)(596,291){1}
wire [7:0] w23;    //: /sn:0 {0}(521,384)(599,384){1}
wire [7:0] w25;    //: /sn:0 {0}(515,451)(586,451)(586,464)(596,464){1}
wire w17;    //: /sn:0 {0}(333,40)(333,49)(391,49){1}
//: {2}(395,49)(435,49)(435,140){3}
//: {4}(393,51)(393,96)(393,96)(393,139){5}
wire [7:0] w22;    //: /sn:0 {0}(521,394)(589,394)(589,406)(599,406){1}
wire w2;    //: /sn:0 {0}(317,-46)(317,-29)(333,-29)(333,-12){1}
//: {2}(335,-10)(336,-10){3}
//: {4}(340,-10)(415,-10)(415,140){5}
//: {6}(338,-8)(338,139){7}
//: {8}(333,-8)(333,24){9}
wire w12;    //: /sn:0 {0}(366,40)(366,119){1}
//: {2}(368,121)(440,121)(440,140){3}
//: {4}(364,121)(343,121)(343,139){5}
wire [7:0] w49;    //: /sn:0 {0}(752,341)(707,341)(707,243)(638,243){1}
wire w10;    //: /sn:0 {0}(288,40)(288,71)(287,71)(287,79){1}
//: {2}(289,81)(410,81)(410,140){3}
//: {4}(287,83)(287,113)(333,113)(333,139){5}
wire w27;    //: /sn:0 {0}(415,161)(415,258){1}
//: {2}(417,260)(815,260)(815,391){3}
//: {4}(415,262)(415,354){5}
//: {6}(413,356)(403,356)(403,350)(315,350)(315,312){7}
//: {8}(415,358)(415,384){9}
wire [7:0] w33;    //: /sn:0 {0}(638,454)(828,454){1}
wire w52;    //: /sn:0 {0}(393,160)(393,233){1}
//: {2}(391,235)(334,235)(334,233){3}
//: {4}(393,237)(393,269)(392,269){5}
//: {6}(388,269)(380,269)(380,313){7}
//: {8}(390,271)(390,309)(780,309)(780,351){9}
wire w48;    //: /sn:0 {0}(338,160)(338,168)(360,168)(360,208){1}
//: {2}(358,210)(336,210)(336,203){3}
//: {4}(360,212)(360,252){5}
//: {6}(362,254)(582,254)(582,305)(770,305)(770,311)(760,311)(760,336){7}
//: {8}(360,256)(360,298){9}
wire [7:0] w47;    //: /sn:0 {0}(772,356)(673,356)(673,302)(638,302){1}
wire [15:0] w29;    //: /sn:0 {0}(388,318)(514,318)(514,299)(525,299){1}
wire [7:0] w9;    //: /sn:0 {0}(531,304)(586,304)(586,314)(596,314){1}
wire w42;    //: /sn:0 {0}(435,161)(435,230){1}
//: {2}(437,232)(836,232)(836,449){3}
//: {4}(435,234)(435,335)(436,335)(436,419){5}
//: {6}(434,421)(308,421)(308,389){7}
//: {8}(436,423)(436,441){9}
wire w50;    //: /sn:0 {0}(398,139)(398,-15){1}
//: {2}(400,-17)(420,-17)(420,140){3}
//: {4}(398,-19)(398,-17)(368,-17){5}
//: {6}(366,-19)(366,-20)(327,-20)(327,-46){7}
//: {8}(366,-15)(366,3)(366,3)(366,24){9}
wire [7:0] w26;    //: /sn:0 {0}(515,441)(586,441)(586,447)(596,447){1}
//: enddecls

  divv g4 (.b(w9), .a(w20), .s(w47));   //: @(597, 284) /sz:(40, 40) /sn:0 /p:[ Li0>1 Li1>1 Ro0<1 ]
  multt g8 (.b(w25), .a(w26), .s(w33));   //: @(597, 434) /sz:(40, 40) /sn:0 /p:[ Li0>1 Li1>1 Ro0<0 ]
  //: joint g34 (w2) @(338, -10) /w:[ 4 -1 3 6 ]
  //: joint g37 (w42) @(435, 232) /w:[ 2 1 -1 4 ]
  bufif1 g55 (.Z(s), .I(w47), .E(w52));   //: @(778,356) /sn:0 /w:[ 0 0 9 ]
  and g3 (.I0(w12), .I1(w17), .I2(w56), .Z(w42));   //: @(435,151) /sn:0 /R:3 /w:[ 3 3 0 0 ]
  //: joint g13 (w50) @(366, -17) /w:[ 5 6 -1 8 ]
  additi g2 (.b(w4), .a(w14), .s(w49));   //: @(597, 217) /sz:(40, 40) /sn:0 /p:[ Li0>0 Li1>1 Ro0<1 ]
  //: joint g76 (s) @(877, 356) /w:[ -1 2 1 8 ]
  and g1 (.I0(w50), .I1(w2), .I2(w10), .Z(w27));   //: @(415,151) /sn:0 /R:3 /w:[ 3 5 3 0 ]
  bufif1 g64 (.Z(s), .I(w33), .E(w42));   //: @(834,454) /sn:0 /w:[ 13 1 3 ]
  bufif1 g16 (.Z(w16), .I(w3), .E(w48));   //: @(358,303) /sn:0 /w:[ 1 3 9 ]
  //: joint g11 (w2) @(333, -10) /w:[ 2 1 -1 8 ]
  //: joint g10 (w48) @(360, 254) /w:[ 6 5 -1 8 ]
  bufif1 g28 (.Z(w29), .I(w3), .E(w52));   //: @(378,318) /sn:0 /w:[ 0 7 7 ]
  //: joint g78 (s) @(877, 396) /w:[ -1 9 10 12 ]
  bufif1 g27 (.Z(w31), .I(w3), .E(w27));   //: @(413,389) /sn:0 /w:[ 0 11 9 ]
  concat g19 (.I0(w50), .I1(w2), .I2(w56), .Z(ope));   //: @(317,-51) /sn:0 /R:1 /w:[ 7 0 5 1 ] /dr:0
  //: joint g32 (w56) @(388, 90) /w:[ 1 -1 2 8 ]
  led g38 (.I(w48));   //: @(336,196) /sn:0 /w:[ 3 ] /type:0
  and g6 (.I0(w50), .I1(w17), .I2(w56), .Z(w52));   //: @(393,150) /sn:0 /R:3 /w:[ 0 5 9 0 ]
  soustr g9 (.b(w22), .a(w23), .s(w32));   //: @(600, 376) /sz:(40, 40) /sn:0 /p:[ Li0>1 Li1>1 Ro0<0 ]
  bufif1 g53 (.Z(s), .I(w49), .E(w48));   //: @(758,341) /sn:0 /w:[ 7 0 7 ]
  bufif1 g57 (.Z(s), .I(w32), .E(w27));   //: @(813,396) /sn:0 /w:[ 11 1 3 ]
  //: joint g7 (w56) @(288, -10) /w:[ 3 4 -1 6 ]
  //: input g15 (b) @(91,216) /sn:0 /w:[ 0 ]
  not g20 (.I(w56), .Z(w10));   //: @(288,30) /sn:0 /R:3 /w:[ 7 0 ]
  //: joint g31 (w50) @(398, -17) /w:[ 2 4 -1 1 ]
  led g39 (.I(w52));   //: @(334,226) /sn:0 /w:[ 3 ] /type:0
  //: output g48 (s) @(924,247) /sn:0 /w:[ 5 ]
  led g43 (.I(w42));   //: @(308,382) /sn:0 /w:[ 7 ] /type:0
  bufif1 g29 (.Z(w34), .I(w3), .E(w42));   //: @(434,446) /sn:0 /w:[ 0 13 9 ]
  concat g25 (.I0(w22), .I1(w23), .Z(w31));   //: @(516,389) /sn:0 /R:2 /w:[ 0 0 1 ] /dr:1
  concat g17 (.I0(b), .I1(a), .Z(w3));   //: @(308,263) /sn:0 /w:[ 1 1 0 ] /dr:0
  led g42 (.I(w27));   //: @(315,305) /sn:0 /w:[ 7 ] /type:0
  //: input g14 (a) @(92,194) /sn:0 /w:[ 0 ]
  and g5 (.I0(w12), .I1(w2), .I2(w10), .Z(w48));   //: @(338,150) /sn:0 /R:3 /w:[ 5 7 5 0 ]
  //: joint g47 (w42) @(436, 421) /w:[ -1 5 6 8 ]
  //: joint g44 (w48) @(360, 210) /w:[ -1 1 2 4 ]
  //: joint g36 (w27) @(415, 260) /w:[ 2 1 -1 4 ]
  concat g24 (.I0(w9), .I1(w20), .Z(w29));   //: @(526,299) /sn:0 /R:2 /w:[ 0 0 1 ] /dr:1
  not g21 (.I(w50), .Z(w12));   //: @(366,30) /sn:0 /R:3 /w:[ 9 0 ]
  //: joint g41 (w3) @(346, 389) /w:[ 10 9 -1 12 ]
  concat g23 (.I0(w4), .I1(w14), .Z(w16));   //: @(508,239) /sn:0 /R:2 /w:[ 1 0 0 ] /dr:1
  //: joint g40 (w3) @(346, 318) /w:[ 6 5 -1 8 ]
  //: joint g46 (w27) @(415, 356) /w:[ -1 5 6 8 ]
  //: joint g45 (w52) @(393, 235) /w:[ -1 1 2 4 ]
  concat g26 (.I0(w25), .I1(w26), .Z(w34));   //: @(510,446) /sn:0 /R:2 /w:[ 0 0 1 ] /dr:1
  not g0 (.I(w2), .Z(w17));   //: @(333,30) /sn:0 /R:3 /w:[ 9 0 ]
  //: joint g22 (w10) @(287, 81) /w:[ 2 1 -1 4 ]
  //: joint g35 (w12) @(366, 121) /w:[ 2 1 4 -1 ]
  //: input g18 (ope) @(317,-81) /sn:0 /R:3 /w:[ 0 ]
  //: joint g12 (w52) @(390, 269) /w:[ 5 -1 6 8 ]
  //: joint g33 (w3) @(346, 303) /w:[ 2 1 -1 4 ]
  //: joint g30 (w17) @(393, 49) /w:[ 2 -1 1 4 ]
  //: joint g49 (s) @(877, 341) /w:[ -1 4 6 3 ]

endmodule

module multt(s, b, a);
//: interface  /sz:(40, 40) /bd:[ ]
input [7:0] b;    //: /sn:0 /dp:1 {0}(235,159)(235,122)(279,122)(279,97)(263,97){1}
output [7:0] s;    //: /sn:0 {0}(219,188)(219,271)(245,271){1}
input [7:0] a;    //: /sn:0 /dp:1 {0}(203,159)(203,124)(148,124)(148,97)(138,97){1}
//: enddecls

  //: output g3 (s) @(242,271) /sn:0 /w:[ 1 ]
  mult g2 (.A(a), .B(b), .P(s));   //: @(219,175) /sn:0 /w:[ 0 0 0 ]
  //: input g1 (b) @(261,97) /sn:0 /w:[ 1 ]
  //: input g0 (a) @(136,97) /sn:0 /w:[ 1 ]

endmodule

module ual;    //: root_module
supply0 w31;    //: /sn:0 {0}(303,574)(272,574){1}
//: {2}(270,572)(270,569)(270,569)(270,566){3}
//: {4}(272,564)(291,564)(291,564)(303,564){5}
//: {6}(268,564)(258,564)(258,576){7}
//: {8}(270,576)(270,582){9}
//: {10}(272,584)(291,584)(291,584)(303,584){11}
//: {12}(270,586)(270,592){13}
//: {14}(272,594)(291,594)(291,594)(303,594){15}
//: {16}(270,596)(270,604)(303,604){17}
supply0 w5;    //: /sn:0 {0}(400,616)(400,622)(401,622)(401,629){1}
wire w6;    //: /sn:0 {0}(164,249)(225,249){1}
//: {2}(229,249)(236,249)(258,249)(359,249){3}
//: {4}(227,251)(227,355)(245,355){5}
wire w7;    //: /sn:0 {0}(278,365)(270,365)(270,386)(219,386){1}
wire [7:0] b;    //: /sn:0 {0}(603,144)(665,144){1}
//: {2}(669,144)(695,144){3}
//: {4}(667,142)(667,133){5}
wire [7:0] s0;    //: /sn:0 {0}(591,527)(591,541)(559,541){1}
//: {2}(557,539)(557,312)(479,312)(479,81)(541,81)(541,95){3}
//: {4}(555,541)(486,541){5}
wire [1:0] w16;    //: /sn:0 {0}(345,284)(469,284)(469,150){1}
//: {2}(471,148)(506,148){3}
//: {4}(467,148)(463,148)(463,146){5}
wire w14;    //: /sn:0 {0}(339,289)(184,289){1}
//: {2}(180,289)(169,289)(169,289)(164,289){3}
//: {4}(182,291)(182,495)(213,495){5}
wire h;    //: /sn:0 {0}(591,165)(591,190)(596,190){1}
wire w19;    //: /sn:0 {0}(278,360)(264,360)(264,371)(237,371){1}
wire w15;    //: /sn:0 {0}(339,279)(188,279){1}
//: {2}(184,279)(171,279)(171,279)(164,279){3}
//: {4}(186,281)(186,485)(213,485){5}
wire w4;    //: /sn:0 {0}(261,355)(278,355){1}
wire [7:0] w3;    //: /sn:0 {0}(158,264)(140,264){1}
//: {2}(138,262)(138,252)(138,252)(138,211){3}
//: {4}(136,264)(120,264){5}
wire w0;    //: /sn:0 {0}(523,165)(523,370)(308,370){1}
//: {2}(306,368)(306,367)(306,367)(306,363){3}
//: {4}(308,361)(317,361)(317,351){5}
//: {6}(306,359)(306,360)(299,360){7}
//: {8}(306,372)(306,490){9}
wire [7:0] val;    //: /sn:0 {0}(515,645)(515,652)(573,652)(573,589)(511,589){1}
wire w24;    //: /sn:0 {0}(392,654)(414,654)(414,616){1}
wire w20;    //: /sn:0 {0}(565,165)(565,190)(563,190){1}
wire w23;    //: /sn:0 {0}(503,594)(503,601)(530,601)(530,526)(520,526){1}
wire w1;    //: /sn:0 {0}(164,299)(174,299){1}
//: {2}(178,299)(261,299){3}
//: {4}(176,301)(176,505)(213,505){5}
wire [7:0] w18;    //: /sn:0 {0}(495,589)(478,589)(478,589)(462,589){1}
//: {2}(460,587)(460,541)(470,541){3}
//: {4}(458,589)(439,589)(439,589)(424,589){5}
wire rw;    //: /sn:0 {0}(504,526)(480,526){1}
//: {2}(476,526)(410,526){3}
//: {4}(408,524)(408,516)(394,516){5}
//: {6}(408,528)(408,544)(408,544)(408,540){7}
//: {8}(410,538)(417,538)(417,551)(407,551)(407,566){9}
//: {10}(406,538)(367,538)(367,654)(376,654){11}
//: {12}(478,528)(478,540)(478,540)(478,536){13}
wire [2:0] w22;    //: /sn:0 {0}(219,495)(298,495){1}
wire [2:0] w17;    //: /sn:0 {0}(303,614)(242,614)(242,519)(344,519)(344,495)(314,495){1}
wire [2:0] ope0;    //: /sn:0 {0}(723,95)(723,37)(409,37){1}
//: {2}(407,35)(407,31)(407,31)(407,31){3}
//: {4}(405,37)(376,37)(376,239)(365,239){5}
wire w12;    //: /sn:0 {0}(359,229)(201,229){1}
//: {2}(201,229)(203,229)(164,229){3}
//: {4}(199,231)(199,386)(203,386){5}
wire w11;    //: /sn:0 {0}(164,259)(318,259){1}
wire [7:0] w2;    //: /sn:0 {0}(795,134)(842,134)(842,486){1}
wire w10;    //: /sn:0 {0}(318,269)(164,269){1}
wire [1:0] w13;    //: /sn:0 {0}(324,264)(449,264)(449,112)(455,112){1}
//: {2}(459,112)(506,112){3}
//: {4}(457,114)(457,118)(457,118)(457,105){5}
wire [7:0] a;    //: /sn:0 {0}(603,112)(637,112){1}
//: {2}(641,112)(695,112){3}
//: {4}(639,110)(639,105){5}
wire w9;    //: /sn:0 {0}(221,371)(214,371)(214,241){1}
//: {2}(216,239)(359,239){3}
//: {4}(212,239)(164,239){5}
wire [7:0] w26;    //: /sn:0 {0}(389,589)(348,589)(348,589)(309,589){1}
//: enddecls

  //: switch g8 (w20) @(546,190) /sn:0 /w:[ 1 ] /st:1
  bufif1 g4 (.Z(w18), .I(val), .E(w23));   //: @(505,589) /sn:0 /R:2 /w:[ 0 1 0 ]
  concat g37 (.I0(w17), .I1(w31), .I2(w31), .I3(w31), .I4(w31), .I5(w31), .Z(w26));   //: @(308,589) /sn:0 /w:[ 0 17 15 11 0 5 1 ] /dr:0
  not g34 (.I(rw), .Z(w24));   //: @(382,654) /sn:0 /w:[ 11 0 ]
  unite_centrale g3 (.ope(ope0), .b(b), .a(a), .s(w2));   //: @(696, 96) /sz:(98, 70) /sn:0 /p:[ Ti0>0 Li0>3 Li1>3 Ro0<0 ]
  not g13 (.I(w6), .Z(w4));   //: @(251,355) /sn:0 /w:[ 5 0 ]
  led g51 (.I(ope0));   //: @(407,24) /sn:0 /w:[ 3 ] /type:1
  led g55 (.I(b));   //: @(667,126) /sn:0 /w:[ 5 ] /type:1
  //: joint g58 (w0) @(306, 370) /w:[ 1 2 -1 8 ]
  clock g2 (.Z(h));   //: @(609,191) /sn:0 /R:2 /w:[ 1 ] /omega:100 /phi:0 /duty:50
  concat g1 (.I0(w1), .I1(w14), .I2(w15), .I3(w10), .I4(w11), .I5(w6), .I6(w9), .I7(w12), .Z(w3));   //: @(159,264) /sn:0 /R:2 /w:[ 0 3 3 1 0 0 5 3 0 ] /dr:1
  concat g11 (.I0(w14), .I1(w15), .Z(w16));   //: @(344,284) /sn:0 /w:[ 0 0 0 ] /dr:0
  not g16 (.I(w12), .Z(w7));   //: @(209,386) /sn:0 /w:[ 5 1 ]
  concat g10 (.I0(w10), .I1(w11), .Z(w13));   //: @(323,264) /sn:0 /w:[ 0 1 0 ] /dr:0
  led g28 (.I(w0));   //: @(317,344) /sn:0 /w:[ 5 ] /type:0
  //: joint g50 (w16) @(469, 148) /w:[ 2 -1 4 1 ]
  //: supply0 g32 (w5) @(401,635) /sn:0 /w:[ 1 ]
  and g19 (.I0(w4), .I1(w19), .I2(w7), .Z(w0));   //: @(289,360) /sn:0 /w:[ 1 0 0 7 ]
  led g27 (.I(s0));   //: @(591,520) /sn:0 /w:[ 0 ] /type:1
  //: supply0 g38 (w31) @(258,582) /sn:0 /w:[ 7 ]
  concat g6 (.I0(w6), .I1(w9), .I2(w12), .Z(ope0));   //: @(364,239) /sn:0 /w:[ 3 3 0 5 ] /dr:0
  regg g7 (.w(s0), .a2(w16), .a1(w13), .clear(w20), .rw(w0), .h(h), .s2(b), .s1(a));   //: @(507, 96) /sz:(95, 68) /sn:0 /p:[ Ti0>3 Li0>3 Li1>3 Bi0>0 Bi1>0 Bi2>0 Ro0<0 Ro1<0 ]
  led g53 (.I(a));   //: @(639,98) /sn:0 /w:[ 5 ] /type:1
  //: joint g31 (w3) @(138, 264) /w:[ 1 2 4 -1 ]
  //: joint g15 (w12) @(199, 229) /w:[ 1 2 -1 4 ]
  //: joint g20 (w6) @(227, 249) /w:[ 2 -1 1 4 ]
  //: joint g39 (rw) @(478, 526) /w:[ 1 -1 2 12 ]
  //: joint g48 (w31) @(270, 594) /w:[ 14 13 -1 16 ]
  ram g43 (.A(w26), .D(w18), .WE(rw), .OE(w24), .CS(w5));   //: @(407,590) /sn:0 /w:[ 0 5 9 1 0 ]
  //: joint g17 (w9) @(214, 239) /w:[ 2 -1 4 1 ]
  //: joint g25 (w1) @(176, 299) /w:[ 2 -1 1 4 ]
  //: joint g29 (w0) @(306, 361) /w:[ 4 3 -1 6 ]
  not g42 (.I(rw), .Z(w23));   //: @(510,526) /sn:0 /w:[ 0 1 ]
  //: joint g52 (ope0) @(407, 37) /w:[ 1 2 4 -1 ]
  led g5 (.I(w2));   //: @(842,493) /sn:0 /R:2 /w:[ 1 ] /type:1
  //: switch g14 (rw) @(377,516) /sn:0 /w:[ 5 ] /st:1
  //: joint g56 (b) @(667, 144) /w:[ 2 4 1 -1 ]
  //: joint g47 (w31) @(270, 584) /w:[ 10 9 -1 12 ]
  //: joint g44 (rw) @(408, 538) /w:[ 8 -1 10 7 ]
  //: joint g36 (w18) @(460, 589) /w:[ 1 2 4 -1 ]
  bufif1 g21 (.Z(w17), .I(w22), .E(w0));   //: @(304,495) /sn:0 /w:[ 1 1 9 ]
  //: joint g24 (w15) @(186, 279) /w:[ 1 -1 2 4 ]
  //: joint g23 (w14) @(182, 289) /w:[ 1 -1 2 4 ]
  //: joint g41 (w13) @(457, 112) /w:[ 2 -1 1 4 ]
  led g40 (.I(w13));   //: @(457,98) /sn:0 /w:[ 5 ] /type:1
  //: joint g54 (a) @(639, 112) /w:[ 2 4 1 -1 ]
  //: joint g46 (w31) @(270, 574) /w:[ 1 2 -1 8 ]
  //: joint g45 (w31) @(270, 564) /w:[ 4 -1 6 3 ]
  bufif1 g35 (.Z(s0), .I(w18), .E(rw));   //: @(476,541) /sn:0 /w:[ 5 3 13 ]
  //: dip g0 (w3) @(82,264) /sn:0 /R:1 /w:[ 5 ] /st:0
  concat g22 (.I0(w1), .I1(w14), .I2(w15), .Z(w22));   //: @(218,495) /sn:0 /w:[ 5 5 5 0 ] /dr:0
  //: dip g26 (val) @(515,635) /sn:0 /w:[ 0 ] /st:3
  not g18 (.I(w9), .Z(w19));   //: @(227,371) /sn:0 /w:[ 0 1 ]
  //: joint g12 (s0) @(557, 541) /w:[ 1 2 4 -1 ]
  //: joint g33 (rw) @(408, 526) /w:[ 3 4 -1 6 ]
  led g30 (.I(w3));   //: @(138,204) /sn:0 /w:[ 3 ] /type:1
  led g49 (.I(w16));   //: @(463,139) /sn:0 /w:[ 5 ] /type:1

endmodule

module regg(rw, clear, s2, s1, a1, a2, h, w);
//: interface  /sz:(40, 40) /bd:[ ]
output [7:0] s2;    //: /sn:0 {0}(518,14)(508,14)(508,29)(541,29)(541,118)(555,118)(555,154){1}
input h;    //: /sn:0 {0}(551,423)(557,423){1}
//: {2}(559,421)(559,358)(547,358)(547,359)(537,359){3}
//: {4}(559,425)(559,503){5}
//: {6}(557,505)(512,505){7}
//: {8}(559,507)(559,551){9}
//: {10}(557,553)(476,553){11}
//: {12}(559,555)(559,617)(425,617){13}
input [1:0] a2;    //: /sn:0 {0}(-194,224)(-173,224)(-173,74)(602,74)(602,167)(578,167){1}
input [7:0] w;    //: /sn:0 /dp:1 {0}(549,672)(686,672)(686,589)(633,589){1}
output [7:0] s1;    //: /sn:0 {0}(287,152)(287,127)(352,127)(352,18)(377,18){1}
input clear;    //: /sn:0 /dp:7 {0}(475,428)(316,428){1}
//: {2}(312,428)(297,428)(297,428)(253,428){3}
//: {4}(249,428)(209,428){5}
//: {6}(205,428)(186,428)(186,277)(141,277){7}
//: {8}(207,430)(207,622)(349,622){9}
//: {10}(251,430)(251,558)(400,558){11}
//: {12}(314,430)(314,510)(436,510){13}
input [1:0] a1;    //: /sn:0 {0}(-183,411)(-60,411)(-60,415)(-50,415){1}
//: {2}(-48,413)(-48,145)(341,145)(341,165)(310,165){3}
//: {4}(-48,417)(-48,529)(55,529){5}
input rw;    //: /sn:0 /dp:1 {0}(68,505)(68,489)(150,489)(150,390){1}
//: {2}(152,388)(557,388)(557,687)(541,687)(541,677){3}
//: {4}(150,386)(150,287)(9,287){5}
wire [7:0] w6;    //: /sn:0 {0}(269,181)(269,187){1}
//: {2}(271,189)(537,189)(537,183){3}
//: {4}(269,191)(269,220)(512,220)(512,413){5}
wire w7;    //: /sn:0 {0}(334,418)(475,418){1}
wire w16;    //: /sn:0 {0}(84,523)(120,523)(120,500)(319,500){1}
wire w4;    //: /sn:0 {0}(84,511)(108,511)(108,418)(318,418){1}
wire w15;    //: /sn:0 {0}(307,535)(392,535)(392,548)(400,548){1}
wire [7:0] w0;    //: /sn:0 {0}(437,543)(437,294)(293,294)(293,211){1}
//: {2}(295,209)(561,209)(561,183){3}
//: {4}(293,207)(293,181){5}
wire [7:0] w3;    //: /sn:0 {0}(386,607)(386,238){1}
//: {2}(388,236)(573,236)(573,183){3}
//: {4}(384,236)(305,236)(305,181){5}
wire w23;    //: /sn:0 {0}(289,612)(151,612)(151,547)(84,547){1}
wire w24;    //: /sn:0 {0}(305,612)(349,612){1}
wire [7:0] w1;    //: /sn:0 /dp:1 {0}(533,672)(524,672)(524,676)(514,676){1}
//: {2}(512,674)(512,434){3}
//: {4}(510,676)(475,676){5}
//: {6}(473,674)(473,516){7}
//: {8}(471,676)(439,676){9}
//: {10}(437,674)(437,585)(437,585)(437,564){11}
//: {12}(435,676)(386,676)(386,628){13}
wire w17;    //: /sn:0 {0}(84,535)(291,535){1}
wire w13;    //: /sn:0 {0}(335,500)(436,500){1}
wire [7:0] w9;    //: /sn:0 {0}(281,181)(281,195){1}
//: {2}(283,197)(549,197)(549,183){3}
//: {4}(281,199)(281,256)(473,256)(473,495){5}
//: enddecls

  mux g4 (.I0(w6), .I1(w9), .I2(w0), .I3(w3), .S(a1), .Z(s1));   //: @(287,165) /sn:0 /R:2 /w:[ 0 0 5 5 3 0 ]
  demux g8 (.I(a1), .E(rw), .Z0(w4), .Z1(w16), .Z2(w17), .Z3(w23));   //: @(68,529) /sn:0 /R:1 /w:[ 5 0 0 0 0 1 ]
  register g13 (.Q(w0), .D(w1), .EN(w15), .CLR(clear), .CK(h));   //: @(437,553) /sn:0 /R:2 /w:[ 0 11 1 11 11 ]
  //: joint g37 (w9) @(281, 197) /w:[ 2 1 -1 4 ]
  //: input g3 (rw) @(7,287) /sn:0 /w:[ 5 ]
  register g2 (.Q(w6), .D(w1), .EN(w7), .CLR(clear), .CK(h));   //: @(512,423) /sn:0 /R:2 /w:[ 5 3 1 0 0 ]
  //: input g1 (clear) @(139,277) /sn:0 /w:[ 7 ]
  //: joint g16 (clear) @(314, 428) /w:[ 1 -1 2 12 ]
  not g11 (.I(w4), .Z(w7));   //: @(324,418) /sn:0 /w:[ 1 0 ]
  mux g10 (.I0(w6), .I1(w9), .I2(w0), .I3(w3), .S(a2), .Z(s2));   //: @(555,167) /sn:0 /R:2 /w:[ 3 3 3 3 1 1 ]
  //: joint g27 (w1) @(437, 676) /w:[ 9 10 12 -1 ]
  not g19 (.I(w16), .Z(w13));   //: @(325,500) /sn:0 /w:[ 1 0 ]
  //: output g32 (s2) @(515,14) /sn:0 /w:[ 0 ]
  //: joint g38 (w0) @(293, 209) /w:[ 2 4 -1 1 ]
  //: joint g6 (w1) @(512, 676) /w:[ 1 2 4 -1 ]
  //: joint g7 (rw) @(150, 388) /w:[ 2 4 -1 1 ]
  //: joint g15 (h) @(559, 423) /w:[ -1 2 1 4 ]
  //: output g31 (s1) @(374,18) /sn:0 /w:[ 1 ]
  //: joint g39 (w3) @(386, 236) /w:[ 2 -1 4 1 ]
  //: joint g17 (clear) @(251, 428) /w:[ 3 -1 4 10 ]
  //: joint g25 (w1) @(473, 676) /w:[ 5 6 8 -1 ]
  //: input g29 (a1) @(-185,411) /sn:0 /w:[ 0 ]
  register g14 (.Q(w3), .D(w1), .EN(w24), .CLR(clear), .CK(h));   //: @(386,617) /sn:0 /R:2 /w:[ 0 13 1 9 13 ]
  bufif1 g5 (.Z(w1), .I(w), .E(rw));   //: @(543,672) /sn:0 /R:2 /w:[ 0 0 3 ]
  not g24 (.I(w17), .Z(w15));   //: @(297,535) /sn:0 /w:[ 1 0 ]
  //: joint g36 (w6) @(269, 189) /w:[ 2 1 -1 4 ]
  //: input g21 (a2) @(-196,224) /sn:0 /w:[ 0 ]
  //: joint g23 (h) @(559, 553) /w:[ -1 9 10 12 ]
  //: joint g22 (h) @(559, 505) /w:[ -1 5 6 8 ]
  not g26 (.I(w23), .Z(w24));   //: @(295,612) /sn:0 /w:[ 0 0 ]
  //: input g0 (h) @(535,359) /sn:0 /w:[ 3 ]
  //: joint g18 (clear) @(207, 428) /w:[ 5 -1 6 8 ]
  register g12 (.Q(w9), .D(w1), .EN(w13), .CLR(clear), .CK(h));   //: @(473,505) /sn:0 /R:2 /w:[ 5 7 1 13 7 ]
  //: input g30 (w) @(631,589) /sn:0 /w:[ 1 ]
  //: joint g33 (a1) @(-48, 415) /w:[ -1 2 1 4 ]

endmodule

module unite_commande();
//: interface  /sz:(40, 40) /bd:[ ]
supply0 w31;    //: /sn:0 {0}(288,597)(257,597){1}
//: {2}(255,595)(255,592)(255,592)(255,589){3}
//: {4}(257,587)(276,587)(276,587)(288,587){5}
//: {6}(253,587)(243,587)(243,599){7}
//: {8}(255,599)(255,605){9}
//: {10}(257,607)(276,607)(276,607)(288,607){11}
//: {12}(255,609)(255,615){13}
//: {14}(257,617)(276,617)(276,617)(288,617){15}
//: {16}(255,619)(255,627)(288,627){17}
supply0 w5;    //: /sn:0 {0}(385,639)(385,645)(386,645)(386,652){1}
wire w6;    //: /sn:0 {0}(149,272)(210,272){1}
//: {2}(214,272)(221,272)(243,272)(344,272){3}
//: {4}(212,274)(212,378)(230,378){5}
wire w7;    //: /sn:0 {0}(263,388)(255,388)(255,409)(204,409){1}
wire [7:0] b;    //: /sn:0 {0}(588,167)(650,167){1}
//: {2}(654,167)(680,167){3}
//: {4}(652,165)(652,156){5}
wire [7:0] s0;    //: /sn:0 {0}(576,550)(576,564)(544,564){1}
//: {2}(542,562)(542,335)(464,335)(464,104)(526,104)(526,118){3}
//: {4}(540,564)(471,564){5}
wire [1:0] w16;    //: /sn:0 {0}(330,307)(454,307)(454,173){1}
//: {2}(456,171)(491,171){3}
//: {4}(452,171)(448,171)(448,169){5}
wire w14;    //: /sn:0 {0}(324,312)(169,312){1}
//: {2}(165,312)(154,312)(154,312)(149,312){3}
//: {4}(167,314)(167,518)(198,518){5}
wire h;    //: /sn:0 {0}(576,188)(576,213)(581,213){1}
wire w19;    //: /sn:0 {0}(263,383)(249,383)(249,394)(222,394){1}
wire w15;    //: /sn:0 {0}(324,302)(173,302){1}
//: {2}(169,302)(156,302)(156,302)(149,302){3}
//: {4}(171,304)(171,508)(198,508){5}
wire w4;    //: /sn:0 {0}(246,378)(263,378){1}
wire [7:0] w3;    //: /sn:0 {0}(143,287)(125,287){1}
//: {2}(123,285)(123,275)(123,275)(123,234){3}
//: {4}(121,287)(105,287){5}
wire w0;    //: /sn:0 {0}(508,188)(508,393)(293,393){1}
//: {2}(291,391)(291,390)(291,390)(291,386){3}
//: {4}(293,384)(302,384)(302,374){5}
//: {6}(291,382)(291,383)(284,383){7}
//: {8}(291,395)(291,513){9}
wire [7:0] val;    //: /sn:0 {0}(500,668)(500,675)(558,675)(558,612)(496,612){1}
wire w24;    //: /sn:0 {0}(377,677)(399,677)(399,639){1}
wire w20;    //: /sn:0 {0}(550,188)(550,213)(548,213){1}
wire w23;    //: /sn:0 {0}(488,617)(488,624)(515,624)(515,549)(505,549){1}
wire w1;    //: /sn:0 {0}(149,322)(159,322){1}
//: {2}(163,322)(246,322){3}
//: {4}(161,324)(161,528)(198,528){5}
wire [7:0] w18;    //: /sn:0 {0}(480,612)(463,612)(463,612)(447,612){1}
//: {2}(445,610)(445,564)(455,564){3}
//: {4}(443,612)(424,612)(424,612)(409,612){5}
wire rw;    //: /sn:0 {0}(489,549)(465,549){1}
//: {2}(461,549)(395,549){3}
//: {4}(393,547)(393,539)(379,539){5}
//: {6}(393,551)(393,567)(393,567)(393,563){7}
//: {8}(395,561)(402,561)(402,574)(392,574)(392,589){9}
//: {10}(391,561)(352,561)(352,677)(361,677){11}
//: {12}(463,551)(463,563)(463,563)(463,559){13}
wire [2:0] w22;    //: /sn:0 {0}(204,518)(283,518){1}
wire [2:0] w17;    //: /sn:0 {0}(288,637)(227,637)(227,542)(329,542)(329,518)(299,518){1}
wire [2:0] ope0;    //: /sn:0 {0}(708,118)(708,60)(394,60){1}
//: {2}(392,58)(392,54)(392,54)(392,54){3}
//: {4}(390,60)(361,60)(361,262)(350,262){5}
wire w12;    //: /sn:0 {0}(344,252)(186,252){1}
//: {2}(186,252)(188,252)(149,252){3}
//: {4}(184,254)(184,409)(188,409){5}
wire w11;    //: /sn:0 {0}(149,282)(303,282){1}
wire [7:0] w2;    //: /sn:0 {0}(780,157)(827,157)(827,509){1}
wire w10;    //: /sn:0 {0}(303,292)(149,292){1}
wire [1:0] w13;    //: /sn:0 {0}(309,287)(434,287)(434,135)(440,135){1}
//: {2}(444,135)(491,135){3}
//: {4}(442,137)(442,141)(442,141)(442,128){5}
wire [7:0] a;    //: /sn:0 {0}(588,135)(622,135){1}
//: {2}(626,135)(680,135){3}
//: {4}(624,133)(624,128){5}
wire w9;    //: /sn:0 {0}(206,394)(199,394)(199,264){1}
//: {2}(201,262)(344,262){3}
//: {4}(197,262)(149,262){5}
wire [7:0] w26;    //: /sn:0 {0}(374,612)(333,612)(333,612)(294,612){1}
//: enddecls

  //: switch g8 (w20) @(531,213) /sn:0 /w:[ 1 ] /st:1
  bufif1 g4 (.Z(w18), .I(val), .E(w23));   //: @(490,612) /sn:0 /R:2 /w:[ 0 1 0 ]
  concat g37 (.I0(w17), .I1(w31), .I2(w31), .I3(w31), .I4(w31), .I5(w31), .Z(w26));   //: @(293,612) /sn:0 /w:[ 0 17 15 11 0 5 1 ] /dr:0
  not g34 (.I(rw), .Z(w24));   //: @(367,677) /sn:0 /w:[ 11 0 ]
  unite_centrale g3 (.ope(ope0), .b(b), .a(a), .s(w2));   //: @(681, 119) /sz:(98, 70) /sn:0 /p:[ Ti0>0 Li0>3 Li1>3 Ro0<0 ]
  not g13 (.I(w6), .Z(w4));   //: @(236,378) /sn:0 /w:[ 5 0 ]
  led g51 (.I(ope0));   //: @(392,47) /sn:0 /w:[ 3 ] /type:1
  led g55 (.I(b));   //: @(652,149) /sn:0 /w:[ 5 ] /type:1
  //: joint g58 (w0) @(291, 393) /w:[ 1 2 -1 8 ]
  clock g2 (.Z(h));   //: @(594,214) /sn:0 /R:2 /w:[ 1 ] /omega:100 /phi:0 /duty:50
  concat g1 (.I0(w1), .I1(w14), .I2(w15), .I3(w10), .I4(w11), .I5(w6), .I6(w9), .I7(w12), .Z(w3));   //: @(144,287) /sn:0 /R:2 /w:[ 0 3 3 1 0 0 5 3 0 ] /dr:1
  concat g11 (.I0(w14), .I1(w15), .Z(w16));   //: @(329,307) /sn:0 /w:[ 0 0 0 ] /dr:0
  not g16 (.I(w12), .Z(w7));   //: @(194,409) /sn:0 /w:[ 5 1 ]
  concat g10 (.I0(w10), .I1(w11), .Z(w13));   //: @(308,287) /sn:0 /w:[ 0 1 0 ] /dr:0
  led g28 (.I(w0));   //: @(302,367) /sn:0 /w:[ 5 ] /type:0
  //: joint g50 (w16) @(454, 171) /w:[ 2 -1 4 1 ]
  //: supply0 g32 (w5) @(386,658) /sn:0 /w:[ 1 ]
  and g19 (.I0(w4), .I1(w19), .I2(w7), .Z(w0));   //: @(274,383) /sn:0 /w:[ 1 0 0 7 ]
  led g27 (.I(s0));   //: @(576,543) /sn:0 /w:[ 0 ] /type:1
  //: supply0 g38 (w31) @(243,605) /sn:0 /w:[ 7 ]
  concat g6 (.I0(w6), .I1(w9), .I2(w12), .Z(ope0));   //: @(349,262) /sn:0 /w:[ 3 3 0 5 ] /dr:0
  regg g7 (.w(s0), .a2(w16), .a1(w13), .clear(w20), .rw(w0), .h(h), .s2(b), .s1(a));   //: @(492, 119) /sz:(95, 68) /sn:0 /p:[ Ti0>3 Li0>3 Li1>3 Bi0>0 Bi1>0 Bi2>0 Ro0<0 Ro1<0 ]
  led g53 (.I(a));   //: @(624,121) /sn:0 /w:[ 5 ] /type:1
  //: joint g31 (w3) @(123, 287) /w:[ 1 2 4 -1 ]
  //: joint g15 (w12) @(184, 252) /w:[ 1 2 -1 4 ]
  //: joint g20 (w6) @(212, 272) /w:[ 2 -1 1 4 ]
  //: joint g39 (rw) @(463, 549) /w:[ 1 -1 2 12 ]
  //: joint g48 (w31) @(255, 617) /w:[ 14 13 -1 16 ]
  ram g43 (.A(w26), .D(w18), .WE(rw), .OE(w24), .CS(w5));   //: @(392,613) /sn:0 /w:[ 0 5 9 1 0 ]
  //: joint g17 (w9) @(199, 262) /w:[ 2 -1 4 1 ]
  //: joint g25 (w1) @(161, 322) /w:[ 2 -1 1 4 ]
  //: joint g29 (w0) @(291, 384) /w:[ 4 3 -1 6 ]
  not g42 (.I(rw), .Z(w23));   //: @(495,549) /sn:0 /w:[ 0 1 ]
  //: joint g52 (ope0) @(392, 60) /w:[ 1 2 4 -1 ]
  led g5 (.I(w2));   //: @(827,516) /sn:0 /R:2 /w:[ 1 ] /type:1
  //: switch g14 (rw) @(362,539) /sn:0 /w:[ 5 ] /st:1
  //: joint g56 (b) @(652, 167) /w:[ 2 4 1 -1 ]
  //: joint g47 (w31) @(255, 607) /w:[ 10 9 -1 12 ]
  //: joint g44 (rw) @(393, 561) /w:[ 8 -1 10 7 ]
  //: joint g36 (w18) @(445, 612) /w:[ 1 2 4 -1 ]
  bufif1 g21 (.Z(w17), .I(w22), .E(w0));   //: @(289,518) /sn:0 /w:[ 1 1 9 ]
  //: joint g24 (w15) @(171, 302) /w:[ 1 -1 2 4 ]
  //: joint g23 (w14) @(167, 312) /w:[ 1 -1 2 4 ]
  //: joint g41 (w13) @(442, 135) /w:[ 2 -1 1 4 ]
  led g40 (.I(w13));   //: @(442,121) /sn:0 /w:[ 5 ] /type:1
  //: joint g54 (a) @(624, 135) /w:[ 2 4 1 -1 ]
  //: joint g46 (w31) @(255, 597) /w:[ 1 2 -1 8 ]
  //: joint g45 (w31) @(255, 587) /w:[ 4 -1 6 3 ]
  bufif1 g35 (.Z(s0), .I(w18), .E(rw));   //: @(461,564) /sn:0 /w:[ 5 3 13 ]
  //: dip g0 (w3) @(67,287) /sn:0 /R:1 /w:[ 5 ] /st:18
  concat g22 (.I0(w1), .I1(w14), .I2(w15), .Z(w22));   //: @(203,518) /sn:0 /w:[ 5 5 5 0 ] /dr:0
  //: dip g26 (val) @(500,658) /sn:0 /w:[ 0 ] /st:3
  not g18 (.I(w9), .Z(w19));   //: @(212,394) /sn:0 /w:[ 0 1 ]
  //: joint g12 (s0) @(542, 564) /w:[ 1 2 4 -1 ]
  //: joint g33 (rw) @(393, 549) /w:[ 3 4 -1 6 ]
  led g30 (.I(w3));   //: @(123,227) /sn:0 /w:[ 3 ] /type:1
  led g49 (.I(w16));   //: @(448,162) /sn:0 /w:[ 5 ] /type:1

endmodule

module divv(s, b, a);
//: interface  /sz:(40, 40) /bd:[ ]
input [7:0] b;    //: /sn:0 /dp:1 {0}(330,296)(330,260)(397,260)(397,215)(387,215){1}
output [7:0] s;    //: /sn:0 {0}(313,411)(307,411)(307,374)(324,374)(324,325){1}
input [7:0] a;    //: /sn:0 /dp:1 {0}(298,296)(298,268)(251,268)(251,224)(241,224){1}
wire [7:0] w0;    //: /sn:0 {0}(304,344)(304,325){1}
//: enddecls

  //: output g3 (s) @(310,411) /sn:0 /w:[ 0 ]
  //: input g2 (b) @(385,215) /sn:0 /w:[ 1 ]
  div g1 (.A(a), .B(b), .Q(s), .R(w0));   //: @(314,312) /sn:0 /w:[ 0 0 1 1 ]
  //: input g0 (a) @(239,224) /sn:0 /w:[ 1 ]

endmodule