STIL中的Spec
程序员文章站
2024-02-09 18:14:40
...
Spec的意思是:我们可以定义多组值,在执行的时候来决定到底需要使用哪一组。
Spec tmode_spec {
Category tmode {
tplh { Typ ’13.00ns’;Max ’12.00ns’; } #定义了两组,一个是Type,一个是Max
tphl { Typ ’13.00ns’;Max ’12.00ns’; }
tpzl { Typ ’41.00ns’;Max ’40.00ns’; }
tpzh { Typ ’41.00ns’;Max ’40.00ns’; }
tplz { Typ ’26.00ns’;Max ’25.00ns’; }
tphz { Typ ’26.00ns’;Max ’25.00ns’; }
strobe_width = ’20ns’; #像这样的,表示Type和Max是一样的值
tperiod = ’500ns’;
}
}
Selector tmode_typ {
tplh Typ; #tplh使用Type的值,也就是13ns
tphl Typ;
tpzl Typ;
tpzh Typ;
tplz Typ;
tphz Typ;
}
Timing to_specs {
WaveformTable pulsed_oe {
Period ’tperiod’;
Waveforms {
DIR { 01 { ’0ns’ D/U; }} #D/U就是ForceDown/ForceUp,两者可以互换
#定义了以event_label,但是使用范围只能是当前WaveformTable
OE_ { 01 { ’0ns’ U; OE_MARK: ’200ns’ D/U;
OE_CLOSE: ’OE_MARK+100ns’ U; }}
BUSES{ 01 { ’10ns’ D/U; }
#L的第三个event的时间点是’OE_MARK+tpzl’,就是200ns+41ns
#L的第四个event的时间点是’@+strobe_width’
#这里的@的意思是它前面的timed event,即OE_MARK+tpzl=241nS
#所以第四个event的时间点是:241ns+20ns
L { ’0ns’ Z;’0ns’ X; ’OE_MARK+tpzl’ l; ’@+strobe_width’ X;}
H { ’0ns’ Z;’0ns’ X; ’OE_MARK+tpzh’ h; ’@+strobe_width’ X;}
D { ’0ns’ Z;’0ns’ X; ’OE_CLOSE+tplz’ t;’@+strobe_width’ X;}
U { ’0ns’ Z;’0ns’ X; ’OE_CLOSE+tphz’ t;’@+strobe_width’ X;}
X { ’0ns’ Z;’0ns’ X; }
}
} // end Waveforms
} // end WaveformTable pulsed_oe
WaveformTable const_oe {
Period ’tperiod’;
Waveforms {
DIR { 01 { ’0ns’ D/U; }}
OE_ { 01 { ’0ns’ D; ’tperiod-strobe_width’ U;}}
BUSES{ 01 { IN_MARK: ’tperiod/10’ D/U; }
L { ’0ns’ Z;’0ns’ X; ’IN_MARK+tphl’ l; ’@+strobe_width’ X;}
H { ’0ns’ Z;’0ns’ X; ’IN_MARK+tplh’ h; ’@+strobe_width’ X;}
X { ’0ns’ Z;’0ns’ X; }
}
} // end Waveforms
} // end WaveformTable const_oe
} // end Timing to_specs
PatternBurst spec_check_burst {
SignalGroups more;
PatList { spec_check; }
} //end PatternBurst spec_check_burst
PatternExec {
Timing to_specs;
Selector tmode_typ; #使用到的Spec中的哪一组
Category tmode; #使用到的spec
PatternBurst spec_check_burst;
} //end PatternExec
上一篇: HIT软件构造 1.对Lab1 P3客户端的设计与思考
下一篇: CSAPP bomb lab4