OpenCores
no use no use 1/1 no use no use
lack of pipeline in wishbone (resend)
by Unknown on Nov 28, 2005
Not available!
Does anyone else see it as a serious shortcoming that Wishbone does not support Address/Data pipelining? When connecting Wishbone to standard synchronous SRAM's (that register all address/control inputs) it makes it impossible to maintain throughput at full clock rate on random address sequences, even for those with flow-through data. The "FASM" Synchronous RAM model that is discussed in the spec if not actually synchonrous during read, only during write. This does not match any SSRAM IC I have encountered, or the SSRAM's inside recent Altera FPGA's. Is anyone working on an extension to WB to support pipelining? Tim -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.opencores.org/forums.cgi/cores/attachments/20051128/2fc8b631/attachment.htm
lack of pipeline in wishbone (resend)
by Unknown on Nov 28, 2005
Not available!
That's exact the point I stumbeld over in the last two weeks
when I changed the memory interface of JOP to be WB compliant.

Here is a comment I posted in another group:

After implementing the Wishbone interface for main memory access
from JOP I see several issues with the Wishbone specification that
makes it not the best choice for SoC interconnect.

The Wishbone interface specification is still in the tradition of
microcomputer or backplane busses. However, for a SoC interconnect,
which is usually point-to-point, this is not the best approach.

The master is requested to hold the address and data valid through
the whole read or write cycle. This complicates the connection to a
master that has the data valid only for one cycle. In this case the
address and data have to be registered *before* the Wishbone connect
or an expensive (time and resources) MUX has to be used. A register
results in one additional cycle latency. A better approach would be
to register the address and data in the slave. Than there is also
time to perform address decoding in the slave (before the address
register).

There is a similar issue for the output data from the slave: As it
is only valid for a single cycle it has to be registered by the
master when the processor is not reading it immediately. Therefore,
the slave should keep the last valid data at it's output even when
wb.stb is not assigned anymore (which is no issue from the hardware
complexity).

The Wishbone connection for JOP resulted in an unregistered Wishbone
memory interface and registers for the address and data in the
Wishbone master. However, for fast address and control output (tco)
and short setup time (tsu) we want the registers in the IO-pads of
the FPGA. With the registers buried in the WB master it takes some
effort to set the right constraints for the Synthesizer to implement
such IO-registers.

The same issue is true for the control signals. The translation from
the wb.cyc, wb.stb and wb.we signals to ncs, noe and nwe for the
SRAM are on the critical path.

The ack signal is too late for a pipelined master. We would need to
know it *earlier* when the next data will be available --- and this
is possible, as we know in the slave when the data from the SRAM
will arrive. A work around solution is a non-WB-conforming early ack
signal.

Due to the fact that the data registers not inside the WB interface
we need an extra WB interface for the Flash/NAND interface (on the
Cyclone board). We cannot afford the address decoding and a MUX in
the data read path without registers. This would result in an extra
cycle for the memory read due to the combinational delay.

In the WB specification (AFAIK) there is no way to perform pipelined
read or write. However, for blocked memory transfers (e.g. cache
load) this is the usual way to get a good performance.

Conclusion -- I would prefer:

* Address and data (in/out) register in the slave
* A way to know earlier when data will be available (or
a write has finished)
* Pipelining in the slave

As a result from this experience I'm working on a new SoC
interconnect (working name SimpCon) definition that should avoid the
mentioned issues and should be still easy to implement the master
and slave.
The proposed SoC interconnect standard SimpCon with pipelining support is available at operncores: http://www.opencores.org/projects.cgi/web/simpcon/overview
As there are so many projects available that implement the WB
interface I will provide bridges between SimpCon and WB. For IO
devices the former arguments do not apply to that extent as the
pressure for low latency access and pipelining is not high.
Therefore, a bridge to WB IO devices can be a practical solution for
design reuse.
See it as an 'extension' to the open Wishbone specification and not as a substitute. Martin ----- Original Message ----- From: "Tim Tait" tim.tait1 at gmail.com> To: cores at opencores.org> Sent: Monday, November 28, 2005 7:30 AM Subject: [oc] lack of pipeline in wishbone (resend) Does anyone else see it as a serious shortcoming that Wishbone does not support Address/Data pipelining? When connecting Wishbone to standard synchronous SRAM's (that register all address/control inputs) it makes it impossible to maintain throughput at full clock rate on random address sequences, even for those with flow-through data. The "FASM" Synchronous RAM model that is discussed in the spec if not actually synchonrous during read, only during write. This does not match any SSRAM IC I have encountered, or the SSRAM's inside recent Altera FPGA's. Is anyone working on an extension to WB to support pipelining? Tim
no use no use 1/1 no use no use
© copyright 1999-2026 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.