Is this a VITAL bug?

P

Peter Spjuth

Guest
Trying to track down a hold violation reported during simulation
in Modelsim, I came to the conclusion that the hold requirements
for raising and falling edge has been mixed up somehow.
Tracing it through the Vendor libraries to the VITAL source I
see this in timing_b.vhd:
CheckInfo.State := To_X01(TestSignal);
CASE CheckInfo.State IS
WHEN '0' => CheckInfo.ExpTime := HoldHigh;
WHEN '1' => CheckInfo.ExpTime := HoldLow;
WHEN 'X' => CheckInfo.ExpTime :=
Maximum(HoldHigh,HoldLow);
END CASE;
As I understand it from comments, and also how it is connected
in libraries, HoldHigh is for rising edge. But in the above source
HoldHigh
is used at '0' i.e. at falling edge.
This would explain the mixup, but my understanding of VITAL details
is too small to be sure that this is actually a VITAL bug.

Anyone with deeper knowledge who can comment?

/Peter
 
On Thu, 11 Oct 2007 05:04:05 -0700, Peter Spjuth <peter.spjuth@space.se>
wrote:

Trying to track down a hold violation reported during simulation
in Modelsim, I came to the conclusion that the hold requirements
for raising and falling edge has been mixed up somehow.
Tracing it through the Vendor libraries to the VITAL source I
see this in timing_b.vhd:
CheckInfo.State := To_X01(TestSignal);
CASE CheckInfo.State IS
WHEN '0' => CheckInfo.ExpTime := HoldHigh;
WHEN '1' => CheckInfo.ExpTime := HoldLow;
WHEN 'X' => CheckInfo.ExpTime :=
Maximum(HoldHigh,HoldLow);
END CASE;
As I understand it from comments, and also how it is connected
in libraries, HoldHigh is for rising edge. But in the above source
HoldHigh
is used at '0' i.e. at falling edge.
Surely you can only check the "Hold High" time of a signal (presumably
after a clock edge) once the hold time has expired; i.e. once the signal
has become '0'?

I may be misunderstanding, but that's what I get from the limited
context above...

- Brian
 
On 11 Okt, 16:18, Brian Drummond <brian_drumm...@btconnect.com> wrote:
Surely you can only check the "Hold High" time of a signal (presumably
after a clock edge) once the hold time has expired; i.e. once the signal
has become '0'?

I may be misunderstanding, but that's what I get from the limited
context above...
According to the VITAL source comments HoldHigh is:
"Absolute minimum time duration after
the transition of RefSignal for which
transitions of TestSignal are allowed
to proceed to the "1" state without
causing a hold violation."

This I interpret as a rising edge, and that
is how the vendor's libraries use it.

As you wrote, the name HoldHigh do imply that it is the
value being held that should be high, which
adds to the confusion.

/Peter
 

Welcome to EDABoard.com

Sponsor

Back
Top