Chaining and Biasing: Test Generation Techniques for Shared-Memory Verification

IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems(2020)

引用 7|浏览35
暂无评分
摘要
Since non-deterministic behavior is key to exposing shared-memory errors, non-synchronized parallel programs are often used for verification and test of multicore chips. In the verification phase, however, the slow execution in a simulator requires non-conventional constraints for enabling error exposure with shorter programs. This article proposes two novel techniques that build upon conventional random test generation for efficient shared-memory verification. The first technique exploits canonical dependence chains for constraining the random generation of instruction sequences so that the races induced at runtime are likely to raise the coverage of state transitions due to memory events conflicting at a same shared location. The second one exploits address space constraints for biasing random address assignment so that the competition of distinct shared locations for a same cache set can be controlled for raising the coverage of state transitions due to eviction events. We built generators relying on each of the proposed techniques, as well as on their combination, and we compared them to a conventional constrained random test generator for 8, 16, and 32-core architectures. Each of the four generators synthesized 1200 distinct test programs for verifying 10 faulty designs derived from each of the three architectures (144000 verification runs in total). For 32-core designs, the combination of the proposed techniques made at least 50% of the generation space capable of exposing errors, improved the median functional coverage by 44% and 83% at the two highest hierarchical levels, and reduced the average verification effort by one order of magnitude in many cases.
更多
查看译文
关键词
Instruction sets,Test pattern generators,Generators,Coherence,Protocols,Runtime
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要