sum
este nedefinit.test_adder
, iar instanța acestuia se numește uut
(unit under test).F9
sau făcând click pe porțiunea gri din dreapta numărului liniei.uut
sunt nedefinite(x
inseamna nedefinit), lucru normal deoarece simularea nu a început încă .Run All
pentru a porni simularea.Run All
. Simularea se va opri din nou la breakpoint-ul de la linia 35, însa în momentul acesta ne aflăm în a doua iterație a ciclului. Putem vedea lucrul acesta inspectând valoarea contorului, care este 1 (prima valoare a contorului a fost 0). În această iterație vedem că primul bit al lui sum
a fost setat la valoarea 0.Run All
, până când execuția ciclului se termină și ajungem la breakpoint-ul de la linia 37. În acest moment, pentru o implementare corectă, suma celor două intrări ar trebui să fie calculată complet. Observăm însă că cel mai semnificativ bit al lui sum a rămas nedefinit. Înseamnă că ciclul nostru s-a terminat prea repede. Inspectând condiția de oprire, vedem că ieșirea din ciclu se face când i
devine 7. Iterația corespunzătoare lui i == 7
nu se execută, ceea ce explică de ce bitul 7 din sum
este nedefinit.i < 8
.Re-launch
pentru a recompila și rerula simularea.Run All
. La o primă vedere, din fereastra de variabile, rezultatul pare a fi corect, semnalele nedefinite au dispărut, iar suma pare a fi calculată corect.Restart
.00101000
și 00001010
prezente la intrarile a
și b
și valoarea 0 a controului i
. Valoarea sumei, 00000000
, este rămasă de la adunarea anterioară.sum
este 1. Din datele de intrare: a[0] == 0
, b[0] == 0
și c_in == 0
am deduce că această sumă ar trebui să fie 0. Inspectând expresia pentru calcul sumei, observăm că rezultatul pentru toți biții lui sum se calculează cu b[1]
.