57
Modelarea comportamentala secventiala Capitolul 3

Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Modelarea comportamentala

secventiala

Capitolul 3

Page 2: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Cuprins

• 3.1. Procese. Instructiuni secventiale.

Instructiuni WAIT.

• 3.2. Simularea. Mecanismul de simulare.

• 3.3. Asignarea secventiala a semnalelor.

Mecanismul cu transport. Mecanismul cu

delay inertial.

Page 3: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

3.1. Procese. Instructiuni

secventiale. Instructiuni WAIT.

Page 4: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Procese

• Elementul fundamental pentru modelarea secventiala este procesul

• Procesul este in esenta un set de instructiuni care se executa secvential, care se executa (se activeaza) ca raspuns la anumite evenimente din sistem

• Instructiunea PROCESS este o instructiune concurenta

• Intr-o arhitectura pot fi mai multe procese care se executa concurent (in paralel)

• Acestea se executa in paralel si cu alte procese din alte arhitecturi ce sunt parti ale modelului

• Procesele pot comunica intre ele numai prin intermediul semnalelor

Page 5: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

PROCESSProcess_statement::=

[label:] [POSTPONED] PROCESS [(sensitivity_list)] [IS]

process_declarative_part

BEGIN

{sequential_statement}

END PROCESS [label];

Orice proces poate avea optional o eticheta (label).

Un proces pot fi aminat (postponed) – se va discuta mai tirziu.

Dupa cuvintul cheie PROCESS poate urma o lista de senzitivitate, care

consta intr-o lista de semnale, intre paranteze rotunde. Procesul se va

executa de fiecare data cind apare un eveniment pe cel putin unul din

semnalele din lista de senzitivitate.

Eveniment = modificarea valorii unui semnal.

Page 6: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

PROCESS: declaratii

• Partea de declaratii a unui proces poate contine declaratii de:– Constante, variabile, subprograme, tipuri

• NU se pot declara in procese:– Semnale: deoarece semnalele servesc la

comunicarea intre procese, iar un semnal declarat intr-un proces ar fi vizibil doar in cadrul procesului, deci nu ar mai putea servi la comunicarea intre procese.

– Componente: o componenta va fi legata de o pereche entitate(arhitectura), iar o arhitectura contine procese sau instructiuni echivalente cu acestea, dar NU pot exista procese in procese !

Page 7: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

PROCESS: instructiuni• Corpul procesului, intre BEGIN si END PROCESS, este o

bucla, in sensul ca dupa executia in ordine de catre simulator a tuturor instructiunilor, simulatorul va continua cu BEGIN

• Suspendarea executiei unui proces are loc la executarea unei instructiuni WAIT

• Lista de senzitivitate e echivalenta cu o instructiune WAIT ON semnalele_din_lista situata inainte de END PROCESS

• Sintaxa limbajului nu permite existenta atit a listei de senzitivitate, cit si a unor instructiuni WAIT in corpul procesului

• Este o eroare daca un proces nu are nici lista de senzitivitate si nici nu contine instructiuni WAIT in corpul sau

• In interiorul unui proces timpul de simulare avanseaza DOAR la intilnirea unor instructiuni WAIT (se va explica la mecanismul de simulare)

Page 8: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

PROCESS: instructiuni• Intr-un proces pot exista urmatoarele instructiuni:

1. Asignari de variabile

2. Asignari (secventiale) de semnale

3. Instructiuni IF

4. Instructiuni CASE

5. Instructiuni LOOP cu EXIT si NEXT

6. Apeluri (secventiale) de proceduri -> se vor discuta la un alt capitol

7. Instructiuni ASSERT si REPORT (secventiale)

8. Instructiunea NULL – nu face nimic

9. Instructiuni WAIT

• Instructiunile 2, 6 si 7 pot avea si forme concurente, restul pot fi doar secventiale

• Intr-un proces NU pot exista– Alte instructiuni PROCESS

– Instructiuni de instantiere de componente

– Instructiuni BLOCK

• Mai exista instructiunea secventiala RETURN (in subprograme)

Page 9: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Instructiuni secventiale1. Variable_assignment_statement::=

target := expression ;

Exemplu:

x := x+3;

Unde: target – obiect apartinind clasei variabila

- are acelasi tip de baza ca si expresia

