Limbaje moderne de descriere hardware

Post on 08-Nov-2021

12 views 0 download

Transcript of Limbaje moderne de descriere hardware

1

Limbaje moderne de descriere a structurilor hardware

Probleme organizatorice

Evaluare

Nota finala=40% *(Nota verificare pe parcurs)

+ 30% * (Nota laborator ) +30 % * (Nota teme de casa)

2 verificari pe parcurs

2 teme de casa

Prezenta la laborator obligatorie

2

Probleme organizatorice

Pagina aferenta cursului:

moolde.ee.tuiasi.ro

Disponibile:

Referate pentru lucrarile de laborator

Note de curs (cele vechi). Cursurile sunt actualizate pe parcursul semestrului

Informații suplimentare

3

Bibliografie

Haba C.G. – Proiectarea avansata cu circuite integrate programabile si limbaje de descriere a componentelor hardware

Haba C.G. si Breniuc Liviu – Proiectare cu circuite integrate programabile

Toacse Gh. si Nicula Dan, Electronica digitala Vol. I si II, Ed. Tehnica 2005

Nicula Dan – Proiectare cu Verilog - Carte de învăţătură

Ilas Mariana Eugenia si Constantin Ilas - Proiectarea circuitelor integrate digitale folosind limbajul Verilog

4

Sumar

Introducere

Unde se folosesc HDL

Istoric

Comparatie intre HDL si limbajele de programare

Descrierea circuitelor

Caracteristici ale HDL

Proiectarea cu HDL

5

Sumar

Introducere

Unde se folosesc HDL

Istoric

Comparatie intre HDL si limbajele de programare

Descrierea circuitelor

Caracteristici ale HDL

Proiectarea cu HDL

6

7

Introducere

În ultimele decenii complexitatea circuitelor logice a crescut considerabil

Vechile forme de automatizare ale proiectării sistemelor electronice nu mai sunt eficiente

Limbajele HDL oferă metode consistente şi eficiente de proiectare şi sinteză a circuitelor logice

Limbajele HDL sunt relativ uşor de învăţat

Sumar

Introducere

Unde se folosesc HDL

Istoric

Comparatie intre HDL si limbajele de programare

Descrierea circuitelor

Caracteristici ale HDL

Proiectarea cu HDL

8

Domenii de utilizare a sistemelor proiectate cu HDL

Echipamente pentru autovehicule

Stocare date

Calcule de inalta performanta

Echipamente industriale

Echipamente militare

Telecomunicatii cu sau fara fir

Audio/video

Echipamente medicale

Echipamente de masura si control

Securitate

Periferice pentru calculatoare

9

Sisteme proiectate folosind HDL

10

Aplicații ale circuitelor programabile

Aplicații auto Conducere asistată

Multimedia

Vehicule electrice

Instrumentație de bord

Aplicații industriale Securitate funcțională

Ethernet industrial

Comanda mașinilor electrice

Automate programabile

Aplicații de energie inteligentă

Supraveghere video

Recunoașterea imaginilor

Bunuri de larg consum Televizoare digitale

Cititoare și înregistratoare DVD

Monitoare și video proiectoare

Dispozitive portabile

Ecrane tactile

Clădiri inteligente

Aparatură electrocasnică

Medicină Aparatură pentru imagistică medicală

Stimulatoare cardiace

Dispozitive pentru sănătate

Aparatură medicală

Măsurare și testare Aparate de măsură

Aparatură de testare

Prelucrarea semnalelor

Dispozitive de afișare

Telecomunicații Infrastructura pentru telefonie mobilă

Wireless

3G, LTE

Dispozitive pentru comunicatie în rețea

Rutere, switch-uri

Managementul traficului

Calculatoare Sisteme de stocare

Servere

Procesare de întaltă performanță (HPC)

Accelerare calculelor financiare

11

Sisteme proiectate cu HDL www.openorg.com

12

Sisteme proiectate cu HDL

13

