Ошибка библиотеки MachX03 в Active-hdl для моделирования fpga

редактировать: я только что переустановил решетку алмаза и обновления, Active-hdl был установлен автоматически, но симуляция по-прежнему дает мне ту же ошибку. когда я меняю библиотеку machXO3; используйте machXO3.all; к библиотеке machXO2; используйте machXO2.all; он компилируется..

Я пытаюсь написать тестовый стенд для простой реализации OSCH, но не могу заставить его работать.

Мне удалось заставить его работать несколько месяцев назад, но я потерял файл, над которым работал.

это код vhdl, который у меня есть:

library  ieee;
use  ieee.std_logic_1164.all;

-- For Main Clock --
library machXO3;
use machXO3.all;
--------------------

entity Clock is
     port (stdby : in std_logic;
           osc_int: out std_logic
           );
end Clock;

architecture Clock_behav of Clock is

    COMPONENT OSCH
    -- synthesis translate_off
        GENERIC (NOM_FREQ: string := "2.56");
    -- synthesis translate_on
        PORT (STDBY : IN std_logic;
              OSC : OUT std_logic
                );
    END COMPONENT;

begin

    Clock: OSCH
    -- synthesis translate_off
    GENERIC MAP( NOM_FREQ => "2.56" )
    -- synthesis translate_on
    PORT MAP (  STDBY => stdby,
                OSC => osc_int
    );

end Clock_behav;

Это тестовый стенд, большая его часть была сгенерирована решетчатым алмазом. Я только добавил stdby ‹= '0';

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

ENTITY testbench IS
END testbench;

ARCHITECTURE behavior OF testbench IS 

    COMPONENT Clock
    PORT(
        stdby : IN std_logic;          
        osc_int : OUT std_logic
        );
    END COMPONENT;

    SIGNAL stdby :  std_logic;
    SIGNAL osc_int :  std_logic;

BEGIN

-- Please check and add your generic clause manually
    uut: Clock PORT MAP(
        stdby => stdby,
        osc_int => osc_int
    );
    stdby <= '0';

-- *** Test Bench - User Defined Section ***
   tb : PROCESS
   BEGIN
      --wait; -- will wait forever
   END PROCESS;
-- *** End Test Bench - User Defined Section ***

END;

Lattice-diamond говорит мне, что все в порядке, но когда я запускаю все в Active-hdl для имитации, я получаю следующие ошибки:

# Error: COMP96_0059: Main.vhd : (5, 1): Library "machXO3" not found.
# Error: COMP96_0078: Main.vhd : (6, 5): Unknown identifier "machXO3".
# Compile Architecture "Clock_behav" of Entity "Clock"
# Error: COMP96_0056: Main.vhd : (15, 1): Cannot find referenced entity declaration "Clock".
# Compile failure 3 Errors 0 Warnings  Analysis time :  16.0 [ms]  

person user169808    schedule 07.02.2019    source источник
comment
В вашем программном обеспечении для моделирования отсутствует machXO3 библиотека. Вам нужна имитационная модель для компонента, который вы пытаетесь смоделировать, она не является частью языка vhdl и не поставляется с вашим симулятором. Убедитесь, что у вас установлен Active HDL - Lattice Edition и поддерживает ли ваша версия семейство MachXO3.   -  person mucka    schedule 07.02.2019
comment
Active HDL был установлен вместе с Lattice-Diamond, поэтому я думаю, что это версия решетки. Я смог заставить его работать несколько месяцев назад, но я не помню, как. Есть ли способ увидеть компиляторы для Active HDL, чтобы узнать, могу ли я включить библиотеку?   -  person user169808    schedule 08.02.2019
comment
В удаленном вопросе Vhdl игнорирует общее значение свойства отсутствует объявление атрибута и спецификация созданного экземпляра OSCH в файле clock.vhd. Объявите атрибут attribute NOM_FREQ : string; Укажите атрибут attribute NOM_FREQ of Clock : label is "133.0"; (неясно, нужно ли значение таблицы 14 или таблицы 15). -- synthesis_translate_offГарантии, что дженерик не учитывается при синтезе (но будет учитываться при моделировании). Атрибут был бы.   -  person    schedule 02.03.2019
comment
[Руководство по проектированию и использованию sysCLOCK PLL MachXO2] (www.latticesemi.com/dynamic/view_document.cfm?document_id=39080) Внутренний осциллятор (OSCH), стр. 28–30. во вложенной декларативной области для создания экземпляра OSCH, декларативная часть архитектуры для Clock_Behave of Clock в clock.vhd).   -  person    schedule 02.03.2019
comment
Также см. Внутренние часы Lattice Fpga, где атрибут отображается в вопросе, но не в вашем ответе.   -  person    schedule 02.03.2019
comment
Спасибо, я удалил вопрос, потому что нашел ошибку. Я также обновил ответ на другой вопрос после прочтения ваших комментариев, спасибо   -  person user169808    schedule 11.03.2019


Ответы (1)


Глядя на C:\lscc\diamond\3.10_x64\active-hdl\vlib\, кажется, что там нет библиотеки machXO3, но есть библиотека machxo, machxo2 и machxo3l. изменение библиотеки machXO3; используйте machXO3.all; к библиотеке machXO3l; используйте machXO3l.all; до внесения небольших изменений в тестовый стенд, вроде бы все работает нормально.

новый тестовый стенд

    -- VHDL Test Bench Created from source file Clock.vhd -- Fri Feb 22 13:56:19 2019

    --
    -- Notes: 
    -- 1) This testbench template has been automatically generated using types
    -- std_logic and std_logic_vector for the ports of the unit under test.
    -- Lattice recommends that these types always be used for the top-level
    -- I/O of a design in order to guarantee that the testbench will bind
    -- correctly to the timing (post-route) simulation model.
    -- 2) To use this template as your testbench, change the filename to any
    -- name of your choice with the extension .vhd, and use the "source->import"
    -- menu in the ispLEVER Project Navigator to import the testbench.
    -- Then edit the user defined section below, adding code to generate the 
    -- stimulus for your design.
    -- 3) VHDL simulations will produce errors if there are Lattice FPGA library 
    -- elements in your design that require the instantiation of GSR, PUR, and
    -- TSALL and they are not present in the testbench. For more information see
    -- the How To section of online help.  
    --
    LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;
    USE ieee.numeric_std.ALL;

    ENTITY testbench IS
    END testbench;

    ARCHITECTURE behavior OF testbench IS 

        COMPONENT Clock
        PORT(
            stdby : IN std_logic;          
            osc_int : OUT std_logic
            );
        END COMPONENT;

        SIGNAL stdby :  std_logic;
        SIGNAL osc_int :  std_logic;  
        constant PERIOD : time := 20 ns;

    BEGIN

    -- Please check and add your generic clause manually
        uut: Clock PORT MAP(
            stdby => stdby,
            osc_int => osc_int
        );


    -- *** Test Bench - User Defined Section ***
       tb : PROCESS
       BEGIN  
           stdby <= '0';  
           wait for PERIOD ;
          wait; -- will wait forever
       END PROCESS;
    -- *** End Test Bench - User Defined Section ***

    END;





person user169808    schedule 22.02.2019