Можно ли условно создать экземпляр модуля в verliog?
пример:
if (en==1)
then module1 instantiation
else
module2 instantiation
Можно ли условно создать экземпляр модуля в verliog?
пример:
if (en==1)
then module1 instantiation
else
module2 instantiation
Из 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
Вы можете использовать директивы компилятора, например
`define FOO
`ifdef FOO
module1 ...
`else
module2 ...
`endif
чтобы выбрать экземпляр во время компиляции.
Если вы спрашиваете, можете ли вы создать экземпляр модуля на основе значения проводника, вы не сможете этого сделать.
Вы не можете сделать это во время выполнения, поскольку описываете аппаратное обеспечение, которое не может быть изменено "на лету". Вы можете включить или отключить функцию для экономии энергии, но вы не можете остановить ее. Предполагая, что вы хотите улучшить повторное использование или возможность настройки блоков:
Часто используются методы компилятора pre, а также `` определяет` (определяет тик). Тим упоминает.
Они состоят из Perl, ruby и т.д. script, который анализирует файл шаблона.
Мой предыдущий ответ с использованием рубиновых скриптов и шаблонов.