In a fast moving market, software development is started long before a new chip is available. Testing will start with the architectural model of the chip, then move to implementation models of the chip, then real silicon. We need to ensure the software behaves identically on the model and the real hardware.
In this talk we’ll introduce lockstep debugging. The standard GNU Debugger (GDB) can control two targets running in lockstep. GDB talks to a server controlling the two targets, but reporting them to GDB as though they were a single target. The server verifies that at the completion of each instruction the state of the machine (registers, memory etc) is consistent on both targets. If there is a divergence, an exception is raised and GDB can be used to investigate why the divergence occurred.
We’ll present a case study based on a 36-core RISC-V chip. Lockstep debugging was used before silicon tape out with a CGEN reference model of the processor and a Verilator model of the implementation design. This approach ensures critical software will behave as expected on the actual chip.
- Pre-silicon testing
- Testing in lockstep
- Open source tools