Specification
The Flow interface is a simple valid/payload protocol which mean the slave can’t halt the bus.
It could be used, for example, to represent data coming from an UART controller, requests to write an on-chip memory, etc.
| Signal | Type | Driver | Description | Don’t care when |
|---|---|---|---|---|
| valid | Bool | Master | When high => payload present on the interface | - |
| payload | T | Master | Content of the transaction | valid is low |
Functions
| Syntax | Description | Return | Latency |
|---|---|---|---|
| Flow(type : Data) | Create a Flow of a given type | Flow[T] | |
| master/slave Flow(type : Data) | Create a Flow of a given type Initialized with corresponding in/out setup |
Flow[T] | |
| x.m2sPipe() | Return a Flow drived by x through a register stage that cut valid/payload paths |
Flow[T] | 1 |
| x « y y » x |
Connect y to x | 0 | |
| x <-< y y >-> x |
Connect y to x through a m2sPipe | 1 | |
| x.throwWhen(cond : Bool) | Return a Flow connected to x When cond is high, transaction are dropped |
Flow[T] | 0 |
| x.toReg() | Return a register which is loaded with payload when valid is high |
T |