Использование ключевого слова Verilog Parameter - PullRequest
2 голосов
/ 20 февраля 2010

Я использую ключевое слово параметра для определения состояния, т. Е. RESET = 5'b00000. Если я хочу использовать $ display для распечатки имени состояния вместо двоичного представления или отображения имени состояния в моем средстве просмотра волны моделирования, как я могу это сделать? Это не работает, чтобы попытаться распечатать его в виде строки (как и следовало ожидать), поэтому мне интересно, если это можно сделать.

Ответы [ 3 ]

3 голосов
/ 21 февраля 2010

Я не знаю, как автоматически $display имя parameter. Однако, если вы не возражаете дублировать свой код, вы можете создать task (или function) для достижения вашей цели:

    task show_name_state;
        case (state)
            5'b00000: $display("RESET");
            5'b00001: $display("WAIT");
        endcase
    endtask

    $display(state); show_name_state();

Мне известен по крайней мере один (дорогой) отладчик Verilog, который имеет возможность распознавать параметры и автоматически отображать их имена в средстве просмотра формы волны: инструмент Verdi (ранее Debussy) nWave может это делать.

2 голосов
/ 03 марта 2010

Если ваша цель - просто отобразить название состояния во время симуляции, я обычно буду делать что-то вроде

`ifdef SIMULATION
reg [127:0] __state__;
case (state)
  STATE_1 : __state__ = "STATE_1";
  STATE_2 : __state__ = "STATE_2";
  default : __state__ = "error";
endcase
`endif


Где состояние - это регистр состояния, в котором имеется соответствующий параметр.

1 голос
/ 20 февраля 2010

Может быть несколько параметров с одним и тем же значением, поэтому вы вообще не можете перейти от числового значения к имени параметра с этим значением. Параметры похожи на C #define s; хотя вы можете использовать их для определения набора состояний, формальной связи между переменной и списком параметров, которые вы используете для представления возможных состояний, не существует. Поскольку лучшего варианта не было, раньше было (неправильно) использовать параметры таким образом, но затем SystemVerilog ввел тип enum, который не имеет проблем с методом параметров. Вы не упомянули, какие инструменты вы используете, но предполагая, что ваши инструменты поддерживают типы перечислений SystemVerilog, тогда это было бы лучшим выбором для значения состояния.

...