Поскольку ваш оператор if находится в генерации, вы просите инструмент предварительно оценить значение, установленное для selector
, чтобы выяснить, selecter == NUM
оценивает, но ваш инструмент не знает, потому что он сигнал, а не параметр.
Вы хотите использовать функцию создания, чтобы всегда создавать блок, в котором вы можете проверить значение selector
, например:
module SWSelector(
input [7:0] rq,
input [2:0] selector,
output reg [7:0] request
);
localparam NUM=3'b000;
generate
genvar i;
for(i=0;i<7;i=i+1)
begin: label
always @* begin
if(selector == NUM)
request[i] = rq[i];
else
request[i]=0;
end
end
endgenerate
endmodule
Или, как сказал инструмент, вы можете использовать троичную и assign
.
Редактировать:
Без генерации:
module SWSelector(
input [7:0] rq,
input [2:0] selector,
output reg [7:0] request
);
localparam NUM=3'b000;
integer i;
always @* begin
for(i=0;i<7;i=i+1)
if(selector == NUM)
request[i] = rq[i];
else
request[i]=0;
end
endmodule