README: Flow

This commit is contained in:
Sebastien Bourdeauducq 2011-12-20 00:07:46 +01:00
parent d9dc604c99
commit 47d321cd75
1 changed files with 51 additions and 8 deletions

59
README
View File

@ -389,19 +389,62 @@ If the device can write, the field object provides the following signals:
- dev_w, which provides the value to be written into the field. - dev_w, which provides the value to be written into the field.
- dev_we, which strobes the value into the field. - dev_we, which strobes the value into the field.
Migen Flow Migen Flow (TODO)
========== ==========
Many hardware acceleration problems can be expressed in the dataflow
paradigm, that is, using a directed graph representing the flow of data
between actors.
(TODO: there is no implementation of Migen Flow in the repository yet) Actors in Migen are written directly in FHDL. This maximizes the
flexibility: for example, an actor can implement a DMA master to read
data from system memory. It is conceivable that a CAL [7] to FHDL
compiler be implemented at some point, to support higher level
descriptions of some actors and reuse of third-party RVC-CAL
applications. [8] [9] [10]
Actors communicate by exchanging tokens, whose flow is typically
controlled using handshake signals (strobe/ack).
Each actor has a "scheduling model". It can be:
- N-sequential: the actor fires when tokens are available at all its
inputs, and it produces one output token after N cycles. It cannot
accept new input tokens until it has produced its output. A
multicycle integer divider would use this model.
- N-pipelined: similar to the sequential model, but the actor can
always accept new input tokens. It produces an output token N cycles
of latency after accepting input tokens. A pipelined multiplier would
use this model.
- Dynamic: the general case, when no simple hypothesis can be made on
the token flow behaviour of the actor. An actor accessing system
memory on a shared bus would use this model.
Migen Flow automatically generates handshake logic for the first two
scheduling models. In the third case, the FHDL descriptions for the logic
driving the handshake signals must be provided by the actor.
If sequential or pipelined actors are connected together, Migen Flow will
attempt to find a static schedule, remove the handshake signals, optimize
away the control logic in each actor and replace it with a centralized
FSM implementing the static schedule.
An actor can be a composition of other actors.
Actor graphs are managed using the NetworkX [11] library.
References: References:
[1] http://milkymist.org [ 1] http://milkymist.org
[2] http://www.myhdl.org [ 2] http://www.myhdl.org
[3] http://milkymist.org/thesis/thesis.pdf [ 3] http://milkymist.org/thesis/thesis.pdf
[4] http://www.xilinx.com/publications/archives/xcell/Xcell77.pdf p30-35 [ 4] http://www.xilinx.com/publications/archives/xcell/Xcell77.pdf p30-35
[5] http://cdn.opencores.org/downloads/wbspec_b4.pdf [ 5] http://cdn.opencores.org/downloads/wbspec_b4.pdf
[6] http://www.ohwr.org/projects/wishbone-gen [ 6] http://www.ohwr.org/projects/wishbone-gen
[ 7] http://opendf.svn.sourceforge.net/viewvc/opendf/trunk/doc/
GentleIntro/GentleIntro.pdf
[ 8] http://orcc.sourceforge.net/
[ 9] http://orc-apps.sourceforge.net/
[10] http://opendf.sourceforge.net/
[11] http://networkx.lanl.gov/
Practical information Practical information
===================== =====================