Try writing the line like this:
ROM16X1 #( .initval (16'h8000) ) LUT4_16 (.AD3(scuba_vhi), .AD2(wren_i), .AD1(scuba_vhi), .AD0(scuba_vhi), .DO0(dec0_wre3))
If this doesn't work, then the 'initval' is not a proper parameter within 'ROM16x1'.
Maybe 'initval' needs to be uppercase?
Also, some of Lattice's functions actually have fake parameters generated by their wizard code generator, where Lattice Diamond uses comments to set controls for their FPGA compiler which are completely ignored by Modelsim. Lattice's PLL is notorious for this placing controls and settings as ASCII text as actual comments in your code and Diamond fails to fully reach a proper timing if you remove those /* abc_frequency = number_mhz */ in your code.