sensitivity list in concurrent assertion

V

valtih1978

Guest
I'm reading a 2008 spec (Approved 26 September 2008). It says literally

1. For any concurrent assertion statement, there is an equivalent
process statement.

2. <skip discussion of postponed and label>

3. The equivalent process statement also has no sensitivity list, an
empty declarative part, and a statement part that consists of an
assertion statement followed by a wait statement.

4. <skip report and severity>

5. If there exists a name that denotes a signal in the Boolean
expression that defines the condition of the assertion, then the
equivalent process statement includes a final wait statement with a
sensitivity clause that is constructed by applying the rule of 10.2 to
that expression; otherwise, the equivalent process statement contains a
final wait statement that has no explicit sensitivity clause, condition
clause, or timeout clause. This looks a confusing redundancy

Part 3 is obviously included by mistake as it contradicts to everything:
to common sense, adopted practice and statement №5
 
On Wed, 16 May 2012 20:53:35 +0300, valtih1978 wrote:

I'm reading a 2008 spec (Approved 26 September 2008). It says literally

1. For any concurrent assertion statement, there is an equivalent
process statement.

2. <skip discussion of postponed and label

3. The equivalent process statement also has no sensitivity list,
an
empty declarative part, and a statement part that consists of an
assertion statement followed by a wait statement.

4. <skip report and severity

5. If there exists a name that denotes a signal in the Boolean
expression that defines the condition of the assertion, then the
equivalent process statement includes a final wait statement with a
sensitivity clause that is constructed by applying the rule of 10.2 to
that expression; otherwise, the equivalent process statement contains a
final wait statement that has no explicit sensitivity clause, condition
clause, or timeout clause. This looks a confusing redundancy

Part 3 is obviously included by mistake as it contradicts to everything:
to common sense, adopted practice and statement №5

I see no contradiction. The sensitivity clause of the wait statement
mentioned in #5 is not the same thing as the sensitivity list of the
process that is mentioned in #3.

e.g.

generic foo_generic : boolean;
....
signal foo_signal : boolean;


assert foo_generic;

is equivalent to

process
begin
assert foo_generic;
wait;
end;

and

assert foo_signal;

is equivalent to

process
begin
assert foo_signal;
wait for foo_signal'event;
end;


That's my interpretation of the rules. I may be wrong, of course.


Regards,
Allan
 
Oh, I mistakenly identified the process sensitivity with it's equivalent
wait statement thinking that if they say "no list" then the wait
statement must not have it either. Thanks.
 
On Thu, 17 May 2012 05:20:57 -0700, Andy wrote:

On May 17, 5:52 am, Allan Herriman <allanherri...@hotmail.com> wrote:
On Wed, 16 May 2012 20:53:35 +0300, valtih1978 wrote:
I'm reading a 2008 spec (Approved 26 September 2008). It says
literally

1. For any concurrent assertion statement, there is an equivalent
process statement.

2. <skip discussion of postponed and label

3. The equivalent process statement also has no sensitivity list,
an
empty declarative part, and a statement part that consists of an
assertion statement followed by a wait statement.

4. <skip report and severity

5. If there exists a name that denotes a signal in the Boolean
expression that defines the condition of the assertion, then the
equivalent process statement includes a final wait statement with a
sensitivity clause that is constructed by applying the rule of 10.2
to that expression; otherwise, the equivalent process statement
contains a final wait statement that has no explicit sensitivity
clause, condition clause, or timeout clause. This looks a confusing
redundancy

Part 3 is obviously included by mistake as it contradicts to
everything:
to common sense, adopted practice and statement No.5

I see no contradiction. The sensitivity clause of the wait statement
mentioned in #5 is not the same thing as the sensitivity list of the
process that is mentioned in #3.

e.g.

generic foo_generic : boolean;
...
signal foo_signal : boolean;

assert foo_generic;

is equivalent to

process begin
assert foo_generic;
wait;
end;

and

assert foo_signal;

is equivalent to

process begin
assert foo_signal;
wait for foo_signal'event;
end;

That's my interpretation of the rules. I may be wrong, of course.

Regards,
Allan- Hide quoted text -

- Show quoted text -

Wait on... needs a list of signals (sensitivity).
Wait until... takes a boolean expression (condition).
Wait for... needs a time expression (a timeout).
They can be combined.

The wait statement for foo_signal would be:

WAIT ON foo_signal UNTIL foo_signal'event;

Or just:

WAIT ON foo_signal;

Andy
Thanks for the correction.
 
On May 17, 5:52 am, Allan Herriman <allanherri...@hotmail.com> wrote:
On Wed, 16 May 2012 20:53:35 +0300, valtih1978 wrote:
I'm reading a 2008 spec (Approved 26 September 2008). It says literally

1. For any concurrent assertion statement, there is an equivalent
process statement.

2. <skip discussion of postponed and label

3. The equivalent process statement also has no sensitivity list,
an
empty declarative part, and a statement part that consists of an
assertion statement followed by a wait statement.

4. <skip report and severity

5. If there exists a name that denotes a signal in the Boolean
expression that defines the condition of the assertion, then the
equivalent process statement includes a final wait statement with a
sensitivity clause that is constructed by applying the rule of 10.2 to
that expression; otherwise, the equivalent process statement contains a
final wait statement that has no explicit sensitivity clause, condition
clause, or timeout clause. This looks a confusing redundancy

Part 3 is obviously included by mistake as it contradicts to everything:
to common sense, adopted practice and statement No.5

I see no contradiction. The sensitivity clause of the wait statement
mentioned in #5 is not the same thing as the sensitivity list of the
process that is mentioned in #3.

e.g.

generic foo_generic : boolean;
...
signal foo_signal : boolean;

assert foo_generic;

is equivalent to

process
begin
assert foo_generic;
wait;
end;

and

assert foo_signal;

is equivalent to

process
begin
assert foo_signal;
wait for foo_signal'event;
end;

That's my interpretation of the rules. I may be wrong, of course.

Regards,
Allan- Hide quoted text -

- Show quoted text -
Wait on... needs a list of signals (sensitivity).
Wait until... takes a boolean expression (condition).
Wait for... needs a time expression (a timeout).
They can be combined.

The wait statement for foo_signal would be:

WAIT ON foo_signal UNTIL foo_signal'event;

Or just:

WAIT ON foo_signal;

Andy
 

Welcome to EDABoard.com

Sponsor

Back
Top