Как исправить «Внутреннюю ошибку компилятора» при запуске симуляции - PullRequest
1 голос
/ 02 апреля 2019

Я работаю над делителем частоты с возможностью выбора частоты, и я не могу заставить это работать. Проверка синтаксиса проходит каждый раз, но когда я запускаю симуляцию, я получаю эту ошибку: "FATAL_ERROR: Simulator: CompilerAssert.h: 40: 1.20 - Внутренняя ошибка компилятора в файле ../src/VhdlTreeTransform.cpp в строке 296 Для технической поддержки по этому вопросу вопрос, пожалуйста, посетите http://www.xilinx.com/support."

Я уже ищу эту проблему и не могу найти решение. Я новичок в этом, и это, вероятно, какая-то банальная проблема, и я был бы рад, если бы Вы могли помочь мне с этим.

Основной код здесь:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all;
use IEEE.NUMERIC_STD.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;


entity Freq4Sel is
     Port ( cp : in  STD_LOGIC;
              sel : in  STD_LOGIC_VECTOR (1 downto 0);
              outcp : buffer  STD_LOGIC:= '0');
end Freq4Sel;

architecture Behavioral of Freq4Sel is
begin
process(cp)
variable selects : integer range 0 to 50000000;
variable temp: integer range 0 to 50000000 := 0;
begin
with sel select
    selects :=  50000000 when "11",
                    5000000 when  "10",
                    2000000 when  "01",
                    1000000 when  others;
    if (cp'event and cp = '1') then
    temp := temp+1;
    if(temp>=selects) then 
        outcp <= not outcp;
    end if;
end if;
end process;


end Behavioral;

И файл для симуляции теста здесь:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;

ENTITY Freq4Sel_w IS
END Freq4Sel_w;

ARCHITECTURE behavior OF Freq4Sel_w IS 


     COMPONENT Freq4Sel
     PORT(
            cp : IN  std_logic;
            sel : IN  std_logic_vector(1 downto 0);
            outcp : BUFFER  std_logic
          );
     END COMPONENT;


    signal cp : std_logic := '0';
    signal sel : std_logic_vector(1 downto 0) := "00";

    signal outcp : std_logic;

    constant cp_period : time := 10 ns;

BEGIN

    uut: Freq4Sel PORT MAP (
             cp => cp,
             sel => sel,
             outcp => outcp
          );

    cp_process :process
    begin
        cp <= '0';
        wait for cp_period/2;
        cp <= '1';
        wait for cp_period/2;
    end process;


    stim_proc: process
    begin       
        wait for 100 ns;    
        sel <= "10";
        wait for cp_period*10;


        wait;
    end process;

END;
...