Uses of GLS
1) GLS is used for checking some of the functionality before reset like POR sequence, bootup etc.
Issues in GLS
1) In the gates X propagation can happen because of
a) unintialized inputs - We can intialize the inputs.
b) unintialized outputs - This has to be root caused and corrected.
c) non resetable flops - The problem can be identified by forcing
a known value to this flop and checking that the logic is working.
2) In the testbench there might be few internal signals that might be
forced from the tests bench. In GLS these signals are flattened or the
signal name gets changed. So the testcase start failing that the path
does not exists.
3) If Q of the flop is connected to D as a loop via a combinational logic and
the flop is not a resetable flop. For example lets take the combo logic as
a simple and gate. If any of the input is x then the out of the combo logic
and the input to the flop will be x. In this way the output of this flop
will be "X".
4) If Q of the flop is connected to D as a loop via a combo logic and the flop
is a resetable flop. For example take the combo logic time delay is more than
a clock pulse. In between the posedge of clocks if reset is given, Q becomes
a know value and before this known value comes to input of the flop if another
clock comes and the previous X is getting propagated through the flop then this
X will override the reset value.
Tuesday, April 26, 2011
Wednesday, March 16, 2011
SV package not allowed to access items declared in Compilation unit scope
By SV packages, we can group all related functions, tasks and classes at one place and import them any where in your environment and use them.
package CHK_PACK;
// Class declartions
// functions
function void check_pack ();
$display ("check_pack:: In CHK_PACK package\n");
endfunction
// Tasks
endpackage
Import this package in the $root space like.
import CHK_PACK::*;
The functions, tasks and classes in this package can be directly used like.
import CHK_PACK::*;
module tb();
initial begin
check_pack();
end
endmodule
NOTE:
1) New objects that are created in the Compilation unit scope cannot be created in these packages. If they are done, the simulator gives the following error.
> SV package not allowed to access items declared in Compilation unit scope
package CHK_PACK;
// Class declartions
// functions
function void check_pack ();
$display ("check_pack:: In CHK_PACK package\n");
endfunction
// Tasks
endpackage
Import this package in the $root space like.
import CHK_PACK::*;
The functions, tasks and classes in this package can be directly used like.
import CHK_PACK::*;
module tb();
initial begin
check_pack();
end
endmodule
NOTE:
1) New objects that are created in the Compilation unit scope cannot be created in these packages. If they are done, the simulator gives the following error.
> SV package not allowed to access items declared in Compilation unit scope
Subscribe to:
Posts (Atom)