Scoreboard with different number of transactions

Hello,

my DUT is measuring a physical quantity (temperature, acceleration, angle, etc.) and transmits the measured value over a serial protocol. I have an agent to apply the stimuli and the device starts to send out measured data with some latency.

Now I’d like to create a scoreboard that checks whether the measured value is within ranges w.r.t. the injected stimuli. So here are my questions:

  1. stimuli generation has many more ‘transactions’ than output (the physical quantity has an ‘analog’ like behavior), how do I decide when to compare stimuli and output?
  2. the measured value is within certain ranges w.r.t. the input stimuli, how do I compare the two? With some min/max?
  3. how can I measure the latency between input and output?

Any comment/suggestion is appreciated.

Al

In reply to abs:

It looks like you can check the behavior of your DUT using SystemVerilog Assertions.
I guess each transaction relates to certain tolerance range on your output-side.
How this behaves is your reference model…
The latency can be also measured using SVA. You are measuring the distamce between the start in your driver and the appearnce of the output values.

It looks like you can check the behavior of your DUT using SystemVerilog Assertions.
I guess each transaction relates to certain tolerance range on your output-side.
How this behaves is your reference model…

Assuming I’m going with SVA, I give you a simple example, let’s say my input is a vector of integer numbers [0,1,2,3,4,5,6,7,8,9…], now my output is of real numbers and will look like this [1.1,3.2,6.1,8.9,…]. How would make sure that they ‘match’?

The latency can be also measured using SVA. You are measuring the distamce between the start in your driver and the appearnce of the output values.

As long as I’m able to do the ‘association’ between a value in the output and a value in the input.

In reply to abs:

Assuming I’m going with SVA, I give you a simple example, let’s say my input is a vector of integer numbers [0,1,2,3,4,5,6,7,8,9…], now my output is of real numbers and will look like this [1.1,3.2,6.1,8.9,…]. How would make sure that they ‘match’?
As long as I’m able to do the ‘association’ between a value in the output and a value in the input.

Your questions should be answered by your design specification.