ISSUE 557

Number 557
Category errata
Synopsis 9.3.2, para. 2: net "continuous assignment"
State lrmdraft
Class errata-discuss
Arrival-DateMar 08 2004
Originator Shalom.Bresticker@motorola.com
Release 2001b: 9.3.2
Description
9.3.2, para. 2, says,

"A force statement to a variable shall override a procedural assignment or procedural continuous assignment that takes place on the variable until a release procedural statement is executed on the variable. After the release procedural statement is executed, the variable shall not immediately change value (as would a net that is assigned with a procedural continuous assignment)".

The last sentence quoted talks about
"a net that is assigned with a procedural continuous assignment".

There is no such thing, assuming that the meaning is a procedural assign
statement.

It should probably be just "continuous assignment".

--
Shalom Bresticker Shalom.Bresticker@motorola.com
Design & Reuse Methodology Tel: +972 9 9522268
Motorola Semiconductor Israel, Ltd. Fax: +972 9 9522890
POB 2208, Herzlia 46120, ISRAEL Cell: +972 50 441478

[x]Motorola General Business Information
[ ]Motorola Internal Use Only
[ ]Motorola Confidential Proprietary

Fix
This version of the proposal incorporates Gord's suggestion.

In 9.3.2,

CHANGE paragraphs 2-4 FROM

A force statement to a variable shall override a procedural assignment or procedural continuous assignment that takes place on the variable until a release procedural statement is executed on the variable. After the release procedural statement is executed, the variable shall not immediately change value (as would a net that is assigned with a procedural continuous assignment). The value specified in the force statement shall be maintained in the variable until the next procedural assignment takes place, except in the case where a procedural continuous assignment is active on the variable.

A force procedural statement on a net overrides all drivers of the net-gate outputs, module outputs, and continuous assignments-until a release procedural statement is executed on the net.

Releasing a variable that currently has an active procedural continuous assignment shall re-establish that assignment.

TO

A *force* statement to a variable shall override a procedural assignment
or an *assign* procedural continuous assignment to the variable until a *release*
procedural statement is executed on the variable.
When released, then if the variable does not currently
have an active *assign* procedural continuous assignment, the variable shall
not immediately change value. The variable shall maintain its current value
until the next procedural assignment or procedural continuous assignment to the variable.
Releasing a variable that currently has an active *assign* procedural
continuous assignment shall immediately re-establish that assignment.

A *force* procedural statement on a net shall override all drivers of the net --
gate outputs, module outputs, and continuous assignments -- until a *release*
procedural statement is executed on the net. When released,
the net shall immediately be assigned the value determined
by the drivers of the net.
Audit-Trail
From: Steven Sharp <sharp@cadence.com>
To: etf-bugs@boyd.com, Shalom.Bresticker@motorola.com
Cc:
Subject: Re: errata/557: 9.3.2, para. 2: net "continuous assignment"
Date: Mon, 8 Mar 2004 16:15:48 -0500 (EST)

>After the release procedural statement is executed, the variable shall not
>immediately change value (as would a net that is assigned with a procedural
>continuous assignment)".
>
>The last sentence quoted talks about
>"a net that is assigned with a procedural continuous assignment".
>
>There is no such thing, assuming that the meaning is a procedural assign
>statement.

There _is_ such a thing, assuming that the meaning is a procedural force
statement. Note that the sentence is talking about a release, which means
it is ending a force. A deassign is used to end an assign. And when a
force is released on a net, the net immediately changes value to what is
being driven. So I don't see any problem here.

Steven Sharp
sharp@cadence.com

From: Shalom.Bresticker@motorola.com
To: etf-bugs@boyd.com
Cc:
Subject: Re: errata/557: Re: errata/557: 9.3.2, para. 2: net "continuous
assignment"
Date: Fri, 12 Mar 2004 13:41:22 +0200 (IST)

The problem is this:

This paragraph is talking about a force on a VARIABLE, whereas the next
paragraph talks about a force on a NET.

The simple meaning of the quoted phrase in parentheses is to contrast a
release on a variable to a release on a net. It says that when a variable
is release, it shall not immediately change value (in contrast to a net).

