I recently came across some synthesize warnings that are impossible to fix. Some of them are coming from the vendor's auto-generated IP, like PLL. Some come from the builtin blocks like oscillators, some from the inbox libraries of components.
Even the vendor's inbox samples that use those components also generate those warnings as well.
So my question is, is it normal to ignore them? If your large project generates tons of warnings and you are expected to ignore them, how can you be sure that what you are building is reliable?
From the software design industry experience, each warning should be dealt with. Either the issue is fixed, or analyzed and if confirmed to be a non-issue, then this particular warning in this particular place can be suppressed. So the build should be fully clean without any warnings. The HDL design tools don't seem to provide any way to selectively suppress specific warnings.
So it seems like having tons of warnings on the build output is just a part of life with HDL design. Is this true?
Building the blinky led inbox project from Lattice Radiant for iCE40UP:
WARNING - q:/lscc/radiant/2.2/data/reveal/src/ertl/jtag_soft.v(0): expression size 32 truncated to fit in target size 3. VERI-1209
WARNING - q:/lscc/radiant/2.2/data/reveal/src/ertl/ertl_ice40up.v(0): expression size 32 truncated to fit in target size 1. VERI-1209
WARNING - q:/lscc/radiant/2.2/data/reveal/src/ertl/ertl_ice40up.v(0): Register \top_reveal_coretop_instance/top_la0_inst_0/tm_u/trace_dout_1st_bit is stuck at Zero. VDB-5013
WARNING - Bit 0 of Register \top_reveal_coretop_instance/top_la0_inst_0/tm_u/pt_cap_mem_addr is stuck at Zero
WARNING - Skipping pad insertion on encrypted_port due to black_box_pad_pin attribute.
WARNING - The preferred point for defining clocks is top level ports and driver pins. Pad delays will not be taken into consideration if clocks are defined on nets.
WARNING - set_false_path is being ignored due to errors
WARNING - Removing unused instance inst1_rgb1Pad. VDB-5034
WARNING - Attribute 'attribute_ignored' on Instance 'secured_instance_113_59' in Module 'rvl_jtag_int(NUM_TRACE_SIGNALS=17,NUM_TRIGGER_SIGNALS=4,INCLUDE_TRIG_DATA=1,NUM_TIME_STAMP_BITS=13)' cannot be supported. It will be ignored.
I saw similar things on Altera and Xininx sides as well.