/* 8bits Carry Lookahead Adder */ %i "cadd4.sfl" submod_class cadd8 { input a<8>, b<8>; input inv_b; input c_in; output out<8>, p<8>, g<8>, e<8>; output pout, gout; instrin do; instr_arg do(a, b, inv_b, c_in); } module cadd8 { input a<8>,b<8>; input inv_b; input c_in; output out<8>, p<8>, g<8>, e<8>; output pout, gout; instrin do; cadd4 add1; cadd4 add2; instruct do par { p = add2.do(a<7:4>, b<7:4>, inv_b, ((c_in & add1.pout) | add1.gout)).p || add1.do(a<3:0>, b<3:0>, inv_b, c_in).p; g = add2.do(a<7:4>, b<7:4>, inv_b, ((c_in & add1.pout) | add1.gout)).g || add1.do(a<3:0>, b<3:0>, inv_b, c_in).g; e = add2.do(a<7:4>, b<7:4>, inv_b, ((c_in & add1.pout) | add1.gout)).e || add1.do(a<3:0>, b<3:0>, inv_b, c_in).e; out = add2.do(a<7:4>, b<7:4>, inv_b, ((c_in & add1.pout) | add1.gout)).out || add1.do(a<3:0>, b<3:0>, inv_b, c_in).out; pout = add1.pout & add2.pout; gout = add2.gout | (add2.pout & add1.gout); } }