Доступ к узлу в коде с помощью Verilog определяет макросы - PullRequest
0 голосов
/ 06 октября 2018

Есть ли у них возможность доступа к узлу в коде с помощью макроса определения через строковые параметры

например,

module design
  (
   input logic signal_in_1_temp,
   input logic signal_in_2_temp
   );
endmodule

module tb_top;

   parameter string signal_names[0:1] = {"in_1","in_2"};

   i_design design(.signal_in_1_temp(0),.signal_in_2_temp(0));

   `define IN_SIG(IN_NAME,VAL)\

   force i_design.signal_\``IN_NAME\``_temp = VAL; 

   initial begin
      \`IN_SIG(signal_name[0],1);
      \`IN_SIG(signal_name[1],0);
   end

endmodule

В приведенном выше примере два входа проекта должны бытьдоступ через список параметров, а затем макрос ...

Компиляция вышеизложенного дает ошибку .... Я хотел бы знать, можем ли мы получить доступ к состоянию узлов или управлять ими на основе вышеуказанных средств ..

Идея состоит в том, чтобы получить динамический список параметров, а затем узнать состояние этого списка или управлять им в зависимости от необходимости ....

Любые предложения ... пожалуйста

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Нет, вы не можете сделать это со строками, но вы можете сделать это с помощью обычных аргументов макроса.

вот рабочий пример:

`define A(B) \
$display(sig_``B``_sig);

module top;
  logic sig_x_sig, sig_hello_sig;

  initial begin
    `A(x)
    `A(hello)
  end
endmodule

не используйте \ как в вашем коде и не используйте пустые строки в определениях макросов.

0 голосов
/ 06 октября 2018

Нет, вы не можете использовать строковые имена в языке для создания имен идентификаторов.Verilog имеет интерфейс C (называемый VPI), который позволяет вам получать доступ к сигналам по имени сигнала, но это приводит к снижению производительности, что означает, что сигнал не может иметь определенных оптимизаций и должен оставаться неизменным.

SystemVerilog имеет конструкцию bind, которая позволяет добавлять функциональность к сигналам глубоко внутри вашего дизайна.Я написал DVCon бумагу об этом.

...