%i "add8.sfl"
submod_class add8 {
input a<8>,b<8>,ci ;
output sum<8>,carry ;
instrin do ;
instr_arg do(a,b,ci) ;
}
module alu {
input a<8> ;
input b<8> ;
output out<8> ;
output zero ;
instrin trans_a ;
instrin trans_b ;
instrin add ;
instrin and ;
instrin xor ;
add8 adder ;
instruct trans_a
par {
out = a ;
zero = ^/| a ;
}
instruct trans_b
par {
out = b ;
zero = ^/| b ;
}
instruct add
par {
out = adder.do(a,b,0b0).sum ;
zero = ^/| adder.do(a,b,0b0).sum ;
}
instruct and
par {
out = a & b ;
zero = ^/| ( a & b ) ;
}
instruct xor
par {
out = a @ b ;
zero = ^/| ( a @ b ) ;
}
}