RE: [sv-cc] Fixes needed for sv_dpi_user.h

From: Bassam Tabbara <bassam@novas.com>
Date: Mon Jan 17 2005 - 11:20:40 PST

Sorry for the delay in responding ... I added the "Bassam input" below :-)!
Thx Doug, how come we did not find these in previous runs (just a few weeks
back) ? Strange ... Anyway thx a lot for testing!

5. Should be: PLI_INT32 vpi_get_assertion_info (vpiHandle,
p_vpi_assertion_info);

6. You mean the "new" vpi_user.h ? It's not in current vpi_user.h in EDA
sims ... If it's there sure we can reuse ...

7a. OK, the routines were written with "currently in the market" vpi_user.h
with PROTO_PARAMS in mind. I guess we can take out if that's the new way if
needed ...

7b. Yes this is an oversight, it means to put the vpiType of the handle
(i.e. vpi_get(vpiType, handle)) ... so this correction would be to have:
PLI_INT32 /* vpiType */

** Section 30.12 in section 30 with the prototypes would need this same
change as well. But may be this is not a major issue there we can mark for
future fix. It's pseudocode at that place anyway ...

Thx.
-Bassam.

--
Dr. Bassam Tabbara
Architect, R&D
Novas Software, Inc.
(408) 467-7893
-----Original Message-----
From: owner-sv-cc@eda.org [mailto:owner-sv-cc@eda.org] On Behalf Of Warmke,
Doug
Sent: Friday, January 14, 2005 6:19 PM
To: sv-cc@eda.org; stuart@sutherland-hdl.com
Subject: [sv-cc] Fixes needed for sv_dpi_user.h
Hello Stu and SV-CC,
I put together a small testcase in which I included sv_vpi_user.h and tried
to get things to compile using gcc 3.2 on Linux.
There are a number of issues, as I mentioned previously.
Note that none of these problems appear to be introduced by the LRM editor.
I think all of them were there in the SV 3.1a draft, but went undetected.
In this report I do make suggestions for solutions on a number of issues,
but there are others for which I think others are better qualified to make
suggestions.
Bassam is a likely candidate for this :^) .
I filed Mantis #353 to track these issues.
A decision needs to be made about getting #353 through the process to the WG
and eventually onto the draft ballot.  Or perhaps postponed.
Thanks and regards,
Doug
1.  On line 29, we should use " " include file syntax to induce
    normal header file search rules.  The line should be changed to:
    #include "vpi_user.h"
2.  On line 34 there is a stray '}' character.  Delete the line.
3.  On lines 154 and 155, the following appear:
    #define vpiLhs                    711
    #define vpiRhs                    712
    These are already defined in vpi_user.h on lines 188
    and 193, respectively.  Should not be redefined here.
    Either new constants should be defined, or we should
    remove these definitions and simply make use of the
    ones in vpi_user.h.
4.  On lines 250 and 251, the following appear:
    #define vpiValid                  646
    #define vpiActive                 647
    These are already defined in vpi_user.h on lines 477
    and 457, respectively.  Should not be redefined here.
    Either new constants should be defined, or we should
    remove these definitions and simply make use of the
    ones in vpi_user.h.
5.  On line 424 the following appears:
    PLI_INT32 vpi_get_assertion_info (assert_handle, p_vpi_assertion_info);
    This is not a legitimate prototype, since type names
    are missing for the function's formal arguments.
    Type names need to be added.  Can someone propose the correct types?
6.  On line 464 the following appears:
    #define vpiMember               840 /* Member of a collection */
    This is already defined in vpi_user.h on line 216.
    A new constant should be defined, or we should delete this
    one and rely on the definition from vpi_user.h.
    On this one, and the other redundant constant definitions,
    we will introduce "holes" in the numbering system by doing
    deletions.  Should we compress the following constants into
    the holes?  I would suggest "yes", since it's not possible
    that anyone actually implemented this file yet, else we would
    surely have seen plenty of emails about the problems in here.
7.  There is a set of functions related to the data reader API
    between lines 486 and 514.  There are two types of problem
    in these functions.
     /* load extension form for the reader extension */
     PLI_INT32 vpi_load_extension PROTO_PARAMS((PLI_BYTE8 *extension_name,
                                                PLI_BYTE8 *name,
                                                vpiType mode, ...))
     
     PLI_INT32 vpi_close PROTO_PARAMS((PLI_INT32 tool,
                                       vpiType prop,
                                       PLI_BYTE8* name));
     
     PLI_INT32 vpi_load_init PROTO_PARAMS((vpiHandle objCollection,
                                           vpiHandle scope,
                                           PLI_INT32 level));
     
     PLI_INT32 vpi_load PROTO_PARAMS((vpiHandle h));
     
     PLI_INT32 vpi_unload PROTO_PARAMS((vpiHandle h));
     
     vpiHandle vpi_create PROTO_PARAMS((vpiType prop,
                                        vpiHandle h,
                                        vpiHandle obj));
     
     vpiHandle vpi_goto PROTO_PARAMS((vpiType prop,
                                      vpiHandle obj,
                                      p_vpi_time time_p,
                                      PLI_INT32 *ret_code));
7a. There is no definition for PROTO_PARAMS in sv_vpi_user.h.
    (Recall, vpi_user.h cleans up after itself).  We should
    simply remove the PROTO_PARAMS() construct from around
    these argument lists.  This construct is no longer needed
    for any compilers in current use by the EDA community,
    and this would be consistent with svdpi.h as well.
7b. The routines vpi_load_extension(), vpi_close(),
    vpi_create(), vpi_goto() all have a formal argument
    declared with type "vpiType".  However, vpiType is
    a simple integer constant (vpi_user.h, line 236):
     #define vpiType              1   /* type of object */
    A proper type should be used in these prototypes rather
    than vpiType.  I noticed that the same problem exists
    in various places in Section 30 of the 3.1a LRM.
    I don't know what kind of type to suggest.
 
Received on Mon Jan 17 11:20:54 2005

This archive was generated by hypermail 2.1.8 : Mon Jan 17 2005 - 11:21:06 PST