DescriptionQ147
Q147DVASIC interview problem
Verify a cascading flit-collision resolver
TechniquesDVDesignStreamingStackVariable-length output
DifficultyMedium
TopicUVM Components
LanguageSystemVerilog
Requirements4 checkpoints
01
Problem
Write a stack oracle and header check for a framed flit-collision resolver. A right-moving flit is marked R, a left-moving flit L, and only an R survivor followed by an incoming L can collide.
Example input and output
Use this case to check your interpretationInput
accepted flits=[R5,R3,L4] followed by lastOutput
header survivor_count=1,error=0; sole survivor=R5 with last=1Explanation
L4 first eliminates the smaller opposing R3 and then loses to R5, exercising a two-level collision cascade while preserving survivor order.
02
Requirements (4)
- Use a stack oracle for one to 16 nonzero direction/magnitude flits, including arbitrary-depth collision cascades.
- Magnitude zero or a seventeenth flit predicts an error header with survivor_count zero.
- For a legal frame, require the header count to equal the ordered survivor queue length; an empty result has no data beats.
- Treat handshake assembly, header-before-data state, output beat checking, reset, and coverage as follow-up scoreboard work.
