Reglas de síntesis:

Anuncio
Reglas de síntesis:
1. No se pueden hacer suposiciones implícitas de cuándo se va a ejecutar un
proceso. Para asegurar la correcta comunicación entre procesos se deben usar
señales de protocolo.
2. En los procesos se debe usar la lista de sensibilidad para la activación del
mismo. Para procesos asíncronos deben estar en la lista de sensibilidad todas las
señales que se usan de entrada al proceso, en otro caso se implementarán latches
con ciclos combinacionales.
3. Las expresiones de tiempo deben convertirse en paso de control.
Wait for 25 ns;
?
process (CLK)
begin
if CLK’event and CLK=’1’ then
Hay herramientas que permiten el uso de la sentencia wait, aunque no es el caso
de xilinx por el momento:
process
begin
Wait until CLK’event and CLK=’1’;
…
4. En general, el sistema de síntesis almacenará en un latch las señales asignadas en
un proceso, o sea, que actúan como salida de un proceso. Sólo se implementará
la última asignación de una misma señal en el latch normalmente.
5. Los bucles deben especificar un retraso de almenos 1 ciclo de reloj asociado al
cuerpo del bucle, para evitar carreras (varios cambios de la misma señal por
ciclo).
6. No se permiten llamadas recursivas a procedimiento. Algunas herramientas lo
permiten pero con un máximo de anidamiento (usando una pila).
7. La instrucción assert es ignorada. Sólo tiene sentido en tiempo de simulación.
8. No se soporta ni el objeto file ni el tipo file. Algunas herramientas lo
implementan como una ROM.
9. Las variables tipo array dan lugar a memorias.
10. Se deben usar atributos para caracterizar el esquema del reloj. Las herramientas
de síntesis de alto nivel soportan sólo un número limitado de esquema de reloj y
suponen que CLK está siempre presente.
Ejemplo:
architecture ...
begin
for i in 1 to 3 generate
a(i) <= b(i-1);
end generate;
a(0) <= DR;
end …;
architecture …
begin
process (CLK,RSTz)
begin
if RSTz=’0’ then
a <= (others =>’0’);
elsif CLK’event and CLK=’1’ then
for I in 1 to 3 loop a(i)<=b(I-1);
end loop;
a(0)<=DR;
end if;
end process;
Descargar