I need to simulate eMIPS on ModelSim, it is a very simple task for you (and maybe stupid task
, sorry for that:-) but I got several problems. I found solutions for lots of them but I need the last step to finish.
My problem is linked to memory.
I'm going to explain my previous steps:
1 – Import on ModelSim all necessary modules to stand up eMIPS;
2 – Write a simple program and compile it;
3 – Last step: simulation.
About first point, I imported all modules under TISA directory, top directory and simulation directory (for the testbench). More over, I create a blockram_br and a FIFO with xilinx as explained in the “Microsoft eMIPS.pdf”
Second point: the program under test is:
li $1, 4 ;
lb $2,0x50($0) ;
add $1, $1, $2 ;
li $2, 2;
add $1, $1, $2 ;
sb $1, 0x51($0);
I want to use only blockram memory for instructions and data. I put 03 in the location 0x50 and after the execution of these instructions, I expect 9 in the location 0x51.
I'm using the debug section in TISA, so I know that I compiled it correctly because I can see the instructions during the simulation. So the instructions are fetched correctly but there are some problems with data.
The problem is the MEMORY and maybe the Bramloader.
I'm not using any routine of boot and for that reason the processor can't know where read and write data I think. Am I right?
I want use only bram memory, what do I have to change in the rootin of boot? Is that routine compulsory for simple thing?
Thank you very much for your attention
We have a simulation set up we have used internally for debugging and experiments. Unfortunately we have never released it. Since you have expressed interests I will work on putting together a release of a package to allow to use our set up.
This will take a few days to put together. When we have it, I will find away to get it to you.
If there is anything you can think of that might help you in the meantime, please let me know.
thank you very much for you attention. I'll wait your package.
In the meantime, I'm going to carry on with my tests. I think that probably I didn't understand clearly the functionality of memory_controller and/or some module inside memory_interface...
Anyway, thank you very much for your patience
I'm so sorry for my delay but I got several problems
.... moreover my laptop gave me problem...
Anyway, I found a solution about the last question on simulation of eMIPS on ModelSim but I used another way.
I didn't understand how memory_controller module works, but now I do it.
I need to change the address range for the instructions and data.
My next task is to compile a C program using gcc. I looked some steps on your report and I'm going to follow it.