Title: Sntesis Lgica con HDL
1Síntesis Lógica con HDL
- Especificación y
- Metodología en VHDL
2Qué es la Síntesis Lógica?
- Obtención automática de una descripción
arquitectural a partir de una funcional - Utiliza un subset del lenguaje HDL (VHDL) gt No
es sintetizable cualquier descripción - El estilo de descripción influye notablemente.
Las descripciones deben realizarse pensando en
que se van a convertir en puertas reales - HDLs más comunes VHDL y VERILOG
- Es capaz de optimizar respecto del número de
puertas y respecto de la temporización - Relación área/tiempo gt Trade-off
- Síntesis Traslación a puertas Optimización
3Estilos de Descripción (1/2)
- En VHDL exiten únicamente 3 estilos definidos
- dataflow Implica una estructura y un
comportamiento - behavioral No existe información estructural
- structural Se describen las interconexiones de
los componentes (comportamiento implícito) - Se pueden combinar los estilos anteriores en una
misma descripción - Estas descripciones hacen referencia a la forma
de especificar el objeto de VHDL architecture
4Estilo de Descripción (2/2)
- Hoy en día, el estilo que mejor se adapta a las
herramientas de Síntesis Lógica combina los 3
anteriores junto con las experiencia de los
diseñadores y las recomendaciones de aquellas - Realizar una partición jerárquica adecuada al
diseño - Los bloques a sintetizar no deben ser
excesivamente grandes - Aritmética entera
- Descripciones explícitas y a nivel de
transferencia entre registros (RTL)
5Ejemplos (1/2)
- architecture dataflow of ejemplo1 is
- begin
- Cltnot(A xor B)
- end dataflow
- Ejemplo Data_flow
- architecture behavioral of ejemplo1 is
- begin
- process (A,B) begin
- if (A B) then
- C lt 1
- else
- C lt 0
- end if
- end process
- end behavioral
- Ejemplo Behavioral
6Ejemplos (2/2)
- architecture structural of ejemplo1 is
- signal I bit
- component XR2, INV,...
- begin
- U0 XR2 port map (I,A,B)
- U1 INV port map (C,I)
- end structural
- Se declaran señales internas y los componentes
que se utilizan - Los componentes han de estar definidos en una
libreria
U0
A
U1
C
I
XR2
INV
B
7Variables vs Señales (1/3)
- Similitudes
- Ambas son objetos de VHDL cuyo valor puede ser
cambiado - Ambas son sintetizadas como lógica combinacional
y/o conexiones - En ambos casos existen reglas de ámbito y
persistencia como en los lenguajes de
programación - Diferencias
- Las variables se usan exclusivamente dentro de
los procesos (process) y subprogramas (procedure
y function) - Las variables son siempre asignadas a un valor en
simulación, por lo que su procesamiento es más
rápido - Siempre que sea posible, desde el punto de vista
de la síntesis lógica, se han de usar variables
8Variables vs Señales (2/3)
- Recomendaciones
- Usar señales en operaciones de poca complejidad
computacional - Usar variables para tipos y expresiones complejas
- Asignar señales a variables, de forma temporal,
siempre que sea posible - Usar señales para comunicar procesos
- No usar NUNCA tipos reales (No son sintetizables)
- Reservar el tipo INTEGER para operaciones que así
lo impongan - Intentar usar STD_LOGIC, STD_ULOGIC, BIT
- Las operaciones tienen una precedencia por
defecto, salvo que se usen paréntesis - El uso de paréntesis también impacta en el
resultado final de la síntesis
9Variables vs Señales (3/3)
- signal A,B,C,X,Y mi_vector
- begin
- process(A,B,C)
- begin
- C lt A IGNORADA
- X lt C 2
- C lt B PROCESADA
- Y lt C 2
- end process
- signal A,B,X,Ymi_vector
- begin
- process(A,B)
- variable C mi_vector
- begin
- C A INMEDIATO
- X lt C 2
- C B INMEDIATO
- Y lt C 2
- end process
X
2
X
2
A
B
B
Y
Y
2
2
10Ejemplo
11Procesos y Sentencias Concurrentes
- Sentencia concurrente
- Signal S,Astd_logic
- S lt A and B
- Equivale a una forma abreviada del process
- Cada sentencia da lugar a un process
- Siempre señales
- Se evalua siempre que cambia A y/o B
- Process
- Signal S,Astd_logic
- Process (A)
- begin
- S lt A and B
- end process
- Variables o señales
- Se activa solo si en A se produce un evento
- Puede haber varios process en paralelo
12Síntesis de Sentencias Concurrentes (1/3)
- Se ejecutan de forma asíncrona, sin un orden
prefijado - Siempre dentro de una architecture y entre
señales - Se usan en descripciones de tipo structural,
dataflow y/o RTL - Ejemplo
- A lt B C
- D lt E F
- Este ejemplo produciría el mismo Hw dentro y
fuera de un process. Sólo si las señales B, C, E
y F estan en la lista de sensibilidad daría los
mismos resultados en simulación
B
A
C
E
D
F
13Síntesis de Sentencias Concurrentes (2/3)
- El resultado de la síntesis es siempre
combinacional - Existen 2 formas de asignación de valores en
sentencias concurrentes - Condicional Similar a las sentencias if de los
process - Selección Similar a las sentencias case de los
process - Ejemplo
- Zlt A when (Xgt3) else
- B when (Y5) else
- C
X
gt 3
Y
5
C
0
0
Multiplexores con orden de prioridad
Z
B
1
A
1
14Síntesis de Sentencias Concurrentes (3/3)
- Se deben evitar la realimentación de una señal en
la misma sentencia, pues se sintetizan bucles
asíncronos - A lt B A
- El compilador advierte de esta situación!
- La existencia de una asignación múltiple a una
señal necesita de una función de resolución que
indique como se ha de resolver - C lt A
- C lt B
B
A
A
A
C
B
15Síntesis de Sentencias Secuenciales (VHDL,
VERILOG)
- Las más utilizadas IF Y CASE. Son más explícitas
- IF codifica prioridades
- CASE codifica tablas de verdad y máquinas de
estados (FSM) - FOR y WHILE son menos utilizadas. Son mas
implícitas - Operaciones directamente sintetizables
- Sumas, restas, incrementos y decrementos
- Operaciones booleanas
16IF en Lógica Combinacional
process (a,b,sel) begin if(sel 1)
then c lt a else c lt b end if end
process
1
a
c
mux
b
0
sel
17IF sin ELSE en Expresión Combinacional
process(a,sel) begin if(sel 1) then
b lt a end if end process
b
a
D
Q
E
QN
sel
18IF en Lógica Secuencial
19IF sin ELSE en Lógica Secuencial
20Condiciones Asíncronas
VHDL
process(clk,reset) begin if(reset0)
then c lt 0 elsif (clkevent and clk
1) then if(sel1) then c
lt a end if end process
0
c
mux
D
Q
a
1
sel
CK
clr
clk
reset
21CASE en Combinacionales
22CASE en Secuenciales. FSM
process(clk,reset) begin if(reset0) then
statuslt0 elsif (clkevent and clk1)
then case(status) is when 0gtif(c1)
then statuslt1 end if when
1gtstatuslt2 when 2gtif(c1) then
statuslt1 else statuslt0
end if end case end
if end process
c0
0
c1
1
c0
cX
2
c1
23Atributos y Restricciones
- Se aplican desde la propia librería de
componentes y desde las preferencias del usuario - fan-out, hold y setup marcados por la librería
- Área, frecuencia máxima de trabajo, capacidades
marcados por el usuario - Influyen en el trade-off del sintetizador
- Los sintetizadores suelen incorporar una
herramienta de análisis de tiempos
24Flujo Síntesis Lógica
25CONCLUSIONES
- A la hora de especificar para síntesis no hay que
perder de vista que el resultado será hardware - Restricciones en el lenguaje HDL
- Restricciones físicas retardos y área