cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Participant
Participant
1,891 Views
Registered: ‎12-20-2011

Microblaze instruction insert overrun , any idea?

Hi all,

 

    I'm a newbie to develop embedded system based on vivado. I create a simple system as shown in the following diagram.  When I complete the bit stream generation stage, and run a simple helloworld project on SDK. An error has occurred. "Error while launching program: Memory write error at 0x80000000. Microblaze instruction insert overrun". 0x80000000 is the base address of DDR4. If I remove the ddr4 mig from the diagram, and boot the program from local memory, it works. I have no idea about this problem, can anyone give a suggestion? many thanks.  By the way, the clock from c0_ddr4_ui_clk_sync_rst is 300 MHz, while the system clock is 100 MHz.

 

2.png

0 Kudos
4 Replies
Highlighted
Voyager
Voyager
1,854 Views
Registered: ‎06-20-2017

Re: Microblaze instruction insert overrun , any idea?

Really not enough information. 

 

How did you get the settings for the DDR4?  You might try to use an example design with a traffic generator on the MIG.  Check reset polarities and verify your clocks are working.  Increase the size of your local memory, change your linker script to run out of local memory.  Use VLA to debug resets and init_calib_complete.  Make sure your pinouts are correct.

Mike
0 Kudos
Highlighted
Participant
Participant
1,836 Views
Registered: ‎12-20-2011

Re: Microblaze instruction insert overrun , any idea?

Hi maps-mpls,

My project is based on the Virtex UltraScale+ VCU118 Evaluation Platform with vivado 2017.4.  All the settings of DDR4 MIG are automatically generated by vivado. The reset polarities and clocks are correct. The size of local memory is 64 KB which is large enough to run a HelloWorld project. It seems to be a bug of sdk because when I download the bitstream and the elf file, the error arise, see the first figure.

However, if I change the base address of .text in the lscript.ld from "DDR4_base_addr" to "local_memory_base_addr", and then re-change the address of .text back to "DDR4_base_addr". After downloading the elf file, the HelloWorld project works.  See the second figure.  I can't figure out where the problem is.

 

1.png

2.png

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

Re: Microblaze instruction insert overrun , any idea?

I cant really tell from your screenshot. Have you both the DC and IC interfaces enabled? 

I think you do..

 

Can you go into the Microblaze IP config, and make sure that the cache range is big enough.

Increase it to 64KB for example, and make sure that the cache address is set to 0x80000000

 

Did you do a memory test (ran from the LMB). Does this work.

 

The issue you are getting (I think) is that the MB cant fetch instructions from the DDR

0 Kudos
Highlighted
Observer
Observer
1,365 Views
Registered: ‎08-18-2015

回复: Microblaze instruction insert overrun , any idea?

I can run better using local memory,but when i set mig in the linker,it occurs that the sdk cant run,and Memory write error at 0x80000000. MicroBlaze instruction insert overrun.

  in my case,PS and PL will  access the mig in the sdk,but when i enable the axi4 of the PL,the SDK cannot access mig;when i disabled the axi4 of  the PL,the SDK can run good. so i doublt that my design in the block design is right or fault?

dd.png
0 Kudos