
#include "Sim.h"

/* =============================================================
   Full_Adder() circuit
   ============================================================= */
void Full_Adder( const SD &coord,
                 const Signal &a, const Signal &b, const Signal &CarryIn,
                 const Signal &Sum, const Signal &CarryOut)
{
   Module( coord, "FA", (CarryIn,a,b), (CarryOut,Sum) );

   Signal x, y, z;

   Xor( SD(coord,"aa"),    (a,b),        x);
   Xor( SD(coord,"ab"),    (x, CarryIn), Sum);
   And( SD(coord,"bb"),    (a, b),       y);
   And( SD(coord,"cb"),    (CarryIn, x), z);
   Or ( SD(coord,"bc-cc"), (y, z),       CarryOut);
}




void simnet()
{
   Signal Cin, a, b;
   Sig(Cout, 1);
   Sig(sum, 1);

   Switch("aa", Cin, '0', Zero);      	// Carry in
   Switch("ba", a, 'a', Zero);		// a - input bit
   Switch("ca", b, 'b', Zero);		// b - input bit

   Full_Adder("ab-cd", a, b , Cin, sum, Cout);
   Probe("be", sum);
   Probe("ae", Cout);
}