However, if it were a net, then a release on the net by definition ends
the force on the net!! On the other hand, what it IS logical to note is that
most nets are constantly being driven (by a continuous assignment or a port
connection, which is also a continuous assignent). When a NET is released,
in contrast to a variable, then the continuous assignment is immediately
re-enabled.

The paragraph later on and repeats two paragraphs afterward the exception on
variables that if an assign is active on the variable, then it will be
immediately re-established upon release of the force of the variable.

Shalom


> >After the release procedural statement is executed, the variable shall not
> >immediately change value (as would a net that is assigned with a procedural
> >continuous assignment)".
> >
> >The last sentence quoted talks about
> >"a net that is assigned with a procedural continuous assignment".
> >
> >There is no such thing, assuming that the meaning is a procedural assign
> >statement.
>
> There _is_ such a thing, assuming that the meaning is a procedural force
> statement. Note that the sentence is talking about a release, which means
> it is ending a force. A deassign is used to end an assign. And when a
> force is released on a net, the net immediately changes value to what is
> being driven. So I don't see any problem here.

--
Shalom Bresticker Shalom.Bresticker@motorola.com
Design & Reuse Methodology Tel: +972 9 9522268
Motorola Semiconductor Israel, Ltd. Fax: +972 9 9522890
POB 2208, Herzlia 46120, ISRAEL Cell: +972 50 441478

[x]Motorola General Business Information
[ ]Motorola Internal Use Only
[ ]Motorola Confidential Proprietary


Fix replaced by Shalom.Bresticker@motorola.com on Sun Mar 14 07:35:56 2004

In 9.3.2, para. 2,

CHANGE

"(as would a net that is assigned with a procedural
continuous assignment)"

TO

"(as would a net that is assigned with a
continuous assignment)".

(Delete the word "procedural".)



From: Steven Sharp <sharp@cadence.com>
To: etf-bugs@boyd.com, Shalom.Bresticker@motorola.com
Cc:
Subject: Re: errata/557: PROPOSAL - 9.3.2, para. 2: net "continuous assignment"
Date: Mon, 15 Mar 2004 16:41:25 -0500 (EST)

Sorry Shalom, but I believe that your interpretation of the intent of this
sentence is incorrect. I believe that my interpretation of the intent is
correct, and that "as would a net that is assigned with a procedural
continuous assignment" is referring to a net that was forced. It is
contrasting the effect of a release on a variable with a release on a net.
A variable retains its value until it is next assigned, while a net
immediately jumps to the value that is being driven onto it (since that
value is conceptually being driven continuously, not updated at specific
times).

I now have support for my interpretation. Just look at 9.3.2 in the 1995
standard. It says "After the release procedural statement is executed, the
register does not immediately change value (as would a net that is forced)."

Apparently it was decided for the 2001 standard to start referring to forces
as a subset of procedural continuous assignments, and therefore the term
"forced" was changed to "assigned with a procedural continuous assignment".
Apparently this confused you, but the original intent clearly matches my
interpretation.

Steven Sharp
sharp@cadence.com

From: Shalom.Bresticker@motorola.com
To: etf-bugs@boyd.com
Cc:
Subject: Re: errata/557: PROPOSAL - 9.3.2, para. 2: net "continuous assignment"
Date: Tue, 16 Mar 2004 11:34:21 +0200 (IST)

OK, that makes sense.

However, the usage of "procedural continuous assignment" here is still
wrong, because that term everywhere else means either both force and
assign or just assign. It never means just force.

Further, while this section discusses what happens when a forced variable
is released, it never discusses what happens when a forced net is released.

Therefore, I will propose to change paragraphs 2-4 from

A force statement to a variable shall override a procedural assignment or procedural continuous assignment that takes place on the variable until a release procedural statement is executed on the variable. After the release procedural statement is executed, the variable shall not immediately change value (as would a net that is assigned with a procedural continuous assignment). The value specified in the force statement shall be maintained in the variable until the next procedural assignment takes place, except in the case where a procedural continuous assignment is active on the variable.

A force procedural statement on a net overrides all drivers of the net-gate outputs, module outputs, and continuous assignments-until a release procedural statement is executed on the net.

Releasing a variable that currently has an active procedural continuous assignment shall re-establish that assignment.

TO

