Hardware Reference
In-Depth Information
if
y'event
then
tz := tz-now;
case
vgy
is
-- Zeitfensterkontrolle der Ampelphasen
when
gn_rt => twa :=now;
if
tz<ta
then
write(str(now) &
" Dauer gn_rt: "
& str(tz));
end if
;
when
ge_rt =>
if
tz<tmin
or
tz>tmax
then
write(str(now) &
" Dauer rt_gn: "
& str(tz));
end if
;
when
rt_rt =>
if
tz<tmin
or
tz>tmax
then
write(str(now) &
" Dauer rt_gn: "
& str(tz));
end if
;
when
rt_gn => Flag :=false;
if
tz<0.9*tF
or
tz>1.1*tF
then
write(str(now) &
" Dauer rt_gn: "
& str(tz));
end if
;
when
Start =>
if
tz>tmax
then
write(str(now)&
" Dauer Start:"
& str(tz));
end if
;
when others
=>
null
;
end case
;
case
y
is
-- Kontrolle der Vorgänger und Wartezeit auf grün
when gn_rt => if not(vgy=ge_rt) then
write(str( ) &
" Vorgänger von gn_rt: "
& str(vgy)); end if;
if
twa-now>twa_max
then
write(str( )&
" Autowartezeit auf gn_rt:"
&str(twa));
end if;
when
ge_rt =>
if not
(vgy=gn rt
or
vgy=rt rt
or
vgy=Start)
then
write(str(now)&
" Vorgänger von ge_rt: "
&str(vgy));
end if
;
when
rt_rt =>
if not
(vgy=ge_rt
or
vgy=rt_gn)
then
write(str(now)&
" Vorgänger von rt_rt: "
&str(vgy));
end if
;
when
rt_gn =>
if not
(vgy=rt rt)
then
write(str(now)&
" Vorgänger von rt_gn: "
&str(vgy));
end if
;
if
twf-now>twf_max
then
write(str(now) &
" Fussgängerwartezeit auf rt_gn:"
& str(twf));
end if
;
when
Start =>
null
;
when others
=> write(str(now)&
" unzulässiger Ausgabewert"
);
end case
;
vgy := y;
end if
;
if not
Flag
and
rising_edge(Taste)
then
Flag:=true; twf:=now;
end if
;
tz :=now;
wait on
y, Taste;
end loop
;
end procedure
;
now
now
)
WEB-Projekt:P3.5/SpecTest_pack.vhdl
Die entwickelte Prozedurbeschreibung zeigt, dass die Programmierung spe-
zifikationsbasierter Plausibilitätstests recht aufwändig sein kann. Aber die Al-
ternative, alle diese Plausibilitätskriterien für Tausende von Testbeispielen
manuell zu kontrollieren, ist noch viel aufwändiger. Gründliches Testen hat
einen hohen Preis.