Thursday, April 1, 2010

Conformal tutorial to run it


Conformal Logic Equivalence Checking (LEC)

This tutorial provides a quick getting-strated guide to Cadence Conformal logic equivalence checking. The basic flow is to input both an RTL netlist and a synthesized netlist and then have Conformal check whether both netlists are equal. Think of it as an LVS for Verilog. This is a powerful tool to get a formal proof that the output from Synthesis matches the original RTL code without having to run simulation.


The following files are used in this tutorial:

* nrd.v: The RTL netlist
* nrd.mapped.v: The gate level netlist
* cells.v: Primitive cells
* lec.do: Conformal script

(Note: The file "cells.v" is identical to the verilog simulation files in the OSU cell library, except for the DFFSR cells, which required a small modification to work with Conformal)
Starting Conformal

To start the tool, type

lec

at the command prompt. The main window will look as follows:
Reading the RTL netlist

First we read in the original RTL netlist. This will be considered as the "golden" design. It will serve as the reference for the comparison. Click on "File -> Read Design". Double-click on "nrd.v". Also note that "Type" is set to "Golden", which is correct. Load the file by clicking "OK". The dialog should look like this:
Reading the Gate-level Netlist

Next we read in the synthesized gate-level netlist. This will be called the "Revised" design. We created this by using some tool and now we want to check if it is still equal to the "golden" design.

Since this design contains standard cells we also need to read in a file with the cell definitions. Click on "File -> Read Library" and double-click on "cells.v". Then change the type from "Both" to "Revised" since the cells are only used in the Revised design. This should look as follows:

Now that the cells are loaded we can bring in the netlist. Do "File -> Read Design" and double-click on "nrd.mapped.v". Note that Conformal changed the "Type" for us to "Revised". The window should look like this:
Running the Comparison

Conformal has 2 operating modes: "Setup" and "LEC". So far we worked in "Setup" mode, where we input designs and setup pin mappings if we needed to. Now we switch to "LEC" mode. Click on the "LEC" icon the upper right hand corner. The window should look like this:

Note the table that was printed. It lists the primary inputs (PI) and primary outputs (PO) in both the revised and golden design. They are equal, which is a good sign. There could be a difference, e.g. if the revised design had differential outputs. Conformal has commands to specify those conditions.

The final step is to do "Run -> Compare" and to hit "OK". Now Conformal will reduce both designs to a canonical representation and check if they are equal. Or more precise, if all outputs compute the same Boolean expressions. In our example Conformal shows that all 18 outputs are equivalent. So we know that both netlists are equal.
Schematic view

A handy feature in Conformal is to view a schematic both netlists. This can be helpful in debugging. In the "Revised" column, click with the right mouse button on "nrd" and select "Schematic". It should look as follows:

Similarly, we can get a schematic of the golden design:
Conclusion

This short tutorial showed how to start Conformal, how to read in a golden and a revised design and how to prove that they are identical.

All steps can also be coded in a script and run on the command line:

lec -nogui -do lec.do


http://www10.edacafe.com/goto.php?encode_url=aHR0cDovL3d3dy5jaGlwdGFsay5vcmcvbW9kdWxlcy93ZnNlY3Rpb24vYXJ0aWNsZS5waHA/YXJ0aWNsZWlkPTM= view this link for more details

No comments: