-
Notifications
You must be signed in to change notification settings - Fork 5
Description
It should be possible to simulate links with a particular latency and jitter. Links should have an ordered queue used to store the flits that are in-flight. Additionally, flits should have a time to arrival counter which can be used to simulate an arbitrary additional delay. Consider the following example, where 3,1,1,2 would indicate that the head of the queue (next arriving flit) has a delay of 2 cycles, the second from the head has a delay of 1 cycle, and the tail a delay of 3 cycles. An X in the dequeued column indicates that the head of the queue is popped off on that cycle.
| cycle | queue state (head →) | dequeued |
|---|---|---|
| n | 3,1,1,2 |
|
| n+1 | 3,1,1,1 |
X |
| n+2 | 3,1,1 |
X |
| n+3 | 3,1 |
X |
| n+4 | 3 |
|
| n+5 | 2 |
|
| n+6 | 1 |
X |
| n+7 |
Additionally, these features should be exposed via the TCL scripting interface. I propose that the route command should be extended to add an optional argument for the delay field, with the default being 1. This would allow the user to use any arbitrary TCL procedure to define the additional delay induced at any given link.
Note that the delay should be cleared in between hops (i.e. setting a flit's delay before it traverses some particular link has no bearing on it's delay while traversing any other link before or after).