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: 
Observer toulgaridis
Observer
1,058 Views
Registered: ‎12-04-2015

Vivado 2018.3 Updatemem strange behavior in endianness

Jump to solution

 I used to work in VIVADO 2017.2 but the last month I switched to VIVADO 2018.3.

In VIVADO 2017.2, I was able to update the content of the .bit file with the content of the .elf file succesfully by following these specific steps:

1) Generate Bitstream in VIVADO.

2) Export Hardware and Generate .elf file in SDK.

3) Import the .elf file in VIVADO and associate the .elf file with the respective Microblaze (I use a single MB core in my design).

4) Execute updatemem command for generating the final download.bit, which contains both the FPGA and the Microblaze code.

 

After switching to VIVADO 2018.3 the above procedure stopped working. I searched for similar problems in the net and found no accepted solutions. So, I tried to dig a little deeper in order to solve the problem.

The weird thing is that programming the FPGA and the Microblaze seperately (using JTAG - System Debugger Session) works well. This fact led me to try and record the content of the Local Microblaze BRAM after using each of the two programming sequences (First is using download.bit and the second is programming the MB BRAM separately using System Debugger).

The results are shown in the attached picture. As you can see, it seems that there is strange behavior in the endianess of the data written in the Local Microblaze BRAM in the case of programming using the single download.bit file. In this picture I demonstrate an example of this behavior but you can verify that this stands for all the first 16 (32-bit) words of the Local Microblaze BRAM.

The only differences found in the two designs (the one in 2017.2 and the other in 2018.3) are the IP Core upgrades. There is no problem in the Reset Levels and the new design (2018.3) behaves as expected when programming using the System Debugger Session in the SDK Enviroment.

 

Is this a known issue? Is there any parameters that handles the elf file's endianness inside the final download.bit file?

Do I have to follow a different procedure in VIVADO 2018.3 compared to the one I described above?

 

Additionally I want to mention that I already checked the generated .mmi files in the 2017.2 design and in the 2018.3 design and I see some differences regarding the bit allocation of the local MB BRAM. I can share these results if needed.

Please give me an answer as soon as possible!

 

Thanks in advance.

 

Nikos

 

mb_lbra_beh.jpg
1 Solution

Accepted Solutions
Highlighted
Xilinx Employee
Xilinx Employee
268 Views
Registered: ‎10-08-2010

Re: Vivado 2018.3 Updatemem strange behavior in endianness

Jump to solution

The tactical patch for Vivado 2018.3 is now available: AR# 71948.

10 Replies
Moderator
Moderator
1,050 Views
Registered: ‎09-12-2007

Re: Vivado 2018.3 Updatemem strange behavior in endianness

Jump to solution

Can you share the MMI file please. Sounds like the bitlanes have messed up? n the MMI file?

0 Kudos
Observer toulgaridis
Observer
1,038 Views
Registered: ‎12-04-2015

Re: Vivado 2018.3 Updatemem strange behavior in endianness

Jump to solution

Thank you for your fast response.

I would prefer to send you a PM if possible?

 

Nikos

0 Kudos
Moderator
Moderator
1,036 Views
Registered: ‎09-12-2007

Re: Vivado 2018.3 Updatemem strange behavior in endianness

Jump to solution

Have a look at the wiki here which shows how to update the MMI. It sounds like you will need to update the bitlanes:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842458/Understanding+MEMDATA+flow+and+how+to+manually+create+MMI+file

 

0 Kudos
Moderator
Moderator
940 Views
Registered: ‎09-12-2007

Re: Vivado 2018.3 Updatemem strange behavior in endianness

Jump to solution

did you create the MMI file manually? The tools will auto-create this file for you.

Also, if you look at an MMI (discussed in the wiki)  file you will note that the data is swapped (byte and nibble).

For example for a 32 bit wide, 16 BRAMs would look like:

  • 7:6, 5:4, 3:2, 1:0, 15:14,13:12,11:10,9:8,23:22,21:20,19:18,17:16,31:30,29:28,27:26,25:24

This is what you are seeing.

 

0 Kudos
Observer toulgaridis
Observer
919 Views
Registered: ‎12-04-2015

Re: Vivado 2018.3 Updatemem strange behavior in endianness

Jump to solution

Can you check my last post in this thread?

I have an 128 KB BRAM, so I should see: 7, 6, ... , 2, 1, 0, 15, 14, ... , 9, 8, 23, 22, ... , 17, 16, 31, 30, ... , 25, 24.

But instead I see this order: 0, 1, 2, ... , 29, 30, 31.

I think that there must be an error in the .mmi file generation process.

0 Kudos
Moderator
Moderator
839 Views
Registered: ‎09-12-2007

Re: Vivado 2018.3 Updatemem strange behavior in endianness

Jump to solution

If this is the auto generated mmi then this looks like a bug. It should be easy to reproduce on my end. I'll take a look and create a CR to have it fixed if I seen it to be a bug.

For now, it looks like manually updating the mmi is needed (although a pain)

Explorer
Explorer
668 Views
Registered: ‎01-15-2008

Re: Vivado 2018.3 Updatemem strange behavior in endianness

Jump to solution

Thanks very much for figuring out what's going on here.  I'm facing the same issue in Viv2018.3.  

I haven't worked through editing the .mmi yet, but I confirmed that my download.bit has the same reversed-bit-lane issue that you describe, when the system.bit and app.elf files are combined by updatemem (but not when the system.bit is loaded with the bootloop.elf)

I will be happy to know if/when we can expect a bug fix from Xilinx?

Rick

0 Kudos
Moderator
Moderator
651 Views
Registered: ‎09-12-2007

Re: Vivado 2018.3 Updatemem strange behavior in endianness

Jump to solution

There willl be a patch for the tools released via an answer record in the next day or so.

When I know the AR number I'll post it here too

Highlighted
Xilinx Employee
Xilinx Employee
269 Views
Registered: ‎10-08-2010

Re: Vivado 2018.3 Updatemem strange behavior in endianness

Jump to solution

The tactical patch for Vivado 2018.3 is now available: AR# 71948.

Explorer
Explorer
251 Views
Registered: ‎01-15-2008

Re: Vivado 2018.3 Updatemem strange behavior in endianness

Jump to solution

Yes, it works, thank you very much.

Rick

0 Kudos