|Verification Futures 2018 (click here to see full programme)
|Ed Jones, Compiler Engineer. Embecosm
|Lockstep Debugging for Software Verification
|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.
|Ed Jones has a background in parsing techniques and is part of Embecosm’s LLVM team. He specializes in runtime libraries, CGEN modeling, LLVM tool chains and testing.