%i "inc4.sfl"
%i "dec4.sfl"
submod_class inc4 {
input in<4> ;
output out<4> ;
instrin do ;
instr_arg do(in) ;
}
submod_class dec4 {
input in<4> ;
output out<4> ;
instrin do ;
instr_arg do(in) ;
}
module ud_count4 {
input in<4> ;
output out<4> ;
tmp tmp<4> ;
reg r<4> ;
instrin up,down,load,hold ;
inc4 inc0 ;
dec4 dec0 ;
stage_name cnt_up {
task run() ;
}
stage_name cnt_down {
task run() ;
}
stage_name cnt_load {
task run() ;
}
stage_name cnt_hold {
task run() ;
}
instruct up generate cnt_up.run() ;
instruct down generate cnt_down.run() ;
instruct load generate cnt_load.run() ;
instruct hold generate cnt_hold.run() ;
stage cnt_up {
state_name st1 ;
first_state st1 ;
state st1 par {
tmp = inc0.do(r).out ;
r := tmp ;
out = r ;
finish ;
}
}
stage cnt_down {
state_name st1 ;
first_state st1 ;
state st1 par {
tmp = dec0.do(r).out ;
r := tmp ;
out = r ;
finish ;
}
}
stage cnt_load {
state_name st1 ;
first_state st1 ;
state st1 par {
tmp = in ;
r := tmp ;
out = r ;
finish ;
}
}
stage cnt_hold {
state_name st1 ;
first_state st1 ;
state st1 par {
out = r ;
finish ;
}
}
}