J
JohnSmith
Guest
Hi,
I'm studying simulating a simple AND gate (in Xilinx). Xilinx uses
X_AND2 for this. I found that "variable O_GlitchData" is uninitialized
when calling VitalPathDelay01 routine from "timing_b" package at this
line "GlitchData.SchedTime <= NOW". Is this really uninitialized or I
missed sg.? I know Xilinx maybe uses an accelerated version of this
component, I just want to know that is correct or not.
(1)
architecture X_AND2_V of X_AND2 is
attribute VITAL_LEVEL1 of
X_AND2_V : architecture is true;
signal I0_ipd : std_ulogic := 'X';
signal I1_ipd : std_ulogic := 'X';
begin
WireDelay : block
begin
VitalWireDelay (I0_ipd, I0, tipd_I0);
VitalWireDelay (I1_ipd, I1, tipd_I1);
end block;
VITALBehavior : process (I0_ipd, I1_ipd)
variable O_zd : std_ulogic;
variable O_GlitchData : VitalGlitchDataType;
begin
O_zd := I0_ipd and I1_ipd;
VitalPathDelay01 (
OutSignal => O,
GlitchData => O_GlitchData,
OutSignalName => "O",
OutTemp => O_zd,
Paths => (0 => (I0_ipd'last_event, tpd_I0_O, true),
1 => (I1_ipd'last_event, tpd_I1_O, true)),
Mode => VitalTransport,
Xon => Xon,
MsgOn => MsgOn,
MsgSeverity => warning);
end process;
end X_AND2_V;
(2) PROCEDURE VitalPathDelay01 (
BEGIN
-- Check if the new value to be scheduled is different than
the
-- previously scheduled value
IF (GlitchData.SchedTime <= NOW) AND
(GlitchData.SchedValue = OutTemp)
THEN RETURN;
END IF;
John
I'm studying simulating a simple AND gate (in Xilinx). Xilinx uses
X_AND2 for this. I found that "variable O_GlitchData" is uninitialized
when calling VitalPathDelay01 routine from "timing_b" package at this
line "GlitchData.SchedTime <= NOW". Is this really uninitialized or I
missed sg.? I know Xilinx maybe uses an accelerated version of this
component, I just want to know that is correct or not.
(1)
architecture X_AND2_V of X_AND2 is
attribute VITAL_LEVEL1 of
X_AND2_V : architecture is true;
signal I0_ipd : std_ulogic := 'X';
signal I1_ipd : std_ulogic := 'X';
begin
WireDelay : block
begin
VitalWireDelay (I0_ipd, I0, tipd_I0);
VitalWireDelay (I1_ipd, I1, tipd_I1);
end block;
VITALBehavior : process (I0_ipd, I1_ipd)
variable O_zd : std_ulogic;
variable O_GlitchData : VitalGlitchDataType;
begin
O_zd := I0_ipd and I1_ipd;
VitalPathDelay01 (
OutSignal => O,
GlitchData => O_GlitchData,
OutSignalName => "O",
OutTemp => O_zd,
Paths => (0 => (I0_ipd'last_event, tpd_I0_O, true),
1 => (I1_ipd'last_event, tpd_I1_O, true)),
Mode => VitalTransport,
Xon => Xon,
MsgOn => MsgOn,
MsgSeverity => warning);
end process;
end X_AND2_V;
(2) PROCEDURE VitalPathDelay01 (
BEGIN
-- Check if the new value to be scheduled is different than
the
-- previously scheduled value
IF (GlitchData.SchedTime <= NOW) AND
(GlitchData.SchedValue = OutTemp)
THEN RETURN;
END IF;
John