¿Por qué dos bucles if-if independientes siempre se ponen en bloques de siempre / proceso diferentes?

1
architecture rtl of goodFFstyle is
signal q1 : std_logic;
begin
    process (clk)
    begin
       if (clk'event and clk = '1') then
          if (rst_n = '0') then
             q1 <= '0';
          else
             q1 <= d;
          end if;
      end if;
end process;

process (clk)
begin
   if (clk'event and clk = '1') then
      q2 <= q1;
   end if;
end process;
end rtl;

En el ejemplo anterior, el segundo proceso podría haberse evitado si q2 asignado se incluyera en el primer proceso.

architecture rtl of goodFFstyle is
    signal q1 : std_logic;
    begin
        process (clk)
        begin
           if (clk'event and clk = '1') then
              if (rst_n = '0') then
                 q1 <= '0';
              else
                 q1 <= d;
              end if;
              q2 <= q1;
          end if;
    end process;

El segundo ejemplo usa menos líneas de código, pero la mayoría de ellos prefiere la primera forma de codificación. Entonces, mi duda, ¿hay alguna ventaja si codificamos con el primer método?

    
pregunta tollin jose

1 respuesta

4

No hay nada malo con el segundo estilo a menos que se tome en exceso.

Si la funcionalidad de Q1 y Q2 están estrechamente relacionadas, preferiría el proceso único. La búsqueda de señales intermedias entre cientos de pequeños procesos solo oscurece el diseño.

Y nunca he visto una herramienta de síntesis que tampoco pueda generar hardware óptimo.

    
respondido por el Brian Drummond

Lea otras preguntas en las etiquetas