Dear All:
用Saber有段时间了,发现其模型中少了一个数字信号的delay模型;此功能在仿真时,仿真时还是会用到的;虽然saber有buffer模型可以进行delay,但其是同时对上升沿和下降沿进行delay的;对于一些只对单边延时的需要,此模型就爱莫能助了。因此我利用MAST语言写了一个delay模型,此模型可对上升沿、下降沿、双沿delay进行单独配置,方便实际应用。有需要的朋友,可以试一下,以下为MAST代码。
// ..................................//
template delay_mast in out=Td,type
state logic_4 in,out
enum {Rising,Falling,Dual} type=Dual
number Td=0 #Define delay time
{
number del_ID=0 # Identifier of delay type: 1--Rising;-1--Falling;0--Dual
parameters {
if(Td<0) {
error("%:Td should be not less than 0:Td=%",instance(),Td) # error information for Td<0
}
if(type==Rising) {
del_ID=1
}
else if(type==Falling) {
del_ID=-1
}
else {
del_ID=0
}
}
when(dc_init){
schedule_event(time,out,in) #Setting out=in at DC analysis
}
when(event_on(in)){
if(del_ID==0) {
schedule_event(time+Td,out,in)
}
else if(del_ID==1){
if(in==l4_1) {
schedule_event(time+Td,out,in)
}
else {
schedule_event(time,out,in)
}
}
else {
if(in==l4_0){
schedule_event(time+Td,out,in)
}
else {
schedule_event(time,out,in)
}
}
}
}