The Tcl release command releases any force set on the specified objects. Releasing a force causes the value to immediately return to the value that would have been there if the force had not been blocking transactions.
You cannot use the release command on an analog object or while the analog solver is active.
This command releases any force, whether it was created by a force command or by a Verilog force procedural statement during simulation. The behavior is the same as that of a Verilog release statement.
Objects specified as arguments to the release command must have write access.
The following objects cannot be forced to a value with the force command and, therefore, cannot be specified as the object in a release command.
- Memory
- Memory element
- Bit-select or part-select of a register
- Bit-select or part-select of a unexpanded wire
- VHDL variable
You can apply the release command on bit-select and part-select of wreal arrays, or on an entire wreal array.
For an SV-UDN net, the target net must be scalar, array, or bit-select and part-select of arrays. A limitation of applying the release command on an SV-UDN net is that you cannot release a forced value from individual/specific fields of the SV-UDT.
Additionally, you can use the xm_release system task to release the forced value on an SV-UDN net. The syntax is: xm_release (“<name”). For example:
$xm_release("dut.ve[1:2]");
release Command Syntax
release [-keepvalue] object_name ...
release Command Options
This section describes the options that you can use with the Tcl release command.
|
Releases the forced object, but retains the forced value. You can use wildcard characters in the argument to a
However, you cannot use wildcard characters inside escaped names. |
release Command Examples
The following command removes a force set on object x.
xcelium> release x
The following command removes a force set on object :top:DISPENSE_tempsig.
xcelium> release :top:DISPENSE_tempsig
The following command releases two objects: w[0] and r.
xcelium> release w[0] r
The following command shows what happens if you try to release a force digital variable while the analog solver is active.
xcelium> release b6 *E,SETAIA: Analog engine is active. Cannot release digital object: top.sar.b6
The following command applies the release command on bit-select of wreal arrays and then releases the force set on the wreal object:
Time: 100 NS: top.wrvInst.ra = (0,0,0,0) xcelium> force top.wv[3] 1.2 Time: 100 NS: top.wrvInst.ra = (1.2,0,0,0) xcelium> release top.wrvInst.ra[3] Time: 200 NS: top.wrvInst.ra = (0,0,0,0)
The following command applies the force command on part-select of wreal arrays and then releases the value:
Time: 100 NS: top.wrvInst.ra = (0,0,0,0) xcelium> force top.wrvInst.ra[2:1] {1.5 1.8} Time: 200 NS: top.wrvInst.ra = (0,1.5,0,0) Time: 200 NS: top.wrvInst.ra = (0,1.5,1.8,0) xcelium> release top.wrvInst.ra[1:0] Time: 300 NS: top.wrvInst.ra = (0,1.5,0,0)
The following command applies the force command on an entire wreal array and then releases the value:
Time: 100 NS: top.wrvInst.ra = (0,0,0,0) xcelium> force top.wrvInst.ra {1.8 1.6 1.4 1.2} Time: 100 FS: top.wrvInst.ra = (1.8,0,0,0) Time: 100 FS: top.wrvInst.ra = (1.8,1.6,0,0) Time: 100 FS: top.wrvInst.ra = (1.8,1.6,1.4,0) Time: 100 FS: top.wrvInst.ra = (1.8,1.6,1.4,1.2) xcelium> release top.wrvInst.ra Time: 200 NS: top.wrvInst.r = 0: top.wrvInst.ra = (1.8,1.6,1.4,0) Time: 200 NS: top.wrvInst.r = 0: top.wrvInst.ra = (1.8,1.6,0,0) Time: 200 NS: top.wrvInst.r = 0: top.wrvInst.ra = (1.8,0,0,0) Time: 200 NS: top.wrvInst.r = 0: top.wrvInst.ra = (0,0,0,0)
The following example illustrates the SV-UDN structure and how the release command removes a forced value set on a part-select of an array (tb.ve[2:1]):
typedef struct { real V; real I; real R; } EEstruct;
xcelium> release tb.ve[2:1] Time: 120 NS: tb.ve = ('{V:1, I:`wrealZState, R:10},'{V:1.8, I:0, R:200},'{V:1.8, I:0, R:200}) Time: 120 NS: tb.ve = ('{V:1.8, I:0, R:200},'{V:1.8, I:0, R:200},'{V:1.8, I:0, R:200})
The following command removes a force set on a scalar udn, tb.e:
xcelium> release tb.e Time: 140 NS: tb.dut.e = '{V:1.8, I:0, R:200}
Time: 140 NS: tb.e = '{V:1.8, I:0, R:200}
The following command removes a force set on a bit-select of an array, tb.ve[0]:
xcelium> release tb.ve[0]
