for Efficient Test Configuration and Stimulus Jonathan Bromley, Kevin Johnston Agenda • Introduction to pairwise/N-wise test generation • Using our SystemVerilog N-wise implementation • Performance concerns, additional features • Application suggestions • Wrap-up
• ideally, full coverage on each • Not enough project time! • In practice, only a few configurations tested fully • choose important configs (lead customer?) Major concern for IP authors/vendors
Why Pairwise? • Testing every parameter value F1 00 F2 00 F3 00 F4 F5 0 0 is easy but not so useful 01 01 01 1 1 – only 4 tests cover every value of 10 10 10 0 0 each parameter in isolation 11 11 00 1 1
Bugs are often triggered by
Observation: interaction of two values • Test every combination of pairs parameter pair F2,F3: F1×F1 F2×F1 F3×F1 Total of 88 value-pairs F4×F1 12 possible F5×F1 values F1×F2 16 F2×F2 F3×F2 F4×F2 F5×F2 F1×F3 12 F2×F3 12 F3×F3 F4×F3 parameter pair F4,F5: F5×F3 F1×F4 8 F2×F4 8 F3×F4 6 F4×F4 4 possible values F5×F4 F1×F5 8 F2×F5 8 F3×F5 6 F4×F5 4 F5×F5
Under the Hood class C extends Nwise_base; class Nwise_base ... ... ... Generation algorithms work on this array – ... no direct interaction with user variables ... ... 0 1 2 3 ... __nwise_value_proxy ... Macro-generated ... equality constraints ... == == `NWISE_BEGIN(C) == == `NWISE_VAR_INT( bit[1:0], A ) `NWISE_VAR_INT_ARRAY( bit, B, 3 ) constraint user_c { A B B[2] -> (A != 0) 0 1 2 } All user constraints ... honored by generation
Performance • Pairwise efficiency (test compression) – currently within ~15%-30% of best available, ~10% of PICT Problem space Number of patterns for pairwise coverage cardinality params our tool PICT best available 2 100 16 15 10 3 13 20 18 15 10 20 230 210 180 Runtime on VCS H-2013.06 (64-bit Linux, modest x86 server) data from ref [2] in our paper • insignificant on small problems • for N-wise, scales as cardinality 2N×params 4 • ~7 seconds for 2100 example
Additional Features, Future Work • API improvements – include required patterns in the set e.g. key early customer configuration Details will be influenced by – higher-order Nwise for selected parameters real-world e.g. pairwise, but 3-wise for some critical params experience
– incremental pattern generation for fast
startup • Ongoing work on performance, capacity • Support variable-size arrays