cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
c1engr
Participant
Participant
17,092 Views
Registered: ‎11-03-2008

Updating Ram contents (COE file) with out re-implementing a design.

  Hi All

 

   I want to do something which is very simple, I have designed a small SoC complete with a custom 32bit processor which I am implementing in a spartan 3.  I am using a coregen generated dual port block ram as an instruction/data memory, and I'd like to be able to make software changes without re-implementing the entire design right from synthesis through bitgen.  So my question is can this be done? 

 

   Right now what I am doing is manually updating the .coe txt files and then opening up coregen and reconfiguring the ram with the newly updated .coe file, then re-running bitgen all over again each time I make a software change.  I am using a gcc compiler to compile the C++ code and it basically spits out the binary code I need to put into the ram, I'm an literally just cutting and pasting that information into the .coe file and following the process I described above.  THERE HAS GOT TO BE AN EASIER WAY, SOMEONE HELP ME ON THIS PLEASE!!!!:smileymad:

0 Kudos
10 Replies
mcgett
Xilinx Employee
Xilinx Employee
17,089 Views
Registered: ‎01-03-2008

Yes there is an easier way.  It's called data2mem

http://www.xilinx.com/products/ipcenter/dr_dt_data2mem.htm

------Have you tried typing your question into Google? If not you should before posting.
Too many results? Try adding site:www.xilinx.com
0 Kudos
c1engr
Participant
Participant
17,085 Views
Registered: ‎11-03-2008

OK yes I'm looking at that option and it looks like it will work, but I'm a little confused on how to create a bmm file from the elf file I generated using gcc here is the syntax I used "data2mem -bd i2c_test.elf -mf m block_cache 0x1FFFF 31 -o p my.bmm"  I keep getting an error though when I issue that command.  Am I doing something wrong, can you help me with this?
0 Kudos
c1engr
Participant
Participant
17,084 Views
Registered: ‎11-03-2008

Sorry I forgot to add the error the error I am getting is "child killed: segmentation violation"
0 Kudos
mcgett
Xilinx Employee
Xilinx Employee
17,051 Views
Registered: ‎01-03-2008

This thread has a lot of useful links to data2mem information

http://forums.xilinx.com/xlnx/board/message?board.id=OTHER&thread.id=871

------Have you tried typing your question into Google? If not you should before posting.
Too many results? Try adding site:www.xilinx.com
0 Kudos
c1engr
Participant
Participant
17,030 Views
Registered: ‎11-03-2008

Forgive my frustration, but is this some sort of secret amongst xilinx employees which you guys do not want to let the customer in on.  What I am asking is very simple to understand, why I keep getting mountains of information from you guys is beyond me.  Does anyone at this company know how this can be done?  I need a simple direct answer as to how to get this too work, this is an FPGA the point of this tool is prototyping by and large, how are customers supposed to prototype processor systems without a convenient way of updating instruction cache?  Is xilinx saying that the best it can do is advise the customer to re-implement the entire hardware design every time they make a change to software, or is there some secret method only xilinx employees are allow to use?

 

  I need someone to explain to me how this can be done and not point me to a book, I've looked at the book its not clear even there how to build the bmm files, I've tried and get errors that don't make sense, I've read the answers data base responses on this issue with no success, I need someone who knows exactly how to get this done, to show me the way step by step.  I'm sorry but after designing an entire SoC from scratch and choosing xilinx fpgas over their competitors the least you guys can do is help me out on a method to conveniently updating my cache without waiting 45mins to re-implement every single time. I need help people someone please!

0 Kudos
santosh.palai
Visitor
Visitor
16,997 Views
Registered: ‎07-29-2009

Cool down ... I understand your frustration. Let me try to help you.

Correct me If i am wrong.

 You are using a Processor and you need to load the Instruction Memory, without  going through the whole implementation process.

What you have is the .elf file

 

Can you tell me the size( width and depth ) of the block ram you are using and the address space of the processor?

 

 

0 Kudos
c1engr
Participant
Participant
16,985 Views
Registered: ‎11-03-2008

The ram I am using is a core generated dual port block ram it is 32 bits wide and has 13 address bits.  Let me know if you need any further information.
0 Kudos
bassman59
Historian
Historian
16,980 Views
Registered: ‎02-25-2008


c1engr wrote:
The ram I am using is a core generated dual port block ram it is 32 bits wide and has 13 address bits.  Let me know if you need any further information.

I still don't understand why you resist learning about how to use Data2Mem. It does EXACTLY what you wish to do!

----------------------------Yes, I do this for a living.
0 Kudos
c1engr
Participant
Participant
16,976 Views
Registered: ‎11-03-2008

I am not resisting, and I have followed the instructions in the manuel about creating a bmm file and using that in addition to the elf file to generate the new bit file with the new data, its not working.  I keep getting errors that have no explanation.  Maybe I'm creating the bmm file wrong but the instructions aren't real clear as to how that is susposed to be done.  For EDK its easy, the work is basically done for you but I'm not using EDK.  If you've done this going through ISE using a core generated ram just give me the steps you followed and I'd be glad to try.
0 Kudos
criley
Xilinx Employee
Xilinx Employee
10,859 Views
Registered: ‎08-16-2007

Have you tried creating the BMM manually?  You can use Data2MEM to perform a syntax on your .bmm before replacing the Block RAMs with the new data.  If this still fails there might be a problem with your ELF file.

If you are still having problems please open a webcase with World Technical Support at http://www.xilinx.com/support/clearexpress/websupport.htm.

 

0 Kudos