RE: [sv-cc] mantis 1503

From: Jim Vellenga <vellenga_at_.....>
Date: Mon Dec 17 2007 - 08:08:55 PST
Bassam and Lisa,

Now that I've started actually looking at the proposal, I have some 
concerns.

I think that unfortunately when we included VPI support for assertions 
as part of IEEE Std 1800-2005, none of us were really familiar both 
with assertions and with the basic approaches of VPI, nor did we have 
time to learn.  So we wound up with some inconsistencies.  Now would be 
a good time to clean those up.

1. vpiDefFile and vpiDefLineNo

The proposal is trying to clarify what vpiDefFile and vpiDefLineNo mean 
for assertion related constructs, but I'm having a hard time 
understanding why they're there in the first place.

Back in the old days, the VPI model failed to distinguish between 
definitions and instances of models, or between declarations and 
instances of nets and variables.  Cadence already has clients for which 
this is a problem.  Be that as it may, in other cases we have separated 
function calls from function declarations, task calls from task 
declarations, and soon (I hope) class defns from class specializations.

Once we make such a separation, as the API model has already done for 
properties and sequences, then there is no reason to have a separate 
vpiDef<whatever>.  One simply obtains the decl from the inst, and gets 
the file and line info from the decl directly.

For this reason, rather than clarifying that vpiLineNo and vpiFile for 
a property decl mean the same thing as vpiDefLineNo and vpiDefFile, I 
would prefer to deprecate the latter properties altogether.  I also 
would remove them from property insts, and not add them to sequence 
insts at all, since one can get the information from the corresponding 
decls.

Finally, I don't know enough about the concurrent assertions to know 
what vpiDefFile and vpiDefLineNo refer to for them.  The vpiLineNo and 
vpiFile properties are enough to indicate where the assertions 
themselves are.  Is there a separate definition somewhere?

2. Handles for assertions in assertion callbacks

In the descriptions of individual callbacks, there are a whole buncha 
statements saying "This does not apply to property or sequence 
instances."  This is confusing for two reasons:

(a) It's not clear what "This" refers to.  It seems most likely to mean 
that you can't apply the particular callback to a property inst or 
sequence inst, but it could instead refer to the described action not 
happening.

(b) In a standard in general, it would be better to say what the 
callbacks do apply to rather than what they do not.

Could I suggest instead adding a paragraph following the descriptions 
that says something more precise, such as:

"Each of these callbacks may be registered on either a concurrent 
assertion (See 36.43) or an immediate assert (See 36.<whatever>).  The 
cbAssertionStart, cbAssertionSuccess, and cbAssertionFailure callbacks 
may also be applied to a sequence inst (See 36.47) or property inst 
(See 36.48)."

Does that in fact accurately describe what's possible?

3.  The canonical decompiler application

This is probably outside the scope of the present proposal, but one of 
the canonical applications that we keep testing the VPI object model 
against is the decompiler application.  Can we reconstruct an 
equivalent form of the source code using our existing constructs?

It appears to me that this is not the case for a property decl or 
sequence decl.

-- You can't get to a property decl unless you get there via a property 
inst.  So if the source declares a property but doesn't create an 
instance of it anywhere, the decompiler cannot find that property decl.

-- Even if an instance exists, you can't tell what scope the property 
declation occurs in.  It could be the immediate scope of the instance 
or any superior scope.

-- You can't iterate over the variables declared in the property 
declaration.

The same is true, of course, for sequence declarations.

These shortcomings should (eventually) be remedied.  For example, we 
could add an iteration from scopes to, say, a vpiAssertionDecl that 
would comprise both property decls and sequence decls.  And one could 
fairly easily add an iteration to the variables declared in either 
form.  Or perhaps, property decls and sequence decls could be added as 
scopes to the diagram in "36.11 Scope," with enough details added to 
indicate any limitations.

I hope this is helpful.

Regards,
Jim Vellenga

--------------------------------------------------------- 
James H. Vellenga                            978-262-6381 
Software Architect                     (FAX) 978-262-6636 
Cadence Design Systems, Inc.         vellenga@cadence.com 
270 Billerica Rd
Chelmsford, MA 01824-4179
"We all work with partial information." 
----------------------------------------------------------  

]-----Original Message-----
]From: owner-sv-cc@eda.org [mailto:owner-sv-cc@eda.org] On 
]Behalf Of John Havlicek
]Sent: Thursday, December 13, 2007 9:45 AM
]To: sv-cc@eda.org
]Cc: sv-ac@eda.org
]Subject: [sv-cc] mantis 1503
]
]Hi SV-CC:
]
]SV-AC passed the proposal for 1503 (VPI diagram of propertyinst has no
]vpiArgument).  This proposal should now be reviewed and modified or
]approved by SV-CC.
]
]Best regards,
]
]John H.
]
]-- 
]This message has been scanned for viruses and
]dangerous content by MailScanner, and is
]believed to be clean.
]
]

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Mon Dec 17 08:09:28 2007

This archive was generated by hypermail 2.1.8 : Mon Dec 17 2007 - 08:10:08 PST