Number | 557
|
Category | errata
|
Synopsis | 9.3.2, para. 2: net "continuous assignment"
|
State | lrmdraft
|
Class | errata-discuss
|
Arrival-Date | Mar 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