( ESNUG 478 Item 9 ) -------------------------------------------- [12/18/08]

Subject: ( ESNUG 477 #3 ) Using Calypto SLEC in a CatapultC design flow

> After C code is actually synthesized to Verilog RTL code.  Here we can
> automatically verify the RTL against the original algorithm source.


From: Duncan Mackay <dmackay=user domain=calypto not calm>

Hi, John,

In addition to CatapultC's built-in SystemC simulation flow (which is
called "SCVerify" that runs in QuestSim or NC-Sim), for the formal part
you can use Calypto's Sequential-Logic Equivalency Checking SLEC tool.
Both are automated "push-button" processes inside CatC.

Here are step-by-step on the Catapult-Calypto verification process:

1. At any time during your Catapult C design cycle, you can enable the SLEC
   integrated flow by double-clicking on the SLEC icon in the Flow Manager
   pane of the Catapult GUI or typing "flow package require /SLEC" at the
   command line.  This will bring up a window asking if you want to enable
   the flow.  Click Yes.

2. Once you have enabled the flow, Catapult will bring up an options dialog
   to help configure how Catapult will generate the files necessary for
   formal verification with SLEC.  More on these options later - just click
   OK for now.

3. When CatC generates the final RTL netlist, it will also automatically
   generate three files necessary for SLEC:

      - a SystemC wrapper around the original C++ code that was used
        as the input to Catapult Synthesis,
      - a VHDL or Verilog wrapper for the Catapult generated RTL netlist,
      - and a TCL command script for SLEC.

   You will see these files show up in the Catapult GUI under the folder
   named Project Files -> Solution -> Verification -> SLEC.

4. Next, invoke SLEC on the design by double-clicking on the appropriate
   "SLEC verification of ... RTL output" TCL script icon (there is one for
   each netlist format, VHDL and Verilog) or by typing (for VHDL):

      "flow run /SLEC/launch_cmds SLEC_compile_rtl_vhdl.tcl . -batch"

   or (for Verilog)

      "flow run /SLEC/launch_cmds SLEC_compile_rtl_v.tcl . -batch"

   You will see SLEC running in the Catapult transcript window.

5. When SLEC finishes, it'll report the number of proofs and falsifications
   in the transcript window.  All of the reports and logfiles created by
   SLEC are also placed in the Catapult GUI under the TCL script icon that
   you double-clicked in step 4.

6. Double-click on the "SLEC VHDL Verification Logfile" (or "SLEC Verilog
   Verification Logfile" if you use Verilog) in the Catapult GUI to view
   the results.

If a falsification is reported by SLEC, the tool generates VCD waveforms and
makefiles/testbenches to run on ModelSim/NC-Sim/VCS to demonstrate the
falsification.  From the Catapult GUI you can double-click on the waveforms
to launch the waveform viewer in ModelSim.

SLEC also produces consistency check reports on both the C++ and the RTL
which the user can use to make your code cleaner.  In particular, SLEC helps
to identify cases where the semantics of the input design were ambiguous for
synthesis (such as an uninitialized variable, shifting by a negative number
or out of bounds array access) resulting in C and RTL that do not match.  If
you are new to designing hardware with C++ you might fall into some of these
cases.  SLEC helps find such ambiguities for a more fully specified design.

    - Duncan Mackay
      Calypto                                    Santa Clara, CA
Index    Next->Item








   
 Sign up for the DeepChip newsletter.
Email
 Read what EDA tool users really think.


Feedback About Wiretaps ESNUGs SIGN UP! Downloads Trip Reports Advertise

"Relax. This is a discussion. Anything said here is just one engineer's opinion. Email in your dissenting letter and it'll be published, too."
This Web Site Is Modified Every 2-3 Days
Copyright 1991-2024 John Cooley.  All Rights Reserved.
| Contact John Cooley | Webmaster | Legal | Feedback Form |

   !!!     "It's not a BUG,
  /o o\  /  it's a FEATURE!"
 (  >  )
  \ - / 
  _] [_     (jcooley 1991)