Компонент используется, но НЕ объявлен, находясь внутри пакета - PullRequest
0 голосов
/ 26 марта 2019

В моем проекте Quartus я создал два файла пакета. Я создаю файл, который хочет использовать оба из них. Но когда я пытаюсь скомпилировать файл, он говорит, что некоторые компоненты используются, но НЕ определены. Когда я проверяю посылку, чтобы увидеть, есть ли они там, я нахожу их. Но компилятор выдает мне это сообщение. Почему это?

Я пробовал следующее. C / P файл, который содержит компонент, который не найден в новом файле, переименовал новый файл и добавил его в пакет. Как-то это работает. Но я не понимаю, почему.

Снимок экрана 1: Объявление элемента в пакете ДВАЖДЫ с разными именами. https://imgur.com/a/n4xM7FX

Снимок экрана 2. Библиотеки в начале файла, вызывающего проблему https://imgur.com/a/gD2ei5a

Снимок экрана 3: строка кода, вызывающая проблему https://imgur.com/a/tfByyFI

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

PACKAGE PIPELINE IS 

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

component I_F IS

    PORT(
            GLB_CLK: IN  STD_LOGIC;
            STALL  : IN  STD_LOGIC;
            PC     : IN  STD_LOGIC_VECTOR(31 DOWNTO 0);
            MEMWORD: OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
            PC_ADD : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)

        );

END component I_F;


-- ... More components below

END PACKAGE PIPELINE;

Теперь на файле, который я хочу использовать этот компонент.

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

LIBRARY WORK;
USE WORK.PIPELINE.ALL;
USE WORK.TOOLBOX.ALL; -- Thats the second package file
ENTITY TEST  -- Just for this example
       PORT ( Aa : IN BIT; B : OUT BIT);
END TEST;

ARCHITECTURE PROBLEMATIC OF TEST IS
    SIGNAL CLK : STD_LOGIC;
    SIGNAL PIPE_STALL_SIG : STD_LOGIC;
    SIGNAL PC_IN_NEXT_PC : STD_LOGIC_VECTOR(31 DOWNTO 0);
    SIGNAL IF_OUT_IFWORD : STD_LOGIC_VECTOR(31 DOWNTO 0);
    SIGNAL IF_OUT_PC_VAL : STD_LOGIC_VECTOR(31 DOWNTO 0);

    BEGIN
    IF1: I_F -- <== PROBLEM HERE                                    
         PORT MAP(  
                    GLB_CLK => CLK, 
                    STALL   => PIPE_STALL_SIG, 
                    PC      => PC_IN_NEXT_PC, 
                    MEMWORD => IF_OUT_IFWORD, 
                    PC_ADD  => IF_OUT_PC_VAL 
                 ); 
END PROBLEMATIC;

-- When i use A, the probblem appears, when I C/P A into a new vhd file, define 
-- it inside the package as shown above and then using the copy to the file that causes the trouble everything works..

После изменения, например, имени компонента с I_F на ASDF, проблема также была решена

...