LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Sponsors
  • Mirrors
  • Logos
  • Contact us
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Cores > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: Martin Schoeberl<martin@j...>
    Date: Mon Nov 28 11:42:30 CET 2005
    Subject: [oc] lack of pipeline in wishbone (resend)
    Top
    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@g...>
    To: <cores@o...>
    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

    ReferenceAuthor
    [oc] lack of pipeline in wishbone (resend)Tim Tait

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.