Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
sim:scoreboards [2024/02/23 15:58] fabian created |
sim:scoreboards [2024/04/09 09:33] (current) fabian |
||
---|---|---|---|
Line 5: | Line 5: | ||
In order to enable this testing scheme in ACT, this simulation library contains the sub-namespace '' | In order to enable this testing scheme in ACT, this simulation library contains the sub-namespace '' | ||
- | When setting up a testing environment, | + | When setting up a testing environment, |
- | It is important to know about the timing of the processes provided here, as it could influence how your design behaves. There are no input buffers on any of these scoreboards, | + | It is important to know about the timing of the processes provided here, as it could influence how your design behaves. There are no input buffers on any of these scoreboards, |
Here's a simple example for a testing harness for a basic adder using a lockstep scoreboard and a sequence source as an oracle. We will go into depth about this type of scoreboard in a second: | Here's a simple example for a testing harness for a basic adder using a lockstep scoreboard and a sequence source as an oracle. We will go into depth about this type of scoreboard in a second: | ||
Line 47: | Line 47: | ||
</ | </ | ||
- | We connect | + | We connect multi-ended sources to both the DUT as well as the scoreboard. If we had a model instead of an oracle, we would connect the sources to it as well. Due to the simplicity of the design (adds 1 stage of slack), and the use of the oracle, we have omitted buffers on the scoreboard inputs. |
We (currently) provide three different scoreboards based on different assumptions about the inputs and outputs of a DUT. | We (currently) provide three different scoreboards based on different assumptions about the inputs and outputs of a DUT. | ||
- | * If your design has a group of inputs and outputs, which always see the same number of tokens in the same order, use a lockstep scoreboard. An example would be an adder which produces as many results as it receives inputs. | + | * If your design has a group of inputs and outputs, which always see the same number of tokens in the same order, use a '' |
- | * If your design has a group of outputs, which always see the same number of tokens in the same order, use a deterministic scoreboard. An example would be a deterministic merge, where two input channels result in one output channel. | + | * If your design has a group of outputs, which always see the same number of tokens in the same order, use a '' |
- | * If you design requires any other more intricate testing condition, can implement your own checks and use a generic scoreboard to have standard output formatting for automatic and distributed testing. | + | * If you design requires any other more intricate testing condition, |
- | If you need to log your inputs you can additionally use an input logger for any group of inputs which always see the same number of tokens. | + | If you need to log your inputs, you can additionally use an input logger for any group of inputs which always see the same number of tokens. |
+ | |||
+ | ===== Shared parameters ===== | ||
The scoreboards in this namespace use the same parameters: | The scoreboards in this namespace use the same parameters: | ||
Line 64: | Line 66: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | |||
+ | ===== Interface ===== | ||
+ | |||
+ | All scoreboards share a common interface. Some ports might be missing depending on the capability of a given scoreboard. If a port is not present on every scoreboard type, it is denoted as such. | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | The exported processes are: | ||
+ | |||
+ | <code act> | ||
+ | export template <pint D_WIDTH, OUT_CHANNELS, | ||
+ | defproc generic (chan? | ||
+ | |||
+ | export template <pint D_WIDTH, IN_CHANNELS, | ||
+ | defproc lockstep (chan? | ||
+ | |||
+ | export template <pint D_WIDTH, OUT_CHANNELS, | ||
+ | defproc deterministic (chan? | ||
+ | |||
+ | export template <pint D_WIDTH, IN_CHANNELS, | ||
+ | defproc input_logger (chan? | ||
+ | </ | ||