Atunci cind se executa instructiunea de asignare de variabila se evalueaza expresia si valoarea expresiei ii este atribuita variabilei

imediat, adica variabila isi actualizeaza valoarea la timpul de simulare

curent (nu la fel stau lucrurile in cazul semnalelor)

Page 10: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Instructiuni secventiale: IF

3. IF_statement::=

IF condition THEN

sequence_of_statements

{ELSIF condition THEN

sequence_of_statements}

[ELSE

sequence_of_statements]

END IF;

Exemplu:

IF x<0 THEN

cnt_n:=cnt_n+1;

ELSIF x>0 THEN

cnt_p:=cnt_p+1;

ELSE

cnt_z:=cnt_z+1;

END IF;

Conditiile sint evaluate pe rind, pina cind una e gasita adevarata -> se executa

respectiva secventa de instructiuni

Daca nici o conditie nu e adevarata se merge pe ramura de ELSE, daca exista,

iar daca nu exista ELSE nu se face nimic (se iese din IF).

Page 11: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Instructiuni secventiale: CASE4. Case_statement::=

CASE expression IS

WHEN choices => sequence_of_statements

{WHEN choices => sequence_of_statements}

END CASE;

choices ::= choice {|choice}

choice ::=

discrete_range | simple_expression | OTHERS

Exemplu:

CASE x IS

WHEN 0 TO 9 => y:=y+1; -- discrete range

WHEN 10|20|30|40|50 => z:=z+1; -- simple expressions

WHEN OTHERS => q:=q+1; --OTHERS

END CASE;

Page 12: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

CASE

• Selectorul (expression in descrierea BNF) trebuie sa fie de tip discret (enumerare sau intreg) sau sa fie tablou unidimensional de caractere

• Executia instructiunii CASE consta in evaluarea expresiei selector urmata de executia secventei de instructiuni de pe ramura care indeplineste conditia

• Conditiile de pe ramurile de WHEN trebuie sa fie distincte si sa acopere toate valorile selectorului, explicit sau implicit, utilizind OTHERS

Page 13: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Instructiuni secventiale: LOOP4. LOOP_statement ::=

[label] [iteration_scheme] LOOP

sequence_of_statements

END LOOP [label];

iteration_scheme ::=

WHILE condition

| FOR identifier IN discrete_range

--Exemplu:

i:=3; -- i trebuie declarat

WHILE i>=0 LOOP

IF v(i)=‘1’ THEN

nr_de_1 := nr_de_1 +1;

END IF;

i:=i-1;

END LOOP

--Exemplu cu FOR:

FOR i IN 0 TO 3 LOOP

IF v(i)='1' THEN

nr_de_1 := nr_de_1 +1;

END IF;

END LOOP;

-- in acest caz variabila i nu trebuie

declarata

Page 14: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

LOOP

Schema de iterare la LOOP poate lipsi, caz in care bucla se executa la infinit. Se poate

iesi cu EXIT sau, daca bucla e intr-un subprogram, cu RETURN.

NEXT_statement::=

NEXT [loop_label] [WHEN condition]

EXIT_statement::=

EXIT [loop_label] [WHEN condition]

Instructiunea NEXT incheie iteratia curenta si trece la iteratia urmatoare, pe cind

EXIT incheie bucla (iese din bucla).

Daca nu se precizeaza nici o eticheta, atunci instructiunea se refera la bucla cea

mai interioara in cadrul careia se gaseste.

Exemplu:

l1: LOOP

l2: LOOP

l3: LOOP

NEXT l1 WHEN cond1;

EXIT l2 WHEN cond2;

END LOOP l3;

END LOOP l2;

END LOOP l1;

Page 15: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

ASSERT si REPORT7. ASSERT_statement ::=

ASSERT condition

[REPORT expression]

[SEVERITY severity_expression];

Instructiunea verifica daca e adevarata conditia si afiseaza un mesaj atunci cind

conditia este falsa.

expression e un sir de caractere specificat de programator. Implicit e “assertion

violation”.

Severity_expression este de tip SEVERITY_LEVEL, care e un tip predefinit in VHDL:

TYPE SEVERITY_LEVEL IS (NOTE, WARNING, ERROR, FAILURE);

--valoarea implicita este ERROR

Gradul de severitate creste de la NOTE spre FAILURE. Dependent de implementare,

