Приветсвую!
Цитата(Inanity @ Jul 4 2018, 23:08)

Рад, что вы меня поняли. А можно немного подробнее?
Пишем функцию с
матерным выражением которое считает latency для заданного модуля
и используем ее как в целевом модуле так и в выше стоящих по иерархии.
CODE
// function.vh
function integer blokA_latency(input int varA, ... varXY=1);
moduleA_latency = varA*varXY ...;
endfunction
module blokA #(parameter VAR_A=1, ... VAR_XY) ( input clk, rst, ...);
`include "function.vh"
loclparam LATENCY = blokA_latency(VAR_A, ... VAR_XY);
reg [LATENCY -1:0] reg_delay;
...
endmodule
module blok_top (input clk, rst, ...);
`include "function.vh"
localparam VAR_A=2;
...
localparam VAR_XYZ=2;
localparam LATENCY_A = blokA_latency(VAR_A, ... VAR_XY);
...
blokA #(.VAR_A(VAR_A), ... .VAR_XY(VAR_XY)) i_blokA(...);
...
endmodule
Удачи! Rob.
Приветствую!
Цитата(iosifk @ Jul 4 2018, 23:17)

Если Вы сказали "латентность", значит появится таймер, который будет задавать задержку. Причем таймер - аппаратный. Ну и какая разница, как в этот таймер задавать число битов в счетчик. Через параметр или "проводами" напрямую?
И как в таком случае "проводами" выбрать тип памяти (структуру умножителя, ...) в top модуле в зависимости от общей latency обработки в нижних?
Удачи! Rob