Subject: [sv-bc] Minutes from 14 November 2003 Face-to-face meeting.
From: David W. Smith (David.Smith@synopsys.com)
Date: Sun Nov 16 2003 - 10:15:56 PST
SystemVerilog Face-to-face
14 November 2003
Minutes
Attendees:
Alec Stancelescu
Arif Samad
Avinash Mani
Brad Pierce
Cliff Cummings
David Smith
Dennis Brophy
Doug Warmke
Erich Marschner
Jay Lawrence
Joao Geada
Karen Pieper
Mehdi Mohtashemi
Neil Korpusik
Nikil Rishiyur
Peter Flake
Ray Ryan
Stu Sutherland
Surrendra Dudani
Swapnajit Mittra
Tarak Parikh
Vassilios Gerousis
Action Items:
Create AI within SV-EC to look at the assume proposal.
Add Errata in SV-EC to deal with implication.
Coordinate issue of $inset vs inside to SV-AC and SV-BC
Committee status review:
1. SV-BC - Karen Pieper
Review of slides
2. SV-AC - Arif Samad
Review of slides
3. SV-CC - Swapnajit Mittra
Review of slides
4. SV-EC - David Smith
Review of slides
Erich: Is the lifetime of automatic variables in fork..join being
reconciled with the handling of automatic variables within a
sequence. This is the same problem.
Jay: It is not clear that this is the same. We should discuss this
to see if it is the same.
David: We will look to see if the solutions are consistent (and should
be consistent).
Special Topic Technical Presentations
SV-CC Donations: Swapnajit Mittra
VCD API
Jay: Is it really reader for VCD files or a database?
Bassam: It is to a database.
Jay: Then we should not call it a VCD interface. We should call it
a data API.
Peter: It is really just a trace interface.
Doug: I would agree with that.
Jay: Let's put it into the database that way.
VPI Extension
Exported Task
Packages and Separate Compilation: David Smith
Questions due to lack of precision in slides (mostly from Erich
Marschner). David requested that the actual language in the
accepted proposal be similarly scrutinized to make sure the
language is precise.
Stu raised the issue of limiting the compilation-unit scope to just
supporting the import statement.
Dave Rich indicated that once we allowed the import we should just
allow the declaration.
David indicated that, after reviewing the usage of both SV 3.0/3.1 and
Superlog, the majority uses of $root was for accessing a rooted
hierarchical reference and providing a global declarations scope
similar to the compilation-unit scope (the actual use of $root as
part of a hierarchical reference to items declared in the
compilation-unit scope was limited). For backward compatability
it is important to continue to provide this feature in some
fashion.
SVA Assumptions: Surrendra Dudani
Alec: Difference between assert and assumption is that assumption uses
variables used outside scope of circuit being tested?
Surrendra: No difference except assumptions refer to environment.
For formal tools the inputs are not connected.
Erich: It is up to the tool creator about using assertions or
assumptions. Why is there a need to distinguish between the dist
and inside operator? Why not a single operator?
Surrendra: In the property just use a dist. If using as an assertions it
is changed to inside.
Nikhil: A question related to assert vs. assume. What in this states
that the assume is related to environment?
Erich: There is no semantic requirement to have both but different tools
use them.
Jay: In the constraint block we do not allow sequences.
Arturo: This iws what will be provided here.
Jay: We are now adding temporal semantics to the constraints?
Arturo: Yes.
Jay: This will be required by users. Deadend states will be a problem.
This makes the implication discussion more important and also
using sequences in constraints.
Tarak You said they are sequential constraints and the become boolean
constraints?
Surrendra: They are transformed. Example on next page.
Jay: for the example of using sequential constraints to be correct
the properties pA and pB need to be declared within the class.
Erich: In slide 11 in the class use of constraint are you limited to
having only one constraint within the class? Is the example
equivalent to having to constraints, one for each property?
Jay: You can have multiple constraints.
Surrendra: The would be the same.
Tarak First time you call randomize the properties advance.
Surrendra: You have to randomize this correctly just like boolean
constraints. You have to make sure that it is done in the correct
order at the correct time.
Jay: Is there any provision for overlapping semantics? What happens
if X goes hi again? Property pA starts when X goes high (which is
randomized). If there is another variable q are we going to
handle the overlap?
Joao: Semantically the first call to randomize starts a process. You
have to hold the constraints. Until it is complete a call
to randomize does not do anything.
Arturo: That is not what he is saying. You call it at the correct time.
Jay: What is the status for this?
Arif: The proposal is under consideration.
Erich: Joao's suggestion makes a lot of sense.
Jay: We need to look at this in the SV-EC as well.
Erich: Slide 14: It looks like this is a deterministic implementation.
This means that you do not intend to support overlapping
sequential constraints.
Tarak Slide 16: If you say that this is being solved bi-directionally
then you cannot set Y to 1 since it violates the constraint.
Jay: Only if you do a full-reachability analysis. We do not want to
do this in the language.
Functional Coverage presentation: Arturo Salz
Erich: What are the units of the denominator?
Arturo: The denominator is the possible state space.
Doug: Why not use if instead of iff?
Jay: Using if would lead a user to expect to be able to specify an else
clause.
Nikhil: The set of values are always integral?
Arturo: Yes.
Erich: Is there an implicit requirement that values are not overlapping?
Arturo: No.
Neil: The slide says multiple bins per value. Is this correct?
Arturo: That is not correct. The slide is wrong.
Doug: If you do not use default then what happens?
Arturo: The values are not counted.
Dave: How do you guarantee that you have not counted something false?
Erich: There does not seem to be a way to prevent overcounting?
Jay: Because of allowing overlap there is no way to restrict.
Arturo: A post-processor can indicate this.
Erich: The {1:8} is a non-deterministic representation of state.
Arturo: It is supposed to be [] in both cases on slide 12.
Erich: This non-determinism shows up in many cases.
Arturo: Why is this non-determinism?
Erich: There is already a syntax for this.
Arturo: We have an operator for this in constraints.
Jay: The same semantics should use the same syntax.
Arturo: Agreed.
Jay: Do you need parenthesis on the bins for t[] on slide 13?
Arturo: Correct.
Nikhil: Can we use assertions to detect transitions and count the
result.
Arturo: You would have to define this.
Jay: That was my first thought. The difference is that these are not
expressions but little values. You would write a much different
thing.
Arturo: You would have to add a lot of syntax.
Jay: With the proposal for triggering on sequences being complete
the result could be counted.
Arturo: I do not have a mechanism to access the variables in the
sequence.
Jay: Relating the assumptions, assertions, constraint, and coverage
stuff is important.
Tarak: How do you define default for expressions? Default sequence
means none of the sequences match?
Arturo: Correct. Mostly useful for simple pairs of transitions.
Cliff: If I put [] after bad you can generate a huge number of bins.
Arturo: We can be clever based on knowing the size of the state space.
Erich: The use of wildcard keyword just allows the ? to be interpreted
as a wildcard?
Arturo: Correct.
Joao: If the data contains an x then what happens?
Arturo: It is thrown out. It use to be handled that way but we were
beat up.
Jay: It might be interesting to allow casez or casex where wildcard
as well.
Arturo: This is plausible.
Karen: What about wildcardz and wildcardx?
Arturo: It was considered but not high enough value.
Erich: Can you also control the number of bits in the bin counters?
Arturo: There is a min count not a max count.
Erich: That is a goal. Is there something that says after you get to a
specific count that it is enough? You have taken pain to specify
the number of bins. You could also specify the size of the counter
for the bin.
Arturo: They are currently limited to 32 bits.
Erich: Do they wrap around?
Arturo: Probably. You do have to handle overflow. An upper limit might
be a good point.
Page 16:
Erich: What you want is to allow the use to vary the bin size and not
have to go to two places (two different statements).
Arturo: Typically the autobinning handles this.
Erich: If you decouple bins from value hits it will adapt better. What
you mean is ignore the values. Build an exclusion mechanism as
part of the specification.
Arturo: It seems you are suggesting a change in the keyword.
Neil: It is ignoring the set of values not the bin.
Joao: The meaning is not at issue. If there is a bin that includes
the value is its specification the ignore_bins will specify that
the value will have a count of 0.
Erich: So, the issue is the syntax. exlude_values or something else
might be better than ignore_bins.
Page 17:
Erich: Why not use assertions in the cover group?
Joao: Users have always wanted to say never hit this.
Dave: This was because assertions are not available.
Joao: This is much simpler than writing an assertion.
Dave: These coverpoints are available outside of the covergroup.
Arturo: You cannot access the bins. If you will allow for it then the
user will have to write lots of code. There is also a syntactical
access issue for transitions. And users have not wanted this. Vera
had it but no one used it.
Page 21:
Erich: What does intersect mean.
Arturo: It means that it selects only bins that intersect the range
specified.
Erich: This is not intersection it is not overlapping.
Arturo: This is to reuse a keyword.
Erich: This is not set intersection.
Arturo: Correct.
Mehdi: Cross only crosses coverpoints so you cannot have a cross of a
cross.
Arturo: Correct. You can have an n-dimensional cross. A cross is not
a coverpoint. The only operation on a cross is to "print it out".
Page 23:
Doug: Do the arguments have to be elaboration time constants?
Arturo: No.
Nikhil: Why use the ref?
Arturo: Because you want to measure the changing value of ra not the
initial value.
Jay: It is pass by value by default.
Dave: So if you pass low as a ref you could change it during run?
Arturo: No. The space is computed at instantiation time.
Jay: We discussed allowing constraints to be parameterized as well.
It is almost like the sequence stuff where macro expansion is.
Erich: What is the meaning of commulative count?
Jay: If you do not set per_instance then you cannot call
get_inst_coverage.
Arturo: You can but you get 0.
Mehdi: This is common to have in classes and class instances.
Erich: You automatically get commulative coverage. The question is
do you get per instance?
Arturo: Correct. You have to turn it on with the option.per_instance.
Erich: These are options you can control outside the cover group?
Mehdi: Not the per_instance. It can only be set once.
Jay: Can you comment on how many times you create multiple instances of
a coverage group.
Neil: We did not do it that way but the feedback was that it would be
better to use this.
Jay: If you want to have a single coverage group from multiple modules
you can put these in a package?
David: There is an action to do this.
Mehdi: Why do we have to call new in a class?
Arturo: Because I hated the way Vera did it and fixed it here to
more regular.
Erich: What you seem to be talking about is cummulating to a common
point. Aggregate would be better. Some of the options should be
available to the manager and no one else.
Erich: What is overall coverage?
Arturo: The bins->coverpoints->crosses->overall.
Erich: A single number does not really say anything.
Arturo: True.
Erich: Is there is a mechanism to tell which cover is hit.
Dave: There is an API that goes with this to access the information.
Karen: Do you have something to merge DBs.
Jay: The name for setting the db_name is the minimum requirement. Having
the ability to save different coverage groups in different files
will be vendor specific.
BNF Status: Brad Pierce
Nikhil: Keywords are one of the issues with compatability.
Brad: Correct. But the syntax is a superset.
Peter: Are there any tools that can compare two BNFs or with a YACC.
Brad: The examples in the BNF are not checked by the BNF.
Arturo: The examples are normative.
Brad: Having a reference parser would be very helpful.
Jay: There is a move towards using the UML data model for the VPI and
VHPI. It is having problems due to size.
SV 3.1a Milestones and Status
We are basically on track.
Implication discussion - Jay
Based on email sent to SV-AC and SV-EC reflectors on 7 Nov. 2003.
Brief overview of the issues associated with the different implication
like operators in the language (=>, ->, |=>, |->). The taxonomy presented
was:
Concept Current Prop_1 Prop_2 Prop_3
======= ======= ====== ====== ======
Overlapping
constraint impl. => |-> -> =>
sequence impl. |-> |-> |-> |=>
cycle delay ##0 ##0 ##0 ##0
Non-overlapping
transition -> |=> => ->
sequence impl. |=> |=> |=> |->
cycle delay ##1 ##1 ##1 ##1
Prop_1 is based on unifying the implication operators down to just two.
Prop_2 is based on making overlapping-like operators consistent and
non-overlapping operators consistent.
Prop_3 is based on making the constraint implication consistent with
the highest usage found on the web (HTML-4.0, Mathematica Mathworld,
Algol-60, Python), the transition operator consistent with Verilog
event trigger, and consistency among overlapping-like operators and
among non-overlapping operators.
No conclusion in meeting. The SV-EC and SV-AC committees will have to
resolve this if there is to be any change.
This archive was generated by hypermail 2b28 : Sun Nov 16 2003 - 10:23:32 PST