spatial icon indicating copy to clipboard operation
spatial copied to clipboard

LUT and SRAM Initialization Improvement

Open mattfel1 opened this issue 5 years ago • 2 comments

Regarding setting LUTs: right now the way we set initial values in LUTs is by specifying values for the LUT in a Spatial app. When we want big LUTs, the time spent on synthesizing these LUTs in Spatial becomes very long. Instead we could potentially use Vivado's SRAM init for these LUTs by using something that looks like: https://www.xilinx.com/support/documentation/sw_manuals/xilinx10/isehelp/pce_p_initialize_blockram.htm.

mattfel1 avatar Feb 11 '19 21:02 mattfel1

It seems that our LUT template is implemented as a list of registers instead of a chisel ROM, and that would very likely prevent the downstream synthesizer to recognize the LUT module as a ROM. Is there a reason that we wanted to use registers for LUTs instead of ROM?

kelayamatoz avatar Aug 27 '19 21:08 kelayamatoz

Nope you can change it to ROM. I think we only used RegFiles with init values to create LUTs in the app code at one point, so both nodes called the same template when they got split.

mattfel1 avatar Aug 27 '19 22:08 mattfel1