Насколько я могу судить, следующий код синтезирует и моделирует правильно, но XST по-прежнему выдает следующее предупреждение: value(s) does not match array range, simulation mismatch.
Я что-то упускаю?
Используемый инструмент: Xilinx ISE Project Navigator (синтезатор: XST) FPGA: SPARTAN 3E
module error_example(
input [47:0] data,
input [2:0] sel,
output [5:0] data_out
);
assign data_out = data[sel*6 +: 6];
endmodule
WARNING:Xst:790 - "error_example.v" line 8: Index value(s) does not match array range, simulation mismatch.
Как я уже сказал, это работает, и я сделал математику:
sel
может принимать значения от 0 до 7,
если sel
равно 0, то data_out = data[5:0]
...
если sel
равно 7, то data_out = data[47:42]
Должен ли я сделать что-то по-другому здесь? Это ошибка в XST?
data_out = data[5:0]
, когдаsel = 0
, я бы написалassign data_out = data[6*sel+5 -: 6]
. Было намного удобнее использовать формат с прямым порядком байтов, когда я включил его как часть гораздо большего модуля. - person verigolfer   schedule 06.03.2014[lsb:msb]
, который меняет поведение+:
.+:
означает биты слева, а не восходящие биты. - person Greg   schedule 07.03.2014