A *force* statement to a variable shall override a procedural assignment
or an *assign* procedural continuous assignment to the variable until a *release*
procedural statement is executed on the variable.
When released, then if the variable does not currently
have an active *assign* procedural continuous assignment, the variable shall
not immediately change value. The variable shall maintain its current value
until the next procedural assignment or procedural continuous assignment to the variable.
Releasing a variable that currently has an active *assign* procedural
continuous assignment shall immediately re-establish that assignment.

A *force* procedural statement on a net shall override all drivers of the net --
gate outputs, module outputs, and continuous assignments -- until a *release*
procedural statement is executed on the net. When released, the net
shall immediately be assigned a new value as determined by the drivers of the net.

Shalom


> Sorry Shalom, but I believe that your interpretation of the intent of this
> sentence is incorrect. I believe that my interpretation of the intent is
> correct, and that "as would a net that is assigned with a procedural
> continuous assignment" is referring to a net that was forced. It is
> contrasting the effect of a release on a variable with a release on a net.
> A variable retains its value until it is next assigned, while a net
> immediately jumps to the value that is being driven onto it (since that
> value is conceptually being driven continuously, not updated at specific
> times).
>
> I now have support for my interpretation. Just look at 9.3.2 in the 1995
> standard. It says "After the release procedural statement is executed, the
> register does not immediately change value (as would a net that is forced)."
>
> Apparently it was decided for the 2001 standard to start referring to forces
> as a subset of procedural continuous assignments, and therefore the term
> "forced" was changed to "assigned with a procedural continuous assignment".
> Apparently this confused you, but the original intent clearly matches my
> interpretation.

--
Shalom Bresticker Shalom.Bresticker@motorola.com
Design & Reuse Methodology Tel: +972 9 9522268
Motorola Semiconductor Israel, Ltd. Fax: +972 9 9522890
POB 2208, Herzlia 46120, ISRAEL Cell: +972 50 441478

[x]Motorola General Business Information
[ ]Motorola Internal Use Only
[ ]Motorola Confidential Proprietary

From: Michael McNamara <mac@verisity.com>
To: Shalom.Bresticker@motorola.com
Cc: etf-bugs@boyd.com
Subject: RE: errata/557: Re: errata/557: PROPOSAL - 9.3.2, para. 2: net "continuous assignment"
Date: Tue, 16 Mar 2004 10:44:28 -0800

-- On Mar 16 2004 at 01:20, Shalom.Bresticker@motorola.com sent a message:
> To: etf-bugs@boyd.com
> Subject: "errata/557: Re: errata/557: PROPOSAL - 9.3.2, para. 2: net "continuous assignment""
> The following reply was made to PR errata/557; it has been noted by GNATS.
>
> From: Shalom.Bresticker@motorola.com
> To: etf-bugs@boyd.com
> Cc:
> Subject: Re: errata/557: PROPOSAL - 9.3.2, para. 2: net "continuous assignment"
> Date: Tue, 16 Mar 2004 11:34:21 +0200 (IST)
>
> OK, that makes sense.
>
> However, the usage of "procedural continuous assignment" here is still
> wrong, because that term everywhere else means either both force and
> assign or just assign. It never means just force.
>
> Further, while this section discusses what happens when a forced variable
> is released, it never discusses what happens when a forced net is released.
>
> Therefore, I will propose to change paragraphs 2-4 from
>
> A force statement to a variable shall override a procedural
> assignment or procedural continuous assignment that takes place on
> the variable until a release procedural statement is executed on
> the variable. After the release procedural statement is executed,
> the variable shall not immediately change value (as would a net
> that is assigned with a procedural continuous assignment). The
> value specified in the force statement shall be maintained in the
> variable until the next procedural assignment takes place, except
> in the case where a procedural continuous assignment is active on
> the variable.
>
> A force procedural statement on a net overrides all drivers of the
> net-gate outputs, module outputs, and continuous assignments-until
> a release procedural statement is executed on the net.
>
> Releasing a variable that currently has an active procedural
> continuous assignment shall re-establish that assignment.
>
> TO
>
> A *force* statement to a variable shall override a procedural
> assignment or an *assign* procedural continuous assignment to the
> variable until a *release* procedural statement is executed on the
> variable. When released, then if the variable does not currently
> have an active *assign* procedural continuous assignment, the
> variable shall not immediately change value. The variable shall
> maintain its current value until the next procedural assignment or
> procedural continuous assignment to the variable. Releasing a
> variable that currently has an active *assign* procedural
> continuous assignment shall immediately re-establish that
> assignment.
>
> A *force* procedural statement on a net shall override all drivers
> of the net -- gate outputs, module outputs, and continuous
> assignments -- until a *release* procedural statement is executed
> on the net. When released, the net shall immediately be assigned a
> new value as determined by the drivers of the net.
>
> Shalom

