В данном конкретном случае вам не нужна конструкция let
. Более того, конструкция не имеет ничего общего с объявлениями переменных.
Вы можете начать использовать параметры вместо текстовых макросов. Например,
parameter MY_REGISTER_WIDTH = 16;
...
logic [MY_REGISTER_WIDTH-1:0] my_array;
Конструкция let
определяет простую функцию, содержащую одно выражение. В этом отношении его можно использовать для замены определенных типов макросов, например,
`define MULT(A,B) A * B
...
R = `MULT(O1,O2);
можно заменить на
let MULT(A,B) = A * B;
...
R = MULT(O1,O2);