Johan,
> Moreover, your suggestion about writing things "prior
> to the default clock" does not change anything, as default
> clock affects _all_ directives in a vunit even if it is
> placed last in the vunit.
Another inconsistency in PSL. In embedded PSL the default clock applies
only to what follows until another default clock is specified. In
vunits, it applies to everything. (Again, I realize the LRM does not
cover embedded, but we can't ignore de facto standards.)
> * What do you mean by changed? Endpoints has never been such
> that default
> clock applied to them.
In our implementation, they did. This seems to be an error, but it is
one derived from the following.
> * Endpoints _does not_ create anything per se -- how could
> they? consider
> parametrized endpoints.
As I said yesterday, endpoints do create something. They create the
equivalent of a boolean-typed signal which can be referenced in other
sequences/properties/directives and in the modeling layer (HDL code).
If they didn't create anything, there wouldn't be a problem.
As we discussed yesterday, I believe there is a need to create an
endpoint and lock down its clock. The uses:
- In the modeling layer for reactivity to sequences holding. (Could
be to take action on an error/success, as part of a complex checker
written in combined PSL and HDL, or it can be related to modifying
constraints for stimulus generation in the TB.)
- When referenced in another directive where the endpoint is meant to
be matched on a clock different from the one applied to the directive.
I understand that there is a use for an unclocked endpoint specification
where the clock that should be applied is "inherited" from the context
in which the endpoint is used. But, that is in *addition to* the need
for an endpoint that is locked down to a specific clock.
Yesterday, we talked about making endpoints a directive. Perhaps what
we really need is two different beasts:
- An endpoint declaration: Does not create anything. Can only be
referenced in subsequent PSL sequences, properties, directives. Default
clock specification does not apply to it (just like sequences and
properties).
- An ended directive: Does create the boolean-typed signal which can
be referenced in the modeling layer. Default clock does apply to it.
Perhaps a generalization of the existing cover directive could be
used as the ended directive? Instead of a boolean-typed signal
semantics, we would instead have an integer-typed signal initialized to
0 and incremented whenever the sequence associated with the directive
holds.
Or, if the boolean semantics are needed for formal or to make it easier
to use in a subsequent PSL context, cover provides a boolean-typed
signal semantics, but it also has an integer variable associated with it
that is initialized to 0 and incremented by 1 in any cycle that the
cover holds. Then the modeling layer can reference the count via the
cover directive label (my_cover.count).
In any case, there is a need for both a clocked endpoint (ended
directive) and an unclocked endpoint.
There is also a separate need to have a standard way to access the cover
count of a cover directive -- at least in the modeling layer.
-Steve Bailey
Received on Wed Dec 29 09:22:34 2004
This archive was generated by hypermail 2.1.8 : Wed Dec 29 2004 - 09:22:35 PST