%i "inc8.sfl"
%i "dec8.sfl"
submod_class inc8 {
input a<8> ;
output s<8> ;
instrin do ;
instr_arg do(a) ;
}
submod_class dec8 {
input a<8> ;
output s<8> ;
instrin do ;
instr_arg do(a) ;
}
module sp {
/* module description of an Program Counter */
output out<8> ;
reg sp<8> ;
instrin dec ;
instrin inc ;
instrin reset ;
instrin hold ;
inc8 inc_8 ;
dec8 dec_8 ;
instruct reset
/* if reset is active */
par {
sp := 0b11111111 ;
out = sp ;
}
instruct hold
/* if hold is active */
out = sp ;
instruct inc
/* if inc is active */
par {
sp := inc_8.do(sp).s ;
out = inc_8.do(sp).s ;
}
instruct dec
/* if inc is active */
par {
sp := dec_8.do(sp).s ;
out = sp ;
}
}