Suppose that I have a block whose input is a 8 bit wide request bus (called req_chnls) which carry requests from 8 sources. Also there is an internal signal called ‘cursor’ which can take any value from 0 to 7. Now lets assume that out of the 8 possible requests in the ‘req_chnls’ signal, requests 7,6,3,2,1 and 0 are asserted. The functionality of the block is that, out of the asserted (active) requests it will allow ONLY one of them to pass and the one that passes is the one closest and immediately above the cursor. For instance lets assume cursor is at 5 then out of the asserted requests (viz 7,6,3,2,1,0) the one that is closest and above (6 in this example) will be selected as the output.
How can verify this functionality solely using assertions. How will those properties look line?
Hi Ben thanks for this input.
I was wondering if there is some restriction on the usage of task based verification methodology. I mean can this be applied when we use formal tools as well or is this meant for simulation based verification using uvm? Thanks
I believe that it is for simulation. You can use immediate assertion at the final stage to flag the final test condition.
Check with vendors.
Notesb 1) the task allows you to declare local variables, loops, case and if statements, sequences (adding @(posedge clk), SV system functions (e. G., countonesl
2) once you get that going, you may be able to convert some of that into a set of concurrent assertions. I say that because you’ll have a better understanding of the requirements. In SVA you can call functions, probably derived from your work on the task method for verification.
Ben systemverilog.us