How about:

Section X.Y: Semantics of Force/Release and Assign/Deassign

First: the force/release statements have the highest precedence, and
overrides any other statement. In the case of multiple force
statements targeting the same object, the most recently executed
statement has precedence. The assign/deassign statements have the
next highest precedence. In the case of multiple assign statements,
the most recently executed assign has precedence. Finally the normal
assigment statements have the lowest precedence.

Second: while this discussion uses the term target to refer to the
object that is forced or assigned, it must be noted that individual
bits of a target are treated as different entities. Hence it is
possible to force a subset of a variable to a value, while allowing
the remainder to continue to behave using normal semantics. It is
also possible to have two active forces each targeting different
subsets of the object.

Third: Should a second force statement be executed targeting an
object already the target of a force, the second force shall replace
the first force in all respects. A later release shall elimnate all
force statements. For removal of confusion, the second force on a
target can be considered to be effectively a release of the first
force, followed immediately by the new force.

Similarily, execution of second procedural continuous assign
statement targeting an object already the target of a procedural
continuous assign statement shall replace the first procedural
continuous assign statement in all respects; and a later deassign
shall remove the effect of all previous procedural continuous
assignments targeting that object.

Finally: The effect of the force and release and procedural assign
and deassign statements on their target is dependent on the type of
target.

Section X.Y.1 When the Target is a Variable

In the case where the target is a variable, execution of the force
statement immediately changes the value of the variable to have the
value of the force expression, and it shall be updated to
continuously hold the hold the value of the force expression as that
changes over time. Any assignment statements executed targeting the
variable while the force is in effect shall not result in a change in
the value of the variable.

When a release statement of the target variable is executed, the
variable shall cease to be updated to hold new values of the force
expression. If at this time there is an existing procedural
continuous assign in effect targeting the variable, the variable
shall be updated to hold the current value of the procedural
continuous assignment expression. If there is not such a procedural
continous assign in effect targeting the variable, then the variable
shall hold the last value forced until such time as some other
assignment to the variable is executed.

Execution of a procedural continuous assign statement targeting a
variable shall, in the absence of a pre-existing force targeting that
same variable, immediately update the variable to hold the value of
the procedural continuous assign expression. The value of the
variable shall be updated continuously to hold the value of the
procedural continuous assign expression as it changes over time,
until either the execution of a deassign statement, or a force
statement targeting the variable. Upon execution of a deassign
statement, the variable shall cease to be updated to hold new values
of the procedural continuous assign expression, and shall instead
hold the last value assigned until such time as some other assignment
to the variable is executed.

In the case where a variable first becomes the target of a force
statement, and then later becomes the target of a procedural
continuous assignment, and then later the target is released, the
procedural assignment then takes effect, hence forth updating the
value to the procedural continuous assign expression, until such time
as the target is deassigned or again forced.

Section X.Y.1 When the Target is a Wire

In the case where the target is a wire, execution of the force
statement immediately adds a driver to the wire which is stronger
than any normal driver. This driver shall contiuously apply the value
of the force expression on the wire with force strength, updated to
continuously hold the hold the value of the force expression as that
changes over time. Any change in the value of other normal drivers
of the wire shall have no effect on the value of the wire.

When a release statement of the target wire is executed, the wire
shall cease to be updated to hold new values of the force expression.
Instead the normal resolution rules shall be used to determine the
new value of the wire, and it shall immediately be updated to hold
that value. Note that because procedural continuous assigment
statements may not target wires, there is no need to consider such an
interaction here, as there was in considering when the target is a
variable.

