Content deleted Content added
m →SERE-style operators: inline |
replace {{color}} to {{mono}} for WP:COLOR |
||
Line 5:
== Syntax and semantics ==
PSL can express that if some scenario happens now, then another scenario should happen some time later. For instance, the property "a {{
<source lang="text"> always (request -> eventually! grant)
</source>
The property "every {{
<source lang="text"> (true[*]; req; ack) |=> (start; busy[*]; end) </source>
A trace satisfying this formula is given in the figure on the right.
[[File:The trigger operator - slide 1.jpg|thumb|a simple trace satisfying <source lang="text">(true[*]; req; ack) |=> (start; busy[*]; end)</source>]]
PSL's temporal operators can be roughly classified into ''LTL-style'' operators and ''regular-expression-style'' operators. Many PSL operators come in two versions, a strong version, indicated by an exclamation mark suffix ( {{
=== SERE-style operators===
Line 27:
The trigger operator comes in several variations, shown in the table below.
Here {{
{| class="wikitable"
| <source lang="text"> s |=> t! </source>
Line 53:
Operators for concatenation, fusion, union, intersection and their variations are shown in the table below.
Here {{
{| class="wikitable"
| <code> s ; t </code>
Line 77:
Operators for consecutive repetitions are shown in the table below.
Here {{
{| class="wikitable"
| <code> s[*i] </code>
Line 98:
Operators for non-consecutive repetitions are shown in the table below.
Here {{
{| class="wikitable"
| <code> b[=i] </code>
Line 134:
Below is a sample of some LTL-style operators of PSL.
Here {{
{| class="wikitable"
| always p
Line 197:
=== Sampling operator===
Sometimes it is desirable to change the definition of the ''next time-point'', for instance in multiply-clocked designs, or when a higher lever of abstraction is desired. The ''sampling operator'' (a.k.a. ''the clock operator''), denoted {{
[[File:Need for multiple clocks.jpg|thumb|path and formula showing need for a sampling operator]]
The first property states that "every {{
<source lang="text"> ((true[*]; req; ack) |=> (start; data[=8]; end) </source>
But sometimes it is desired to consider only the cases where the above signals occur on a cycle where {{
This is depicted in the second figure in which although the formula
<source lang="text"> ((true[*]; req; ack) |=> (start; data[*3]; end) @ clk </source>
uses {{
[[File:Multiple clocks.jpg|thumb|path and formula showing effect of the sampling operator @]]
Line 214:
PSL has several operators to deal with truncated paths (finite paths that may correspond to a prefix of the computation). Truncated paths occur in bounded-model checking, due to resets and in many other scenarios. The abort operators, specify how eventualities should be dealt with when a path has been truncated. They rely on the truncated semantics proposed in [1].
Here {{
{| class="wikitable"
| <code> p async_abort b </code>
|