11.08.2013 Views

Los dos HDLs: VHDL, Verilog Los dos HDLs: VHDL, Verilog ...

Los dos HDLs: VHDL, Verilog Los dos HDLs: VHDL, Verilog ...

Los dos HDLs: VHDL, Verilog Los dos HDLs: VHDL, Verilog ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

<strong>Los</strong> <strong>dos</strong> <strong>HDLs</strong>: <strong>HDLs</strong>:<br />

<strong>VHDL</strong>, <strong>Verilog</strong><br />

Dominios de síntesis ntesis<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

<strong>Los</strong> <strong>dos</strong> <strong>HDLs</strong>: <strong>HDLs</strong>:<br />

<strong>VHDL</strong>, <strong>Verilog</strong><br />

Dominios de síntesis ntesis


DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Dominios de síntesis ntesis<br />

¿Por Por qué qu diseñar dise ar en alto nivel? nivel<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Dominios de síntesis ntesis<br />

¿Por Por qué qu diseñar dise ar en alto nivel?<br />

nivel


DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Síntesis ntesis funcional<br />

Síntesis ntesis funcional: funcional:<br />

Scheduling<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Síntesis ntesis funcional: funcional:<br />

Scheduling<br />

Síntesis ntesis funcional: funcional:<br />

ALU Allocation


DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Síntesis ntesis funcional: funcional:<br />

ALU Allocation<br />

Síntesis ntesis funcional: funcional:<br />

Register Allocation<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Síntesis ntesis funcional: funcional:<br />

Register Allocation<br />

Síntesis ntesis funcional: funcional:<br />

Scheduling


Síntesis ntesis de Alto nivel/behavioral/arquitectura/funcional<br />

Especificationes<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Flujo de síntesis ntesis de alto nivel<br />

Schedulling: asignación de cada operación a un intervalo de tiempo correspondiente a un ciclo de reloj o intervalo<br />

Resource Allocation: Selección del tipo de harware y el número de componentes<br />

Module binding: Asignación de operaciones a los componentes harware<br />

Síntesis del control: Diseño del estilo de control y estrategia de reloj<br />

Entrada<br />

Especificación funcional<br />