>
> > Sorry Shalom, but I believe that your interpretation of the intent of this
> > sentence is incorrect. I believe that my interpretation of the intent is
> > correct, and that "as would a net that is assigned with a procedural
> > continuous assignment" is referring to a net that was forced. It is
> > contrasting the effect of a release on a variable with a release on a net.
> > A variable retains its value until it is next assigned, while a net
> > immediately jumps to the value that is being driven onto it (since that
> > value is conceptually being driven continuously, not updated at specific
> > times).
> >
> > I now have support for my interpretation. Just look at 9.3.2 in the 1995
> > standard. It says "After the release procedural statement is executed, the
> > register does not immediately change value (as would a net that is forced)."
> >
> > Apparently it was decided for the 2001 standard to start referring to forces
> > as a subset of procedural continuous assignments, and therefore the term
> > "forced" was changed to "assigned with a procedural continuous assignment".
> > Apparently this confused you, but the original intent clearly matches my
> > interpretation.
>
> --
> Shalom Bresticker Shalom.Bresticker@motorola.com
> Design & Reuse Methodology Tel: +972 9 9522268
> Motorola Semiconductor Israel, Ltd. Fax: +972 9 9522890
> POB 2208, Herzlia 46120, ISRAEL Cell: +972 50 441478
>
> [x]Motorola General Business Information
> [ ]Motorola Internal Use Only
> [ ]Motorola Confidential Proprietary
>
From: Steven Sharp <sharp@cadence.com>
To: etf-bugs@boyd.com, Shalom.Bresticker@motorola.com
Cc:
Subject: Re: errata/557: Re: errata/557: PROPOSAL - 9.3.2, para. 2: net "continuous assignment"
Date: Tue, 16 Mar 2004 17:10:56 -0500 (EST)

Shalom,

Your new proposal is much clearer.

Steven Sharp
sharp@cadence.com

From: Shalom.Bresticker@motorola.com
To: etf-bugs@boyd.com
Cc:
Subject: Re: errata/557: PROPOSAL - 9.3.2, para. 2: net "continuous assignment"
Date: Sat, 3 Apr 2004 22:13:55 +0200 (IST)

This is also for Monday's meeting.
After all, I can't leave you with nothing to do...

I don't have web access now, but I am formally submitting the following as
a proposal for this issue:

In 9.3.2, I propose to CHANGE paragraphs 2-4 FROM

A force statement to a variable shall override a procedural assignment or procedural continuous assignment that takes place on the variable until a release procedural statement is executed on the variable. After the release procedural statement is executed, the variable shall not immediately change value (as would a net that is assigned with a procedural continuous assignment). The value specified in the force statement shall be maintained in the variable until the next procedural assignment takes place, except in the case where a procedural continuous assignment is active on the variable.

A force procedural statement on a net overrides all drivers of the net-gate outputs, module outputs, and continuous assignments-until a release procedural statement is executed on the net.

Releasing a variable that currently has an active procedural continuous assignment shall re-establish that assignment.

TO

A *force* statement to a variable shall override a procedural assignment
or an *assign* procedural continuous assignment to the variable until a *release*
procedural statement is executed on the variable.
When released, then if the variable does not currently
have an active *assign* procedural continuous assignment, the variable shall
not immediately change value. The variable shall maintain its current value
until the next procedural assignment or procedural continuous assignment to the variable.
Releasing a variable that currently has an active *assign* procedural
continuous assignment shall immediately re-establish that assignment.

A *force* procedural statement on a net shall override all drivers of the net --
gate outputs, module outputs, and continuous assignments -- until a *release*
procedural statement is executed on the net. When released, the net
shall immediately be assigned a new value as determined by the drivers of the net.


Fix replaced by Shalom.Bresticker@motorola.com on Wed Apr 14 05:00:55 2004

In 9.3.2,

CHANGE paragraphs 2-4 FROM

A force statement to a variable shall override a procedural assignment or procedural continuous assignment that takes place on the variable until a release procedural statement is executed on the variable. After the release procedural statement is executed, the variable shall not immediately change value (as would a net that is assigned with a procedural continuous assignment). The value specified in the force statement shall be maintained in the variable until the next procedural assignment takes place, except in the case where a procedural continuous assignment is active on the variable.

A force procedural statement on a net overrides all drivers of the net-gate outputs, module outputs, and continuous assignments-until a release procedural statement is executed on the net.

Releasing a variable that currently has an active procedural continuous assignment shall re-establish that assignment.

TO