simulatorul poate sa decida oprirea simularii daca gradul de severitate este suficient

de mare.

Page 16: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

ASSERT si REPORTDe obicei instructiunea se foloseste pentru verificarea unor conditii, de genul

timpului de set-up sau de hold la un circuit secvential sau a unor combinatii

interzise la intrari (de ex la bistabile R-S).

In VHDL’93 exista si instructiunea REPORT, care e analoaga cu ASSERT,

doar ca nu se mai verifica nici o conditie:

REPORT_statement ::=

REPORT expression

[SEVERITY severity_expression];

--Exemplu de ASSERT:

--afiseaza un mesaj daca ambele intrari au

--valoarea ‘1’

ASSERT NOT ((reset=1) AND (set=1))

REPORT “Combinatie interzisa la intrari” SEVERITY WARNING;

Page 17: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Instructiunea WAIT

WAIT_statement ::=

WAIT [sensitivity_clause] [condition_clause] [timeout_clause];

sensitivity_clause ::=

ON signal_name { , signal_name}

condition_clause ::=

UNTIL condition

timeout_clause ::=

FOR time_expression

Clauzele sint optionale, dar daca apar, atunci trebuie sa fie in aceasta ordine.

Instructiunea WAIT poate aparea doar in procese.

La intilnirea instructiunii WAIT un proces se suspenda si isi va relua executia

fie datorita aparitiei unui eveniment pe semnalele din lista, fie datorita

indeplinirii conditiei, fie datorita expirarii timpului din clauza de timeout.

Page 18: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Forme ale instructiunii WAIT

1. WAIT • Suspenda pentru totdeauna executia procesului

2. WAIT ON s1,s2,s3;• Executia procesului se reia daca apare un eveniment pe oricare din

semnalele s1, s2, s3.

3. WAIT UNTIL (b+c < 10);• Executia procesului se reia atunci cind e indeplinita conditia.

• In acest exemplu fie b, fie c, fie ambele trebuie sa fie semnale (trebuie sa existe semnale in conditie)

• Conditia se evalueaza atunci cind cel putin unul din semnalele din conditie are un eveniment (isi modifica valoarea)

• Daca b si c sint semnale, atunci aceasta instructiune e echivalenta cu • WAIT ON b,c UNTIL b+c<10;

4. WAIT FOR 2000ns;• Executia procesului se reia dupa 2000ns (dupa 2 us)

Page 19: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Forme ale instructiunii WAIT

5. WAIT ON s1,s2, s3 UNTIL b+c <10;

• Atunci cind apare un eveniment pe s1, s2 sau s3 se

evalueaza conditia, si daca e adevarata, se reia

executia procesului, iar daca e falsa, atunci

procesul ramine suspendat

• Nu e nevoie ca in conditie sa avem semnale

• In exemplu, daca b si c sint semnale, aparitia unui

eveniment pe b sau c NU duce la evaluarea

conditiei, adica instructiunea NU e echivalenta cu:

• WAIT ON s1,s2,s3,b,c UNTIL b+c <10;

Page 20: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Forme ale instructiunii WAIT

6. WAIT ON s1,s2,s3 UNTIL b+c<10 FOR 2000ns;

• In momentul cind se executa instructiunea • se suspenda executia procesului si

• se asteapta aparitia unui eveniment pe s1, s2 sau s3, caz in care se evalueaza conditia, si daca e adevarata, se reia executia procesului (in acest caz se opreste timerul de 2000ns)

• Se porneste un timer de 2000ns: daca timerul expira (adica executia procesului nu a fost reluata datorita clauzelor ON si UNTIL), atunci la expirarea celor 2000ns se va relua oricum executia procesului

• Din punct de vedere logic clauzele ON si UNTIL sint in paralel cu clauza FOR.

Page 21: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Lista de senzitivitate si WAIT

Se poate crea o lista de senzitivitate dinamica folosind WAIT ON:

Un proces trebuie sa aiba fie lista de senzitivitate, fie instructiuni WAIT, dar nu

ambele

Lista de senzitivitate e echivalenta cu o instructiune WAIT ON semnalele

din lista situata inainte de END PROCESS:

PROCESS(s1, s2, s3)

BEGIN

...

END PROCESS

PROCESS

BEGIN

...

WAIT ON s1, s2, s3;

