Talked to lots of people at ARM TechCon 2016 about the new PinDown feature: automatic debug down to the exact code line.

 

PinDown 4.2, available now, introduces line granularity . PinDown 4.2 can debug regression failures down to the exact line within a commit.

An Example
In the example bug report below, several lines were updated in the file called vscale_alu.v. PinDown groups these updates into 3 chunks of code (a chunk may be a sub-set of a line or several lines of code) and manages to narrow down the problem to one chunk, which is the line highlighted in the bug report. In this example (where we have added bugs to V-scale, a RISC-V processor from UC Berkeley) it turns out to be a bad idea to register the input signals to the ALU.

Fig 1. PinDown 4.2. Bug Report with Line Granularity

Debugging with line granularity takes you all the way to the code line (or lines) which is causing the test to fail.

New Command
Debug granularity is a trade-off between performance and precision. It can be controlled by a new command called set_debug_granularity. It can be set to commits, files or lines.

Demo
To see line granularity in action please check out this new demo.

 

PinDown 4.1, available now, introduces better precision during debug of regression test failures. PinDown 4.1 can point out, not only which commit or combination of commits that made a test fail, but also which file within that commit that is causing the test to fail. We call this file granularity. This is useful for large commits, e.g. when two branches are merged.

An Example
In the example bug report below a total of 124 files were committed at the same time by Praveen when he merged the development branch into the main trunk of the revision control system. This caused one test to fail (alu_ops_seed_14829533). With file granularity PinDown is able to narrow down which of these 124 files that caused the test to fail. And because it was able to narrow down the problem this much it was able to show the bad code changes directly in the bug report.

This is much more useful than stopping the debug at the commit and simply reporting that something within this commit of 124 files has caused an issue.

 

Fig 1. PinDown 4.1. Bug Report

 

New Command
Debug granularity is a trade-off between performance and precision. It can be controlled by a new command called set_debug_granularity.

Next Step - Line Granularity
We are not stopping at file granularity. Before the end of this year we will release a new version of PinDown supporting the ultimate goal for debugging: line granularity. This means PinDown will be able to narrow down the problem to a few lines within large files.