Как написать переходное покрытие между двумя перечислениями? - PullRequest
0 голосов
/ 05 июля 2018
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 и т. Д., Но не могу найти способ сделать это,

Может кто-нибудь сказать, есть ли какой-нибудь возможный способ сделать это, например (IDLE=> RST, IDLE => START и т. Д.)

1 Ответ

0 голосов
/ 06 июля 2018

Поскольку оба они являются двумя независимыми перечислениями, не имеет смысла искать покрытие перехода между ними. Имеет больше смысла делать перекрестное покрытие. Когда вы имеете в виду (IDLE => RST, IDLE => START), вы, вероятно, хотите перекрестное покрытие, которое проверяет, находится ли state_t в состоянии IDLE, instr_t находится в RST или instr_t переходит из RST-> START И это можно сделать с помощью конструкций перекрестного покрытия

...