Title: VHDL come strumento di progetto di circuiti digitali
1VHDL come strumento di progetto di circuiti
digitali
- Antonio Deledda
- Corso di Elettronica dei Sistemi Digitali LS
- AA 2005-2006
2- adeledda_at_deis.unibo.it
- Tel. Interno 0512093829
- Centro ARCES, Viale Pepoli 3/2
- http//www.micro.deis.unibo.it/cgi-bin/dida?deled
da/www/Dida01
3Circuiti Integrati Digitali
X(t)
Y(t)
ALGORITMO
Architetture Programmabili (?P, DSP)
FPGA
ASIC
4Flusso di progetto circuiti digitali (anni 80/90)
1) Definizione Algoritmica y-x
2) Schematic Entry
3) Custom Layout (place route)
4) Parasitic extraction Backannotation
5Il Design Productivity Gap
Lo sviluppo della tecnologia offre una quantita
di risorse di Calcolo che supera la capacita
del progettista di utilizzarle.
6Tecnologia Standard Cells
Per velocizzare il tempo di progetto
(time-to-market) di un prodotto vengono
realizzano librerie formate da celle logiche
elementari
7Libreria Standard cells
Esempio Libreria AMS 0.35 ?m (Austria Micro
Systems)
270 Celle Elementari
IO Pads 10 Inout 12 Inputs 10 Outputs 6 Power
Celle Combinatorie 5 Inverters 14 Buffers 8 3state buffers 21 and 21 or 12 xor 21 nand 21 nor 6 mux 28 Blocchi misti
Celle Sequenziali 8 FF JK 32 FF D 10 Latches
8Libreria Standard Cells Cella AND2
cell(AN2) area 0.64
cell_footprint "AND2" pin (A B) direction
input fanout_load
5 capacitance 0.05 pin(Q)
direction output max_fanout
95 max_capacitance
0.9494 function "(AB)
timing() intrinsic_rise 0.22
intrinsic_fall 0.12
rise_resistance 3.16
fall_resistance 2.00
slope_rise 0.00
slope_fall 0.00
related_pin "A B"
9 HDL
Hardware Description Languages
- Linguaggi standard internazionale per la
descrizione di circuiti integrati digitali - Strumento convenzionale per il progetto e per la
documentazione di blocchi digitali - Permettono la rappresentazione di istanze
hardware da system level fino a gate level - Linguaggi HDL piu comuni VHDL , Verilog
(Standard IEEE)
10VHDL
Very High speed circuits Hardware Description
Language
- 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 considerato standard di uso comune
negli USA
11Stili di Descrizione Hardware
- BEHAVIORAL
- Register Transfer Level
- Gate Level
Technology Dependance
12VHDL Applicazioni
- SIMULAZIONE LOGICA
- SYSTEM LEVEL DESCRIPTION
- SINTESI LOGICA
13Sintesi Logica
SYNTHESIS gt The process of deriving EFFICIENT
results from
CLEAR specifications
Il processo AUTOMATIZZATO di sintesi logica
trasforma una descrizione 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 diversi strumenti (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
14Sintesi 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)
-gt Mappe di Karnaugh
Gli elementi sequenziali (F/F) del circuito non
vengono interpretati ma instanziati
esplicitamente!
15Sintesi 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
16Flusso di Sviluppo di circuiti digitali FRONT
END
1) Definizione Algoritmica (linguaggio C) qa
b c
2) Descrizione VHDL del circuito q lt a and b
or c
3) Simulazione Funzionale
4) Sintesi Logica
5) Simulazione Post-Sintesi
17Flusso di Sviluppo di circuiti digitali BACK END
6) Floorplanning
7) Place Route
8) Parasitic extraction backannotation
18Entity e Architecture
OUT
IN
- ENTITY BLACK BOX, scatola vuota
- che descrive linterfaccia I/O del circuito
ENTITY
INOUT
- ARCHITECTURE Descrizione funzionale
- del comportamento del circuito. Puo essere a
diversi livelli,e puo essere sintetizzabile o
meno
Arch 1 (Beh)
Arch 2 (RTL)
Ad ogni entity possono corrispondere molteplici
architectures, a seconda del tipo e del livello
di descrizione voluto es, la sintesi trasforma
una architecture RTL in una a gate-level, sempre
riferita alla stessa entity
Arch 3 (Gate L.)
19Esempio
entity NAND is Port ( a , b in bit
z out bit ) architecture behavioral
of NAND is signal s bit begin s lt a and
b z lt not s end NAND
20Esempio (bis)
entity NAND is Port ( a , b in bit
z out bit ) end NAND architecture
behavioral of NAND is signal s bit begin s
lt a and b z lt not s end behavioral
21VHDL Costrutti
- STATEMENTS Costrutto che rappresenta un
istanza circuitale. - Benche vengano SIMULATI SEQUENZIALMENTE gli
statements - vengono ESEGUITI SIMULTANEAMENTE.
- Es s lt a and b
- Es z lt out s
-
22VHDL Costrutti
- PROCESSI Un processo rappresenta uno statement
espanso , ovvero una operazione non elementare
composta da un insieme di operazioni elementari
che si suppongono eseguite nello stesso istante. - Allinterno di un processo l esecuzione e
SEQUENZIALE, e possono essere definite delle
variabili. - SOLO allinterno di processi possono essere
inserite espressioni di controllo 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 lt d end process
23Sensitivity List
SENSITIVITY LIST Luscita di un processo viene
ricalcolata 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 tutti gli ingressi del processo
devono appartenere alla Sensitivity list.
24Esempio (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
is begin process(a,b,enable)
begin if(enable 1) out lt
a xor b carry lt a and
b else out lt 0 carry lt
0 end if end process end behavioral
25VHDL Costrutti
- INSTANZIAZIONE GERARCHICA E possibile
istanziare in un dispositivo descritto in VHDL
componenti circuitali di libreria descritti
separatamente,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
26Esempio (Half_Adder strutturale)
architecture structural of Half_Adder
is component lib_and3 port ( in1,in2,in3 in
bit Z out bit ) end
component component lib_and2 port ( in1,in2 in
bit Z out bit ) end
component component lib_xor2 port ( in1,in2 in
bit Z out bit ) end
component signal s bit Begin My_and3
lib_and3 port map (in1 gt a, in2 gt b,
in3 gtenable, Z gt out) My_and2 lib_and2
port map (in1 gt enable, in2 gt s, Z gt
carry) My_xor2 lib_xor2 port map
(in1 gt a, in2 gt b, Z gt s) end structural
27Tipi di dato
- Nel VHDL le dichiarazioni di porte, segnali, e
variabili devono specificare il loro tipo o
sottotipo
- 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
28Tipi scalari (Integer)
- Rappresentazione a 32 bit
- range(standard) -2311 to 231-1
- Esempio
architecture behavioral of int_type is Begin
process(..) variable a INTEGER Begin
a 1 a1.0 -- not legal end
process end behavioral
29Tipi scalari (Real)
- Single precision (32 bit)
- Double precision (64 bit)
- Esempio
architecture behavioral of Real_type is Begin
process(..) variable a REAL Begin
a 1.3 a -7.5 a1 -- not
legal end process end behavioral
30Tipi scalari (Enumerated)
- Lista di possibili valori specificati dallutente
- Esempio
architecture behavioral of enum_type is TYPE
binary IS (ON, OFF) Begin process(..)
variable a,b binary Begin a ON
b OFF end process end behavioral
31Tipi compositi (Array)
- Utilizzato per ragruppare elementi dello stesso
tipo in un singolo oggetto VHDL - 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 lt my_shift_mem(7) for I in 7
downto 1 loop my_shift_mem(I)
my_shift_mem(I-1) end loop
my_shift_mem(0) DATA_IN end process end
test
32Tipi compositi (Record)
- Utilizzato per ragruppare elementi dello stesso
tipo in un singolo oggetto VHDL - Gli elementi sono referenziati mediante I nomi
dei gruppi
architecture test of rec_type_example is TYPE
binary IS (ON, OFF) TYPE switch_info IS
RECORD status BINARY
IDnumber INTEGER END RECORD Begin
process(DATA_IN, ) variable switch
switch_info Begin switch.status
ON switch.IDnumber 30 ..
end process end test
33IEEE Std_logic_1164
Si tratta di un package di libreria,
SINTETIZZABILE, che permette di definire
segnali (o variabili, interne a processi) che
descrivano il comportamento elettrico del segnale
stesso
0 Logic 0
1 Logic 1
X Conflict
U Unknown
Z Float (3state)
H Weak 1
L Weak 0
- Dont Care
use ieee.std_logic_1164.all .. entity adder
is port ( a,b in std_logic_vector(7 downto
0) z out std_logic_vector(7
downto 0) ovf out std_logic )
34Operandi 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 dellutente o
di sistema. Gli operandi possono appartenere a
tre categorie fondamentali PORTE Ovvero,
gli elementi di interfaccia verso lesterno del
circuito SEGNALI Elementi
di comunicazione interni al circuito tra
processi, statements e
components VARIABILI Rappresentano operatori
temporanei, sono solo INTERNE A
PROCESSI
35Operatori Fondamentali
lt Assegnamento
-- Commento
and, or, xor, not Operatori Logici
, -, Op. matematici sintetizzabili
/, mod, rem, abs, Op. matematici non sintetizzabili
gt, gt, lt, lt, Operatori relazionali
36Alcune Regole
- Un Segnale non puo essere usato due volte come
destinazione (corto circuito) a meno che cio non
venga fatto allinterno di un processo - Una porta di uscita non puo essere usata come
sorgente (ingresso) da statement / processo /
blocco gerarchico - I costrutti IF/LOOP, intrinsecamente sequenziali,
possono essere usati solo allinterno di processi - LA ESECUZIONE DI DIVERSI STATEMENT / PROCESSI /
COMPONENTS E SEMPRE CONCORRENTE, lordine con
cui sono scritti NON HA ALCUNA IMPORTANZA
37Attributes
ATTRIBUTES gt Funzioni di simulazione che sono
collegate
al comportamento di segnali, tipi o
array. Possono essere
anche definiti dallutente
Sevent Vero in caso di eventi su S
Sactive Vero in caso di transactions su S
Sdriving Vero se il processo corrente pilota S
Sstable(t) Vero se non ci sono eventi in S nel tempo t
Tlow , Thigh Valore maggiore/minore ? T
38Flip Flop con reset e enable
Entity FF is port ( clk, enable,
reset, D in BIT Q
out BIT ) End FF Architecture
behavioral of FF is begin process(CLK, reset)
Begin if reset 1 then Q lt 0
elsif clkevent and clk 1 then if
enable 1 then Q lt D end
if end if end process end behavioral