On Thursday 08 April 2010 19:51:57 Philip Pemberton wrote:
> It's an Altera M4K ROM megafunction, 1024x 32-bit words, tied straight
> onto the instruction bus:
> 
> // boot ROM
> wire [31:0] INSROM_DATA;
> bootrom ROM (
>       .clock          (MCLK),
>       .address        (CPU_I_ADDR[9:2]),
>       .q                      (CPU_I_DATA_TO_CPU)
> );
> assign CPU_I_ACK = CPU_I_STB;
> assign CPU_I_ERR = 1'b0;
> assign CPU_I_RTY = 1'b0;

I will assume this is a synchronous ROM (since it has a clock signal). In this 
case, your Wishbone signaling is incorrect and this pretty much explains your 
problem. If you have a register in the data path, with the basic Wishbone 
cycles, each transfer happens in two clock cycles:
1- master sets address and asserts stb
2- slave returns data and asserts ack
(3- master releases stb, slave releases ack)
See http://github.com/lekernel/milkymist/tree/master/cores/bram/ for an 
example of using synchronous memories with Wishbone.
By the way, you should infer your memories (unless there is a synthesizer bug 
or lack of optimization, which sometimes happens). Using the FPGA vendor's 
clickodrome for that is a retarded idea. Wastes your time, makes your design 
uselessly complex, and locks your design to that vendor.

> There isn't a Wishbone slave per se

There is. :)

> And I agree, it's an obvious error in the core and one that shouldn't
> have slipped through... if Lattice are running any testbenches against
> the core before releasing it.

>From my experience with Mico32, the concerns about quality that I have are 
related to the GNU toolchain, the GNU/Linux port and GNU Autocrap.
I think the hardware design is really good (that cache issue doesn't count, 
the problem stems from Xst).

Sébastien
_______________________________________________
http://lists.milkymist.org/listinfo.cgi/devel-milkymist.org
IRC: #milkym...@freenode
Webchat: www.milkymist.org/irc.html
Wiki: www.milkymist.org/wiki

Reply via email to