Как скомпилировать и запустить программу VHDL на Mac с ghdl?

Я только что написал простую программу VHDL. Я сохранил файл как .vhd-файл. Затем я скомпилировал его с помощью

ghdl -a test.vhd

а затем встроенный и исполняемый файл с

ghdl -e test

и, наконец, попытался запустить его с

ghdl -r test

случилось то, что у меня теперь есть work-obj93.cf файл, который виден и два других файла, а именно .. и . что-то невидимое.

может кто-нибудь сказать, как именно я могу протестировать программу vhdl на моем Mac? Может быть, в в сочетании с GTKWave.

3 ответов


это, как говорится, большой вопрос!

существует версия ghdl для OS X, работающая на процессорах Intel для версий 10.5,10.6, 10.7 и 10.8, доступных из ghdl.free.fr (можно загрузить по адресу GHDL для Mac OS X). Это версия mcode (например, в Windows), что означает, что она не создает объектные коды или автономный исполняемый файл модели VHDL с следствием, что вы не можете привязать внешние объекты (подпрограммы) к модели.

разработанная модель существует только в памяти во время выполнения, а команда-e explorate является излишней, кроме записи в рабочей библиотеке .файл cf. В версии mcode ghdl также разрабатывается команда-r run. Все, что вы увидите, это работа-obj93.CF файл для рабочего каталога и любой .файлы cf для предварительно проанализированных библиотек, по умолчанию они будут отображаться в/usr/local/ghdl / libraries, исполняемый ghdl, найденный в/usr/local / bin ссылки на /usr/местные/ghdl/перевести/ghdldrv/ghdl_mcode, и /usr/местные/ghdl-это урезанная дерево, полученное после компиляции версии ghdl_mcode.

эта версия является производной от svn129 (после выпуска ghdl-0.29) и содержит двоичный файл i386.

документация для ghdl находится в /usr/local/ghdl/ doc/, есть справочная страница ghdl, которая связана в другом месте, ghdl.html и ghdl.texi которые являются руководством по ghdl и не связаны в другом месте. В ghdl.html вы могли бы поиск для каждого вхождения "Windows", чтобы найти ссылку на версию mcode. По недосмотру я не подумал изменить руководство ghdl, чтобы включить слово mcode везде, где появлялись окна, и выпустить измененное руководство.

где когда-либо появляется "Windows", его следует читать как "Windows или другая версия mcode".

в руководстве по ghdl см. 1.3 Что такое GHDL?, (Версия Windows (TM) GHDL основана не на GCC, а на внутреннем генераторе кода). Также 2.1 Привет мир программа:

2.1 The hello world program

