There are several ways that Incisive Formal Verifier (IFV) can be set to evaluate properties in parallel. The bottom line is that customers using these “productivity flows” have been dramatically increasing their verification throughput – turning days into hours, and hours into minutes. In one customer case, what had been a 6 day run came in under 4 hours using this capability – a throughput improvement of 36X! This is post is all about how you can reproduce these same substantial results in your environment.Productivity Flows Overview
There are three formal verification productivity flows supported:· “Performance”: run assertions in parallel to increase wall clock run time performance.· “Case Splitting”: split a large assertion or problem into many parts to solve separately, and then bring the result back together to increase bug hunting effectiveness and efficiency. · “Regression”: easily manage multiple runs of parallel assertions, cases, or other runs in a centralized manner, making it easy to reuse regression and share regressions within your team. While each flow is available today, this article is going to focus on the “Performance” use case. Again, the goal of the this flow is to parallelize evaluation of all your assertions over multiple CPUs via the new “Assertion Distributor” capability in IFV. Hence, given Assertion A, B, and C: Assertion A is now run on one CPU, Assertion B evaluated using another CPU, and Assertion C runs on a third CPU, all at the same time. The results are fed into a database and displayed in a single GUI, where the run time is now reduced to the time it takes to process your longest assertion (and not the sum of the run times to process each assertion). Here is how it works in practice:Specifically, the Assertion Distributor is activated via a new button on the IFV GUI, which leverages the Desktop Manager component of IFV under-the-hood to manage and execute parallel assertion runs and analyze results. And in turn, Desktop Manager uses your compute farm infrastructure tool – whether it’s LSF, SunGrid, LoadLeveler, or home grown – to physically execute all the compute jobs. Step-by-step:
Note: While in this example 74 different jobs were created and run, the results are rolled up and displayed to look like they were all executed in a single run.
Also note that there is an easy way to add these runs into a regression environment: simply save / reuse the Desktop Manager .vsif file for later runs invoked with the supplied if_vm launch script exactly as outlined above. To learn more, customers with accounts at http://support.cadence.com can view the “See-it-Live” video for the Assertion Distributor.
Additionally, this process is documented in Chapter 14 of the Incisive Formal Verifier User Guide. Happy parallelizing!Team Verify
On Twitter: http://twitter.com/teamverify, @teamverify