2014-09-14 3 views
2

Im пытается имитировать трансивер Xilinx GTXE2 с GHDL. В GTXE2_CHANNEL.vhd я получил сообщение об ошибке, что «std_logic_arith» не найден в библиотеке «ieee».Является ли пакет VHDL «IEEE.std_logic_arith» отправлен с ghdl?

Прежде всего, здесь моя установка машина:

  • для Windows 7 (Pro, x64, немецкий)
    • PowerShell 4.0
    • Python 3,4
  • Xilinx ISE 14,7 (x64, английский)
  • Xilinx Vivado 2014.2 (x64, английский)
  • GHDL 0,31 для ОС Windows (http://sourceforge.net/projects/ghdl-updates/)

Так вопрос 1: ли этот пакет включены в GHDL?

Я попытался изменить стандарт VHDL на VHDL-2008 --std=08, но этот параметр не распознается ghdl, поэтому я сейчас компилирую VHDL-2002. Но ничего не изменилось.

Я также попытался включить источники IEEE вручную из исходной папки Xilinx 'vhdl C:\Xilinx\14.7\ISE_DS \ISE\vhdl\src\ieee. Но когда я компилирую std_logic_arith, он жалуется на отсутствие std_logic_1164, который обычно находится. В дополнение к этому существует проблема с атрибутом FOREIGN в std_logic_1164.

Так что это мой список файлов/компиляции для компиляции (модифицированная версия Xilinx»* .prj-файлов):

# board and device configuration 
#vhdl poc  "tb/common/my_config_KC705.vhdl" 

# IEEE packages 
#xilinx ieee "ieee/std_logic_1164.vhd" 
#xilinx ieee "ieee/std_logic_arith.vhd" 

# Xilinx Packages and Primitives 
xilinx unisim "unisims/unisim_VCOMP.vhd" 
xilinx unisim "unisims/unisim_VPKG.vhd" 
xilinx work  "unisims/primitive/FD.vhd" 
xilinx work  "unisims/primitive/BUFG.vhd" 
xilinx work  "unisims/primitive/BUFR.vhd" 
xilinx work  "unisims/secureip/GTXE2_CHANNEL.vhd" 

Этот список транслируется в GHDL команд, которые были выполнены в темп каталог:

C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe -a --std=02 -P. --work=poc "D:\VHDL\git\SATAController\lib\PoC\tb\common\my_config_KC705.vhdl" 
GHDL Messages: 
    D:\VHDL\git\SATAController\lib\PoC\tb\common\my_config_KC705.vhdl:52:14:warning: package "my_config" does not require a body 
C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe -a --std=02 -P. --work=unisim "C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\unisims\unisim_VCOMP.vhd" 
C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe -a --std=02 -P. --work=unisim "C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\unisims\unisim_VPKG.vhd" 
C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe -a --std=02 -P. --work=work "C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\unisims\primitive\FD.vhd" 
C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe -a --std=02 -P. --work=work "C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\unisims\primitive\BUFG.vhd" 
C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe -a --std=02 -P. --work=work "C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\unisims\primitive\BUFR.vhd" 
C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe -a --std=02 -P. --work=work "C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\unisims\secureip\GTXE2_CHANNEL.vhd" 
GHDL Messages: 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\unisims\secureip\GTXE2_CHANNEL.vhd:34:10: primary unit "std_logic_arith" not found in library "ieee" 

И, наконец, в ЗАРУБЕЖНОЙ ошибке атрибутов в ieee.std_logic_1164:

PS D:\VHDL\git\SATAController\lib\PoC\temp\ghdl> & 'C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe' -a --std=02 '-P.' --work=ieee 'C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd' 
GHDL Messages: 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:211:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:212:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:213:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:214:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:215:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:216:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:218:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:219:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:220:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:221:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:223:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:224:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:225:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:227:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:228:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:229:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:231:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:232:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:233:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:235:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:236:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT 
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:238:15: 'FOREIGN allowed only for architectures and subprograms 

Вопрос 2: Как скомпилировать ieee.std_logic_1164?

Все, у кого есть установленная среда GHDL, могут проверить этот пример. В библиотеках Xilinx не требуется my_config_KC705.vhdl.


Что это за цель?

  • Моделирование iSim очень медленно -> около 15 нс sim-time вычисляется за 1 секунду cpu-time; 100 us -> 40 минут ожидания
  • iSim использует около 2.6 Гигабайта оперативной памяти - может быть GHDL является экономным
  • xSim имеет некоторые жалуются на нашей библиотеке VHDL - так Isim в настоящее время варианта # 1
  • Я апробированный ранее GHDL с Xilinx примитивами, и она работала, так что следующая задача состоит в том, чтобы имитировать secureip компонент :)
  • , если я нахожу достаточно времени, я буду также попробовать QuestaSim

