Señal indefinida en simulación

4

Estoy tratando de verificar un diseño escrito en VHDL usando las aserciones de SystemVerilog. sin embargo, tengo un problema cuando tengo una señal 'X' no definida

Por ejemplo, aquí hay un código de un comparador:

entity FP_comparator_V2 is
port (
    comp_in1                    : in    std_logic_vector(31 downto 0);
    comp_in2                    : in    std_logic_vector(31 downto 0);
    less                        : out   std_logic;
    equal                       : out   std_logic;
    greater                     : out   std_logic
    );
end FP_comparator_V2;

architecture behav of FP_comparator_V2 is
   -- signal, component etc. declarations

begin
   -- architecture body

    process(comp_in1, comp_in2)
    begin
    if comp_in1 = comp_in2 then
        equal                   <= '1';
        less                    <= '0';
        greater                 <= '0';

    else 
        equal                   <= '0';
...



   end if;
    end process;        
end behav;

y las afirmaciones

property FP_Comparator_V2_1_1;
@(posedge 'assertion_check_clk29M4912 or negedge 'assertion_check_clk29M4912)
    (fp_comp_intf.Comp_in1 === fp_comp_intf.Comp_in2) |-> (fp_comp_intf.equal);

endproperty

DS_3_4_69_1_1:
assert property(FP_Comparator_V2_1_1);
cover property(FP_Comparator_V2_1_1);

property FP_Comparator_V2_1_2;
    @(posedge 'assertion_check_clk29M4912 or negedge 'assertion_check_clk29M4912)
        (fp_comp_intf.Comp_in1 !== fp_comp_intf.Comp_in2) |-> (!fp_comp_intf.equal);
endproperty

DS_3_4_69_1_2:
assert property(FP_Comparator_V2_1_2);
cover property(FP_Comparator_V2_1_2);

Cuando Comp_int1 y Comp_int2 tienen valores definidos, la simulación funciona bien Si uno de ellos tiene un valor indefinido, también funciona bien. pero cuando ambas señales tienen un valor indefinido, da error Por ejemplo:

  

Comp_int1 = 48xx_xxxx; Comp_int2 = 47xx_xxxx   == > Igual = 1

Supongo que se compara poco a poco, por lo que Igual debería ser '0' Por favor, si conoce un libro o un sitio web que explique el comportamiento de las señales después de la síntesis o la lógica detrás de las señales indefinidas, le agradecería que lo pusiera en un comentario

gracias

    
pregunta mariam

1 respuesta

0

Creo que se deben definir los valores iniciales de comp_in1 y comp_in2.

Ej:

...
comp_in1                    : in    std_logic_vector(31 downto 0):= (OTHERS => '0');
...
    
respondido por el ORHAN YILMAZ

Lea otras preguntas en las etiquetas