[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA-user: Assertion based verification using VCD and VHDL
On Sunday 02 May 2004 11:18 am, Samuel A. Falvo II wrote:
> On Sunday 02 May 2004 07:48 am, Tom Hawkins wrote:
> > There are two formal methods to prove correctness of a low-level
> > netlist; they are static timing analysis (STA) and equivalence
> > checking (EC). Unfortunately there are no open-source STA or EC
> > tools. :-( If you can afford STA and EC (I recommend
> > Conformal), you'll never have to run a digital gate-level sim
> > again.
>
> What would be involved with the creation of such tools? Where can
> one learn more about them? As someone who is working on a digital
> design project using Icarus Verilog, would something like this kind
> of tool be useful to me? If so, maybe I can offer my time to kill
> two birds with one stone.
STA, and path analysis in general, is much easier to solve than
equivalence checking. STA is a fairily linear algorithm; it involves
traversing each path between registers, accumulating delay values for
each combinatorial element. Constraints dictate acceptable delays on
each path (multi-cycle paths, false paths). The latest trend in EDA
is automatic timing constraint generation (FishTail), and timing
constraint checking (RealIntent, Verplex). These problems are also
fairily easy.
Equivalence checking is much harder. The basic technique involves
matching state registers between two designs, then proving the
combinatorial logic cones are equivalent by way of BDDs, SAT, and
other tricks.
The biggest hurdle is we (the open-source EDA community) don't have a
standard netlist format to represent RTL and gate-level. When ever
someone starts to write a new tool, they get lost in building a
Verilog parser. Wouldn't it be cool to have an XML standardized
netlist format? It would be the perfect starting point for a wide
range of tools including:
- STA
- Equivalence checking
- FPGA synthesis
- Code generation
- Logic optimization
- Model checking
- and so on...
>
> The problem is, I only have a very tenuous level of experience with
> *software* formal methods; though, I would like to learn more about
> formal methods in general. I believe it was Knuth who once said of
> a piece of code, "Beware: I have not tested this code, but merely
> have proven it."
One of my favorites:
"Program testing can be used to show the presence of bugs, but never
to show their absence." -- Dijkstra
--
Tom Hawkins
Launchbird Design Systems, Inc.
Home of the Confluence Logic Design Language
http://www.launchbird.com/