Table of Contents

Infinite capacity buffer

If you need to prevent components from a token producing part of the design from influencing a token consuming part of the design (for example token sequencers and design under test from a scoreboard in a testing harness), you need a way to decouple these two partitions. The best way to do so is an infinite capacity buffer. This simulation library offers such a construction; however it is obviously not synthesizable.

There are two versions of the buffer; buffer_en is controllable (input and output can be separately disabled), buffer has both input and output always enabled. They are otherwise identical.

Parameters

Interface

Additionally, buffer_en has the following flags:

Finally, both buffer variants also have an empty flag, this must be left unconnected (and is thus omitted in this documentation)! This is due to actsim not handling updates of purely local variables from parallel loops within a single process.

The available processes are:

export template<pint D_WIDTH, BUFFER_ID; pbool LOG>
defproc buffer_en (chan?(int<D_WIDTH>) I; chan!(int<D_WIDTH>) O; bool enable_in, enable_out);
 
export template<pint D_WIDTH, BUFFER_ID; pbool LOG>
defproc buffer (chan?(int<D_WIDTH>) I; chan!(int<D_WIDTH>) O);