RE: [sv-ac] feedback on the LTL proposal

From: Korchemny, Dmitry <dmitry.korchemny_at_.....>
Date: Thu Jul 26 2007 - 01:18:21 PDT
Hi Lisa,

 

Please, see my comments below. I fixed the typos you mentioned and
uploaded the updated versions. I believe, the other comments require
further discussion.

 

Thanks,

Dmitry

 

________________________________

From: owner-sv-ac@server.eda.org [mailto:owner-sv-ac@server.eda.org] On
Behalf Of Lisa Piper
Sent: Tuesday, July 24, 2007 12:37 AM
To: sv-ac@server.eda-stds.org
Subject: [sv-ac] feedback on the LTL proposal

 

The proposed operators are an excellent addition to SVA.

There seem to be two notations used for 'strong': both the keyword
'strong', used for sequences, and the angle brackets around strong
operators, e.g., <next>.  It would be nice if a single notation could be
used in each.  Note that PSL uses '!' in both cases.  Why not use that?

[Korchemny, Dmitry] I would not use ! because it introduces syntactic
ambiguity: next! a may be interpreted as next !a as well. I agree with
you regarding the notation inconsistency: <next> a, but strong(a ##1 b),
I just don't have a better solution. Putting angle brackets around the
sequence instead of strong: <a ##1 b> may be confusing. I am open to
suggestions for better syntax.

There also seems to be two notations for overlapping semantics - the
keyword 'with' (used with until), and the use of '=' in the operator
#=#, vs. #-#.  The '=' symbol has a precedent in '|=>' vs. '|->'
(although #-# and #=# are ugly; ##- and ##= would be better, and more
consistent with using ##0 and ##1 when the following sequence is
strong).  The keyword 'with' is understandable, but it doesn't read very
well.  Actually, it is not clear to me why ##0 and ##1 cannot be used.

[Korchemny, Dmitry] I am not stuck about the notation #-#, and we can
change it to ##-. As for ##0 and ##1 there are the following subtleties
(I am illustrating everything on ##0):

*         The grammar becomes ambiguous: sequence_expr ##0 sequence_expr
and sequence_expr ##0 property_expr become undistinguishable. On the
other hand there are already such cases in SV grammar with conflicts
between sequence_expr and property_expr

*         #-# and ##0 have different semantics: A ##0 B means A #-#
strong(B). On the other hand I don't see many practical applications
that would require weak sequence after #-#.

*         For coverage purposes it is often convenient to distinguish
between the triggering condition and the rest. Even today the people are
tempted to write cover property(a |-> b ##1 c) meaning: report all
sequences b ##1 c when a happens. The right way to write this statement
is cover property(a #-# b ##1 c). Then the tool will report about
covering b ##1 c instead of reporting the coverage of the whole thing.
On the other hand in the cover statement the right operand of #-# needs
usually to be strong, and this fact needs to be expressed explicitly:
cover property(a #-# strong( b ##1 c)). Writing it weak will report the
coverage even if the clock stops ticking, The explicit strong operator
is confusing. ##0 solves this problem.

Bottom line: I see more advantages in your suggestion about using ##0
and ##1 than in ours, but all its implications have to be carefully
reviewed.

As for until with, what are the alternatives? Its advantage is that
'with' is already a keyword. We are open for other suggestions.

What about a negated sequence?  Negation of a weak sequence should make
it strong, I believe.  (This is an issue in PSL, where "never {r}" has a
non-intuitive meaning: if {r} does not fail before the end of
simulation, then {r} will hold, and therefore "never {r}" will fail.
The right way to write this in PSL is "never {r}!".  IEEE 1850 is
considering a change in this area.)

[Korchemny, Dmitry] Yes, this is an issue.

Eventually is implicitly a strong operator - correct?  If so, the
notation seems inconsistent: always is weak, <always> is strong, but
eventually is strong (and there is no weak form).  Note that in PSL, the
corresponding operator is "eventually!".

[Korchemny, Dmitry] The reason we defined eventually without <> is that
it does not have a weak form at all. I tend to agree with you, and use
<eventually> form.

Section 16.2.9, property p9 (and other subsequent occurrences) - why
can't you use an unbounded range with the weak next form?  Certainly you
can use an unbounded range in a weak sequence.  Why should next be
different?

[Korchemny, Dmitry] This complicates the formal semantics description,
but it can be done. This invites introducing a weak form of eventually:
the clock is not required to tick, but if it ticks enough times, the
property shall happen,

Section 16.2.11, until - the inverse, "before", is often useful also.

[Korchemny, Dmitry] My point was to limit the operators to some
reasonable minimum. before can be derived from until and may be a part
of the library instead of belonging to the language, The reason why we
introduced until with, though it can be easily modeled using until
operator was the compilation efficiency: inverting until with gives you
<until>. Of course, nothing prevents us from adding before operator, we
can do it.

Examples - there are four examples, three called p1, and one called p2.
The paragraph explaining them talks about properties p1, p2, p3, and p2.
Some renumbering is probably in order.

[Korchemny, Dmitry] Fixed.

The description of property p1 can be misread - the "(not including)"
comment could be taken to mean that a must not be true when b becomes
true.  It would be better to say "The property p1 says that a remains
true in each cycle up to and including the cycle before the cycle in
which b becomes true".  Similar comments apply to other statements in
this paragraph.

[Korchemny, Dmitry] I rewrote these sentences.

=================

Formal Semantics document

F.2.3.2.7 - definition bullets 4, 5 refer to 'n-1', yet there is no n in
the LHS of the definition.  Should be 'm-1', I believe.

[Korchemny, Dmitry] Fixed

F.3.1 - the requirement that conditions not be dependent upon local
variables rather restricts the scope of this definition.  The formal
definition should cover the cases in which local variables are involved.

[Korchemny, Dmitry] This is what is written in the original LRM, and I
didn't change this sentence. I doubt that this transformation remains
valid if the local variables allowed within the events.

F.3.3.1 - where is the turnstile with three bars (used in the
definitions of w |= R and w |= (R|->P)) defined?  I assume this operator
means the same as in PSL formal semantics (that a word "models tightly"
a sequence R), but I don't see it defined anywhere here.

[Korchemny, Dmitry] This is a symbol of the tight sequence satisfaction
defined in F.3.2

F.3.3.1 - definition of accept_on - why is it important to say (in the
first case) that no letter of w satisfies b?  Are you trying to defing
the 'endpoint' of the satisfaction, which would make it important to
know whether b was satisfied before the end of P was reached?

[Korchemny, Dmitry] This is essentially the same definition as in
disable iff: if the accepting condition never happens then accept_on
does not affect the property evaluation.


-- 
This message has been scanned for viruses and 
dangerous content by MailScanner <http://www.mailscanner.info/> , 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 Thu Jul 26 01:18:56 2007

This archive was generated by hypermail 2.1.8 : Thu Jul 26 2007 - 01:19:02 PDT