Assign/deassgin
Force/release
The procedural continuous assignments (using keywords assign and force) areProcedural statementsThat allow expressions to be driven continouslyVariables or nets.
1. net_lvalue = expression in force statement net_lvalue is always albe reference or a net reference. Can be a concatenation of any of the above. Bit-selects and part-Selects of vector variables are not allowed
Variable_lvalue = expression in assign statement variable_lvalue is passed albe reference or a concatenation of variables, not be a memory word (array reference) or a bit-select or a part-select of a Variable
2. Assign variable_assignment
Deassign variable_lvalue
Force variable_assignment
Force net_assignment
Release variable_lvalue
Release net_lvalue
3. The assign and deassign procedural statements
The assign procedural continuous assignment statement shall override all procedural assignments to a variable (procedural continuity assignment has a higher priority than general procedure assignment)
The deassign procedural statement shall end a procedural continous assignment to a variable.
The value of the variable shall remain the same until the variable is assigned a new value through a procedural assignment or procedural continuous assignment.
If the keyword assign is applied to a variable for which there is already a procedural continous assignment, then this new variant continous assignment shall beyond the variable before making the new procedural continuous assignment. (deassign before assign)
4. The force and release procedural statements
1. These statements have a similar effect to the assign-deassign pair, but a force can be appliedNets as well as to variables.
2. the left-hand side of the assignment can be a variable, a net, a constant bit-select of a vector net, a part-select of a vector net, or a concatentation. it cannot be a memory word (array reference) a bit-select or
A part-select of a vector variable. (It seems that the range of force is larger than that of assign. It is better to use force-release as much as possible)
3. A force statement to a variable shall override a procedural assignment or an assign procedural continous assignment to the variable until a release procedural statement is executed on the variable.
4. When released, shall not immediately change value. The variable shall maintain its current value until the next procedural assignment or procedural continuous assignment to the variable.
5. Releasing a variable that currently has an active assign procedural continous assignment shall immediately reestablish that assignment.
6. A force procedural statement on a net shall override all drivers of the net -- Gate outputs, module outputs, and continous assignments -- until a release procedural statement is executed on the net. when released,
The net shall immediately be assgined the value determined by the dirvers of the net.
OpenGL behavioral modeling -- procedural continous assignment (not required)