ответ

6

Да этот пакет входит ghdl

в руководстве ghdl или человека странице вы» d найдите, что вы n выберите --ieee=synopsys или --ieee=mentor в качестве параметра командной строки для анализа и разработки команд.

Глядя в ваших каталогах библиотек:

[email protected]: ls /opt/ghdl/ghdl_mcode/libraries/synopsys 
std_logic_arith.vhdl  std_logic_misc.vhdl  std_logic_textio.vhdl 
std_logic_misc-body.vhdl std_logic_signed.vhdl  std_logic_unsigned.vhdl 

[email protected]: ls /opt/ghdl/ghdl_mcode/libraries/mentor 
std_logic_arith.vhdl  std_logic_arith_body.vhdl 

Вы нашли бы пакет std_logic_arith.

Поскольку существуют противоречивые декларации, вы можете найти нужным использовать параметр командной строки -fexplicit во время анализа и разработки.

Параметры, указанные во время анализа (-a) или разработка (-e), следуют командам.

Как скомпилировать ieee.std_logic_1164?

Вам не нужно анализировать упаковку ieee.std_logic_1164, они предварительно анализируются. Попробуйте первое из них (чаще всего синопсис). Обратите внимание, что ни наставник, ни пакеты synopsys не содержат атрибута FOREIGN. Атрибут FOREIGN украшает декларацию (функцию) подпрограммы, которая реализована на иностранном языке программирования.

info ghdl или ghdl.html (GHDL guide) раздел 5 GHDL Реализация VHDL (в подразделе Использование библиотек поставщика, что дает небольшой кусочек советы по работе с UniSim). Также есть раздел Взаимодействие с другими языками, в котором рассматривается использование атрибута FOREIGN.

См. Также 3.10 Локальные библиотеки IEEE, объясняя проблемы с нестандартными «стандартными» библиотеками IEEE, в том числе с нестандартными ошибками на английском языке Тристана.

И если вы действительно хотите проанализировать библиотеки IEEE самостоятельно, прочитайте все руководство GHDL. Он включает несколько параметров командной строки, которые следует понимать в первую очередь. Распределение Windows ghdl основано на системе генерации кода (mcode) точно в момент времени, которая анализирует код в библиотечных файлах (заканчивается на суффикс .cf) и повторно анализирует тот же исходный код, который содержится в библиотеках вашего дистрибутива во время разработки.

Я успешно проанализировал и использовал unisim библиотеки на mcode-версии ghdl под OS X без использования библиотек IEEE.

Вы обнаружите, что ghdl не самый бережливый с точки зрения использования памяти и не самый быстрый.

Существует также список адресов электронной почты Ghdl-discuss, к которому вы можете присоединиться. ghdl активно развивается на Sourceforge. См. ghdl-updates. ghdl-0.32 должен быть выпущен в этом году (надеюсь) и будет иметь увеличенную поддержку -2008, а также множество исправлений.

Windows, скорее всего, будет новой интерпретируемой версией, заменяющей версию mcode (которая представляет собой 32-битный двоичный файл). В настоящее время все работы по разработке выполняются исключительно Тристаном Гиндольдом. Он также реализует всю поддерживающую версию LLVM, которая может обещать лучшую производительность в Windows.

О ВНЕШНИХ атрибутах

Я обнаружил, что несколько Xilinx std_logic_arith исходных файлов пакета, которые содержали ЗАРУБЕЖНЫЕ атрибуты, хотя и с номером строки офф на четыре.

Сочетание атрибутов вдоль и прагмах компилятора, например .:

-- pragma map_to_operator MULT_TC_OP 
    -- pragma type_function MULT_SIGNED_ARG 
    -- pragma return_port_name Z 

Используются для обеспечения ускоренного выполнения функции. Библиотеки иностранных языков недоступны для ghdl, версия mcode (Windows) не может использовать их в любом случае. Также требование найдено в 5.8.1. Иностранные декларации из Руководство GHDL, что строковое значение атрибута FOREIGN содержит префикс «VHPIDIRECT» - это ограничение, разрешающее связывание в версии gcc, где ABI для этих библиотек, если они найдены, В любом случае гарантируется совместимость.

Вы можете просто прокомментировать атрибуты, обнаруженные сообщениями об ошибках. Нет никакой возможности для ускоренного выполнения, которое в любом случае потребует gcc-версии ghdl.

Отсутствие преимуществ по сравнению с использованием пакетов Synopsys от ghdl.

Смежные вопросы