enum {Idle, S1, S2} State;
covergroup cg_State @(posedge Clock);
states : coverpoint State;
state_trans : coverpoint State {
bins legal[] = ( Idle => S1, S2 ),
( S1, S2 => Idle);
bins idle[] = ( Idle [* 2:4] );
bins illegal = default sequence;
}
endgroup
对于一个枚举,我知道过渡覆盖范围如上
就我而言,我有两个枚举,如下所示,
typedef enum {RST=0,START=1,PAUSE=2,RESUME=3} instr_t;
typedef enum {IDLE=0,RUNNING=1,PAUSED=2,EXPIRED=3} state_t;
我正在尝试为IDLE => RST, START => RUNNING
等编写Coverpoint,但找不到解决方法,
任何人都可以告知是否有任何可能的方法,例如(IDLE=> RST, IDLE => START
等)
答案 0 :(得分:2)
由于它们都是两个独立的枚举,因此在它们之间查找过渡范围是没有意义的。 进行交叉覆盖更有意义。 当您的意思是(IDLE => RST,IDLE => START)时,您可能希望使用交叉覆盖来检查state_t处于IDLE状态,instr_t处于RST还是instr_t从RST-> START过渡 这可以通过交叉覆盖结构来实现