%i "alu4.sfl"
submod_class alu4 {
input a<4>,b<4>,ci ;
output sum<4>,co ;
instrin add,trans_a ;
instr_arg trans_a(a) ;
instr_arg add(a,b,ci) ;
}
module acc4 {
input in<4> ;
output out<4> ;
reg r<4> ;
instrin load_acc ;
instrin hold_acc ;
instrin clear_acc ;
instrin add_acc ;
alu4 alu ;
instruct load_acc par {
r := alu.trans_a(in).sum ;
out = r ;
}
instruct hold_acc par {
out = r ;
}
instruct clear_acc par {
r := 0b0000 ;
out = r ;
}
instruct add_acc par {
r := alu.add(in,r,0b0).sum ;
out = r ;
}
}