Фон
Для этого LUT нужна ширина 32 и глубина 256.
Итак, у меня есть LUT, созданный IP-ядром. Теперь я хочу сам создать его экземпляр, чтобы он работал в симуляторе (это также помогает мне самому узнать все параметры). Я делал это много раз для FIFO, но никогда раньше не создавал LUT, поэтому, пожалуйста, проверьте, что я сделал, выглядит правильно. Я просто хочу создать LUT значений и иметь возможность читать их обратно. Я использовал блок оперативной памяти для этого.
Я пробовал на двух разных компьютерах с:
QuestaSim-64 10.2c_5
ModelSim SE-64 10.1b
Проблема
Так что я могу скомпилировать код. Когда я пытаюсь открыть его:
vsim work.top
Он открывает IDE и зависает на:
# Loading unisim.rb36_internal_vhdl(rb36_internal_vhdl_v)#1
Если я удалю:
INIT_FILE => "lut.coe",
Потом загружается нормально. Так что я знаю, что эта линия ломает его.
ЛУТ:
Итак, у меня есть LUT, это выглядит правильно для вас? Существуют ли другие способы создания LUT с файлом .coe?
lut : RAMB36E1
generic map(
INIT_FILE => "lut.coe",
READ_WIDTH_A => 36
)
port map
(
addrardaddr => addr_lut,
addrbwraddr => X"0000",
cascadeina => '0',
cascadeinb => '0',
clkardclk => clk_i,
clkbwrclk => clk_i,
diadi => X"00000000",
dibdi => X"00000000",
dipadip => X"0",
dipbdip => X"0",
doado => data_lut,
enarden => '1',
enbwren => '0',
injectdbiterr => '0',
injectsbiterr => '0' ,
regceb => '0',
regcearegce => '1',
rstramarstram => rst_i,
rstramb => rst_i,
rstregarstreg => rst_i ,
rstregb => rst_i,
wea => X"0",
webwe => X"00"
);
Пробовал заменить вышеуказанное на 18 КБ ОЗУ, та же ошибка:
# Loading unisim.rb18_internal_vhdl(rb18_internal_vhdl_v)#2
ЛУТ:
lut : RAMB18E1 -- Simple Duel Port mode, 512 deep
generic map(
INIT_FILE => "lut.coe",
RAM_MODE => "SDP"
)
port map
(
addrardaddr => addr_lut,
addrbwraddr => "00000000000000",
clkardclk => clk_i,
clkbwrclk => clk_i,
diadi => X"0000",
dibdi => X"0000",
dipadip => "00",
dipbdip => "00",
doado => data_lut_b,
dobdo => data_lut_a,
enarden => '1',
enbwren => '0',
regceb => '0',
regcearegce => '1',
rstramarstram => rst_i,
rstramb => rst_i,
rstregarstreg => rst_i ,
rstregb => rst_i,
wea => "00",
webwe => X"0"
);