%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 ; } } }