sy2002/QNICE-FPGA

Check if warnings are relevant and if yes, get rid of them

sy2002 opened this issue · 1 comments

While debugging some other VHDL stuff, I stumbled over two Vivado warnings. I have no clue, if these warnings are relevant or can be ignored. As I am always eager to learn I would be grateful, if you could share some context: Either way: Why are the warnings relevant? Why are they not relevant?

Specimen 1: Byte Wide Write Enable RAM cannot take advantage of ByteWide feature

[Synth 8-6841] Block RAM (mem_reg) originally specified as a Byte Wide Write Enable RAM cannot take advantage of ByteWide feature and is implemented with single write enable per RAM due to following reason.
(byte width (17) is not a multiple of 8(data_only) or 9(data + parity))

The context from the log file is:

INFO: [Synth 8-3971] The signal "vga_blockram_with_byte_enable:/mem_reg" was recognized as a true dual port RAM template.
INFO: [Synth 8-3971] The signal "vga_blockram_with_byte_enable__parameterized0:/mem_reg" was recognized as a true dual port RAM template.
INFO: [Synth 8-3971] The signal "vga_blockram_with_byte_enable__parameterized1:/mem_reg" was recognized as a true dual port RAM template.
WARNING: [Synth 8-6841] Block RAM (mem_reg) originally specified as a Byte Wide Write Enable RAM cannot take advantage of ByteWide feature and is implemented with single write enable per RAM due to following reason.
(byte width (17) is not a multiple of 8(data_only) or 9(data + parity))
INFO: [Synth 8-3971] The signal "vga_blockram_with_byte_enable__parameterized2:/mem_reg" was recognized as a true dual port RAM template.

Specimen 2: A latch

In past, when I got this latch warning, it was normally because I did something, that I did not plan to do. But maybe this time it is different:

WARNING: [Synth 8-327] inferring latch for variable 'stage1_reg[diff_y]' [/media/psf/Home/Documents/Privat/GNR/dev/QNICE-FPGA/vhdl/vga/vga_sprite.vhd:165]

Thank you very much. These are indeed errors, and I'm surprised the design works at all!

I think the errors were introduced when enabling layering (i.e. sprites moving behind text), but I did not notice. One consequence is that the error caused an extra 16 BRAM's to be used, so it's great you noticed it.

Fixed and verified.