UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
756 Views
Registered: ‎07-02-2018

FATAL_ERROR: Vivado Simulator kernel has discovered an exceptional condition from which it cannot recover (Vivado 2016.4)

Jump to solution

Hi there,

 

when i try to simulate my VHDL code, i get this error: FATAL_ERROR: Vivado Simulator kernel has discovered an exceptional condition from which it cannot recover.

Unfortunatly the other posts about this error code didn`t help me because there was a problem in the older versions of vivado.

 

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_signed.all;
use IEEE.NUMERIC_STD.ALL;

entity SwitchingTime2Lvl is
port (  
         iu_a: in std_logic_vector (31 downto 0);
        iu_b: in std_logic_vector (31 downto 0);
        iu_c: in std_logic_vector (31 downto 0);
        iu_dc: in std_logic_vector (31 downto 0);
        if_sw: in std_logic_vector(19 downto 0);
        iPWM: in std_logic_vector(3 downto 0);      
        oTgabcOFF: out std_logic_vector (31 downto 0);
        oTgabcON: out std_logic_vector (31 downto 0)
     );
end SwitchingTime2Lvl;

architecture Behavioral of SwitchingTime2Lvl is
-- interne Signale alle als Integer interpretieren, damit Rechenoperationen definiert sind
signal u_a: integer :=0;
signal u_b: integer :=0;
signal u_c: integer :=0;
signal u_dc: integer :=0;
signal f_sw: integer;
signal PWM: integer;
signal TgabcON: integer :=0;
signal TgabcOFF: integer;

begin
u_a <= to_integer(signed(iu_a));
u_b <= to_integer(signed(iu_b));
u_c <= to_integer(signed(iu_c));
u_dc <= to_integer(signed(iu_dc));
f_sw <= to_integer(unsigned(if_sw));
PWM <= to_integer(unsigned(iPWM));
oTgabcON <= std_logic_vector(to_signed(TgabcON,32));
oTgabcOFF <= std_logic_vector(to_signed(TgabcOFF,32));

-------------------------------------------------------------

process(u_a,u_dc,f_sw)
--put local signals or variables here
variable T_swh, T_as, T_bs, T_cs: integer;
    
    begin
    T_swh := 1000000/(f_sw*2);    --abort simulation in this line
    T_as := T_swh*(u_a/u_dc);
    TgabcOFF <= T_as;
end process;

end Behavioral;

Somehow there is a problem with the line:

 T_swh := 1000000/(f_sw*2);

 When I change '/' to a '*' it works fine until the next line. So maybe there is a problem by that.

 

It's my very first VHDL project (learned it on my own) and i dicided to typcast the values to integers, so I can make progress sooner. Could the problem be caused by my style of coding VHDL?

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Xilinx Employee
Xilinx Employee
915 Views
Registered: ‎08-10-2015

Re: FATAL_ERROR: Vivado Simulator kernel has discovered an exceptional condition from which it cannot recover (Vivado 2016.4)

Jump to solution

Hi @maltelorenz93,

 

value '0' is used as denominator in the signal assignment. This is leading to fatal error in Vivado simulator.

Please find the below simple test case

============

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_signed.all;
use IEEE.NUMERIC_STD.ALL;

entity SwitchingTime2Lvl is
port ( iu_c: in std_logic_vector (31 downto 0));
end SwitchingTime2Lvl;

architecture Behavioral of SwitchingTime2Lvl is
signal u_a: integer :=0;
signal u_c: integer :=1;
signal u_dc: integer :=0; -- change this value to 1, no fatal error seen
signal T_as: integer;

begin
u_c <= to_integer(signed(iu_c));
process(u_a,u_dc)
    begin
    T_as <= (u_a/u_dc);
end process;

end Behavioral;

==================

If we change the value of signal u_dc other than 0, issue will be resolved.

 

This fatal error is reported to the factory.

 

 

Thanks,

Sunilkumar

 

 

2 Replies
Highlighted
Xilinx Employee
Xilinx Employee
916 Views
Registered: ‎08-10-2015

Re: FATAL_ERROR: Vivado Simulator kernel has discovered an exceptional condition from which it cannot recover (Vivado 2016.4)

Jump to solution

Hi @maltelorenz93,

 

value '0' is used as denominator in the signal assignment. This is leading to fatal error in Vivado simulator.

Please find the below simple test case

============

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_signed.all;
use IEEE.NUMERIC_STD.ALL;

entity SwitchingTime2Lvl is
port ( iu_c: in std_logic_vector (31 downto 0));
end SwitchingTime2Lvl;

architecture Behavioral of SwitchingTime2Lvl is
signal u_a: integer :=0;
signal u_c: integer :=1;
signal u_dc: integer :=0; -- change this value to 1, no fatal error seen
signal T_as: integer;

begin
u_c <= to_integer(signed(iu_c));
process(u_a,u_dc)
    begin
    T_as <= (u_a/u_dc);
end process;

end Behavioral;

==================

If we change the value of signal u_dc other than 0, issue will be resolved.

 

This fatal error is reported to the factory.

 

 

Thanks,

Sunilkumar

 

 

725 Views
Registered: ‎07-02-2018

Re: FATAL_ERROR: Vivado Simulator kernel has discovered an exceptional condition from which it cannot recover (Vivado 2016.4)

Jump to solution

Okay i already thought about that.
In my test bench I am writing postive integer values to u_c, u_dc and f_sw. Than but I guess I have to think about the timing and default mode again.

0 Kudos