Limbaje moderne de descriere hardware
De ce se folosesc limbajele HDL
n ultimele decenii complexitatea circuitelor logice a crescut considerabil Vechile forme de automatizare ale proiectrii sistemelor electronice nu mai sunt eficiente Limbajele HDL ofer metode consistente i eficiente de proiectare i sintez a circuitelor logice Limbajele HDL sunt relativ uor de nvat
Sisteme proiectate folosind HDL
Sisteme proiectate folosind HDL
Vezi [Link]
Sisteme proiectate folosind HDL
De ce se folosesc limbajele HDL
De ce se folosesc limbajele HDL
De ce se folosesc limbajele HDL
Limbaje de descriere hardware
Descriu partea hardware la diverse nivele de abstracie Descriere structural
Descrierea text nlocuiete schemele Compunerea ierarhic a modulelor din primitive Se descrie ce face modulul, nu cum Prin sintez se genereaz schema pentru module
Descrierea comportamental funcional
Semantica pentru simulare
Limbaje HDL
Abel (circa 1983) dezvoltat de Data-I/O
Orientat spre circuitele logice programabile Neadecvat pentru descrieri ce depaesc automatele finite
ISP (instruction set processor) (circa 1977) proiect de cercetare la CMU
Pentru simulare, fr sintez
Limbaje HDL (2)
Verilog (circa 1985) dezvoltat de Gateway (preluat de Cadence)
Similar cu limbajele Pascal i C Singura interaciune cu simulatorul sunt ntrzierile Destul de eficient i uor de scris Standard IEEE
VHDL (circa 1987) DoD (Department of Defense) standard sponsorizat
Similar cu Ada (orientat spre reutilizarea codului i mentenan uoar) Semantica simulrii vizibil La nivel foarte general dar dimensiune mare a codului Standard IEEE
Verilog example (2-bit select logic shifter)
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
VHDL example (2-bit select logic shifter)
--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;
Limbajul Verilog
Suport descrieri structurale i comportamentale Structural Structur explicit a circuitului E.g., fiecare poart logic este instaniat i conectat la celelalte Comportamental Programul descrie comportamentul relativ la intrri i ieiri Mai multe implementri structurale pot avea acelai comportament (de exemplu, diferite implementri ale aceleiai funcii booleene)
Model structural
module xor_gate (out, a, b); input a, b; output out; wire abar, bbar, t1, t2; inverter inverter and_gate and_gate or_gate endmodule invA (abar, a); invB (bbar, b); and1 (t1, a, bbar); and2 (t2, b, abar); or1 (out, t1, t2);
abar a b bbar t1 out t2
Model comportamental Atribuire continu
module xor_gate input output reg (out, a, b); a, b; out; out;
Registru simulare nregistreaz valorile unui semnal
assign #6 out = a ^ b; endmodule
ntrzierea modificrii semnalului de ieire fa de modificarea semnalului de intrare
Comparaie: limbaje de programare limbaje HDL
Limbajele de programare procedurale descriu modul cum se realizeaz (reet);
Calculele Manipularea datelor Execuia pentru o anumit platform hardware Sistemele pot fi descrise din mai multe puncte de vedere Comportamental: ce face? Structural: din ce este alctuit? Proprietile funcionale: cum realizez interfaarea cu acesta? Proprietile fizice: Ct este de rapid? Ce putere consum?
HDL descriu un sistem
Comparaie: limbaje de programare limbaje HDL
Structura programului
Intanieri multiple ale unor componente de acelai tip Specific interconexiunile ntre module la fel ca n schemele electrice Utilizeaz ierarhii de module Atribuire continu (circuitele logice prelucreaz semnalul continuu) ntrzieri ale propagrii semnalelor (prelucrarea semnalelor necesit un anumit timp) Evoluia n timp a semnalelor este important (momentul n care are loc prelucrarea)
Atribuiri
Comparaie: limbaje de programare limbaje HDL
Structurile de date
Dimensiunile sunt precizate n mod explicit nu exist structuri dinamice Nu exist pointeri Structurile hardware au n mod natural o funcionare paralel (trebuie s suporte mai multe fire de execuie) Atribuirile pot s apar n paralel (nu doar secvenial)
Paralelism
Comparaie: limbaje de programare limbaje HDL
Programele scrise n ambele limbaje sunt prelucrate de ctre un compilator
Un compilator HDL lucreaz de cele mai multe ori n mai multe etape producnd 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). Fiierul JEDEC conine instruciunile ce trebuiesc date unui programator PLD pentru a configura un circuit programabil.
HDL i circuitele combinaionale
Module: se specific intrrile, ieirile, terminalele bidirecionale i semnalele interne Atribuire continu: n orice moment ieirea unei pori este o funcie de intrrile porii (nu trebuie s atepte s fie apleat) ntrzirea la propagre: se utilizeaz conceptul de timp i de ntrziere a ieirii fa de modificarea intrrii
HDL i circuitele combinaionale
Compunere: modulele se conecteaz utiliznd fire de conexiune Ierarhie: modulele incorporeaz blocuri funcionale Pot fi specificate condiii indiferente sau incomplet specificate - don't care (se utilizeaz x pentru respectivele ieiri)
HDL i circuitele secveniale
Circuite bistabile
Este reprezentat semnalul de tact ce indic modificarea stri Pot fi modelate att bistabilele asincrone ct i cele sincrone Descriere structural (bistabilele separate de logica combinaional) Descriere comportamental (sinteza secveniatoarelor)
Automate finite
HDL i circuitele secveniale
Ci de date (data-paths = ALU + registre)
Se utilizeaz operatori logico-aritmetici Partea de control a elementelor de stocare Mai multe automate funcionnd n paralel
Paralelism
Stri incomplet definite
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 att funcia circuitului ct i implementarea acestuia.
Utilizare
Descrierea poate fi la diferite nivele de abstracie
Nivelul de comutaie: modeleaz comutaia la tranzistoare Nivelul transfer ntre registre: modeleaz componentele combinaionale i secveniale Nivelul setului de instruciuni: comportamentul unui microprocesor Simulare Verificare, evaluarea performanelor Sintez Primul pas n proiectarea hardware
Descrierile pot fi folosite pentru
De ce trebuie s descriem sistemele
Specificarea sistemului
Definirea fr ambiguitate a componentelor i a interfeelor ntr-un sistem de mare dimensiune Verificarea sistemului/componentelor/circuitului nainte de a fi implementat Generarea automat a structurii hardware care implementeaz funcionarea sistemului
Simularea sistemului
Sinteza sistemului
Procedura general de proiectare
Cerine Proiectare funcional Proiectare Proiectare logic Simulare comportamental RTL Simulare RTL Simuare logic, verificare, simularea defectelor Simulare temporal, analiza circuitului Verificarea regulilor de proiectare
Proiectarea circuitului Proiectare la nivel fizic Descrierea procesului de fabricare
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 proiectrii unui nou circuit este de $5M - $100M Timp ridicat de lansare pe pia
Rolul HDL
COMPORTAMENTAL Algoritmi Transfer ntre registre Expresii booleene transfer functions STRUCTURAL procesoare registere pori logice transistoare celule module circuite plci PCB FIZIC [Gajski and Kuhn]
Rolul HDL
Proiectarea este structurat n jurul unei ierarhii de reprezentri 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
Piaa produselor
ntrzierea lansrii pe pia are un impact substanial asupra beneficiului obinut de pe urma produsului Primele 10%-20% a ciclului de proiectare poate determina 70%-80% din costul proiectului Costurile se mresc 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
Piaa produselor
Alternative
Sisteme bazate pe limbaje de programare
SystemC
C++ cu elemente adiionale specifice structurilor hardare C + extensii sau bazat pe ANSI C based Java, MATLAB sau limbaje specializate
Altele
Procedura de proiectare VLSI
Specificare sistem
Verificare sistem Sintez sistem
Unelte sintez : transform o
Descriere algoritmic
Verificare comportament Sintez nivel nalt
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 (muli prefer nc descrierea la nivel RTL) Uneltele de sintez la nivel sistem nc nu exist (domeniu de cercetare activ)
Descriere nivel RTL
Verificare logic Sintez logic
Descriere nivel logic/tranzistor
Verificare layout Sintez layout
Mti layout
Procedura de proiectare VLSI
Specificare sistem Verificare sistem
Complexitate: < 100 1K cuvinte >
Sintez la nivel sistem
< 100 10K linii >
Descriere la nivel de algoritm (comportamental) Verificare comportamental Sintez de nivel nalt
Descriere structural la nivel transfer ntre registre Verificare logic Sintez logic
< 1K 100K linii >
Descriere nivel logic/tranzistor Verificare layout Sintez layout
< 10K 1M componente >
Mti Layout VLSI
< 1M 1G geometrii >
Specificarea la nivel sistem
Funcionalitatea sistemului (aplicaie) Mediul de operare (interfaa de I/O) Cost (deyvoltare, fabricare, testare)
Dimensiune/greutate (# de circuite, suprafa plac PCB, dimensiuni carcas)
Putere consumat
Flexibilitate (modificri ale specificaiei, funcionaliti suplimentare)
Verificare/sintez la nivel sistem
Specificare sistem
Limbaj natural < 100 1K cuvinte >
Simulare funcional co-simulare (SW/HW )
Conversie manual
Limbaje software (C/C++, Java) Limbaje HDL (Verilog, VHDL) Limbaje la nivel sistem (System-C, Descriere algoritmic SpecC) < 100 10K linii > Date : tipuri/dimensiuni, structuri, masivi Proces : expresii, procedura de control, proceduri, funcii Comunicaie : protocoale Simulare : stimuli la intrare, verificarea ieirilor
Verificare/sintez la nivel nalt
Descriere algoritmic
Limbaje software (C/C++, Java) Limbaje HDL (Verilog, VHDL) Limbaje la nivel sistem (System-C, SpecC) < 100 10K linii >
Simulare funcional
Conversie manual Sintez la nivel nalt
Descriere structural RTL
Verilog, VHDL < 1K 100K linii >
Descriere arhitectural Module (CPU, memorii, registre, uniti funcionale, interfaa IO) Arhitectura magistralelor Descrierea modulelor (funcional/structural) Descrierea combinaional/secvenial a circuitului
Sintez/verificare logic
Descriere structural RTL
Verilog, VHDL < 1K 100K linii >
Verificare logic Verificare temporal Analiz consum
Minimizare logic Mapare tehnologic Verilog, VHDL Schematic List de conexiuni (netlist) < 10K 1M componente >
Descriere nivel logic/tranzistor
Componente celul (pori, registre, tranzistoare) Reele Terminale I/O
Verificare/sintez layout
Descriere nivel logic/tranzistor
Verilog, VHDL Schematic List de conexiuni (netlist) < 10K 1M componente >
Verificare topologie circuit Verificare reguli proiectare Verificare temporal
Layout celule / module (manual sau auto) Plasare i interconectare Modele masc < 1M 1G geometrii >
Mti layout VLSI
Straturi (substrat, difuzie, polysilicon, metale, treceri) Dreptunghiuri, poligoane