有办法,用schedule_event。下面是我写的一个取模的模块,就是实现很简单的mod(7/2)=1这样的功能,但是MAST没有循环,还蛮难搞。
template mod_cal num div modresult samp
input nu num
input nu div
state nu modresult
state nu samp
{
state nu flag,out,done
when (event_on(samp)) {
if(done==1){
if(flag==0){
schedule_event(time,flag,1)
}
else{
schedule_event(time,flag,0)
}
schedule_event(time,out,num)
}
}
when(event_on(flag)){
if(out>div){
schedule_event(time,out,out-div)
if(flag==1){ #assign the flag a new value
schedule_event(time,flag,0)
}
if(flag==0){
schedule_event(time,flag,1)
}
}
schedule_event(time,done,1)
schedule_event(time,modresult,out)
}
when (time_init) {
schedule_event(time,done,1)
}
}