14

15

16

Sisteme proiectate folosind HDL

Vezi www.opencores.org

17

Sisteme proiectate folosind HDL

18

Sisteme proiectate folosind HDL

Sumar

Introducere

Unde se folosesc HDL

Istoric

Comparatie intre HDL si limbajele de programare

Descrierea circuitelor

Caracteristici ale HDL

Proiectarea cu HDL

19

20

Proiectarea grafica

21

Apariția limbajelor HDL

22

Aparitia limbajelor HDL

23

Limbaje de descriere hardware

Descriu partea hardware la diverse nivele de abstracţie: structural și comportamental

Descriere structurală

Descrierea text înlocuieşte schemele

Compunerea ierarhică a modulelor din primitive

Descrierea comportamentală funcţională

Se descrie ce face modulul, nu cum

Prin sinteză se generează schema pentru module

Semantica pentru simulare

24

Limbaje HDL

Abel (circa 1983) – dezvoltat de Data-I/O Orientat spre circuitele logice programabile Neadecvat pentru descrieri ce depaşesc

automatele finite

ISP (instruction set processor) (circa 1977) – proiect de cercetare la CMU (Carnegie Mellon University) Pentru simulare, fără sinteză

25

Limbaje HDL (2)

Verilog (circa 1985) – dezvoltat de Gateway (preluată de Cadence) Similar cu limbajele Pascal şi C Singura interacţiune cu simulatorul sunt întârzierile Destul de eficient şi uşor de scris Standard IEEE

VHDL (circa 1987) – DoD (Department of Defense) standard sponsorizat Similar cu Ada (orientat spre reutilizarea codului şi

mentenanţă uşoară) Semantica simulării vizibilă La nivel foarte general dar dimensiune mare a

codului Standard IEEE

26

Exemplu Verilog (circuit de deplasare cu selecție pe 2 biți)

reg [3:0] data_out;

always @*

case (<select>) 2'b00 : data_out = data_in; 2'b01 : data_out = data_in << 1; 2'b10 : data_out = data_in << 2; default: data_out = data_in << 3; endcase

27

Exemplu VHDL (circuit de deplasare cu selecție pe 2 biți)

