|
SpaceWire Switch Core Testbench - PTakeThe PTake VHDL testbench module is used to consume 9-bit SpaceWire data and is for use with the SpaceWire Switch Core (Router). The data consumption is controlled by an external file and uses the same handshake mechanism as the Autonomous Cascadable Dual Port FIFO.
PTake control files can be used to create exotic test patterns from the combination of the very simple elements described below. CommentsComment lines start with a hash (#) character at the very first position of the line.Example: # Hello I'm a comment! TakeA take character (T) is used to consume a single data, eop or eep token. If a token is not currently available then the take character will wait for one to appear and then consume it.Example 1: T, T, T will swallow 3 tokens. Example 2: 100*T will swallow 100 tokens. NumbersA number followed by a star will generate multiple copies of whatever follows the star. A zero will naturally generate nothing (zero copies).Example: 2*T, 0*T, 1*T will swallow 3 tokens. CommasCommas separate tokens and do not generate anything themselves.Example: T,T, 44*T , 5*T will swallow 51 tokens. StarsA Star generates multiple copies of whatever follows it.Example: 2*(2*(2*T)) will swallow 8 tokens. BracketsBrackets are used to isolate sets of tokens and do not generate anything themselves.Example: T, 2*(T, 2*(T, T)) will swallow 11 tokens. RandomA random character (R) followed by a star will generate a random number of whatever follows the star. If the random number happens to be zero then nothing will be generated. This random number will also be in the range Lower Limit to Upper Limit.Example: R*T could well swallow 100 tokens. GapA gap character (G) generates a one-cycle wait state where no data will be transferred.Example 1: T, G, T will consume a token, wait one cycle, consume a token. Example 2: T, 5*G, 2*T will consume a token, wait five cycles, consume two tokens. Set-upA set-up character (S) adds wait states on the front of all subsequent data transfers. The default set-up value is 0.Example 1: S, T, T will wait one cycle, consume a token, wait one cycle, consume a token. Example 2: T, 4*S, T will consume a token, wait four cycles, consume a token. Lower LimitA lower-limit character (L) sets the lower limit of all subsequent random numbers. The default lower-limit value is 0.Example: 254*L, R*T could well consume 254 tokens. Upper LimitAn upper-limit character (U) sets the upper limit of all subsequent random numbers. The default upper-limit value is 255.Example: 2*U, R*T could well consume 0 tokens. Some Real World ExamplesThis control sequence will swallow 100 tokens, wait for 1000 cycles and then swallow another 100 tokens.
|