%i "fa_inst.sfl"
submod_class fa_inst {
input a,b,ci ;
output sum,co ;
instrin do ;
instr_arg do(a,b,ci) ;
}
module add4_inst {
input a<4>,b<4>,ci ;
output sum<4>,co ;
tmp ca,cb,cc,cd ;
tmp sa,sb,sc,sd ;
instrin do ;
fa_inst fa0,fa1,fa2,fa3 ;
instruct do par {
ca = fa0.do(a<0>,b<0>,ci).co ;
cb = fa1.do(a<1>,b<1>,ca).co ;
cc = fa2.do(a<2>,b<2>,cb).co ;
cd = fa3.do(a<3>,b<3>,cc).co ;
sa = fa0.do(a<0>,b<0>,ci).sum ;
sb = fa1.do(a<1>,b<1>,ca).sum ;
sc = fa2.do(a<2>,b<2>,cb).sum ;
sd = fa3.do(a<3>,b<3>,cc).sum ;
co = cd ;
sum = sd || sc || sb || sa ;
}
}