A Syntax Rule Summary
Below we present the syntax of PSL in Backus-Naur Form (BNF).
A.1 Conventions
The formal syntax described uses the following extended Backus-Naur Form (BNF). a. The initial character of each word in a nonterminal is capitalized. For ex- ample:
PSL Statement
A nonterminal is either a single word or multiple words separated by underscores. When a multiple word nonterminal containing underscores is referenced within the text (e.g., in a statement that describes the se- mantics of the corresponding syntax), the underscores are replaced with spaces.
b. Boldface words are used to denote reserved keywords, operators, and punc- tuation marks as a required part of the syntax. For example:
vunit ( ;
c. The ::= operator separates the two parts of a BNF syntax definition. The syntax category appears to the left of this operator and the syntax de- scription appears to the right of the operator. For example, item (d) shows three options for a Vunit Type.
d. A vertical bar separates alternative items (use one only) unless it appears in boldface, in which case it stands for itself. For example:
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* 176 Appendix A. Syntax Rule Summary
Vunit Type ::= vunit | vprop | vmode
e. Square brackets enclose optional items unless it appears in boldface, in which case it stands for itself. For example:
Sequence Declaration ::= sequence Name [ ( Formal Parameter List ) ]DEFSYM Sequence ;
indicates that ( Formal Parameter List ) is an optional syntax item for Sequence Declaration,whereas
| Sequence [*[ Range ] ]
indicates that (the outer) square brackets are part of the syntax, while Range is optional.
f. Braces enclose a repeated item unless it appears in boldface, in which case it stands for itself. A repeated item may appear zero or more times; the repetitions occur from left to right as with an equivalent left-recursive rule. Thus, the following two rules are equivalent:
Formal Parameter List ::= Formal Parameter { ; Formal Parameter } Formal Parameter List ::= Formal Parameter | Formal Parameter List ; Formal Parameter g. A colon (:) in a production starts a line comment unless it appears in boldface, in which case it stands for itself.
h. If the name of any category starts with an italicized part, it is equivalent to the category name without the italicized part. The italicized part is intended to convey some semantic information. For example, vunit Name is equivalent to Name.
i. Flavor macros, containing embedded underscores, are shown in uppercase. These reflect the various HDLs that can be used within the PSL syntax and show the definition for each HDL. The general format is the term Flavor Macro, then the actual macro name,followedbythe=operator, and, finally, the definition for each of the HDLs. For example:
Flavor Macro RANGE SYM = SystemVerilog: : / Verilog: : / VHDL: to /GDL:/..
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* A.3. HDL dependencies 177
shows the range symbol macro (RANGE SYM). See for further details about flavor macros. The main text uses italicized type when a term is being defined, and monospace font for examples and references to constants such as 0, 1, or x values.
A.2 Tokens
PSL syntax is defined in terms of primitive tokens, which are character se- quences that act as distinct symbols in the language.
Each PSL keyword is a single token. Some keywords end in one or two non- alphabetic characters (‘!’ or ‘ ’ or both). Those characters are part of the keyword, not separate tokens.
Each of the following character sequences is also a token:
[](){}
,;:..=:=
*+|−> |=><−> −>
[* [+] [-> [=
&& & || | !
$@./
Finally, for a given flavor, the tokens of the corresponding HDL are tokens of PSL.
A.3 HDL dependencies
PSL depends upon the syntax and semantics of an underlying hardware de- scription language. In particular, PSL syntax includes productions that refer to nonterminals in SystemVerilog, Verilog, VHDL, or GDL. PSL syntax also includes Flavor Macros that cause each flavor of PSL to match that of the underlying HDL for that flavor.
For SystemVerilog, the PSL syntax refers to the following nonterminals in the IEEE P1800 syntax:
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* 178 Appendix A. Syntax Rule Summary
– module or generate item declaration – module or generate item – list of variable identifiers –identifier – expression – constant expression For Verilog, the PSL syntax refers to the following nonterminals in the IEEE Std 1364 syntax: – module or generate item declaration – module or generate item – list of variable identifiers –identifier – expression – constant expression –taskport type For VHDL, the PSL syntax refers to the following nonterminals in the IEEE Std 1076 syntax: –blockdeclarative item – concurrent statement – design unit –identifier – expression –entityaspect For SystemC, the PSL syntax refers to the following nonterminals in the IEEE P1666 syntax: –simpletype specifier – expression –eventexpression – declaration – statement –identifier For GDL, the PSL syntax refers to the following nonterminals in the GDL syntax: – module item declaration – module item – module declaration –identifier – expression
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* A.3. HDL dependencies 179
A.3.1 Verilog extensions
For the Verilog flavor, PSL extends the forms of declaration that can be used in the modeling layer by defining two additional forms of type declaration.
Extended Verilog Declaration ::= Verilog module or generate item declaration | Extended Verilog Type Declaration
Extended Verilog Type Declaration ::= Finite Integer Type Declaration | Structure Type Declaration
Finite Integer Type Declaration ::= integer Integer Range list of variable identifiers ;
Structure Type Declaration ::= struct { Declaration List } list of variable identifiers ;
Integer Range ::= ( constant expression : constant expression )
Declaration List ::= HDL Variable or Net Declaration { HDL Variable or Net Declaration }
HDL Variable or Net Declaration ::= net declaration | reg declaration | integer declaration
A.3.2 Flavor macros
Flavor Macro DEF SYM = SystemVerilog: = / Verilog: = / VHDL: is /SystemC:= /GDL::=
Flavor Macro RANGE SYM = SystemVerilog: : / Verilog: : / VHDL: to /SystemC:: /GDL:..
Flavor Macro AND OP = SystemVerilog: && / Verilog: && / VHDL: and /SystemC:&& /GDL:&
Flavor Macro OR OP = SystemVerilog: || / Verilog: || / VHDL: or /SystemC:|| /GDL:|
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* 180 Appendix A. Syntax Rule Summary
Flavor Macro NOT OP = SystemVerilog: ! / Verilog: ! / VHDL: not /SystemC:! /GDL:!
Flavor Macro MIN VAL = SystemVerilog: 0 / Verilog: 0 / VHDL: 0 /SystemC:0 /GDL:null
Flavor Macro MAX VAL = SystemVerilog: $ / Verilog: inf / VHDL: inf /SystemC:inf /GDL:null
Flavor Macro HDL EXPR = SystemVerilog: SystemVerilog Expression / Verilog: Verilog Expression / VHDL: VHDL Expression /SystemC:SystemC Expression /GDL:GDL Expression
Flavor Macro HDL CLOCK EXPR = SystemVerilog: SystemVerilog Event Expression / Verilog: Verilog Event Expression / VHDL: VHDL Expression /SystemC:SystemC Event Expression /GDL:GDL Expression
Flavor Macro HDL UNIT = SystemVerilog: SystemVerilog module declaration / Verilog: Verilog module declaration / VHDL: VHDL design unit /SystemC:SystemC class sc module /GDL:GDL module declaration
Flavor Macro HDL DECL = SystemVerilog: SystemVerilog module or generate item declaration / Verilog: Extended Verilog Declaration / VHDL: VHDL block declarative item /SystemC:SystemC declaration /GDL:GDL module item declaration
Flavor Macro HDL STMT = SystemVerilog: SystemVerilog module or generate item / Verilog: Verilog module or generate item / VHDL: VHDL concurrent statement /SystemC:SystemC statement /GDL:GDL module item
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* A.4. Syntax productions 181
Flavor Macro HDL VARIABLE TYPE = SystemVerilog : SystemVerilog data type / Verilog : Verilog Variable Type / VHDL : VHDL subtype indication /SystemC:SystemC simple type specifier /GDL:GDL variable type
Flavor Macro HDL RANGE = VHDL: range attribute name
Flavor Macro LEFT SYM = SystemVerilog: [ / Verilog: [ / VHDL: ( /SystemC:( /GDL:(
Flavor Macro RIGHT SYM = SystemVerilog: ] / Verilog: ] / VHDL: ) /SystemC:) /GDL:)
A.4 Syntax productions
The rest of this appendix defines the PSL syntax.
A.4.1 Verification units
PSL Specification ::= { Verification Item }
Verification Item ::= HDL UNIT | Verification Unit
Verification Unit ::= Vunit Type PSL Identifier [ ( Hierarchical HDL Name ) ] { { Inherit Spec } { Vunit Item } }
Vunit Type ::= vunit | vprop | vmode
Hierarchical HDL Name ::= HDL Module NAME { Path Separator instance Name } instance Name ::= HDL or PSL Identifier
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* 182 Appendix A. Syntax Rule Summary
HDL Module Name ::= HDL Module Name [ ( HDL Module Name )]
Path Separator ::= . | /
Inherit Spec ::= inherit vunit Name { , vunit Name } ;
Vunit Item ::= HDL DECL | HDL STMT | PSL Declaration | PSL Directive
A.4.2 PSL declarations
PSL Declaration ::= Property Declaration | Sequence Declaration | Clock Declaration
Property Declaration ::= property PSL Identifier [ ( Formal Parameter List ) ]DEFSYM Property ;
Formal Parameter List ::= Formal Parameter { ; Formal Parameter }
Formal Parameter ::= Param Spec PSL Identifier { , PSL Identifier }
Param Spec ::= const | [const]ValueParameter | sequence | property
Value Parameter ::= HDL Type | PSL Type Class
HDL Type ::=
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* A.4. Syntax productions 183
hdltype HDL VARIABLE TYPE
PSL Type Class ::= boolean | bit | bitvector | numeric | string
Sequence Declaration ::= sequence PSL Identifier [ ( Formal Parameter List ) ]DEFSYM Sequence ;
Clock Declaration ::= default clock DEF SYM Clock Expression ;
Clock Expression ::= boolean Name | boolean Built In Function Call | ( Boolean ) | ( HDL CLOCK EXPR )
Actual Parameter List ::= Actual Parameter { , Actual Parameter }
Actual Parameter ::= AnyType|Number | Boolean | Property | Sequence
A.4.3 PSL directives
PSL Directive ::= [ Label : ] Verification Directive
Label ::= PSL Identifier
HDL or PSL Identifier ::= SystemVerilog Identifier | Verilog Identifier | VHDL Identifier | SystemC Identifier | GDL Identifier | PSL Identifier
Verification Directive ::= Assert Directive | Assume Directive | Assume Guarantee Directive | Restrict Directive
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* 184 Appendix A. Syntax Rule Summary
| Restrict Guarantee Directive | Cover Directive | Fairness Statement
Assert Directive ::= assert Property [ report String ];
Assume Directive ::= assume Property ;
Assume Guarantee Directive ::= assume guarantee Property [ report String ];
Restrict Directive ::= restrict Sequence ;
Restrict Guarantee Directive ::= restrict guarantee Sequence [ report String ] ;
Cover Directive ::= cover Sequence [ report String ];
Fairness Statement ::= fairness Boolean ; | strong fairness Boolean , Boolean ;
A.4.4 PSL properties
Property ::= Replicator Property | FL Property | OBE Property
Replicator ::= forall Parameter Definition :
Index Range ::= LEFT SYM finite Range RIGHT SYM | ( HDL RANGE )
Value Set ::= { Value Range { , Value Range } } | boolean
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* A.4. Syntax productions 185
Value Range ::= Value | finite Range
Value ::= Boolean | Number
FL Property ::= Boolean | ( FL Property ) | Sequence [ ! ] | FL property Name [ ( Actual Parameter List ) ] | FL Property @ Clock Expression | FL Property abort Boolean | FL Property async abort Boolean | FL Property sync abort Boolean | Parameterized Property : Logical Operators : | NOT OP FL Property | FL Property AND OP FL Property | FL Property OR OP FL Property : | FL Property -> FL Property | FL Property <−> FL Property : Primitive LTL Operators : | X FL Property | X! FL Property | F FL Property | G FL Property | [ FL Property U FL Property ] | [ FL Property W FL Property ] : Simple Temporal Operators : | always FL Property | never FL Property | next FL Property | next! FL Property | eventually! FL Property : | FL Property until! FL Property | FL Property until FL Property | FL Property until! FL Property | FL Property until FL Property :
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* 186 Appendix A. Syntax Rule Summary
| FL Property before! FL Property | FL Property before FL Property | FL Property before! FL Property | FL Property before FL Property : Extended Next (Event) Operators : | X[Number ](FL Property ) | X! [ Number ](FL Property ) | next [ Number ](FL Property ) | next! [ Number ](FL Property ) : | next a[finite Range ](FL Property ) | next a! [ finite Range ](FL Property ) | next e[finite Range ](FL Property ) | next e! [ finite Range ](FL Property ) : | next event! ( Boolean )(FL Property ) | next event ( Boolean )(FL Property ) | next event! ( Boolean )[positive Number ](FL Property ) | next event ( Boolean )[positive Number ](FL Property ) : | next event a! ( Boolean )[finite positive Range ](FL Property ) | next event a(Boolean )[finite positive Range ](FL Property ) | next event e! ( Boolean )[finite positive Range ](FL Property ) | next event e(Boolean )[finite positive Range ](FL Property ) : Operators on SEREs : |{SERE } ( FL Property ) | Sequence |−> FL Property | Sequence |=> FL Property
A.4.5 Sequential Extended Regular Expressions (SEREs)
SERE ::= Boolean | Sequence | SERE ; SERE | SERE : SERE | Compound SERE
Compound SERE ::= Repeated SERE | Braced SERE | Clocked SERE | Compound SERE | Compound SERE
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* A.4. Syntax productions 187
| Compound SERE & Compound SERE | Compound SERE && Compound SERE | Compound SERE within Compound SERE | Parameterized SERE
A.4.6 Parameterized Properties and SEREs
Parameterized Property ::= for Parameters Definition : And Or Property OP ( FL Property )
Parameterized SERE ::= for Parameters Definition : And Or SERE OP { SERE }
Parameters Definition ::= Parameter Definition { Parameter Definition }
Parameter Definition ::= PSL Identifier [ Index Range ] in Value Set
And OR Property OP ::= AND OP | OR OP
And Or SERE Op :: = && | & ||
A.4.7 Sequences
Sequence ::= Sequence Instance | Repeated SERE | Braced SERE | Clocked SERE
Repeated SERE ::= Boolean [* [Count]] | Sequence [* [Count]] | [* [Count]] | Boolean [+] | Sequence [+] | [+]
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* 188 Appendix A. Syntax Rule Summary
| Boolean [= Count ] | Boolean [-> [ positive Count ] ]
Braced SERE ::= { SERE }
Sequence Instance ::= sequence Name [ ( Actual Parameter List ) ]
Clocked SERE ::= Braced SERE @ Clock Expression
Count ::= Number | Range
Range ::= Low Bound RANGE SYM High Bound
Low Bound ::= Number | MIN VAL
High Bound ::= Number | MAX VAL
A.4.8 Forms of expression
Any Type ::= HDL or PSL Expression
Bit ::= bit HDL or PSL Expression
Boolean ::= boolean HDL or PSL Expression
BitVector ::= bitvector HDL or PSL Expression
Number ::= numeric HDL or PSL Expression
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* A.4. Syntax productions 189
String ::= string HDL or PSL Expression
HDL or PSL Expression ::= HDL Expression | PSL Expression | Built In Function Call | Union Expression
HDL Expression ::= HDL EXPR
PSL Expression ::= Boolean -> Boolean | Boolean <−> Boolean
Built In Function Call ::= prev (Any Type [ , Number [ , Clock Expression ]] ) | next ( Any Type ) | stable ( Any Type [ , Clock Expression ] ) | rose ( Bit [ , Clock Expression ] ) | fell ( Bit [ , Clock Expression ] ) | ended ( Sequence [ , Clock Expression ]) | isunknown ( BitVector ) | countones ( BitVector ) | onehot ( BitVector ) | onehot0 ( BitVector ) | nondet ( Value List ) | nondet vector ( Number, Value List )
Union Expression ::= Any Type union Any Type
A.4.9 Optional Branching Extension
OBE Property ::= Boolean | ( OBE Property ) | OBE property Name [ ( Actual Parameter List ) ] : Logical Operators : | NOT OP OBE Property | OBE Property AND OP OBE Property
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* 190 Appendix A. Syntax Rule Summary
| OBE Property OR OP OBE Property | OBE Property -> OBE Property | OBE Property <−> OBE Property : Universal Operators : | AX OBE Property | AG OBE Property | AF OBE Property | A[OBE Property U OBE Property ] :Existential Operators : | EX OBE Property | EG OBE Property | EF OBE Property | E[OBE Property U OBE Property ]
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* B Formal Syntax and Semantics
This appendix formally describes the syntax and semantics of the temporal layer.
B.1 Typed-text representation of symbols
Table B.1 shows the mapping of various symbols used in this definition to the corresponding typed-text PSL representation, in the different flavors.
Table B.1: Typed-text symbols in the SystemVerilog, Verilog, VHDL, SystemC and GDL flavors
SystemVerilog Verilog VHDL SystemC GDL → |-> |-> |-> |-> |-> ⇒ |=> |=> |=> |=> |=> → -> -> -> -> -> ↔ <-> <-> <-> <-> <-> ¬ ! ! not ! ! ∧ && && and && & ∨ || || or || | .. : : to : .. [] [] () () ()
NOTE − For reasons of simplicity, the syntax given herein is more flexible than the one defined by the extended BNF (given in Appendix A). That is, some of the expressions which are legal here are not legal under the BNF grammar. Users should use the stricter syntax, as defined by the BNF grammar in Appendix A.
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* 192 Appendix B. Formal Syntax and Semantics
B.2 Syntax
The logic PSL is defined with respect to a non-empty set of atomic propo- sitions P and a given set of boolean expressions B over P . We assume two designated boolean expression true and false belong to B. Definition 1 (Sequential Extended Regular Expressions (SEREs)) 1. Every boolean expression b ∈ B is a SERE. 2. If r, r1,andr2 are SEREs, and c is a boolean expression, then the following are SEREs: •{r}•r1 ; r2 • r1 : r2 • r1 | r2 • r1 && r2 • [∗0] • r[∗] • r@c
Definition 2 (FL formulas) 1. If b is a boolean expression, then both b and b! are FL formulas. 2. If ϕ and ψ are FL formulas, r, r1,r2 are SEREs, and b a boolean expres- sion, then the following are FL formulas: • (ϕ) •¬ϕ • ϕ ∧ ψ • r → ϕ • r! • r • X! ϕ • [ϕUψ] • ϕ@b • ϕ async abort b • ϕ sync abort b
NOTE − We define formal semantics for both strong and weak booleans[20]. However, strong booleans are not accessible to the user.
Definition 3 (OBE Formulas) 1. Every boolean expression is an OBE formula. 2. If f, f1,andf2 are OBE formulas, then so are the following: a) (f) b) ¬f c) f1 ∧ f2 d) EXf e) E[f1 Uf2] f) EGf Additional OBE operators are derived from these as follows:
• f1 ∨ f2 = ¬(¬f1 ∧¬f2) • f1 → f2 = ¬f1 ∨ f2 • f1 ↔ f2 =(f1 → f2) ∧ (f2 → f1) • EFf = E[true Uf] • AXf = ¬EX¬f • A[f1 Uf2]=¬(E[¬f2 U (¬f1 ∧¬f2)] ∨ EG¬f2) • AGf = ¬E[true U ¬f]
From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* B.3. Semantics 193
• AF f = A[true Uf] Definition 4 (PSL Formulas) 1. Every FL formula is a PSL formula. 2. Every OBE formula is a PSL formula. In Section B.4, we show additional operators which provide syntactic sug- aring to the ones above.
B.3 Semantics
The semantics of PSL formulas are defined with respect to a model.Amodel is a quintuple (S, S0,R,P,L), where S is a finite set of states, S0 ⊆ S is a set of initial states, R ⊆ S × S is the transition relation, P is a non-empty set of atomic propositions, and L is the valuation, a function L : S −→ 2P , mapping each state with a set of atomic propositions valid in that state. A path π is a finite (or infinite) sequence of states π =(π0,π1,π2, ···,πn) (or π =(π0,π1,π2, ···)). A computation path π of a model M is a finite (or infinite) path π such that for every i B.3.1 Semantics of FL formulas The semantics of FL formulas is interpreted over finite and infinite words over Σ =2P ∪{ , ⊥}.Letϕ be an FL formula, w awordoverΣ and M amodel. The notation w |= ϕ means that the FL formula ϕ holds over the word w. The notation M |= ϕ means that for all π such that π is computation path of M, Lˆ(π) |= ϕ. We denote a letter from Σ by and an empty, finite, or infinite word from Σ by u, v,orw (possibly with subscripts). We denote the length of word v as |v|. A finite non-empty word v =(012 ···n)haslengthn + 1, the (finite) empty word v = has length 0, and an infinite word has length ∞.Weuse i, j,andk to denote non-negative integers. We denote the ith letter of v by vi−1 (since counting of letters starts at zero). We denote by vi.. the suffix of v starting at vi. That is, for every i<|v|, vi.. = vivi+1 ···vn or vi.. = vivi+1 ···. We denote by vi..j the finite sequence of letters starting from vi and ending in vj. That is, for j ≥ i, vi..j = vivi+1 ···vj and for j From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* 194 Appendix B. Formal Syntax and Semantics The semantics of FL formulas over words is defined inductively, using as the base case the semantics of boolean expressions over letters in Σ. The semantics of boolean expression is assumed to be given as a relation ⊆ Σ×B relating letters in Σ with boolean expressions in B.If(, b) ∈ we say that the letter satisfies the boolean expression b and denote it b.Weassumethetwo special letters and ⊥ behave as follows: for every boolean expression b, b and ⊥ /b. We assume that otherwise the boolean relation behaves in the usual manner. In particular, that for every letter ∈ 2P , atomic proposition p ∈ P and boolean expressions b, b1,b2 ∈ B (i) p iff p ∈ , (ii) ¬b iff /b, and (iii) true and /false. Finally, we assume that for every letter ∈ Σ, b1 ∧ b2 iff b1 and b2. Unclocked Semantics Semantics of unclocked SEREs Unclocked SEREs are defined over finite words over the alphabet Σ.The notation v |≡ r,wherer is a SERE and v a finite word means that v models tightly r. The semantics of unclocked SEREs are defined as follows, where b denotes a boolean expression, and r, r1,andr2 denote unclocked SEREs: 1. v |≡ { r}⇐⇒v |≡ r 2. v |≡ b ⇐⇒ | v| =1andv0 b 3. v |≡ r1 ; r2 ⇐⇒ ∃ v1,v2 s.t. v = v1v2, v1 |≡ r1,andv2 |≡ r2 4. v |≡ r1 : r2 ⇐⇒ ∃ v1,v2,and s.t. v = v1v2, v1 |≡ r1,andv2 |≡ r2 5. v |≡ r1 | r2 ⇐⇒ v |≡ r1 or v |≡ r2 6. v |≡ r1 && r2 ⇐⇒ v |≡ r1 and v |≡ r2 7. v |≡ [∗0] ⇐⇒ v = 8. v |≡ r[∗] ⇐⇒ either v |≡ [∗0] or ∃v1,v2 s.t. v1 = , v = v1v2, v1 |≡ r and v2 |≡ r[∗] Semantics of unclocked FL We refer to a formula of FL with no @ operator as an unclocked formula.Let v be a finite or infinite word, b be a boolean expression, r, r1,r2 unclocked SEREs, and ϕ, ψ unclocked FL formulas. We use |= to define the semantics of unclocked FL formulas: If v |= ϕ we say that v models (or satisfies) ϕ. 1. v |=(ϕ) ⇐⇒ v |= ϕ 2. v |= ¬ϕ ⇐⇒ v |=/ϕ 3. v |= ϕ ∧ ψ ⇐⇒ v |= ϕ and v |= ψ 4. v |= b! ⇐⇒ | v| > 0andv0 b From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* B.3. Semantics 195 5. v |= b ⇐⇒ | v| =0orv0 b 6. v |= r → ϕ ⇐⇒ ∀ j<|v| s.t. v0..j |≡ r, vj.. |= ϕ 7. v |= r! ⇐⇒ ∃ j<|v| s.t. v0..j |≡ r 8. v |= r ⇐⇒ ∀ j<|v|, v0..j ω |= r! 9. v |= X! ϕ ⇐⇒ | v| > 1andv1.. |= ϕ 10. v |=[ϕUψ] ⇐⇒ ∃ k<|v| s.t. vk.. |= ψ,and∀j NOTES − 1. The semantics given here for the ltl operators and the async abort operator is equivalent to the truncated semantics given in [18] which is interpreted over 2P P rather than over 2 ∪{ , ⊥}.Using |=• for the semantics in [18], the following proposition states the equivalence: Let w be a finite word over 2P , and let ϕ be a formula of ltltrunc. Then, as shown in [19], the three following equivalences hold: − ω w |=• ϕ ⇐⇒ w |= ϕ w |=• ϕ ⇐⇒ w |= ϕ + ω w |=• ϕ ⇐⇒ w⊥ |= ϕ + 2. Using |=• as in the note 1 above, we use holds strongly for |=• , holds for − |=• ,andholds weakly for |=• . The remaining terminology of Section 11.1 is formally defined as follows: − • ϕ is pending on word w iff w |=• ϕ and w |=/• ϕ − • ϕ fails on word w iff w |=/• ϕ 3. There is a subtle difference between boolean negation and formula negation. For instance, consider the formula ¬b.If¬ is boolean negation, then ¬b holds on an empty path. If ¬ is formula negation, then ¬b does not hold on an empty path. Rather than introduce distinct operators for boolean and formula negation, we instead adopt the convention that negation applied to a boolean expression is boolean negation. This does not restrict expressivity, as formula negation of b can be expressed as (¬b)!. Clocked Semantics We say that finite word v is a clock tick of c iff |v| > 0andv|v|−1 c and for every natural number i<|v|−1, vi ¬c. From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* 196 Appendix B. Formal Syntax and Semantics Semantics of clocked SEREs Clocked SEREs are defined over finite words from the alphabet Σ and a c boolean expression that serves as the clock context. The notation v |≡ r,where r is a SERE, c is a boolean expression and v a finite word, means that v models tightly r in context of clock c. The semantics of clocked SEREs are defined as follows, where b, c,andc1 denote boolean expressions, and r, r1,andr2 denote clocked SEREs: c c 1. v |≡ {r}⇐⇒v |≡ r c 2. v |≡ b ⇐⇒ v is a clock tick of c and v|v|−1 b c c c 3. v |≡ r1 ; r2 ⇐⇒ ∃ v1,v2 s.t. v = v1v2, v1 |≡ r1,andv2 |≡ r2 c c c 4. v |≡ r1 : r2 ⇐⇒ ∃ v1,v2,and s.t. v = v1v2, v1 |≡ r1,andv2 |≡ r2 c c c 5. v |≡ r1 | r2 ⇐⇒ v |≡ r1 or v |≡ r2 c c c 6. v |≡ r1 && r2 ⇐⇒ v |≡ r1 and v |≡ r2 c 7. v |≡ [∗0] ⇐⇒ v = c c 8. v |≡ r[∗] ⇐⇒ either v |≡ [∗0] c c or ∃v1,v2 s.t. v1 = , v = v1v2, v1 |≡ r and v2 |≡ r[∗] c c1 9. v |≡ r@c1 ⇐⇒ v |≡ r Semantics of clocked FL The semantics of (clocked) FL formulas is defined with respect to finite/infinite words over Σ and a boolean expression c which serves as the clock context. Let v be a finite or infinite word, b, c, c1 boolean expressions, r, r1,r2 SEREs, c and ϕ, ψ FL formulas. We use |= to define the semantics of FL formulas. If c v |= ϕ we say that v models (or satisfies) ϕ in the context of clock c. c c 1. v |= (ϕ) ⇐⇒ v |= ϕ c c 2. v |= ¬ϕ ⇐⇒ v |=/ ϕ c c c 3. v |= ϕ ∧ ψ ⇐⇒ v |= ϕ and v |= ψ c 4. v |= b! ⇐⇒ ∃ j<|v| s.t. v0..j is a clock tick of c and vj b c 5. v |= b ⇐⇒ ∀ j<|v| s.t. v0..j is a clock tick of c, vj b c c c 6. v |= r → ϕ ⇐⇒ ∀ j<|v| s.t. v0..j |≡ r, vj.. |= ϕ c c 7. v |= r! ⇐⇒ ∃ j<|v| s.t. v0..j |≡ r c c 8. v |= r ⇐⇒ ∀ j<|v|, v0..j ω |= r! c 9. v |= X! f ⇐⇒ ∃ j From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* B.3. Semantics 197 c c1 11. v |= ϕ@c1 ⇐⇒ v |= ϕ c c 12. v |= ϕ async abort b ⇐⇒ either v |= ϕ c or ∃j<|v| s.t. vj b and v0..j−1 ω |= ϕ c c 13. v |= ϕ sync abort b ⇐⇒ either v |= ϕ or c or ∃j<|v| s.t. vj b ∧ c and v0..j−1 ω |= ϕ NOTE − The clocked semantics for the ltl subset follows the clocks paper [20], with the ex- ception that strength is applied at the boolean level rather than at the propositional level. B.3.2 Semantics of OBE formulas The semantics of OBE formulas are defined over states in the model, rather than finite or infinite words. Let f be an OBE formula, M =(S, S0,R,P,L) a model and s ∈ S a state of the model. The notation M,s |= f means that f holds in state s of model M. The notation M |= f is equivalent to ∀s ∈ S0 : M,s |= f. In other words, f is valid for every initial state of M. The semantics of OBE formulas are defined inductively, using as the base case the semantics of boolean expressions over letters in 2P . The semantics of boolean expression is assumed to be given as a relation ⊆ 2P × B relating letters in 2P with boolean expressions in B.If(, b) ∈ we say that the letter satisfies the boolean expression b and denote it b. We assume that the boolean relation behaves in the usual manner. In particular, that for every P letter ∈ 2 , atomic proposition p ∈ P and boolean expressions b, b1,b2 ∈ B (i) p iff p ∈ , (ii) ¬b iff /b, (iii) b1 ∧ b2 iff b1 and b2,and (iv) true and /false. The semantics of an OBE formula are those of standard CTL. The seman- tics are defined as follows, where b denotes a boolean expression and f, f1, and f2 denote OBE formulas: 1. M,s |= b ⇐⇒ L(s) b 2. M,s |=(f) ⇐⇒ M,s |= f 3. M,s |= ¬f ⇐⇒ M,s |= f 4. M,s |= f1 ∧ f2 ⇐⇒ M,s |= f1 and M,s |= f2 5. M,s |= EX f ⇐⇒ there exists a computation path π of M such that |π| > 1, π0 = s,andM,π1 |= f 6. M,s |= E[f1 Uf2] ⇐⇒ there exists a computation path π of M such that π0 = s and there exists k<|π| such that M,πk |= f2 and for every j such that j From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* 198 Appendix B. Formal Syntax and Semantics B.4 Syntactic Sugaring The remainder of the temporal layer is syntactic sugar. In other words, it does not add expressive power, and every piece of syntactic sugar can be defined in terms of the basic FL operators presented above. The syntactic sugar is defined below. NOTE − The definitions given here do not necessarily represent the most efficient imple- mentation. In some cases, there is an equivalent syntactic sugaring, or a direct implementation, that is more efficient. B.4.1 Additional SERE operators Let i, j, k,andl be integer constants such that i ≥ 0, j ≥ i, k ≥ 1, l ≥ k. Then, additional SERE operators can be viewed as abbreviations of the basic SERE operators defined above, as follows, where b denotes a boolean expression, and r denotes a SERE: def • r[+] = r; r[∗] def • r[∗0] =[∗0] ktimes def • r[∗k] = r; r; ...; r def • r[∗i..j] = r[∗i] | ... | r[∗j] def • r[∗i..] = r[∗i]; r[∗] def • r[∗..i] = r[∗0] | ... | r[∗i] def • r[∗..] = r[∗0..] def • [+] = true[+] def • [∗] = true[∗] def • [∗i] = true[∗i] def • [∗i..j] = true[∗i..j] def • [∗i..] = true[∗i..] def • [∗..i] = true[∗..i] def • [∗..] = true[∗..] def • b[= i] = {¬b[∗]; b}[∗i]; ¬b[∗] def • b[= i..j] = b[= i] | ... | b[= j] def • b[= i..] = b[= i]; [∗] def • b[= ..i] = b[= 0] | ... | b[= i] def • b[= ..] = b[= 0..] def • b[→] = ¬b[∗]; b def • b[→ k] = {¬b[∗]; b}[∗k] From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* B.4. Syntactic Sugaring 199 def • b[→ k..l] = b[→ k] | ... | b[→ l] def • b[→ k..] = b[→ k] |{b[→ k]; [∗]; b} def • b[→ ..k] = b[→ 1] | ... | b[→ k] def • b[→ ..] = b[→ 1..] def • r1 & r2 = {{r1} && {r2; true[∗]}} | {{r1; true[∗]} && {r2}} def • r1 within r2 = {[∗]; r1;[∗]} && {r2} B.4.2 Additional FL operators Let i, j, k and l be integers such that i ≥ 0, j ≥ i, k>0andl ≥ k. Then, additional operators can be viewed as abbreviations of the basic operators defined above, as follows, where b denotes a boolean expression, r, r1,andr2 denote SEREs, and ϕ, ϕ1,andϕ2 denote FL formulas: def • ϕ1 ∨ ϕ2 = ¬(¬ϕ1 ∧¬ϕ2) def • ϕ1 → ϕ2 = ¬ϕ1 ∨ ϕ2 def • ϕ1 ↔ ϕ2 =(ϕ1 → ϕ2) ∧ (ϕ2 → ϕ1) def • Fϕ =[true Uϕ] def • Gϕ = ¬F ¬ϕ def • Xϕ = ¬X! ¬ϕ def • [ϕ1 Wϕ2] =[ϕ1 Uϕ2] ∨ Gϕ1 def • always ϕ = Gϕ def • never ϕ = G ¬ϕ def • next! ϕ = X! ϕ def • next ϕ = Xϕ def • eventually! ϕ = Fϕ def • ϕ1 until! ϕ2 =[ϕ1 Uϕ2] def • ϕ1 until ϕ2 =[ϕ1 Wϕ2] def • ϕ1 until! ϕ2 =[ϕ1 Uϕ1 ∧ ϕ2] def • ϕ1 until ϕ2 =[ϕ1 Wϕ1 ∧ ϕ2] def • ϕ1 before! ϕ2 =[¬ϕ2 Uϕ1 ∧¬ϕ2] def • ϕ1 before ϕ2 =[¬ϕ2 Wϕ1 ∧¬ϕ2] def • ϕ1 before! ϕ2 =[¬ϕ2 Uϕ1] def • ϕ1 before ϕ2 =[¬ϕ2 Wϕ1] From IEEE Std.1850-2005. Copyright 2005 IEEE. All rights reserved.* 200 Appendix B. Formal Syntax and Semantics