Replies: 2 comments 2 replies
-
I'm a unsure about PacketStream:
The rules talk about acknowledges, which to me is it signalling back from the subordinate that what the manager sent was received, and the manager can now (attempt to) send something else. Also how does PacketStream handle validity? Or in other words how does the manager indicate there is nothing to send right now? |
Beta Was this translation helpful? Give feedback.
-
I'm pretty sure Avalon ST has pipelining! |
Beta Was this translation helpful? Give feedback.
-
I'd like to have an open discussion regarding the protocols we'd like to have in this package. I think in the end it makes sense to allow all standardized, existing protocols commonly used in RTL. However, often these protocols have many many features that are useless for specific applications.
This results in high implementation complexity for generic components with our current record based approach.
In theory we could maybe encode supported features in the protocol datatypes, but this leads to incredibly bulky types that will probably do more harm than good.
Without such encoding we get components with datatypes that are overly complex to implement or make type based promises they don't deliver on.
Currently
clash-protocols
features one non-standardized protocol for simple data streaming and there are two more protocols in the pipeline (haha).Existing non-standardized protocols
Proposed protocols
Df
Simplest possible streaming protocol, allows us to communicate streams of type
a
.Rules:
PacketStream
Simple protocol capable of communicating a packet over multiple transactions. Initial proposal for the type is:
Rules:
abort
being asserted must propagate the abort (e.g. for scaling components) or drop the packet itself.ReqResp
The simplest request-response protocol possible. You offer a request and once the subordinate offered a response, a transaction has been completed. The idea is that this is as simple as
Df
, but for bidirectional transactions.BiDf
A way to represent circuits that consume a
Df
request and produce aDf
response.It is very similar to
ReqResp
, but the extra handshaking mechanisms allow for pipelining.From #109
I took a short look at some existing protocols for which I have the spec at hand and made a short table that summarizes some of the aspects:
Legend:
^ If you spot a mistake or have questions, feel free to post a comment!
The question here is, what is the minimal set of features and protocols we can implement to cover most, if not all use cases?
Beta Was this translation helpful? Give feedback.
All reactions