cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Visitor
Visitor
504 Views
Registered: ‎09-23-2019

Update contents of BRAM blocks generated via XPM memory after synthesis

Hello,

I have a system with a custom CPU and a ROM memory made with XPM memories as described in UG898 (Xilinx Parameterized Macros (XPM) Memories). I'm able to define the contents of the memory before synthesis with no issue at all. 

Unfortunately it doesn't work if I try to use updatemem (updatemem -force --meminfo top.mmi --data ../../../random.mem --bit top.bit --proc xpm_memory_sprom_inst/xpm_memory_base_inst --out out.bit) to update the memory contents on the implemented bitfile. Vivado generates the MMI file but updatemem returns many: "CRITICAL WARNING: [Memdata 28-315] The input data file has exceeded 32768 which is the maximum number of bits for a RAMB36 primitive. The updating of the BRAM init string is terminated. Please check your input data file.". Note that this is exactly the same random.mem file used successfully for synthesis. 

I suspect the auto-generated MMI file is not correct for some reason.

I've attached the files to generate a minimum working example to replicate the issue. The TCL file generates the project. Please rename random.mem.txt to random.mem (forum refuses .mem file).

Kind regards,

Agknaton

0 Kudos
3 Replies
Highlighted
Moderator
Moderator
497 Views
Registered: ‎09-12-2007

This is a known issue in 2019.1. There is a patch for this if you IM me you email address

Highlighted
Moderator
Moderator
420 Views
Registered: ‎09-12-2007

I put this in an AR instead:

https://www.xilinx.com/support/answers/72956.html

 

Note: there is still issues with data widths greater than 36 (as of writing this reply)

Highlighted
Visitor
Visitor
398 Views
Registered: ‎09-23-2019

Thank you for the AR. However, it didn't work with my minimum working example. Data width is 32-bit, less than 36 as mentioned.

The generated MMI file is attached (renamed to XML), in case it could be helpful to understand the issue.

Below are the first lines of the error message. We can see the patch was applied on the updatemem version name.

****** updatemem v2019.1_AR72956 (64-bit)
  **** SW Build 2552052 on Fri May 24 14:47:09 MDT 2019
  **** IP Build 2548770 on Fri May 24 18:01:18 MDT 2019
    ** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.

source /home/tools/xilinx/Vivado/2019.1/scripts/updatemem/main.tcl -notrace
Command: update_mem -meminfo top.mmi -data ../../../random.mem -proc xpm_memory_sprom_inst/xpm_memory_base_inst -bit top.bit -out out.bit -force
CRITICAL WARNING: [Memdata 28-315] The input data file has exceeded 32768 which is the maximum number of bits for a RAMB36 primitive. The updating of the BRAM init string is terminated. Please check your input data file.
CRITICAL WARNING: [Memdata 28-315] The input data file has exceeded 32768 which is the maximum number of bits for a RAMB36 primitive. The updating of the BRAM init string is terminated. Please check your input data file.
CRITICAL WARNING: [Memdata 28-315] The input data file has exceeded 32768 which is the maximum number of bits for a RAMB36 primitive. The updating of the BRAM init string is terminated. Please check your input data file.

 

0 Kudos