Подтвердить что ты не робот

Условная реализация verilog-модуля

Можно ли условно создать экземпляр модуля в verliog?

пример:

if (en==1)  
  then module1 instantiation  
else  
  module2 instantiation  
4b9b3361

Ответ 1

Из IEEE Std 1364-2001:

12.1.3.3 generate-conditional Условие генерации-генерации является конструкцией if-else-if generate, которая разрешает модули, определяемые пользователем примитивы, Verilog gate примитивы, непрерывные задания, начальные блоки и всегда блокируется для условного создания экземпляра в другом модуле основанный на выражении, которое является детерминированным во время проектирования развернутый.

пример приведен в LRM:

module multiplier(a,b,product);
parameter a_width = 8, b_width = 8;
localparam product_width = a_width+b_width; // can not be modified
// directly with the defparam statement
// or the module instance statement #
input [a_width-1:0] a;
input [b_width-1:0] b;
output [product_width-1:0] product;

generate
    if((a_width < 8) || (b_width < 8))
        CLA_multiplier #(a_width,b_width) u1(a, b, product);
        // instantiate a CLA multiplier
    else
        WALLACE_multiplier #(a_width,b_width) u1(a, b, product);
        // instantiate a Wallace-tree multiplier
endgenerate
// The generated instance name is u1

endmodule

Ответ 2

Вы можете использовать директивы компилятора, например

`define FOO
`ifdef FOO
    module1 ...
`else
    module2 ...
`endif

чтобы выбрать экземпляр во время компиляции.

Если вы спрашиваете, можете ли вы создать экземпляр модуля на основе значения проводника, вы не сможете этого сделать.

Ответ 3

Вы не можете сделать это во время выполнения, поскольку описываете аппаратное обеспечение, которое не может быть изменено "на лету". Вы можете включить или отключить функцию для экономии энергии, но вы не можете остановить ее. Предполагая, что вы хотите улучшить повторное использование или возможность настройки блоков:

Часто используются методы компилятора pre, а также `` определяет` (определяет тик). Тим упоминает.

Они состоят из Perl, ruby ​​и т.д. script, который анализирует файл шаблона.

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