Antonio Deledda - unibo.itdrossi/Dida01/lezioni/introvhdl.pdfbuffers 21 and 21 or 12 xor 21 nand 21...
Transcript of Antonio Deledda - unibo.itdrossi/Dida01/lezioni/introvhdl.pdfbuffers 21 and 21 or 12 xor 21 nand 21...
1
VHDL come strumento di progetto di circuiti digitali
Antonio DeleddaCorso di Elettronica dei Sistemi Digitali LS
AA 2005-2006
2
n [email protected] Tel. Interno 0512093829n Centro ARCES, Viale Pepoli 3/2
n http://www.micro.deis.unibo.it/cgi-bin/dida?~deledda/www/Dida01
3
Circuiti Integrati Digitali
ALGORITMOX(t) Y(t)
ASIC Architetture
Programmabili
(µP, DSP)
FPGA
4
Flusso di progetto circuiti digitali(anni 80/90)
1) Definizione Algoritmica : y=-x;
2) Schematic Entry
3) Custom Layout (place & route)
4) Parasitic extraction & Backannotation
5
Il Design Productivity Gap
Lo sviluppo della tecnologia offre una quantita’ di risorse di
Calcolo che supera la capacita’ del progettista di utilizzarle.
6
Tecnologia Standard Cells
Per velocizzare il tempo di progetto (time-to-market) di un prodotto
vengono realizzano librerie formate da celle logiche elementari
7
Libreria Standard cells
Esempio: Libreria AMS 0.35 µm (Austria Micro Systems)
8 FF JK 32 FF D 10 LatchesCelle Sequenziali
5 Inverters 14 Buffers 8 3state buffers 21 and 21 or 12 xor 21 nand 21 nor 6 mux 28 Blocchi misti
Celle Combinatorie
10 Inout 12 Inputs 10 Outputs 6 Power
IO Pads
270 Celle Elementari:
8
Libreria Standard Cells: Cella AND2
cell(AN2) { area : 0.64cell_footprint : "AND2"
pin (A B) { direction : inputfanout_load : 5;
capacitance : 0.05 }pin(Q) { direction : output
max_fanout : 95;max_capacitance : 0.9494function : "(A*B)“ }
timing() { intrinsic_rise : 0.22intrinsic_fall : 0.12rise_resistance : 3.16fall_resistance : 2.00slope_rise : 0.00slope_fall : 0.00
related_pin : "A B"}}
9
• Linguaggi standard internazionale per la descrizione di circuitiintegrati digitali
• Strumento convenzionale per il progetto e per la documentazionedi blocchi digitali
• Permettono la rappresentazione di istanze hardware da system level fino a gate level
• Linguaggi HDL piu’ comuni: VHDL , Verilog (Standard IEEE)
HDL
Hardware Description Languages
10
• Nato nel 1985, presso il dipartimento di difesa degli USA
• Reso pubblico nel 1987
• Formalmente ridefinito e reso standard IEEE nel 1993
• Tuttora piu’ sviluppato in Europa, mentre Verilog e’ consideratostandard di uso comune negli USA
VHDL
Very High speed circuits Hardware Description Language
11
Stili di Descrizione Hardware
• BEHAVIORAL
• Register Transfer Level
• Gate Level
Tech
no
log
y Dep
end
ance
12
VHDL: Applicazioni
1) SIMULAZIONE LOGICA
2) SYSTEM LEVEL DESCRIPTION
3) SINTESI LOGICA
13
Sintesi Logica
“ SYNTHESIS => The process of deriving EFFICIENT results from CLEAR specifications “
Il processo AUTOMATIZZATO di sintesi logica trasforma unadescrizione HDL (Behavioral) in una NETLIST di gates
elementari che mantengono la stessa funzionalita’
LA sintesi logica puo’ essere eseguita su un SOTTOINSIEME RTL del linguaggio VHDL detto “VHDL Sintetizzabile”.
Molti costrutti VHDL NON SONO SINTETIZZABILI.Per avere sintesi efficiente, gli elementi sequenziali (Registri, F/Fs) devono
essere descritti ESPLICITAMENTE.Inoltre, i meccanismi di sintesi NON SONO STANDARDIZZATI, quindi diversistrumenti (software) di sintesi possono dare risultati anche MOLTO diversi.
Infine, I risultati della Sintesi dipendono FORTEMENTE dalla libreria di GATES ELEMENTARI (Standard Cells) su cui e’ eseguita
14
Sintesi logica: Da RTL ai Gates
Codice RTL: rigorosa separazione tra logica Combinatoria (sintetizzabile) e logica sequenziale
SINTESI LOGICA: Il software interpreta la funzionalita’ del circuito e la realizza
attraverso celle elementari (STD_CELLS)
-> Mappe di Karnaugh
Gli elementi sequenziali (F/F) del circuito non vengonointerpretati ma instanziati esplicitamente!
15
Sintesi logica: Timing Driven
Il processo di sintesi e’ dettato dalle temporizzazioni, si tenta di
minimizzare il piu’ lungo percorso combinatorio (critical path)
interno al design
16
Flusso di Sviluppo di circuiti digitali : FRONT END
1) Definizione Algoritmica (linguaggio C): q=a * b + c;
2) Descrizione VHDL del circuito: q <= a and b or c;
3) Simulazione Funzionale
4) Sintesi Logica
5) Simulazione Post-Sintesi
17
Flusso di Sviluppo di circuiti digitali: BACK END
6) Floorplanning
7) Place & Route
8) Parasitic extraction & backannotation
18
Entity e Architecture
ENTITY
• ENTITY= BLACK BOX, “scatola vuotache descrive l’interfaccia I/O del circuito
• ARCHITECTURE = Descrizione funzionaledel comportamento del circuito. Puo’ essere a diversi livelli,e puo’ essere sintetizzabile o meno
IN OUT
INOUT
Ad ogni entity possono corrispondere moltepliciarchitectures, a seconda del tipo e del livello didescrizione voluto: es, la sintesi trasforma una
architecture RTL in una a gate-level, sempre riferitaalla stessa entity
Arch 1 (Beh)
Arch 3 (Gate L.)
Arch 2 (RTL)
19
Esempio
entity NAND is Port ( a , b : in bit;
z : out bit )
architecture behavioral of NAND issignal s : bit;begin
s <= a and b;z <= not s;
end NAND;
20
Esempio (bis)
entity NAND is Port ( a , b : in bit;
z : out bit );
end NAND
architecture behavioral of NAND issignal s : bit;begin
s <= a and b;z <= not s;
end behavioral;
21
VHDL : Costrutti
• STATEMENTS: Costrutto che rappresenta un istanza circuitale.Benche’ vengano SIMULATI SEQUENZIALMENTE gli statements vengono ESEGUITI SIMULTANEAMENTE.
Es: s <= a and b;
Es: z <= out s;
22
VHDL: Costrutti• PROCESSI: Un processo rappresenta uno “statement espanso” , ovvero una operazione non elementare composta da un insieme dioperazioni elementari che si suppongono eseguite nello stessoistante.All’interno di un processo l’ esecuzione e’ SEQUENZIALE, e possonoessere definite delle variabili.SOLO all’interno di processi possono essere inserite espressioni dicontrollo condizionali (IF, CASE, WAIT, etc.)
process(a,b)variable c,d: bit_vector(0 to 3);begin
c := a + b;d := c and “011”z <= d;
end process;
23
Sensitivity List
SENSITIVITY LIST : L’uscita di un processo vienericalcolata ogni volta si ha un evento (cambiamento di
valore) su uno dei segnali appartenenti alla sensitivity list
In VHDL sintetizzabile, I processi sono puramente combinatori e tuttigli ingressi del processo devono appartenere alla Sensitivity list.
24
Esempio (Half_Adder behavioral)entity Half_Adder is Port ( a , b , enable : in bit;
out, carry : out bit );
end Half_Adder
architecture behavioral of Half_Adder isbegin
process(a,b,enable)begin
if(enable = ‘1’)out <= a xor b;carry <= a and b;
elseout <= ‘0’;carry <= ‘0’;
end if;end process;
end behavioral;
25
VHDL : Costrutti
• INSTANZIAZIONE GERARCHICA: E’ possibile istanziare in un dispositivo descritto in VHDL componenti circuitali di libreria descrittiseparatamente,purche’ la loro interfaccia di I/O sia descritta, come component, nella architecture
entity Half_Adder is Port ( a , b , enable : in bit;
out, carry : out bit );
end Half_Adder
26
Esempio (Half_Adder strutturale)architecture structural of Half_Adder iscomponent lib_and3 port ( in1,in2,in3 : in bit;
Z : out bit ); end componentcomponent lib_and2 port ( in1,in2 : in bit;
Z : out bit ); end componentcomponent lib_xor2 port ( in1,in2 : in bit;
Z : out bit ); end componentsignal s: bit;Begin
My_and3 : lib_and3 port map
(in1 => a, in2 => b, in3 =>enable, Z => out);My_and2 : lib_and2 port map (in1 => enable, in2 => s, Z => carry);
My_xor2 : lib_xor2 port map (in1 => a, in2 => b, Z => s);
end structural;
27
Tipi di dato
n Nel VHDL le dichiarazioni di porte, segnali, e variabili devono specificare il loro tipo o sottotipo
n Types– Scalar: (*) = Sintetizzabile
§ Integer (*)§ Real§ Character§ Boolean§ Bit (*)§ Std_Ulogic & Std_Logic (std_logic_1164 library) (*)§ Physical§ Enumerated
– Composite§ Array§ Record§ Std_Ulogic_vector & Std_Logic_vector (std_logic_1164 library) (*)
– Access & File types
28
Tipi scalari (Integer)
n Rappresentazione a 32 bitrange(standard): -2^31+1 to 2^31-1
n Esempio:
architecture behavioral of int_type isBegin
process(..)variable a : INTEGER;
Begina:= 1;a:=1.0; -- not legal
end processend behavioral;
29
Tipi scalari (Real)
n Single precision (32 bit)n Double precision (64 bit)n Esempio:
architecture behavioral of Real_type isBegin
process(..)variable a : REAL;
Begina:= 1.3;a:= -7.5;a:=1; -- not legal
end processend behavioral;
30
Tipi scalari (Enumerated)
n Lista di possibili valori specificatidall’utente
n Esempio:
architecture behavioral of enum_type isTYPE binary IS (ON, OFF);Begin
process(..)variable a,b : binary;
Begina:= ON;b:= OFF;
end processend behavioral;
31
Tipi compositi (Array)
n Utilizzato per ragruppare elementi dello stesso tipo in un singolo oggetto VHDL
n Esempio
architecture test of array_type_example is…….TYPE shift_mem IS ARRAY(0 to 7) OF INTEGER;Begin
process(DATA_IN, ……)variable my_shift_mem : shift_mem;
Begin……
DATA_OUT <= my_shift_mem(7);for I in 7 downto 1 loopmy_shift_mem(I) := my_shift_mem(I-1)end loop;
my_shift_mem(0) := DATA_IN;end process
end test;
32
Tipi compositi (Record)
n Utilizzato per ragruppare elementi dello stesso tipo in un singolo oggetto VHDL
n Gli elementi sono referenziati mediante I nomi dei gruppiarchitecture test of rec_type_example is……TYPE binary IS (ON, OFF);TYPE switch_info IS
RECORDstatus : BINARY;IDnumber : INTEGER;END RECORD;
Beginprocess(DATA_IN, ……)
variable switch: switch_info;Begin……
switch.status := ON;switch.IDnumber := 30;
…..end process
end test;
33
IEEE Std_logic_1164Si tratta di un package di libreria, SINTETIZZABILE, che permette di
definire segnali (o variabili, interne a processi) che descrivano ilcomportamento elettrico del segnale stesso
use ieee.std_logic_1164.all;
[…..]
entity adder isport ( a,b : in std_logic_vector(7 downto 0);
z : out std_logic_vector(7 downto 0);ovf : out std_logic );
Don’t Care-Weak 0L
Weak 1HFloat (3state)ZUnknownUConflictXLogic 11Logic 00
34
Operandi Fondamentali
In VHDL un operando fondamentale puo’ riferirsi un tipo predefinito, a un tipo strutturato (Array o Struct), o ad una tipologia “custom”
definita in una libreria, sia essa dell’utente o di sistema.
Gli operandi possono appartenere a tre categorie fondamentali
PORTE : Ovvero, gli elementi di interfaccia verso l’esterno del circuito
SEGNALI : Elementi di comunicazione interni al circuito tra processi, statements e components
VARIABILI : Rappresentano operatori temporanei, sono soloINTERNE A PROCESSI
35
Operatori Fondamentali
Operatori relazionali>, >=, <, <=,
Op. matematici non sintetizzabili
/, mod, rem, abs, **
Op. matematici sintetizzabili+, -, *Operatori Logiciand, or, xor, not
Commento--Assegnamento<=
36
Alcune Regole
n Un Segnale non puo’ essere usato due volte come destinazione (corto circuito) a meno che cio’ non vengafatto all’interno di un processo
n Una porta di uscita non puo’ essere usata come sorgente (ingresso) da statement / processo / bloccogerarchico
n I costrutti IF/LOOP, intrinsecamente sequenziali, possono essere usati solo all’interno di processi
n LA ESECUZIONE DI DIVERSI STATEMENT / PROCESSI / COMPONENTS E’ SEMPRE CONCORRENTE, l’ordine con cui sono scritti NON HA ALCUNA IMPORTANZA
37
AttributesATTRIBUTES => Funzioni di simulazione che sono “collegate”
al comportamento di segnali, tipi o array. Possono essere anche definiti dall’utente
Valore maggiore/minore ? TT’low , T’high
Vero se non ci sono eventi in S nel tempo t
S’stable(t)
Vero se il processo correntepilota S
S’driving
Vero in caso di transactions su S
S’active
Vero in caso di eventi su SS’event
38
Flip Flop con reset e enable Entity FF is
port (clk, enable, reset, D : in BIT;Q : out BIT );
End FF;
Architecture behavioral of FF isbeginprocess(CLK, reset)
Beginif reset = ‘1’ then
Q <= ‘0’;elsif clk’event and clk = ‘1’ then
if enable = ‘1’ thenQ <= D;
end if;end if;end process;
end behavioral;