Information and Software Technology - Software quality assurance
Proceedings of the Conference on The Future of Software Engineering
An axiomatic basis for computer programming
Communications of the ACM
Lessons Learned in Software Testing
Lessons Learned in Software Testing
An engineering environment for hardware/software co-simulation
Readings in hardware/software co-design
Verification of Transaction-Level SystemC models using RTL Testbenches
MEMOCODE '03 Proceedings of the First ACM and IEEE International Conference on Formal Methods and Models for Co-Design
The M5 Simulator: Modeling Networked Systems
IEEE Micro
A Survey of Unit Testing Practices
IEEE Software
QEMU, a fast and portable dynamic translator
ATEC '05 Proceedings of the annual conference on USENIX Annual Technical Conference
Transactional Memory, 2nd Edition
Transactional Memory, 2nd Edition
Hi-index | 0.00 |
Architectural simulator platforms are particularly complex and error-prone programs that aim to simulate all hardware details of a given target architecture. Development of a stable cycle-accurate architectural simulator can easily take several man-years. Discovering and fixing all visible errors in a simulator often requires significant effort, much higher than for writing the simulator code in the first place. In addition, there are no guarantees that all programming errors will be eliminated, no matter how much effort is put into testing and debugging. This paper presents dynamic runtime testing, a methodology for rapid development and accurate detection of functional bugs in architectural cycle-accurate simulators. Dynamic runtime testing consists of comparing an execution of a cycle-accurate simulator with an execution of a simple and functionally equivalent emulator. Dynamic runtime testing detects a possible functional error if there is a mismatch between the execution in the simulator and the emulator. Dynamic runtime testing provides a reliable and accurate verification of a simulator, during its entire development cycle, with very acceptable performance impact, and without requiring complex setup for the simulator execution. Based on our experience, dynamic testing reduced the simulator modification time from 12---18 person-months to only 3---4 person-months, while it only modestly reduced the simulator performance (in our case under 20 %).