END PROCESS

PROCESS

BEGIN

WAIT ON s1;

. . .

WAIT ON s2, s3;

END PROCESS;

Page 22: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

3.2. Simularea. Mecanismul

de simulare

Page 23: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Simularea

• Limbajul VHDL este definit in termeni de simulare (are o semantica orientata pe simulare).

• Daca modelul de simulat are o structura ierarhica, prima data are loc faza de elaborare a modelului: – Componentele din descrierile structurale sint legate de entitati

– Structura ierarhica se aplatizeaza

– Rezulta un set de procese care comunica prin semnale

• Structura de procese rezultata va fi simulata sub controlul unui nucleu de simulare bazat pe evenimente (event driven simulation kernel)numit simulator.

Page 24: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Simularea

• Simulatorul actualizeaza valorile semnalelor, iar ca rezultat pot aparea evenimente pentru anumite semnale

• Procesele care au fost suspendate si au asteptat aceste evenimente (datorita unor instructiuni WAIT ON sau datorita listei de senzitivitate) isi vor relua exectutia

• Procesele care si-au reluat executia se executa pina cind se suspenda din nou

• Dupa ce toate procesele au fost suspendate, simulatorul va actualiza din nou valorile semnalelor

Page 25: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Simularea

• Deci simularea e un proces ciclic avind 2 faze:– Faza de actualizare a semnalelor (signal update

phase)

– Faza de executie a proceselor (process execution phase)

• Se modeleaza astfel functionarea circuitelor, care – intii raspund la modificarea semnalelor de la intrarile

lor

– Apoi isi modifica iesirile, lucru ce poate duce la activarea altor circuite

Page 26: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Timpul de simulare

• Simularea se face cu ajutorul unui ceas global, care tine timpul de simulare curent (current simulation time)

• Timpul de simulare e un timp pur conventional, fara legatura cu– Timpul fizic

– Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

• Timpul de simulare se incrementeaza in timpul simularii, dar

