Я пытаюсь понять код арбитров NoC. когда я пытаюсь выполнить синтаксическую проверку с использованием программного обеспечения Xilinx, я получаю сообщение об ошибке «Функциональные вызовы, такие как« log2 », не поддерживаются в постоянных выражениях» для строки «localparam ARBITER_BIN_WIDTH = log2 (ARBITER_WIDTH);». Какие изменения будут сделаны в этой строке? Часть кода, где я столкнулся с проблемой:Помощь при вызове функции в verilog
parameter ARBITER_WIDTH =4
input integer number; begin
log2=0;
while(2**log2<number) begin
log2=log2+1;
end
end
endfunction // log2
localparam ARBITER_BIN_WIDTH= log2(ARBITER_WIDTH);
Можете ли вы описать эту функцию log2? –
Без дополнительной информации о коде, его трудно сказать наверняка, но инструмент усложняет, что он не поддерживает вызовы функций для получения констант времени компиляции, таких как параметры; т.е. он не может запустить функцию 'log2', чтобы получить значение времени компиляции для' ARBITER_BIN_WIDTH'. Если его Vivado, вы должны иметь поддержку SystemVerilog, которая должна позволить вам использовать '$ clog2()' вместо этого, чтобы получить примерно такую же функциональность. – Unn
@ Zuzu: Можете ли вы уточнить вопрос? –