How Does One Do Block RAM Inference on Altera Cyclone 10 LP FPGA Boards in Verilog
You can infer block RAMs in three ways, depending on how much control you want.

Use the altsyncram IP core, which allows you to specify all settings for the RAM directly (less inference, more control)

Use the ramstyle attributes when you are declaring an array. How this is done depends on whether you are using Verilog or VHDL.
Verilog example (&quot;M9K&quot; should be correct for Cyclone 10 LP, though it might be &quot;M10k&quot;):
(* ramstyle = &quot;M9K&quot; *) reg [0:7] my_ram[0:63]; 

VHDL example:
 -- First, declare a signal that represents a RAM 
 type memory_t is array (0 to 63) of std_logic_vector(0 to 7);
 signal my_ram : memory_t;
 attribute ramstyle : string;
 attribute ramstyle of my_ram : signal is &quot;M9K&quot;;


Rely entirely on the synthesis tool to guess:
reg [0:7] my_ram[0:63]; //Hopefully it will pick a block ram, but might use MLAB if small enough.