• Timpul de simulare are doar valori discrete, si anume:– Momentele la care se planifica valori pentru semnale (specificate

prin clauze AFTER time_value

– Momentele date de expresiile de timp din WAIT FOR time_expression

Page 27: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Simularea: semnale

• Simulatorul va actualiza valorile semnalelor doar la anumite momente de timp.

• O instructiune de asignare de semnal dintr-un proces– Nu are efect direct asupra valorii semnalului

– Doar planifica una sau mai multe valori pe care le va lua semnalul in viitor

• Mecanismul de simulare (simulatorul) foloseste o structura de date numita driver-ul unui semnal.

• Driverul este sursa unui semnal.

• Un proces care asigneaza valori unui semnal va crea in mod automat un driver pentru acel semnal.

• In mod normal un semnal are un singur driver: – Un semnal avind mai multe drivere se numeste semnal rezolvat si are nevoie de

o functie de rezolutie care sa rezolve conflictul ce apare si care sa ii determine valoarea

– Functia de rezolutie e un caz particular de functie care este scrisa de programator si apelata de simulator atunci cind semnalului i se planifica valori !

– Semnalele rezolvate se declara in mod diferit si vor fi tratate mai tirziu.

Page 28: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Semnale. Drivere

• Driverul contine forma de unda proiectata a semnalului (projected output waveform)– care este alcatuita dintr-un set de tranzactii

– O tranzactie e o pereche (valoare, moment de timp)

– Semnalul este planificat sa ia valorile respective la momentele de timp indicate

• O instructiune de asignare de semnal din cadrul unui proces afecteaza doar forma de unda proiectata a semnalului prin:– Plasarea uneia sau mai multor tranzactii pe driverul semnalului

– Eventual stergerea unor tranzactii de pe driverul semanlului

• In fiecare driver tranzactiile sint asezate in ordine crescatoare a componentelor lor de timp

Page 29: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Semnale. Drivere

• Valoarea curenta a driverului este componenta valoare a primei tranzactii din driver.

• Valoarea curenta a fiecarui semnal este tinuta de simulator intr-o stuctura de date creata automat la inceputul simularii.

• Prima tranzactie din driver este singura tranzactie a carei componenta de timp nu este mai mare decit timpul de simulare curent.

• Pe masura ce timpul de simulare avanseaza si devine egal cu componenta de timp a urmatoarei tranzactii din driver

– Are loc stergerea primei tranzactii, iar

– Urmatoarea tranzactie devine prima tranzactie

– In acest fel driverul ia noi valori si indiferent daca noua valoare difera sau nu de cea anterioara se spune ca semnalul este activ in ciclul de simulare curent

• Deci in timpul fiecarui ciclu de simulare valorile semnalelor active sint actualizate de catre simulator

• Daca in urma actualizarii se modifica valoarea semnalului atunci se spune ca are loc un eveniment pentru acel semnal.

• Deci, eveniment = modificarea valorii unui semnal.

• Aceste lucruri sunt ilustrate grafic in exemplul urmator:

Page 30: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

X:=s1+s2+s3;

s2<=…

s3<=…

s1<= …

s1<=…

s3<=…

Process P1

110ns10

100ns0

35ns100

10ns5

110ns10

100ns0

35ns100

10ns5

100ns88

50ns0

15ns10

100ns88

50ns0

15ns10

130ns55

20ns150

130ns55

20ns150

60ns0

40ns0

20ns1

60ns0

40ns0

20ns1

Dr_S1P1 Dr_S2P2 Dr_S3P2Dr_S3P3

5 150 f(10,1)

Process P2 Process P3

Process P4

Resolution function

Current signal

values

Fig 2. (fig 2.7 din

[EKP98]).

Procese, drivere,

functii de rezolutie

Page 31: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Ciclul de simulare

• Ciclul de simulare contine intr-o forma mai riguroasa ceea ce s-a discutat pina acum referitor la simulare.

• Cunoasterea si intelegerea ciclului de simulare este absolut esentiala pentru cunoasterea limbajului VHDL si pentru a putea intelege functionarea oricarui model de simulare.

• Intr-o forma sau alta se cere la examen !

Page 32: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Ciclul de simulare

• Are trei faze:

– Faza 0: elaborarea

– Faza 1: initializarea

– Faza 2: ciclul de simulare

• Primele 2 faze se executa o singura data, iar a treia e periodica.

• Notatii:

– Tc: timpul de simulare curent

– Tn (time next): timpul de simulare urmator.

Page 33: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Ciclul de simulare• Faza 0: eleborarea:

– Componentele din descrierile structurale sint legate de entitati

– Structura ierarhica se aplatizeaza

– Rezulta un set de procese care comunica prin semnale

• Faza 1: initializarea:1. Timpul de simulare curent ia valoarea 0 ns (Tc

0ns)

2. Se initializeaza toate semnalele cu valoarea de la declarare sau in mod implicit, conform reguluii pt tipul respectiv

3. Se lanseaza in executie toate procesele, care se executa pina cind se suspenda (toate)

4. Se calculeaza timpul de simulare urmator (Tn) la fel ca in faza 2.

Page 34: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Ciclul de simulare

• Faza 2: ciclul de simulare:1. Avanseaza timpul (Tc Tn)

2. Se actualizeaza toate semnalele active

3. Procesele care au fost suspendate in asteptarea unor evenimente si acele evenimente au avut loc isi reiau executia. Isi reiau executia si procesele care au asteptat scurgerea unui interval de timp si acel interval a trecut.

4. Procesele care si-au reluat executia se executa pina cind se suspenda

5. Se calculeaza timpul de simulare urmator (Tn) ca fiind minimul dintre:

– TIME’HIGH (valoarea maxima posibila a tipului TIME)

– Urmatorul momet cind driverul unui semnal devine activ datorita clauzei AFTER valoare_de_timp

– Urmatorul moment de timp specificat printr-o clauza WAIT FOR valoare_de_timp.

Page 35: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Intirzieri delta. Cicluri delta

In VHDL exista un mecanism care ordoneaza evenimente ce se

desfasoara la acelasi timp de simulare.

O intirziere delta (delta delay) este o valoare infinitezimala de timp ce

separa evenimente ce au loc la acelasi timp de simulare.

Exemplu:

ENTITY delta_delay_example IS

PORT(x,y: IN BIT; z: OUT BIT);

END ENTITY;

ARCHITECTURE ex OF delta_delay_ex IS

SIGNAL s: BIT;

Page 36: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Intirzieri delta, cicluri delta

BEGIN

and_gate: PROCESS (x,y)

BEGIN

s <= x AND y;

END PROCESS and_gate;

inv_gate: PROCESS(s)

BEGIN

z <= NOT s;

END PROCESS inv_gate;

END ARCHITECTURE;

Page 37: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Intirzieri delta, cicluri delta

• Presupunem ca y=‘1’ si ca la momentul T

semnalul x isi schimba valoarea.

• In ciclul 1 de simulare:

– Se actualizeaza x

– Se executa procesul and_gate

– Se plaseaza o valoare pe driverul lui s

– Se calculeaza timpul de simulare urmator:

• Tn = T+0ns (practic Tn = T+Δ)

Page 38: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Exemplu cu cicluri delta

• In ciclul 2 de simulare:

– Tc Tn (Tc = T + Δ)

– Se actualizeaza s

– Se executa procesul inv_gate

– Se planifica un eveniment pe driverul semnalului z la momentul Tn=Tc+0ns (=T+2 Δ)

• In ciclul 3 de simulare:

– Tc Tn (=T+2 Δ)

– Se actualizeaza driverul lui z;

Page 39: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Intirzieri delta, cicluri delta

• Intre momentul cind semnalul x isi modifica valoarea si momentul cind z isi modifica valoarea au loc 3 cicluri de simulare, dar fara modificarea timpului de simulare.

• Se spune ca evenimentele din cele 3 cicluri de simulare sint separate prin intirzieri delta.

• Definitie: un ciclu de simulare care se executa la acelasi timp de simulare ca si ciclul anterior se numeste ciclu delta (delta cycle)

• Mecanismul cu intirzieri delta este foarte important atunci cind VHDL este utilizat pentru sinteza circuitelor.

Page 40: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Procese aminate (postponed)

• Definitie: un proces aminat va fi executat in ciclul de simulare in care isi reia executia doar daca urmatorul ciclu de simulare nu este un ciclu delta.

• Practic procesele aminate se executa dupa incheierea tuturor ciclurilor delta de la un anumit moment de simulare.

• Procesele aminate nu pot genera noi cicluri delta: este o eroare daca un proces aminat genereaza cicluri delta (are AFTER 0ns sau WAIT FOR 0ns)

• Datorita proceselor aminate se modifica ciclul de simulare astfel:– In faza 2, pasul 4: se executa procesele care si-au reluat executia daca

acestea nu sint procese aminate.

• In plus apar si urmatorii pasi:– Pasul 6: daca Tn /= TC (Tn diferit de Tc), adica urmatorul ciclu nu e

delta, atunci se executa procesele aminate.

– Pasul 7: se calculeaza Tn ca la pasul 5.

Page 41: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Asignarea secventiala a

semnalelor. Mecanismul cu

transport. Mecanismul cu delay

inertial.

Page 42: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Instructiunea de asignare de semnal

Forma de unda proiectata din driverul semnalului poata fi modificata de o instructiune de

asignare de semnal (signal assignment statement).

Sintaxa instructiunii:

Signal_assignment_statement::=

target <= [TRANSPORT | [REJECT time_expression] INERTIAL] waveform;

• target:

•obiect de clasa semnal (adica semnal sau port)

•avand acelasi tip de baza ca si componentele valoare ale tranzactiilor produse de

forma de unda (waveform)

•waveform ::= waveform_element {, waveform_element}

• waveform_elelement ::= value AFTER time_expression

Page 43: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Instructiunea de asignare de semnal•Evaluarea unui element forma de unda (waveform_element) produce o singura tranzactie.

•Componenta de timp a tranzactiei e determinata de Tc + time_expression (din waveform

element).

•Componenta valoare a tranzactiei e determinata de value din waveform_element

• O instructiune secventiala de asignare de semnal afecteaza doar driverul semnalului !

•Valoarea semnalului NU va fi modificata in ciclul de simulare in care se executa

instructiunea de asignare de semnal.

•Exemplu. Intr-un PROCESS exista urmatoarea secventa de cod

X <= 1;

IF X=1 THEN

secventa_1_de_instructiuni

ELSE

secventa_2_de_instructiuni

END IF;

...

Page 44: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Instructiunea de asignare de semnal

•Daca X avea o valoare diferita de 1 inainte de executia procesului, atunci se va executa

secventa_2_de_instructiuni deoarece instructiunea de asignare de semnal (X<= 1;) NU

modifica valoarea curenta a semnalului.

•Ca sa se execute secventa_1_de_instructiuni trebuie ca dupa instructiunea de asignare de

semnal sa apara o instructiune WAIT (de ex WAIT FOR 0ns; sau WAIT ON X; in acest caz)

•Atunci la intilnirea instructiunii WAIT

•se suspenda procesul

•Se actualizeaza valorile semnalelor

•Se reia procesul (in ciclul de simulare urmator - e un ciclu delta)

• se va executa prima secventa de instructiuni din IF

•Se observa diferenta dintre executia instructiunii de asignare de semnal si executia unei

instructiuni de asignare de variabila (daca X ar fi fost variabila s-ar fi executat prima

secventa de instructiuni din IF, fara sa fie nevoie de adaugarea unei instructiuni WAIT.

Page 45: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Mecanismul cu delay inertial si

mecanismul cu transport• Evaluarea formei de unda (waveform) la o instructiune

de asignare de semnal – rezulta intr-o secventa de tranzactii

– Fiecare tranzactie corespunde unui element forma de unda (waveform element)

• Aceste tranzactii se numesc tranzactii noi– Trebuie sa fie in ordine crescatoare a componentelor de timp

• Secventa de tranzactii noi va actualiza vechile tranzactii, ce constituie forma de unda proiectata a driverului semnalului– Felul in care se produce actualizarea depinde de mecanismul de

intirziere (delay mechanism).

– Mecanismul poate fi cu transport sau inertial.

Page 46: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Mecanismul cu delay inertial si

mecanismul cu transport• Mecanismul cu transport

– modeleaza trasee conductoare (de cablaj sau fire)

– Un semnal prezent la un capat se propaga la celalalt capat avand aceeasi forma, dar intirziat

– Trebuie specificat explicit prin cuvintul TRANSPORT

• Mecanismul cu delay inertial– Modeleaza circuite

– Pentru ca un semnal de intrare sa aiba efect, el trebuie sa aiba o anumita durata (energie in cazul real) numita limita de rejectie

• Daca nu se specifica, e egala cu componenta de timp a primei noi tranzactii

– Rezulta ca un semnal prea scurt nu se propaga la iesirea circuitului (nu afecteaza circuitul).

– Este implicit in limbaj deoarece:• Modelam mai des circuite decit trasee

• Daca mecanismul cu transport ar fi implicit s-ar incarca in mod inutil simulatorul (s-ar propaga si impulsurile foarte scurte).

Page 47: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Exemplu

x

z1

z3

z2

Z1 <= TRANSPORT x AFTER 15ns;

Z2 <= x AFTER 15ns;

Z3 <= REJECT 8ns x AFTER 15ns;

Unde intrtarea x are expresia:

X<=‘1’ AFTER 10ns, ‘0’ AFTER 20ns, ‘1’ AFTER

30ns, ‘0’ AFTER 50ns, ‘1’ AFTER 70ns, ‘0’

AFTER 75ns, ‘1’ AFTER 85ns, ‘0’ AFTER 90ns;

O entitate avind intrarea x si iesirile z1, z2, z3, ca in figura 3,

are in arhitectura instructiunile de mai jos:

Formele de unda ale semnalelor x, z1, z2, z3 vor fi urmatoarele:

Fig 3 (dupa fig

2.10 din [EKP98])

Buffer cu delay

inertial si delay cu

transport

Page 48: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Fig 4. Formele de unda pentru semnalele din fig 3 (bufferul cu delay inertial si cu transport)

Page 49: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Mecanismul cu delay cu transport:

reguli

• Actualizarea formei de unda proiectare a

semnalului se face conform pasilor:

1. Se sterg de pe driverul semnalului toate vechile

tranzactii planificate la acelasi moment de timp sau

dupa prima noua tranzactie

2. Se adauga noile tranzactii la driverul semnalului

• Consecinta:

– tranzactiile vechi planificate sa fie executate

inaintea celor noi NU sint afectate de noile tranzactii

Page 50: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Mecanismul cu delay cu transport:

exemplu

Consideram ca intr-un proces exista urmatoarea secventa:

S<=TRANSPORT 100 AFTER 20ns, 15 AFTER 35ns;

S<=TRANSPORT 10 AFTER 40ns;

S<=TRANSPORT 25 AFTER 38ns;

Presupunem ca Tc=100ns si forma de unda proiectata contine doar o tranzactie avind

componenta valoare S=0.

Dupa primele doua instructiuni driverul lui S arata astfel:

0 100 15 10

100ns 120ns 135ns 140ns

Page 51: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Exemplu: mec. cu transport

(continuare)

0 100 15 25

100ns 120ns 135ns 138ns

La executia celei de-a treia instructiuni:

• se sterge ultima tranzactie, conform pasului 1.

•Se adauga tranzactia avind componenta de timp Tc + 38ns, conform pasului 2.

Driverul semnalului va arata astfel:

Page 52: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Mecanismul cu delay inertial: reguli

• Actualizarea formei de unda proiectare a semnalului se face conform pasilor:1.Se sterg de pe driverul semnalului toate vechile

tranzactii planificate la acelasi moment de timp sau dupa prima noua tranzactie

2.Se adauga noile tranzactii la driverul semnalului

3. se sterg de pe driverul semnalului toate vechile tranzactii situate in intervalul dintre timpul primei noi tranzactii minus limita de rejectie si timpul primei noi tranzactii ([tnew – trejection, tnew]) cu exceptia situatiei in care vechea tranzactie imediat precedenta primei noi tranzactii are aceeasi valoare ca si prima noua tranzactie.

Page 53: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Mecanismul cu delay inertial:

exempluConsideram ca intr-un proces exista urmatoarea secventa:

S<=100 AFTER 20ns, 15 AFTER 35ns;--(1)

S<=8 AFTER 40ns, 2 AFTER 60ns, 5 AFTER 80ns, 1 AFTER 100ns;--(2)

S<=REJECT 35ns INERTIAL 5 AFTER 90ns;--(3)

Presupunem ca Tc=100ns si forma de unda proiectata contine doar o tranzactie avind

componenta valoare S=0.

Dupa prima instructiune driverul lui S arata astfel:

0 100 15

100ns 120ns 135ns

Page 54: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Mec. cu delay inertial: exemplu (2)

La executia instructiunii (2):

•tnew=140ns, trej=40ns (de ce?), tnew-trej=100ns

•Pasul 1: nu se sterge nici o tranzactie

•Pasul 2: se adauga noile tranzactii

•Pasul 3: se sterg vechile tranzactii in intervalul [100ns, 140ns].

Driverul semnalului S va arata astfel:

0 8 2 5 1

100ns 140ns 160ns 180ns 200ns

La executia instructiunii (3):

•tnew=190ns, trej=35ns , tnew-trej=155ns

•Pasul 1: se sterge ultima tranzactie, avind t=200ns>tnew=190ns

•Pasul 2: se adauga noile tranzactii

Page 55: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Mec. cu delay inertial: exemplu (3)

0 8 2 5 5

100ns 140ns 160ns 180ns 190ns

Driverul va arata astfel:

•Pasul 3: se sterg vechile tranzactii in intervalul [155ns, 190ns], cu exceptia tranzactiei

(5, 180ns) care e imediat precedenta primei noi tranzactii si are aceeasi valoare ca si ea.

Driverul lui S va arata in final astfel:

0 8 5 5

100ns 140ns 180ns 190ns

Page 56: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Procese pasive

• Au urmatoarele caracteristici:

1. Nu asigneaza valori unor semnale

2. Pot aparea in partea de instructiuni din entity

declaration:

• de fapt in partea de instructiuni din entity

declaration pot aparea DOAR procese pasive

sau instructiuni echivalente cu acestea

3. De obicei se folosesc la verificarea unor

conditii.

Page 57: Modelarea comportamentala secventialastaff.cs.upt.ro/~todinca/TPAC/Curs/tpac3_2014.pdf · – Timpul calculatorului (clock-ul procesorului, alte eveninente legate de sistemul de operare)

Observatie importanta

• In interiorul unui proces timpul de simulare nu se modifica intre instructiuni WAIT.

– Timpul de simulare se modifica doar la intilnirea unor instructiuni WAIT.

• Un proces care isi reia executia dupa ce a fost suspendat de catre o instructiune WAIT isi va relua executia in ciclul de simulare urmator

– Inainte de reluarea executiei are loc actualizarea valorilor semnalelor.