UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Voyager
Voyager
12,287 Views
Registered: ‎10-07-2011

[Memdata 28-123] Elf file hierarchy association might be incorrect

Hi folks,

 

I'm using Vivado 2015.3 on Win7-64. The project I'm working on has been migrated from 2015.1 and was working fine. Now, Synthesis is issueing the critical warning below:

 

[Memdata 28-123] Elf file hierarchy association might be incorrect. Re-do the processor instance to ELF file association and re-open the design. To associate the ELF file, use the Tools->Associate ELF Files menu, or set the scoping properties on the .elf file using the Tcl console.
[Vivado 12-4381] Could not update the BRAM init strings. Check your elf files and their property settings.

 

I run "Tools->Associate ELF Files..." from Vivado and it shows that the <mb_bootloop_le.elf> file is linked to my processor instance. That's what I want... Just a bootloop.

 

My BMM file is as follow:

 

WORKFLOW_OPERATION simulation,dialog;

DEFINE_MEMORY_TYPE microblaze_0_local_memory_lmb_bram_MEM_DEVICE [0x00020000] 32;

ADDRESS_MAP microblaze_0 MICROBLAZE-LE 100 microblaze_0
   ADDRESS_SPACE microblaze_0_local_memory_lmb_bram_ADDR_SPACE microblaze_0_local_memory_lmb_bram_MEM_DEVICE  [0x00000000:0x0001FFFF] microblaze_0_local_memory/dlmb_bram_if_cntlr
     BUS_BLOCK
      microblaze_0_local_memory_lmb_bram_BUS_BLK [31:0] INPUT = "PlatformCore_lmb_bram_0.mem";
     END_BUS_BLOCK;
   END_ADDRESS_SPACE;
END_ADDRESS_MAP;

 

I found AR #56179 discussing a similar issue. I did give a try to the AR suggestions, using the fully implemented design. I got:

 

get_property MEMDATA.ADDR_MAP_CELLS [get_files -of [current_fileset] mb_bootloop_le.elf]
WARNING: [Common 17-599] Property 'MEMDATA.ADDR_MAP_CELLS' is deprecated for object type 'file'. The MEMDATA.ADDR_MAP_CELLS property has been deprecated and will be removed in a future release. Please use the SCOPED_TO_REF and SCOPED_TO_CELLS properties..

 

So, I did verify that the SCOPED_TO_REF and SCOPED_TO_CELLS properties were valid, and they are!

 

list_property [get_files -of [current_fileset] mb_bootloop_le.elf]
CLASS
CORE_CONTAINER
FILE_TYPE
IS_AVAILABLE
IS_ENABLED
IS_GENERATED
NAME
NEEDS_REFRESH
PARENT_COMPOSITE_FILE
PATH_MODE
SCOPED_TO_CELLS                   <<<<<<<<<<<<<<<<<<<<<<
SCOPED_TO_REF                       <<<<<<<<<<<<<<<<<<<<<<
USED_IN
USED_IN_IMPLEMENTATION
USED_IN_SIMULATION

 

By the way, the above command also confirms that the <mb_bootloop_le.elf> file is a valid ELF file. It's in the active Vivado fileset. So, looking at the value of both SCOPED_TO_REF and SCOPED_TO_CELLS properties didn't return the expected result.

 

get_property SCOPED_TO_REF [get_files -of [current_fileset] mb_bootloop_le.elf]
>> Returned NOTHING

 

get_property SCOPED_TO_CELLS [get_files -of [current_fileset] mb_bootloop_le.elf]
>> Returned NOTHING

 

What are the expected value for these properties? The ELF file? Both properties or anyone?

 

I did check the actual content of the Microblaze BRAM blocks and I can see that they are not initialized.

 

get_property INIT_01 [get_cells U6/U1/microblaze_0_local_memory/lmb_bram/U0/inst_blk_mem_gen/gnative_mem_map_bmg.native_mem_map_blk_mem_gen/valid.cstr/ramloop[*].ram.r/prim_noinit.ram/DEVICE_7SERIES.WITH_BMM_INFO.TRUE_DP.SIMPLE_PRIM36.TDP_SP36_NO_ECC_ATTR.ram]
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000
256'h0000000000000000000000000000000000000000000000000000000000000000

 

I'm somewhat stuck. The AR is saying to use data2mem from ISE... but I don't have ISE installed.

 

I also found AR #63847 and proceeded with the suggested workaround. I have:

 

set_param memdata.enableMCSinIPI 1
set_property SCOPED_TO_REF PlatformCore [get_files *.bmm]
set_property SCOPED_TO_CELLS {microblaze_0} [get_files *.bmm]

 

Implementation is going through, but the issue remains.

 

I noticed, however, that I don't have a _bd.bmm file. Does that matter?

 

get_files *.bmm
W:/EGP0031/Sources/BD/PlatformCore/PlatformCore.bmm

 

How can I tell Vivado to link the bootloop ELF file correctly?

 

Cheers,

 

Claude

 

 

 

0 Kudos