Criterios de diseño (timing, prestaciones, coste, consumo, #pines, etc)<br />

Una función de optimización<br />

Una librería de módulos representando las funciones disponibles<br />

Objetivos<br />

Generar un diseño RTL que<br />

Implemente la función especificada<br />

Satisfaga los criterios de diseño<br />

Conduzca a una optimización de la función coste<br />

Coste= a · Area + b · Tiempo_ejecución + …<br />

Salida<br />

Estructura RTL<br />

Controlador (capturado normalmente simbólicamente como FSM)<br />

Otros atributos, tales como información geométrica, que guíen a las<br />

siguientes tareas<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Síntesis ntesis de Alto Nivel<br />

Scheduling


DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Scheduling: Scheduling:<br />

Ejemplo<br />

Scheduling: Scheduling:<br />

Ejemplo<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Scheduling: Scheduling:<br />

Ejemplo<br />

Allocation y binding<br />

Allocation : determinación del tipo y número de recursos<br />

Elementos funcionales<br />

Elementos de almacenamiento<br />

Conexiones, busses<br />

Binding : Asignación de recursos a componentes<br />

Operaciones a componentes funcionales<br />

Valores a almacenar a componentes de almacenamiento<br />

Transferencias de datos a buses/líneas<br />

Puntos clave:<br />

Compartición de recursos<br />

Objetivos en la optimización<br />

Minimizar coste total de recursos, interconexiones<br />

Cumplir los criterios de retraso (restricciones en caminos críticos)<br />

Técnicas<br />

Constructivas: comenzar con un datapath vacio y añadir componentes funcionales, de almacenamiento<br />

e interconexiones a medida que se necesitan de acuerdo al scheduling.<br />

Algoritmos tipo Greedy: realizar allocation para un paso de tiempo a la vez<br />

Basa<strong>dos</strong> en reglas: usa<strong>dos</strong> para seleccionar el tipo y número de unidades funcionales,<br />

especialmente antes del scheduling<br />

Basadas en teoría de grafos: las sub-tareas se asocian a problemas bien defini<strong>dos</strong> en la teoría de grafos<br />

Clique partitioning<br />

Algoritmo Left-edge


DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Clique-partitioning<br />

Clique partitioning<br />

Síntesis ntesis de lógica gica/RTL /RTL<br />

Especificationes<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Independiente Tecnología<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII<br />

Librería<br />

Dependiente Tecnología<br />

Left-edge Left edge algorithm<br />

Flujo de síntesis ntesis lógica gica<br />

Descripción RTL (<strong>Verilog</strong>, <strong>VHDL</strong>)<br />

Optimización Lógica<br />

Red Booleana<br />

Technology Mapping<br />

Gate-level Netlist<br />

Minimizar # de literales<br />

Factorización<br />

Extracción el. Comunes<br />

Opt. temporal (reestructurar red)<br />

Estimar coste<br />

Velocidad<br />

Area<br />

Consumo<br />

La Síntesis Lógica se divide en <strong>dos</strong> partes:<br />

Optimización independiente de la tecnología<br />

· Determinación de la estructura lógica<br />

· Estimación de coste (indep. de la tecnología)<br />

Optimización dependiente de la tecnología (technology mapping)<br />

· Asociación a puertas de la librería<br />

· Modelo detallado de coste específico para la tecnología


Suma de productos:<br />

x = A D F + A E F + B D F + B E F + C D F + C E F + G<br />

6 AND3 + 1 OR7 (podría no existir!)<br />

25 cables (19 literales + 6 líneas internas)<br />

A<br />

D 1<br />

F<br />

A<br />

E 2<br />

F<br />

B<br />

D 3<br />

F<br />

B<br />

E<br />

F<br />

C<br />

D<br />

F<br />

C<br />

E<br />

F<br />

G<br />

4<br />

5<br />

6<br />

Two-Level Two Level vs. Multi-Level Multi Level Logic Synthesis<br />

Minimizar # términos producto.<br />

Quine-McCluskey.<br />

Espresso (SOP)<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

t 1 = d + e;<br />

t 2 = b + h;<br />

t 3 = at 2 + c;<br />

t 4 = t 1t 3 + fgh;<br />

F = t 4’;<br />

f<br />

g<br />

d<br />

e<br />

h<br />

b<br />

a<br />

c<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

7<br />

x<br />

A<br />

B<br />

C<br />

D<br />

E<br />

F<br />

G<br />

Necesaria para SCs, Gas, FPGAs<br />

1<br />

2 3<br />

Forma factorizada (SOP(SOP(…))):<br />

x = (A + B + C) (D + E) F + G<br />

1 OR3 + 2 OR2 + 1 AND3<br />

10 cables (7 literales + 3 líneas internas)<br />

Minimizar # literales, puertas, retraso.<br />

Factorización algebraica.<br />

SIS (forma factorizada)<br />

Technology mapping: Cual es el problema?<br />

problema<br />

F<br />

inv(1) nand2(2)<br />

nand3 (3)<br />

nor(2)<br />

aoi21 (3)<br />

xor (5)<br />

4<br />

x<br />

nor3 (3)<br />

oai22 (4)<br />

t 1 t 3 + fgh<br />

F<br />

t t4’ 4’<br />

at 2 +c<br />

d+e b+h<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

f<br />

g<br />

t1 = d + e;<br />

d<br />

t2 = b + h;<br />

t3 = at2 + c; e<br />

t4 = t1t3 + fgh;<br />

F = t4’; h<br />

b<br />

a<br />

Coste total = 23<br />

c<br />

f<br />

g<br />

t1 = d + e;<br />

d<br />

t2 = b + h;<br />

t3 = at2 + c; e<br />

t4 = t1t3 + fgh;<br />

F = t4’; h<br />

b<br />

a<br />

Area total = 19 c<br />

and2(3)<br />

or2(3)<br />

or2(3)<br />

nand2(2)<br />

inv(1)<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Technology mapping<br />

d’ e’<br />

a<br />

F<br />

c<br />

f<br />

b’ h’<br />

g<br />

h<br />

Technology mapping (área ( rea)<br />

nand2(2)<br />

aoi22(4)<br />

F<br />

F<br />

t 1 = d + e;<br />

t 2 = b + h;<br />

t 3 = at2 + c;<br />

t 4 = t1t3 + fgh;<br />

F = t 4 ’;<br />

Area total = 15<br />

inv(1) nand2(2)<br />

nand3 (3)<br />

f<br />

g<br />

d<br />

e<br />

h<br />

b<br />

a<br />

c<br />

nor(2)<br />

aoi21 (3)<br />

xor (5)<br />

oai21 (3)<br />

oai21(3)<br />

inv(1)<br />

nand3(3)<br />

nand2(2)<br />

nor3 (3)<br />

oai22 (4)<br />

and2(3)<br />

F


Area<br />

INV (1)<br />

NAND2 (2)<br />

NAND3 (3)<br />

AOI21 (3)<br />

NAND4 (4)<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Area<br />

INV (1)<br />

NAND2 (2)<br />

NAND3 (3)<br />

AOI21 (3)<br />

NAND4 (4)<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Load-Dependent Delay<br />

INV (1) NAND2 (2) NAND3 (3)<br />

AOI21 NAND4<br />

INV (2) NAND2 (4) NAND3 (5)<br />

AOI21 NAND4<br />

INV (3) NAND2 (5) NAND3 (7)<br />

AOI21 NAND4<br />

INV (3) NAND2 (4) NAND3 (7)<br />

AOI21 NAND4<br />

INV (5) NAND2 (9) NAND3 (12)<br />

AOI21 NAND4<br />

Technology mapping (delay)<br />

Load-Dependent Delay<br />

INV (1) NAND2 (2) NAND3 (3)<br />

AOI21 NAND4<br />

INV (2) NAND2 (4) NAND3 (5)<br />

AOI21 NAND4<br />

INV (3) NAND2 (5) NAND3 (7)<br />

AOI21 NAND4<br />

INV (3) NAND2 (4) NAND3 (7)<br />

AOI21 NAND4<br />

INV (5) NAND2 (9) NAND3 0(12)<br />

AOI21 NAND40<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

3<br />

2 2 + 2 = 4<br />

7<br />

MAX (7,3) + 7 = 14<br />

NAND3<br />

MAX (4,0,0) + 4 = 8<br />

MAX (8,0) + 5 = 13<br />

NAND3<br />

Area<br />

INV (1)<br />

NAND2 (2)<br />

NAND3 (3)<br />

AOI21 (3)<br />

NAND4 (4)<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Technology mapping (delay)<br />

Load-Dependent Delay<br />

INV (1) NAND2 (2) NAND3 (3)<br />

AOI21 NAND4<br />

INV (2) NAND2 (4) NAND3 (5)<br />

AOI21 NAND4<br />

INV (3) NAND2 (5) NAND3 (7)<br />

AOI21 NAND4<br />

2<br />

INV (3) NAND2 (4) NAND3 (7)<br />

AOI21 NAND4 0<br />

0<br />

0<br />

INV (5) NAND2 (9) NAND3 (12)<br />

AOI21 NAND4<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

2<br />

2 + 1 = 3 MAX(3,0) + 2 = 5<br />

1<br />

1<br />

2 + 1 = 3<br />

3<br />

Síntesis ntesis física sica<br />

MAX( 5,1) + 2 = 7<br />

8<br />

MAX (3,0,0) + 3 = 6<br />

MAX( 8,0) + 2 =10<br />

MAX (3,1,0) + 3 = 6<br />

MAX (6,0) + 2 = 8


DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Particionado<br />

Algorítmos<br />

Algor tmos de biparticionado<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Particionado recursivo: recursivo:<br />

min-cut min cut<br />

Algorítmos<br />

Algor tmos de biparticionado


DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Algorítmos<br />

Algor tmos de biparticionado:<br />

biparticionado:<br />

Ejemplo K-L<br />

Floorplanning<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Floorplanning<br />

Floorplanning


DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Placement<br />

Mal placement Buen placement<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Placement iterativo: iterativo:<br />

Simulated annealing<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Placement iterativo: iterativo:<br />

Simulated annealing<br />

Estrategia clásica<br />

Placement iterativo: iterativo:<br />

Simulated annealing<br />

Recocido simulado


DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Routing<br />

Maze Routing<br />

Lee’s Algorithm<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Routing<br />

Routing detallado:<br />

detallado:<br />

Definiciones y modelos de asignación asignaci de capas<br />

• Entrada:<br />

– Dos vectores de la misma longitud que<br />

representan los pines en ambs la<strong>dos</strong> del<br />

canal.<br />

– Número de capas y modelo de conexión.<br />

• Salida:<br />

– Conexión de pines.<br />

– Minimización de la anchura del canal.<br />

– Minimización del número de vias.<br />

Ejemplo: (13002110)<br />

(30120300)<br />

(0 = no terminal)<br />

Channel routing<br />

+<br />

Switchbox routing<br />

1. Fix the terminals between A & B<br />

2. Route B, C, then D (channel)<br />

3. Route A (switchbox)


Left-Edge Algorithm<br />

DMII Síntesis funcional – Síntesis RTL – A. Diéguez<br />

Left-Edge Left Edge Channel Routing Algorithm<br />

Constrained Left-Edge Algorithm

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!