Hardwarebeschrijvingstalen en verificatie
Dit is zoals hierboven geschreven als een combinatorische schakeling bedoeld. Welk mogelijk probleem is juist?
always @(a)
y = a & b;
- Ab wordt uit de schakeling verwijderd en y wordt gelijk aan a
- BDe synthese geeft een foutmelding en er wordt geen schakeling gemaakt
- CAls alleen b verandert, wordt y in de simulatie niet bijgewerkt, zodat het gedrag afwijkt van de gesynthetiseerde schakeling (waarin y verandert als b verandert)
Antwoord en toelichting tonen
Antwoord: C. Als alleen b verandert, wordt y in de simulatie niet bijgewerkt, zodat het gedrag afwijkt van de gesynthetiseerde schakeling (waarin y verandert als b verandert)
Een simulator voert het blok alleen uit bij verandering van de signalen in de sensitivity list, dus als alleen b verandert, blijft y op de oude waarde staan. Logische synthese kijkt daarentegen niet naar de lijst maar maakt uit de inhoud van het blok een AND-poort, zodat in de werkelijke schakeling ook de verandering van b in y zichtbaar wordt. Het is een gevaarlijke toestand waarin de simulatie juist lijkt maar de schakeling zich anders gedraagt. Met '@(*)' wordt dit voorkomen.
Verder: nog 9 vragen over Hardwarebeschrijvingstalen en verificatie