A *force* statement to a variable shall override a procedural assignment
or an *assign* procedural continuous assignment to the variable until a *release*
procedural statement is executed on the variable.
When released, then if the variable does not currently
have an active *assign* procedural continuous assignment, the variable shall
not immediately change value. The variable shall maintain its current value
until the next procedural assignment or procedural continuous assignment to the variable.
Releasing a variable that currently has an active *assign* procedural
continuous assignment shall immediately re-establish that assignment.

A *force* procedural statement on a net shall override all drivers of the net --
gate outputs, module outputs, and continuous assignments -- until a *release*
procedural statement is executed on the net. When released, the net
shall immediately be assigned a new value as determined by the drivers of the net.



From: Gordon Vreugdenhil <gvreugde@comcast.net>
To: Shalom.Bresticker@motorola.com
Cc: etf-bugs@boyd.com
Subject: Re: errata/557: PROPOSAL - 9.3.2, para. 2: net "continuous assignment"
Date: Wed, 14 Apr 2004 19:02:05 -0700

Shalom, one very minor suggestion with your wording in
the last sentence:

When released, the net shall immediately be assigned a new
value as determined by the drivers of the net.

I would suggest changing this to:

When released, the net shall immediately be assigned the
value determined by the drivers of the net.

The reason for dropping the word "new" is to avoid the
question of whether an event occurs when a special
force strong value "changes" to the regular strong value.
I've seen that confusion arise.

Gord.





From: Shalom.Bresticker@motorola.com
To: Gordon Vreugdenhil <gvreugde@comcast.net>
Cc: etf-bugs@boyd.com
Subject: Re: errata/557: PROPOSAL - 9.3.2, para. 2: net "continuous assignment"
Date: Thu, 15 Apr 2004 06:10:58 +0300 (IDT)

OK.

Shalom


On Wed, 14 Apr 2004, Gordon Vreugdenhil wrote:

>
> Shalom, one very minor suggestion with your wording in
> the last sentence:
>
> When released, the net shall immediately be assigned a new
> value as determined by the drivers of the net.
>
> I would suggest changing this to:
>
> When released, the net shall immediately be assigned the
> value determined by the drivers of the net.
>
> The reason for dropping the word "new" is to avoid the
> question of whether an event occurs when a special
> force strong value "changes" to the regular strong value.
> I've seen that confusion arise.
>
> Gord.
>
>
>
>
>

--
Shalom Bresticker Shalom.Bresticker@motorola.com
Design & Reuse Methodology Tel: +972 9 9522268
Motorola Semiconductor Israel, Ltd. Fax: +972 9 9522890
POB 2208, Herzlia 46120, ISRAEL Cell: +972 50 441478

[x]Motorola General Business Information
[ ]Motorola Internal Use Only
[ ]Motorola Confidential Proprietary


Fix replaced by Shalom.Bresticker@motorola.com on Thu Apr 15 01:21:02 2004
This version of the proposal incorporates Gord's suggestion.

In 9.3.2,

CHANGE paragraphs 2-4 FROM

A force statement to a variable shall override a procedural assignment or procedural continuous assignment that takes place on the variable until a release procedural statement is executed on the variable. After the release procedural statement is executed, the variable shall not immediately change value (as would a net that is assigned with a procedural continuous assignment). The value specified in the force statement shall be maintained in the variable until the next procedural assignment takes place, except in the case where a procedural continuous assignment is active on the variable.

A force procedural statement on a net overrides all drivers of the net-gate outputs, module outputs, and continuous assignments-until a release procedural statement is executed on the net.

Releasing a variable that currently has an active procedural continuous assignment shall re-establish that assignment.

TO

A *force* statement to a variable shall override a procedural assignment
or an *assign* procedural continuous assignment to the variable until a *release*
procedural statement is executed on the variable.
When released, then if the variable does not currently
have an active *assign* procedural continuous assignment, the variable shall
not immediately change value. The variable shall maintain its current value
until the next procedural assignment or procedural continuous assignment to the variable.
Releasing a variable that currently has an active *assign* procedural
continuous assignment shall immediately re-establish that assignment.

A *force* procedural statement on a net shall override all drivers of the net --
gate outputs, module outputs, and continuous assignments -- until a *release*
procedural statement is executed on the net. When released,
the net shall immediately be assigned the value determined
by the drivers of the net.


Unformatted


Hosted by Boyd Technology