чтобы проиллюстрировать большую цель VHDL, вот прокомментированная программа VHDL "Hello world".

 --  Hello world program.
 use std.textio.all; --  Imports the standard textio package.

 --  Defines a design entity, without any ports.
 entity hello_world is
 end hello_world;

 architecture behaviour of hello_world is
 begin
    process
       variable l : line;
    begin
       write (l, String'("Hello world!"));
       writeline (output, l);
       wait;
    end process;
 end behaviour;

предположим, что эта программа содержится в файле Hello.языки VHDL. Во-первых, вы должны скомпилировать файл; это называется анализ файла дизайна в терминах VHDL.

 $ ghdl -a hello.vhdl

эта команда создает или обновляет файл work-obj93.cf, который описывает работу библиотеки. В GNU / Linux эта команда генерирует файл hello.o, который является объектным файлом соответствует вашей программе VHDL. Объектный файл не создается в Windows.

затем вам нужно создать исполняемый файл.

 $ ghdl -e hello_world

опция ‘-e ' означает сложный. С помощью этой опции GHDL создает код для разработки дизайна с сущностью "hello" в верхней части иерархии.

в GNU / Linux результатом является исполняемая программа hello, которую можно запустить:

 $ ghdl -r hello_world

или напрямую:

 $ ./hello_world

На Windows, файл не создается. Моделирование запускается с помощью этой команды:

 > ghdl -r hello_world

результат моделирования появляется на экране:

 Hello world!

сохранение исходного кода для команды, она для файл hello.vhdl и выполнение команд:

david_koontz@Macbook: ghdl-привет.vhdl

david_koontz@Macbook: ghdl-e hello_world

david_koontz@Macbook: ghdl-r hello_world

выходы:

Привет мир!

на стандартном выходе (сеанс TTY в окне терминала).

вы получите работу-obj93.файл конфигурации библиотеки cf в текущем рабочем каталоге и никаких других выходных файлов. Вы также захотите понять последствия команды-r run (раздел 3.1.3), без дополнительного блока, переданного в командной строке VHDL по умолчанию для последней скомпилированной архитектуры.

получение Тони Байбелла gtkwave gtkwave.app документация находится в /Applications/gtkwave.app / Contents / Resources / doc, оба источника .файл odt и файл PDF. (Вы можете выбрать приложение в папке "приложения" и "показать содержимое пакета" для перехода в каталог doc).

существует уникальный для ghdl формат формы волны, называемый ghw, который можно вызвать с помощью команды run '--wave=.ghw'. См. руководство по ghdl 4.1 параметры моделирования. Также см. параметры vcd в этом каталоге вместо этого вы выбираете VCD.

вы должны также ограничивать продолжительность времени выполнения с таймером предохранителя если ваш стенд теста обеспечивает часы свободного хода. VHDL прекратит выполнение только тогда, когда либо не будет больше запланированных обновлений сигнала или времени выполнения. Это Параметр команды запуска по строкам "--stop-time=587200ns".

OS X gtkwave.app чувствителен к двум типам файлов с расширениями .ghw и .gtkw, первый ghdl сигнала сброса файл второй файл конфигурации gtkwave с суффиксом OS X, позволяющим вызывать gtkwave, нажав на файл gtkw. Файл конфигурации должен быть сохранен после настройки отображения формы волны в gtkwave до его существования. Смотрите руководство gtkwave. Файл ghw можно щелкнуть, и gtkwave имеет набор правил, используемых для поиска применимого файла gtkw.

есть несколько преимуществ в использовании формата файла ghw. Автоматический вызов приложения gtkwave, нажав на файлы-это одно. Другой заключается в том, что ghdl сохраняет все транзакции сигнала в файл дампа ghw. Вы всегда можете выбрать более в gtkwave для отображения дополнительной информации. Хотя это может быть недостатком в больших моделях, формат ghw позволяет отображать литерал перечисления любого типа или подтипа.

вступление GHDL обсудить список и публикация вопроса-хороший способ привлечь внимание экспертов ghdl. (И да сертификат для gna.org истек или иным образом недействителен). Тони Bybell предоставляет контакт по электронной почте на веб-странице gtkwave, но требования платной занятости ограничивают его доступность.


разработка использования ghdl и gtkwave с примером.

оригинальный плакат попросил некоторые реальные примеры со значениями командной строки. Есть однако плохо GHDL / GTKWave учебник (PDF, 234 КБ), который содержит пример и используется VCD.

я перечислю командные строки для формата сигнала GHDL версия:

david_koontz@Макбук: ghdl -это CarryRipple.виртуальный жесткий диск

david_koontz@Macbook: ghdl-A CarryRipple_tb.виртуальный жесткий диск

david_koontz@Macbook: ghdl-e carryRipple_tb

david_koontz@Macbook: ghdl-r carryRipple_tb --wave=carryRipple_tb.ghw

вызов gtkwave.приложение можно либо сделать, нажав на результирующем carryRipple_tb.ghw или с помощью команды OS X open:

david_koontz@Macbook: открыть-gtkwave carryRipple_tb.ghw

окно SST Gtkwave (вверху слева) отобразит верхнюю часть, разверните, щелкнув поле+. Сделайте то же самое для выявленного carryripple_tb. Нажмите a. В окне сигналы выберите [3: 0] и нажмите кнопку Вставить. Повторяю для б.

в окне SST выберите U0, а затем в окне сигналов выберите cin нажмите кнопку insert, затем то же самое для cout.

в окне SST выберите s, а в окне сигналы выберите s[3: 0] и нажмите вставлять.

и да, получение источника для двух файлов VHDL из "учебника" было болезненным. Я этого не делал.

вы также можете отметить назначение "X" Cin на 60 НС на дисплее gtkwave, я сделал это, чтобы показать последние значения, назначенные в testbench.

Я бы не сказал, что это хороший учебник, но вы получаете то, за что заплатили здесь. Сделать лучше было бы большим вопросом.

испытательный стенд (carryRipple_tb.ВХД) обеспечивает stimulous для того чтобы управлять моделью (CarryRipple.vhd) во время моделирования. Модель завершает выполнение после последнего события сигнала, поэтому команде run не нужно передавать время остановки (например, --stop-time=587200ns).

есть также пять частей GHDL/GTKWave учебник на Youtube по Керси. Разрешение не очень хорошее, и оно ориентировано на Linux. Часть 0 посвящена установке двух инструментов. Единственное реальное различие в моем примере-использование формата сигнала ghw. Большинство браузеров позволит вам увидеть окно gtkwave ниже в полном размере.

enter image description here

добавил

есть недавний ответ, показывающий демонстрацию с триггером переключения, показывающий ошибку в исходном коде VHDL и три возможных исправления. Он использует объявления конфигурации для запуска различных фиксированных версий. См.как избежать задержки в выводе простого оператора процесса в VHDL.


новая версия GHDL для Mac OS X gcc

новая версия ghdl доступна из ghdl-обновления / сборки / ghdl-0.31 / OSX, версия gcc, которая включает версию mcode.

известно, что он работает только на OS X 10.9, но я думаю, что он будет запускать OS X 10.8, если Xcode и его инструменты командной строки были установлены - версия gcc в настоящее время зависит от /usr / bin / as и / usr/bin / ld, которые являются частью пакета essentials, устанавливающего OS X 10.9 и доступного установка инструментов командной строки Xcode в OS X 10.8.

как только эта версия ghdl установлена, в терминале вы можете

info ghdl

прокрутите вниз, чтобы начать с GHDL, нажав возврат каретки. Прокрутите вниз до программы hello world (возврат каретки), полного сумматора (возврат каретки) или начиная с дизайна (возврат каретки). Первый-это программа VHDL hello world, второй-одноразрядный сумматор с тестовым стендом. Начало с дизайном приводит вас к загрузите ссылку и инструкции для моделирования процессора DLX.

Я планирую разработать версию 10.6-10.9 gcc ghdl, которая не зависит от Xcode для 10.6 - 10.8 и работает на 10.9. Скорее всего, это будет версия 0.32 ghdl.

gtkwave Тони Байбелла.приложение работает на OS X 10.6-10.9 и доступно вместе с его руководством из GTKWave страница SourceForge. Последнюю версию приложения можно скачать по этой ссылке на Sourceforge - gtkwave.zip.

есть несколько учебников ghdl / gtkwave, доступных на YouTube, хотя ни один из них не специфичен для OS X, попробуйте погуглить.

ghdl имеет свой собственный формат gtkwave, GHW, который является VHDL дружественным и позволяет заглядывать в сложные составные типы. ghdl-0.33, вероятно, будет включать поддержку формата FSB Тони Байбелла.

более adventuresome может построить ghdl с нуля на OS X, см. инструкции для строить ghdl-0.31 с gcc4.8.2 на OS X 10.9. Здание с gcc4.9.1 потребуется выпуск ghdl-0.32, доступный из найденного архива Mercurial здесь. При выпуске версии ghdl-0.32 двоичные файлы также будут доступны из Sourceforge.

сайт Sourceforge ghdl-обновления - это место для развития деятельности ghdl автор ghdl, Тристан Гинголда.

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

будущее развития для ghdl ярко. Ожидается, что в будущих выпусках основное внимание будет уделено соблюдению IEEE Std 1076-2008 в ближайшем будущем. Существует также развитие к использованию ghdl в качестве интерфейса llvm, а также чисто интерпретационной версии для замены ghdl-mcode.

это возможно с бинарными выпусками ghdl и gtkwave отделить пользователя от разработчика.


Я не знаю, имеет ли это отношение к этому обсуждению. Тем не менее, я рад, что мне удалось установить GHDL на моем Mac, El Capitan сегодня. Я загрузил последнюю версию GHDL из ghdl.free.fr для mac и все установлено нормально. Я получил сообщение о том, что объектные файлы были более нового формата или что-то в этом роде. Тем не менее, мой код vhdl скомпилирован.

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

ghdl -a code.vhdl code_tb.vhdl

все работало так, как вы ожидали.

ghdl -e code_tb 

работал и так сделал

ghdl -r code_tb --vcd=code.vcd 

Так что, возможно, была проблема с тем, как был скомпилирован vhdl. В моем случае, в отличие от Ubuntu, мне пришлось анализировать код.vhdl и code_tb.комплекс вместе. Возможно, это будет полезно будущим читателям.