2016-11-15 2 views
0

Say я определяю module Foo #(parameter a = 8, parameter b= $clog2(a)) ... Когда вычисляются параметры (системы) Verilog?

, а затем создать экземпляр

Foo #(.a(16)) bar (...)

Когда по умолчанию параметр б рассчитывается? Исходя из фактического значения a или значения по умолчанию a? Отображается ли строка экземпляра b = 3 или b = 4?

+0

Вы можете легко ответить на этот вопрос, выполнив симуляцию. – toolic

ответ

1

Это всегда окончательный значение.

Раздел 23.10 Переопределение параметров модуля в 1800-2012 LRM описывает процесс разработки, который выполняет компилятор для установки значений параметров. В принципе, компилятор может определить зависимости между значениями параметров из-за ограничений, которые он размещает на допустимых выражениях, которые вы можете сделать для значения параметра.

23.10.3 Параметр зависимость

параметр (например, MEMORY_SIZE) может быть определен с выражением, содержащим еще один параметр (например, word_size). Однако переопределение параметра, будь то с помощью инструкции defparam или в заявлении о создании модуля, эффективно заменяет определение параметра новым выражением. Поскольку memory_size зависит от значения word_size, модификация word_size изменяет значение memory_size. Например, в следующем объявлении параметра обновление word_size, независимо от оператора defparam или в заявлении о создании для модуля, которое определило эти параметры , автоматически обновляет memory_size. Если memory_size обновляется из-за или defparam или оператора экземпляра, тогда он примет это значение, независимо от значения word_size. parameter word_size = 32, memory_size = word_size * 4096;

+0

Не очевидно, из этого ответа или связанного spec, что прямой ответ на вопрос. Можете ли вы указать соответствующую выдержку? Нижняя линия - это ответ b = 3 или b = 4 и почему в соответствии с LRM? – ThePopMachine

+0

В частности, смотрите подраздел 23.10.3. Зависимость параметров и пример с использованием 'word_size' –

+0

Я позвонил в соответствующий раздел. – ThePopMachine

Смежные вопросы