module testy
#(
parameter W = 10,
parameter C = 2
)
(
aa
);
generate
if (W == 8)
begin:W8
if(C == 1)
begin:W8C1
typedef struct {
logic [8:0] so;
}my_struct;
end
if(C == 2)
begin:W8C2
typedef struct {
logic [10:0] so;
}my_struct;
end
end
endgenerate
input my_struct aa;
endmodule
Я получаю эту ошибку:
irun(64): 14.20-p001: (c) Copyright 1995-2015 Cadence Design Systems, Inc.
file: testy.v
input my_struct aa;
|
ncvlog: *E,SVNOTY (testy.v,30|14): Syntactically this identifier appears to begin a datatype but it does not refer to a visible datatype in the current scope.
module worklib.testy:v
errors: 1, warnings: 0
ncvlog: *F,NOTOPL: no top-level unit found, must have recursive instances.
irun: *E,VLGERR: An error occurred during parsing. Review the log file for errors with the code *E and fix those identified problems to proceed. Exiting with code (status 2).
Я думал, что генерации были статически определены, но у меня проблемы с его компиляцией - поскольку параметры не могут быть переопределены в пакетах, и я не мог придумать способ сделать это в дизайне, который должен быть синтезирован и не хотел добавлять интерфейсы или классы. Есть ли лучший способ сделать это. Моя структура содержит более 100 записей, если я включаю все комбинации и использую только то, что хочу, но я подумал, что с помощью функции Generate я могу обрезать ее до того, что я хочу, основываясь на наборе параметров.
Спасибо