В моем коде я хочу выполнить несколько соединений, используя оператор assign для всех моих тестов, кроме одного теста, для которого я добавил в свой список тестов аргумент времени выполнения «HB_CONN_DISABLE». Когда я кодирую следующим образом, я получаю следующую ошибку
if (!$test$plusargs("HB_CONN_DISABLE"))
begin
assign iol.hb_valid_in = dp_if_tx_inject.hb_bar_val_in;
assign iol.hb_in = dp_if_tx_inject.heartbeat_in;
end
Error-[V2KGEUV] Unknown or bad value for genvar
-I-:/nfs/hd/disks/mgr_0240/...............soc_post.sv, 543
Instance/Generate block name: iolc_tb
-I-: Elaboration time unknown or bad value encountered for generate if-statement
-I-: condition expression.
-I-: Please make sure it is elaboration time constant.
Я также пробовал что-то вроде ниже, но в этом случае он не распознает hb_bar_param в этой строке, если (hb_bar_param == 0) может быть потому, что к тому времени параметр не получает значение
initial begin
if ($test$plusargs("HB_BAR_TI_CONN_DISABLE"))
begin
parameter hb_bar_param=1;
end
else
begin
parameter hb_bar_param=0;
end
end
if(hb_bar_param==0)
begin
assign statements......
end
Я также пробовал использовать assign с тернарным оператором, например, следующим
assign iol.hb_valid_in = ($test$plusargs("...somthing..")) ? (... some value ...) : (... some other value ...);
, но в этом случае я все равно буду назначать что-то, если аргументы testplus ложны, но для меня требование состоит в том, что я не хочу назначать вообще, если есть аргументы testplus, пожалуйста, помогите мне с этой проблемой
В основном мне нужен следующий код для всех моих тесты, кроме одного теста, для которого я добавил аргументы testplus. Это незаконно или есть какой-либо способ сделать это.
assign iol.hb_valid_in = dp_if_tx_inject.hb_bar_val_in;
assign iol.hb_in = dp_if_tx_inject.heartbeat_in;