Prevent URAM Inference

0

I'm using 1.4.8 still while we're working to upgrade in https://forums.aws.amazon.com/thread.jspa?threadID=338653.

My understanding is that URAMs are not initialized to 0 when the AGFI is loaded onto the f1 host. Because of that, I need to avoid using them unless I explicitly instantiate them because extra inferred instances may violate some assumptions we currently have. We do use some URAMs explicitly in the design and I see that a few are used in the shell as well.

Does passing '-max_uram 0' to synth_design when synthesizing the CL only disable inference of URAMs or will it cause an error if we explicitly instantiate the primatives in places?

Does fpga-clear-local-image then fpga-load-local-image clears the URAMs into a known state? It's possible that my understanding of the URAM initial state mentioned earlier is incorrect.

Edited by: TimSnyder on May 18, 2021 7:31 AM

Edited by: TimSnyder on May 18, 2021 1:37 PM

asked 3 years ago176 views
3 Answers
0

Hi TimSnyder,

Regarding to the URAM initialization, in general URAM gets initialized to all 0s after device is powered up and there is no way to initialize it like BRAM. For the situation where the AGFI gets switched, we are confirming with Xilinx on the URAM state. I'll get you updated as soon as I hear back from Xilinx.

Regarding to the '-max_uram' option of command 'synth_design', it only directs the synthesizer to stop inferring any RTL based memory code to URAMs. But it doesn't prevent the user from instantiating the URAM primitive directly in a design. In this case, you shouldn't see an error even with '-max_uram 0'.

Thanks,

  • Chen
AWS
answered 3 years ago
0

Hi Chen,

Thanks for your reply.

In the case where we launch an f1 instance and load the initial AGFI (for that VM instance), can we assume that the FPGA has been power-cycled? I've been assuming that "powered-up" will only ever happen when the host machine is booted by AWS but if we can know that the URAM is initialized to 0 when the f1 VM instance is created (or perhaps when the VM boots each time), that information would also be very helpful.

In other words, if 'fpga-clear-local-image' then 'fpga-load-local-image' does not initialize the URAM but there is another method that we can use that does, I would be open to changing our code.

Thanks,
-Tim

answered 3 years ago
0

Hi Tim,

From the information provided by Xilinx, URAM will be cleared/initialized to all 0s under two conditions: 1) device power cycle 2) device configuration. In this case, since switching different AGFIs would trigger the partial reconfiguration of the device, that would be considered as condition 2) above. URAM should be cleared to all 0s. So, you should be able to assume that the URAM always comes up with a clean state right after a AGFI loading. Hope this helps.

Thanks,

Chen

AWS
answered 3 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions