VLSI DV Interview Puzzles · All levels

intersect filter removes one tuple

Compute final cross percentage when one tuple is explicitly ignored via intersect.

Puzzle

Difficulty: Hard · Puzzle 4 of 6 · Topic: Cross Coverage Puzzles

Compute final cross percentage when one tuple is explicitly ignored via intersect.

Code

systemverilog
covergroup cg with function sample(bit [1:0] cmd, bit [1:0] resp);
  cp_cmd: coverpoint cmd {
    bins c[] = {[0:3]};
  }
  cp_resp: coverpoint resp {
    bins ok    = {0};
    bins retry = {1};
    bins err   = {2};
  }
  x_cmd_resp: cross cp_cmd, cp_resp {
    ignore_bins cmd0_err = binsof(cp_cmd) intersect {0} && binsof(cp_resp.err);
  }
endgroup

initial begin
  cg c = new();
  c.sample(0,0);
  c.sample(1,1);
  c.sample(2,2);
  c.sample(3,0);
  c.sample(0,2);
  c.sample(1,2);
end

Hint

Auto space is 4x3 before ignore. Then remove exactly one scored tuple.

Step-by-step solution

diagram
1) Base auto cross bins = 4 * 3 = 12.
2) ignore_bins removes tuple (cmd=0,resp=err), so scored denominator = 11.
3) Hit scored tuples are (0,ok), (1,retry), (2,err), (3,ok), (1,err) -> 5 bins.
4) sample(0,2) is ignored and does not count.
5) Coverage = 5/11 = 45.45%.

Answer

Answer: Scored bins = 11 and achieved coverage = 45.45%.

Why candidates get it wrong

Candidates often subtract ignored hits from numerator but forget to subtract ignored tuples from denominator.

Interviewer follow-up

How many additional unique scored tuples are needed to cross 80%?

Related topics