Trick VHDL Sintetizador para sintetizar a pesar de que no hay señales de entrada

0

Tengo un circuito que estoy intentando depurar y me gustaría eliminar el PLD de la investigación de la causa raíz. Como tal, me gustaría cablear las salidas del PLD a un 0 o 1 independientemente de la combinación de entrada. He intentado varias cosas usando una combinación de entrada imposible (en mi caso, todas Z ), configurando las salidas en consecuencia si a todas las entradas no les importa, simplemente configurando la salida a un valor codificado. . Aunque la mayoría de estos se vincularán y encajarán en ISPL, no puedo crear un mapa de fusibles porque tengo demasiados términos (en el caso de todos los Z 's) o no detecto ninguna señal de entrada después de la simplificación. Estoy usando un PLD bastante anticuado (GAL22LV10C-15J), que es probablemente la razón por la que se quedó sin términos en uno de mis intentos. Lo siguiente que voy a intentar es lo siguiente, pero estoy seguro de que tendré el mismo resultado:

output <= input and (not input);

Estoy haciendo esto para garantizar que las salidas no estén flotando mientras depuro el resto del circuito.

    
pregunta audiFanatic

2 respuestas

0

Terminé creando una señal ficticia en el nivel arquitectónico y luego asignándole los valores fijos que quería. Luego adjunté esa señal ficticia a la entrada de mi entidad estructural que quería desactivar. Funcionó a las mil maravillas. Desafortunadamente, recuerdo haber visto una respuesta aquí sugiriendo que hago exactamente eso, pero parece que se ha eliminado por algún motivo. De lo contrario, no estaría respondiendo mi propia pregunta.

    
respondido por el audiFanatic
2

Parece que IPSLever tiene un atributo syn_preserve que se puede configurar para evitar la optimización de las redes constantes. Este es el ejemplo del Lattice Synthesis Engine for ispLEVER Classic User Guide

library ieee;
use ieee.std_logic_1164.all;
entity simpledff is
    port (q : out std_logic_vector(7 downto 0);
        d : in std_logic_vector(7 downto 0);
        clk : in std_logic );
-- Turn on flip-flop preservation for the q output
attribute syn_preserve : boolean;
attribute syn_preserve of q : signal is true;
end simpledff;
architecture behavior of simpledff is
begin
    process(clk)
    begin
    if rising_edge(clk) then
        -- Notice the continual assignment of "11111111" to q.
        q <= (others => '1');
    end if;
    end process;
end behavior;
    
respondido por el ks0ze

Lea otras preguntas en las etiquetas