--use IEEE.numeric_std.all; process(clock) begin if ( clock'event and clock ='1') then case selector is when "00" => output <= input ; when "01" => output <= input sll 1; when "10" => output <= input sll 2; when "11" => output <= input sll 3; when others => output <= input ; end case; end if; end process;

28

Limbajul Verilog

Suportă descrieri structurale şi comportamentale

Structural

Structură explicită a circuitului

E.g., fiecare poartă logică este instanţiată şi conectată la celelalte

Comportamental

Programul descrie comportamentul relativ la intrări şi ieşiri

Mai multe implementări structurale pot avea acelaşi comportament (de exemplu, diferite implementări ale aceleiaşi funcţii booleene)

29

Model structural

module xor_gate (out, a, b);

input a, b;

output out;

wire abar, bbar, t1, t2;

inverter invA (abar, a);

inverter invB (bbar, b);

and_gate and1 (t1, b, abar);

and_gate and2 (t2, a, bbar);

or_gate or1 (out, t1, t2);

endmodule

out a

b

abar

bbar

t1

t2

30

Model comportamental

Atribuire continuă module xor_gate (out, a, b);

input a, b;

output out;

reg out;

assign #6 out = a ^ b;

endmodule

Întârzierea modificării

semnalului de ieşire faţă de

modificarea semnalului de

intrare

Registru simulare -

înregistrează valorile

unui semnal

Sumar

Introducere

Unde se folosesc HDL

Istoric

Comparatie intre HDL si limbajele de programare

Descrierea circuitelor

Caracteristici ale HDL

Proiectarea cu HDL

31

32

Comparaţie: limbaje de programare limbaje HDL

Limbajele de programare procedurale descriu modul cum se realizează (reţetă): Calculele

Manipularea datelor

Execuţia pentru o anumită platformă hardware

HDL descriu un sistem Sistemele pot fi descrise din mai multe puncte de vedere

Comportamental: ce face?

Structural: din ce este alcătuit?

Proprietăţile funcţionale: cum realizez interfaţarea cu acesta?

Proprietăţile fizice: Cât este de rapid? Ce putere consumă?

33

Comparaţie: limbaje de programare limbaje HDL

Structura programului Instanţieri multiple ale unor componente de acelaşi

tip Specifică interconexiunile între module la fel ca în

schemele electrice Utilizează ierarhii de module

Atribuiri Atribuire continuă (circuitele logice prelucrează

semnalul continuu) Întârzieri ale propagării semnalelor (prelucrarea

semnalelor necesită un anumit timp) Evoluţia în timp a semnalelor este importantă

(momentul în care are loc prelucrarea)

34

Comparaţie: limbaje de programare limbaje HDL

Structurile de date Dimensiunile sunt precizate în mod explicit – nu

există structuri dinamice Nu există pointeri

Paralelism Structurile hardware au în mod natural o

funcţionare paralelă (trebuie să suporte mai multe fire de execuţie)

Atribuirile pot să apară în paralel (nu doar secvenţial)

35

Comparaţie: limbaje de programare limbaje HDL

Programele scrise în ambele limbaje sunt prelucrate de către un compilator Un compilator HDL lucrează de cele mai multe ori

în mai multe etape producând în primă fază o descriere într-un format intern. Acesta este apoi convertit într-o descriere într-un format standard (EDIF - Electronic Design Interchange Format) apoi într-un format JEDEC (Joint Electron Device Engineering Council).

Fişierul JEDEC conţine instrucţiunile ce trebuiesc date unui programator PLD pentru a configura un circuit programabil.

Sumar

Introducere

Unde se folosesc HDL

Istoric

Comparatie intre HDL si limbajele de programare

Descrierea circuitelor

Caracteristici ale HDL

Proiectarea cu HDL

36

37

HDL şi circuitele combinaţionale

Module: se specifică intrările, ieşirile, terminalele bidirecţionale şi semnalele interne

Atribuire continuă: în orice moment ieşirea unei porţi este o funcţie de intrările porţii (nu trebuie să aştepte să fie apleată)

Întârzirea la propagare: se utilizează conceptul de timp şi de întârziere a ieşirii faţă de modificarea intrării

38

HDL şi circuitele combinaţionale

Compunere: modulele se conectează utilizând fire de conexiune

Ierarhie: modulele incorporează blocuri funcţionale

Pot fi specificate condiţii indiferente sau incomplet specificate - don't care (se utilizează “x” pentru respectivele ieşiri)

39

HDL şi circuitele secvenţiale

Circuite bistabile Este reprezentat semnalul de tact ce indică

modificarea stări

Pot fi modelate atât bistabilele asincrone cât şi cele sincrone

Automate finite Descriere structurală (bistabilele separate de logica

combinaţională)

Descriere comportamentală (sinteza secvenţiatoarelor)

40

HDL şi circuitele secvenţiale

Căi de date (data-paths = ALU + registre) Se utilizează operatori logico-aritmetici

Partea de control a elementelor de stocare

Paralelism Mai multe automate funcţionând în paralel

Stări incomplet definite

Sumar

Introducere

Unde se folosesc HDL

Istoric

Comparatie intre HDL si limbajele de programare

Descrierea circuitelor

Caracteristici ale HDL

Proiectarea cu HDL

41

42

Caracteristici ale HDL

Principala caracteristică a HDL este că permit descrierea comportamentului circuitelor hardware independent de modul în care acestea vor fi implementate.

Cu ajutorul unui singur limbaj se poate descrie atât funcţia circuitului cât şi implementarea acestuia.

43

Nivele de abstractizare

Descrierea poate fi la diferite nivele de abstracţie

Nivelul de comutaţie: modelează comutaţia la tranzistoare

Nivelul transfer între registre: modelează componentele combinaţionale şi secvenţiale

Nivelul setului de instrucţiuni: comportamentul unui microprocesor

Descrierile pot fi folosite pentru Simulare

Verificare, evaluarea performanţelor

Sinteză

Primul pas în proiectarea hardware

44

Utilizarea descrierilor HDL

Specificarea sistemului

Definirea fără ambiguitate a componentelor şi a interfeţelor într-un sistem de mare dimensiune

Simularea sistemului

Verificarea sistemului/componentelor/circuitului înainte de a fi implementat

Sinteza sistemului

Generarea automată a structurii hardware care implementează funcţionarea sistemului

Sumar

Introducere

Unde se folosesc HDL

Istoric

Comparatie intre HDL si limbajele de programare

Descrierea circuitelor

Caracteristici ale HDL

Proiectarea cu HDL

45

46

Procedura generală de proiectare

Cerinţe

Proiectare funcţională Simulare comportamentală

Proiectare RTL Simulare RTL

Proiectare logică Simuare logică, verificare, simularea defectelor

Proiectarea circuitului Simulare temporală, analiza circuitului

Proiectare la nivel fizic Verificarea regulilor de proiectare

Descrierea procesului de fabricare

47

48

Procedura generală de proiectare

Procedura generală de proiectare presupune parcurgerea mai multor nivele de abstractizare

Este necesară o descriere uniformă care să permită conversia între diversele nivele de abtractizare

Costurile mari de proiectare şi fabricare impun utilizarea unor unelte automate CAD

–Costul proiectării unui nou circuit este de $5M - $100M

–Timp ridicat de lansare pe piaţă

49

Rolul HDL

celule

module

circuite

plăci PCB

Algoritmi

Transfer între registre

Expresii booleene transfer functions

procesoare registere

porţi logice transistoare

FIZIC

COMPORTAMENTAL STRUCTURAL

[Gajski and Kuhn]

50

Rolul HDL

• Proiectarea este structurată în jurul unei ierarhii de reprezentări

• HDL pot descrie aspecte distincte ale sistemului la diferite nivele de abstractizare

• Interoperabilitate: modele la diverse niveluri de abstractizare

• Independenţă tehnologică: model portabil (poate fi implementat folosind diverse tehnologii)‏

• Reutilizarea proiectelor şi prototipare rapidă

51

Piaţa produselor

Întârzierea lansării pe piaţă are un impact substanţial asupra beneficiului obţinut de pe urma produsului

Primele 10%-20% a ciclului de proiectare poate determina 70%-80% din costul proiectului

Costurile se măresc rapid cu fiecare nouă tehnologie introdusă

Sunt necesare standarde şi posibilitatea de a reutiliza descrierile deja validate autmatizarea bazată pe utilizarea uneltelor ce utilizează limbaje HDL

52

Piaţa produselor

53

Alternative

Sisteme bazate pe limbaje de programare SystemC

C++ cu elemente adiţionale specifice structurilor hardare

C C + extensii sau bazat pe ANSI C based

Altele Java, MATLAB sau limbaje specializate

54

Procedura de proiectare VLSI

Descriere algoritmică

Descriere nivel RTL

Descriere nivel logică/tranzistor

Măşti layout

Sinteză logică

Sinteză layout

Sinteză nivel înalt

Specificare sistem

Sinteză sistem

Verificare layout

Verificare logică

Verificare comportament

Verificare sistem

Unelte sinteză : transformă o descriere a sistemului într-o descriere mai detaliată (sinteză logică, sinteză layout)

Unelte de verificare : verifică corectitudinea descrierii (simulatoare, verificare simbolică)

Uneltele de sinteză logică şi layout sunt destul de dezvoltate pentru a fi utilizate pe scară largă

Uneltele de sinteză de nivel înalt au început să fie folosite în sistemele de proiectare uzuale (mulţi preferă încă descrierea la nivel RTL)

Uneltele de sinteză la nivel sistem încă nu există (domeniu de cercetare activ)

55

Procedura de proiectare VLSI

Descriere la nivel de algoritm (comportamental)

Descriere structurală la nivel transfer între registre

Descriere nivel logic/tranzistor

Măşti Layout VLSI

Sinteză logică

Sinteză layout

Sinteză de nivel înalt

Specificare sistem

Sinteză la nivel sistem

Verificare layout

Verificare logică

Verificare comportamentală

Verificare sistem

Complexitate: < 100 – 1K cuvinte >

< 100 – 10K linii >

< 1K – 100K linii >

< 10K – 1M componente >

< 1M – 1G geometrii >

56

Specificarea la nivel sistem

Funcţionalitatea sistemului (aplicaţie)

Mediul de operare (interfaţa de I/O)

Cost (dezvoltare, fabricare, testare)

Dimensiune/greutate (# de circuite, suprafaţă placă PCB, dimensiuni carcasă)

Putere consumată

Flexibilitate (modificări ale specificaţiei, funcţionalităţi suplimentare)

57

Verificare/sinteză la nivel sistem

Descriere algoritmică

Specificare sistem

Simulare funcţională co-simulare (SW/HW )

Date : tipuri/dimensiuni, structuri, masivi Proces : expresii, procedura de control, proceduri, funcţii Comunicaţie : protocoale Simulare : stimuli la intrare, verificarea ieşirilor

Conversie manuală

Limbaj natural < 100 – 1K cuvinte >

Limbaje software (C/C++, Java)‏ Limbaje HDL (Verilog, VHDL)‏ Limbaje la nivel sistem (System-C, SpecC)‏ < 100 – 10K linii >

58

Verificare/sinteză la nivel înalt

Descriere algoritmică

Simulare funcţională

Descriere structurală RTL Verilog, VHDL < 1K – 100K linii >

Descriere arhitecturală Module (CPU, memorii, registre, unităţi funcţionale, interfaţa IO) Arhitectura magistralelor

Descrierea modulelor (funcţional/structural) Descrierea combinaţională/secvenţială a circuitului

Conversie manuală Sinteză la nivel înalt

Limbaje software (C/C++, Java)‏ Limbaje HDL (Verilog, VHDL)‏ Limbaje la nivel sistem (System-C, SpecC)‏ < 100 – 10K linii >

59

Sinteză/verificare logică

Verificare logică Verificare temporală Analiză consum

Descriere structurală RTL

Descriere nivel logic/tranzistor Verilog, VHDL Schematic Listă‏de‏conexiuni‏(netlist)‏ < 10K – 1M componente >

Verilog, VHDL < 1K – 100K linii >

Minimizare logică Mapare tehnologică

Componente celulă (porţi, registre, tranzistoare) Reţele Terminale I/O

60

Verificare/sinteză layout

Verificare topologie circuit Verificare reguli proiectare Verificare temporală

Descriere nivel logic/tranzistor

Măşti layout VLSI Modele‏mască < 1M – 1G geometrii >

Layout celule / module (manual sau auto) Plasare şi interconectare

Straturi (substrat, difuzie, polysilicon, metale, treceri) Dreptunghiuri, poligoane

Verilog, VHDL Schematic Listă‏de‏conexiuni‏(netlist)‏ < 10K – 1M componente >

Nivel structural sau comportamental

61

entity ALU32 is port( A, B: in bit_vector( 31 downto 0); Op: in bit_vector( 5 downto 0); end half_adder; C: out bit_vector( 31 downto 0); N, Z: out bit);

module ALU32 (A,B,Op,C,N,Z); input [31:0] A, B; input [5:0] Op; output [31:0] C; output N, Z; endmodule

Descriere la nivel înalt

62

Nivel RTL

63

Nivelul de porți logice

64

Nivel circuit

65

Nivel măști (layout)

66