Re: Extended VCD documents (lsi_dumpports)

From: Steven Sharp (sharp@cadence.com)
Date: Fri Sep 03 1999 - 13:30:10 PDT


This is feedback from the implementor who worked on $lsi_dumpports. I would
suggest that the standard be modified to match the existing implementation
if doing so would not remove a significant capability. The page numbers
cited appear to be from an earlier draft than draft 3.

-------------------------------------------------------------------------
Here is my review of the enhance VCD formally known as
$lsi_dumpports.

    --David

The IEEE definition is incompatable with the present Cadence
implementation. Cadence's implementation treats each port in the
module definition as a unique port, the IEEE spec will break a port
expression up if found. Along with the expression processing the port
size field has been replaced with a part select reference. For
example:

 1) module foo(a,b);
       output [3:0] a;
       input [4:1] b;

     CADENCE:
       $var port 4 <0 a $end
       $var port 4 <1 b $end

     IEEE
       $var port [3:0] <0 a $end
       $var port [4:1] <1 b $end

<p> 2) module foo(.bar({a,b}), c);
       output [3:0] a;
       output [4:1] b;
       input [7:0] c;

     CADENCE:
       $var port 8 <0 bar $end
       $var port 8 <1 c $end

     IEEE
       $var port [3:0] <0 a $end
       $var port [4:1] <1 b $end
       $var port [7:0] <2 c $end

<p> 3) module foo(.bar1(a[3:2]), .bar2(a[1:0], b);
       output [3:0] a;
       input [4:1] b;

     CADENCE:
       $var port 2 <0 bar1 $end
       $var port 2 <1 bar2 $end
       $var port 4 <2 b $end

     IEEE
       ERROR message reporting unsupport port construct. or something
       like:

       
       $var port [3:0] <0 a $end
       $var port [4:1] <2 b $end

 4) module foo(.bar1({a[1:0],a[3:2]}), b);
       output [3:0] a;
       input [4:1] b;

     CADENCE:
       $var port 4 <0 bar1 $end
       $var port 4 <1 b $end

     IEEE
       ERROR message reporting unsupport port construct. or something
       like:
       
       $var port [3:0] <0 a $end
       $var port [4:1] <2 b $end

<p>Some rework to the existing Cadence $dumpports would be required. The
list of modifications follows:

  ) Add support for multiple scopes to the same dumpfile.
  ) Add support to tie different dumpport call together via file name.
  ) Update code and documentation to match the new port format.
  ) IEEE has a caveat about strong/weak collisions that Cadence does
     not have. See 3rd if statement on page 226. Supporting this is
     not a big deal. Nor should it break any customers. NOTE: this
     caveat (in my opinion) is unnecessary and comes PURELY from LSI.
  ) New routines need to be created:
       $dumpportsof, $dumpportson, $dumpportsall, $dumpportslimit

PROBLEMS with the IEEE spec:

  ) The description of the part select issue is vague and not useful.
  ) The use of the keyword "index" is wrong should this be msb_index
     and lsb_index.
  ) There is no discussion on what to do with out-of-module drivers.

       ie: assign out = top.some.thing.x;
            assign top.dut.out = b;

     where does the driver exist? in the scope that contains the
     statement or the scope of the object being driven?
  ) There no description of how to deal with forces.
  ) Examples need to be made for cases 3 & 4. Please note the IEEE
     output may no longer be consistent with the modules defintion.
  ) The example on the bottom of page 224 is wrong.

   
------------- End Forwarded Message -------------



This archive was generated by hypermail 2.1.4 : Mon Jul 08 2002 - 12:53:29 PDT and
sponsored by Boyd Technology, Inc.