VHDL come strumento CAD all’interno di
flussi di progetto per dispositivi Digitali
Fabio Campi
Corsi di Architettura dei Sistemi Integrati/
Progetto di Sistemi Elettronici
D.E.I.S.
Universita’ di Bologna
VHDL
Very High speed circuits Hardware Description Language
• Nato nel 1987, formalmente ridefinito nel 1993
• Linguaggio standard internazionale per la descrizione di circuiti
integrati digitali
• Strumento convenzionale per il progetto e per la documentazione
di blocchi digitali
• Permette la rappresentazione di istanze hardware da system level
fino a gate level
D.E.I.S.
Universita’ di Bologna
VHDL vs C
Linguaggio C:
Linguaggio di programmazione software: genera una
esecuzione SEQUENZIALE di una serie di istruzioni.
VHDL:
Tool CAD di progettazione hardware: genera una
instanziazione (mapping) di risorse di calcolo
CONCORRENTI.
D.E.I.S.
Universita’ di Bologna
Stili di Descrizione Hardware
• BEHAVIORAL
• Register Transfer Level
• Gate Level
D.E.I.S.
Universita’ di Bologna
VHDL: Applicazioni
1) SIMULAZIONE LOGICA
2) SYSTEM PROTOTYPING
3) SINTESI LOGICA
D.E.I.S.
Universita’ di Bologna
Flusso di progetto circuiti digitali (anni 80/90)
0) Definizione Algoritmica (linguaggio C): y=-x;
1) Schematic Entry
2) Custom Layout (place & route)
3) Parasitic extraction & Backannotation
D.E.I.S.
Universita’ di Bologna
Il Design Productivity Gap
Lo sviluppo della tecnologia offre una quantita’ di risorse di
Calcolo che supera la capacita’ del progettista di utilizzarle:
Nasce il System-on-chip
D.E.I.S.
Universita’ di Bologna
Tecnologia Standard Cells
La Sintesi Logica esegue un “mapping” della funzionalita’ descritta da
Un modello VHDL Behavioral o Register Transfer Level in un modello
Gate level basato su una libreria di celle elementari predefinite
D.E.I.S.
Universita’ di Bologna
Flusso di Sviluppo di circuiti digitali : FRONT END
0) Definizione Algoritmica (linguaggio C): q=a * b + c;
1) Descrizione VHDL del circuito: q <= a and b or c;
2) Simulazione Funzionale
3) Sintesi Logica
4) Simulazione Post-Sintesi
D.E.I.S.
Universita’ di Bologna
Flusso di Sviluppo di circuiti digitali: BACK END
5) Floorplanning
6) Place & Route
7) Parasitic extraction & backannotation
D.E.I.S.
Universita’ di Bologna
Dispositivi FPGA
FPGA = Field Programmable Gate Array
(Programmable Logic Device)
La Sintesi Logica esegue un “mapping” della funzionalita’ descritta da
Un modello VHDL Behavioral o Register Transfer Level in un modello
Gate level basato sui blocchi di calcolo elementari offerti dalla FPGA
D.E.I.S.
Universita’ di Bologna
Sviluppo di circuiti digitalisu FPGA : FRONT END
0) Definizione Algoritmica (linguaggio C): q=a * b + c;
1) Descrizione VHDL del circuito: q <= a and b or c;
2) Simulazione Funzionale
3) Sintesi Logica
D.E.I.S.
Universita’ di Bologna
Sviluppo di circuiti digitali su FPGA: BACK END
6) Place & Route
6) Post-route simulation
7) FPGA device Programming
D.E.I.S.
Universita’ di Bologna
REGOLE di Scrittura di VHDL rivolto a sintesi logica
1) Codice RTL: rigorosa separazione tra logica Combinatoria
(sintetizzabile) e logica sequenziale
Processo Sequenziale:
Process(clk,reset)
Begin
if reset=‘1’ then q<=‘0’;
else if clk’event and clk=‘1’ then q<=d;
End process;
D.E.I.S.
Universita’ di Bologna
REGOLE di Scrittura di VHDL rivolto a sintesi logica
2) Processi combinatori: Tutti I segnali utilizzati come ingressi devono
apparire nella sensitivity list
VHDL Errato:
Process(a)
Begin
C <= f(a,b);
VHDL corretto:
Process(a)
Begin
C <= f(a,b);
End process;
End process;
D.E.I.S.
Universita’ di Bologna
REGOLE di Scrittura di VHDL rivolto a sintesi logica
3) Scelte condizionate(Multiplexers): In ogni caso in cui
(esplicitamente o implicitamente) l’assegnamento di un segnale e’
condizionato ad un selettore, e’ necessario coprire con valori legali del
segnali d’uscita tutti i casi della condizione possibili
VHDL Errato:
if sel=“00” then y=in1;
elsif sel=“01” then y=in2;
end if;
VHDL corretto
if sel=“00” then y=in1;
elsif sel=“01” then y=in2;
else y<= COSTANTE;
end if;
D.E.I.S.
Universita’ di Bologna
REGOLE di Scrittura di VHDL rivolto a sintesi logica
4) Tipi di segnale e Bus Width PESATE: Un intero e’ inteso come
numero aritmetico a 32 bit, il che puo’ portare a ridondanza nella
mappatura hardware:E’ conveniente usare data types di natura “FISICA”
(std_logic_vector, signed/unsigned) per avere controllo dell’hw
instanziato
VHDL non ottimizzato
VHDL ottimizzato
signal a,b,c :integer;
signal a,b,c :integer RANGE 0 to 255;
C <=a+b;
[meglio std_logic_vector(7 downto 0) ]
C <=a+b;
32-bit adder (108 l.c.)
8-bit adder (14 l.c.)
D.E.I.S.
Universita’ di Bologna
REGOLE di Scrittura di VHDL rivolto a sintesi logica
5) Uso moderato di generic FOR:Un loop software comporta la
esecuzione ripetuta della stessa Routine. La elaborazione hardware e’
Concorrente, quindi un ciclo causa la istanziazione ripetuta di logica,
Portando ad un forte utilizzo di risorse
Signal b :integer;
Signal a :array(o to 9) of integer
10 adder a 32 bit
For I in 0 to 9 generate
(1080 l.c.)
Q(I)<=a(I)+b;
End generate;
D.E.I.S.
Universita’ di Bologna
REGOLE di Scrittura di VHDL rivolto a sintesi logica
6) Non e’ possibile utilizzare costrutti per lo scheduling della
simulazione. Il controllo “temporale” della simulazione e’ determinata
dalla analisi dei ritardi (Timing analysis) estratti dalla sintesi, dal layout o
dal routing su FPGA)
D.E.I.S.
Universita’ di Bologna
REGOLE di Scrittura di VHDL rivolto a sintesi logica
7) Non e’ possibile avere diversi processi che insistano sullo stesso
segnale o autoassegnamenti di segnale: cio’ porterebbe a corto circuito
elettrico.
a<=x;
……
a<=y;
Cont <= cont +1;
D.E.I.S.
Universita’ di Bologna
REGOLE di Scrittura di VHDL rivolto a sintesi logica
8) Macchine a stati finiti: Si definisce FSM un processo non
combinatorio in cui l’uscita dipende dalla evoluzione temporale dei segnali
di ingresso.
Y(i)=f(x(i),x(i-1),…)
Y(i) <=f(x(i),state(i))
State(i) <= f(x(i),state(i-1))
D.E.I.S.
Universita’ di Bologna
REGOLE di Scrittura di VHDL rivolto a sintesi logica
Process(clk)
Begin
if clk’event and clk=‘1’ then
cs<=ns;
End process;
Process(inputs,cs)
Begin
case state is
when case0=> out1<=
if in1= then
ns<=
else
ns<=
end if;
….
when others =>
……
D.E.I.S.
Universita’ di Bologna
D.E.I.S.
Universita’ di Bologna
Scarica

VHDL