gpg -vv -r myid -e -a name, on Nostr: At the merge stage items should be read from subgraphs in the order they were fed in, ...
At the merge stage items should be read from subgraphs in the order they were fed in, either by keeping a FIFO which contains the collection order, or by only allowing a single token into the construct at a time. CONS nodes must only allow a single stream to be generated at a time on the associated stream bus.
Later in the synthesis process, once the stream buses have been generated, locking primitives will be introduced to ensure mutual exclusion. In the mean time, we assume that each stream generated dynamically has a separate stream bus, so that all stream reads will cause a request from the correct stream
A graph that can correctly deal with multiple outstanding requests
is pipelineable. The dataflow graphs are PN and pipelineable, by construction (ignoring the details of stream buses, which will be covered later
to deal with these two-phase signals
synchronous Muller C element shown in Figure 4.10 switches its output to the same value as its inputs when all inputs match. This is used to detect when, for example, a set of requests have all arrived, so the next stage can commence. The “E2L” and “L2E” circuits of F
convert between edges of two-phase signalling and level-sensitive triggering, which is more convenient for certain parts of control logic
Assumption of these blocks is that there will not be more than one transition per clock cycle.
The Join block is used in the implementation of the conditional and multiplexer
nodes. It takes a set of wires representing a number of graph edges, and merges them—when there is a request event on one of the inputs the associated data is transmitted on the data output wires , e outputs request line is triggered. When an acknowledgement edge is received the input acknowledgement lines are made to match the associated input request lines, acknowledging the original request. Join block is designed with the assumption that there will only ever be one unacknowledged request passing
through it at a time.
Later in the synthesis process, once the stream buses have been generated, locking primitives will be introduced to ensure mutual exclusion. In the mean time, we assume that each stream generated dynamically has a separate stream bus, so that all stream reads will cause a request from the correct stream
A graph that can correctly deal with multiple outstanding requests
is pipelineable. The dataflow graphs are PN and pipelineable, by construction (ignoring the details of stream buses, which will be covered later
to deal with these two-phase signals
synchronous Muller C element shown in Figure 4.10 switches its output to the same value as its inputs when all inputs match. This is used to detect when, for example, a set of requests have all arrived, so the next stage can commence. The “E2L” and “L2E” circuits of F
convert between edges of two-phase signalling and level-sensitive triggering, which is more convenient for certain parts of control logic
Assumption of these blocks is that there will not be more than one transition per clock cycle.
The Join block is used in the implementation of the conditional and multiplexer
nodes. It takes a set of wires representing a number of graph edges, and merges them—when there is a request event on one of the inputs the associated data is transmitted on the data output wires , e outputs request line is triggered. When an acknowledgement edge is received the input acknowledgement lines are made to match the associated input request lines, acknowledging the original request. Join block is designed with the assumption that there will only ever be one unacknowledged request passing
through it at a time.