Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel...

38
1 VHDL come strumento di progetto di circuiti digitali Antonio Deledda Corso di Progetto di sistemi elettronici L-A AA 2005-2006

Transcript of Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel...

Page 1: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

1

VHDL come strumento di progetto di circuiti digitali

Antonio DeleddaCorso di Progetto di sistemi elettronici L-A

AA 2005-2006

Page 2: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

2

[email protected]

� Tel. Interno 0512093829

� Centro ARCES, Viale Pepoli 3/2

� http://www.micro.deis.unibo.it/cgi-bin/dida?~deledda/www/Dida02

Page 3: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

3

Circuiti Integrati Digitali

ALGORITMOX(t) Y(t)

ASIC Architetture

Programmabili

(µµµµP, DSP)

FPGA

Page 4: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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

Page 5: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

5

Il Design Productivity Gap

Lo sviluppo della tecnologia offre una quantita’ di risorse di

Calcolo che supera la capacita’ del progettista di utilizzarle.

Page 6: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

6

Tecnologia Standard Cells

Per velocizzare il tempo di progetto (time-to-market) di un prodotto

vengono realizzano librerie formate da celle logiche elementari

Page 7: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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:

Page 8: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

8

Libreria 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 : "(A*B)“ }

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"}}

Page 9: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

9

• 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)

HDL

Hardware Description Languages

Page 10: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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’ considerato

standard di uso comune negli USA

VHDL

Very High speed circuits Hardware Description Language

Page 11: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

11

Stili di Descrizione Hardware

• BEHAVIORAL

• Register Transfer Level

• Gate Level

Technol ogy Dependance

Page 12: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

12

VHDL: Applicazioni

1) SIMULAZIONE LOGICA

2) SYSTEM LEVEL DESCRIPTION

3) SINTESI LOGICA

Page 13: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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

Page 14: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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!

Page 15: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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

Page 16: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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

Page 17: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

17

Flusso di Sviluppo di circuiti digitali: BACK END

6) Floorplanning

7) Place & Route

8) Parasitic extraction & backannotation

Page 18: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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)

Page 19: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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;

Page 20: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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;

Page 21: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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;

Page 22: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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;

Page 23: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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.

Page 24: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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;

Page 25: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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

Page 26: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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;BeginMy_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;

Page 27: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

27

Tipi 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

Page 28: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

28

Tipi scalari (Integer)

� Rappresentazione a 32 bit

range(standard): -2^31+1 to 2^31-1� Esempio:

architecture behavioral of int_type isBeginprocess(..)variable a : INTEGER;

Begina:= 1;a:=1.0; -- not legal

end processend behavioral;

Page 29: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

29

Tipi scalari (Real)

� Single precision (32 bit)

� Double precision (64 bit)� Esempio:

architecture behavioral of Real_type isBeginprocess(..)variable a : REAL;

Begina:= 1.3;a:= -7.5;a:=1; -- not legal

end processend behavioral;

Page 30: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

30

Tipi scalari (Enumerated)

� Lista di possibili valori specificatidall’utente

� Esempio:

architecture behavioral of enum_type isTYPE binary IS (ON, OFF);Beginprocess(..)variable a,b : binary;

Begina:= ON;b:= OFF;

end processend behavioral;

Page 31: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

31

Tipi 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;Beginprocess(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;

Page 32: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

32

Tipi 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

RECORDstatus : BINARY;IDnumber : INTEGER;END RECORD;

Beginprocess(DATA_IN, ……)variable switch: switch_info;

Begin……switch.status := ON;switch.IDnumber := 30;

…..end process

end test;

Page 33: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

33

IEEE Std_logic_1164

Si tratta di un package di libreria, SINTETIZZABILE, che permette didefinire segnali (o variabili, interne a processi) che descrivano il

comportamento 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 1H

Float (3state)Z

UnknownU

ConflictX

Logic 11

Logic 00

Page 34: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

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

Page 35: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

35

Operatori Fondamentali

Operatori relazionali>, >=, <, <=,

Op. matematici non sintetizzabili

/, mod, rem, abs, **

Op. matematici sintetizzabili+, -, *

Operatori Logiciand, or, xor, not

Commento--

Assegnamento<=

Page 36: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

36

Alcune Regole

� Un Segnale non puo’ essere usato due volte come destinazione (corto circuito) a meno che cio’ non vengafatto all’interno di un processo

� Una porta di uscita non puo’ essere usata come sorgente (ingresso) da statement / processo / bloccogerarchico

� I costrutti IF/LOOP, intrinsecamente sequenziali, possono essere usati solo all’interno di processi

� LA ESECUZIONE DI DIVERSI STATEMENT / PROCESSI / COMPONENTS E’ SEMPRE CONCORRENTE, l’ordine con cui sono scritti NON HA ALCUNA IMPORTANZA

Page 37: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

37

Attributes

ATTRIBUTES => 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

Page 38: Antonio Deledda - unibo.itdemarco/Dida02/lezioni/introvh... · 2008-09-15 · del comportamentodel circuito. Puo’esserea diversilivelli,epuo’esseresintetizzabileo meno IN OUT

38

Flip Flop con reset e enable Entity FF isport (

clk, enable, reset, D : in BIT;Q : out BIT );

End FF;

Architecture behavioral of FF isbeginprocess(CLK, reset)Beginif reset = ‘1’ thenQ <= ‘0’;

elsif clk’event and clk = ‘1’ thenif enable = ‘1’ thenQ <= D;

end if;end if;end process

end behavioral;