«Бог не меняет того, что (происходит) с людьми, пока они сами не изменят своих помыслов.» Коран, Сура 12:13

Co-Simulation/Описание TIAO USB Multi Protocol Adapter (TUMPA) Litle/run questasim

Материал из Wiki
Перейти к: навигация, поиск
Co-Simulation

Литература

* PSL * VHDL * OS-VVM *

Компилятор

QuestaSim 10.1 (10.0, 10.0b) под winxp win7 использует компилятор gcc-4.2.1-mingw32vc9 (32-разрядная версия компилятора из пакета mingw), он свободно распространяется в сети и доступен для скачивания на сайте mirror 1 mirror 2 Есть 64 -разрядная версия компилятора gcc-4.5.0-mingw64 она требуется по умолчанию для 64 разрядной версии QuestaSim, но

Nuvola apps error.pngработа с SystemC доступна только в 32-разрядной версии (при попытки запуска и компиляции кода выдается соответствующее предупреждение)

  • Для компиляции кода достаточно заголовочного файла ftd2xx.h (файл берется из примера на VC++ с сайта www.ftdichip.com )
  • Ссылка на примеры на VC++
  • Для сборки компилятором g++ из пакета mingw библиотека ftd2xx.dll и ftd2xx.lib — не подходят (так как сборка dll проводилась компилятором из VC++ )
  • Скачиваем пакет mingw mingw и устанавливаем
  • Скачиваем утилиты mingw-utils-0.3 (версия 0.4 пишут, что немного бажная... использовалась версия 0.3)
  • Согласно инструкции с сайта http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs выполняем преобразования .dll .lib
    • В пакете mingw-utils-0.3 находим в папке bin утилиту reimp.exe
    • Копируем туда ftd2xx.lib и выполянем команду reimp -d ftd2xx.lib
    • В результате работы утилиты в этой же папке появится файл FTD2XX.def этот файл содержит описания функций которые зарыты в dll
    • Открываем файл и убираем знак подчеркивания перед названиями функций в начале строки (если есть под рукой cygwin, то cat FTD2XX.def |sed "s/^_//" > ftd2xx.def), мировой заговор или сговор MS и ОpenSGNU

Файл ftd2xx.def до исправления После
LIBRARY "FTD2XX.dll"
EXPORTS
_FT_Close@4	@2
_FT_ClrDtr@4	@11
_FT_ClrRts@4	@13
_FT_CreateDeviceInfoList@4	@70
_FT_CyclePort@4	@69
_FT_EE_Program@8	@37
_FT_EE_ProgramEx@24	@67
_FT_EE_Read@8	@38
_FT_EE_ReadEx@24	@68
_FT_EE_UARead@16	@39
_FT_EE_UASize@8	@40
_FT_EE_UAWrite@12	@41
....
LIBRARY "FTD2XX.dll"
EXPORTS
FT_Close@4	@2
FT_ClrDtr@4	@11
FT_ClrRts@4	@13
FT_CreateDeviceInfoList@4	@70
FT_CyclePort@4	@69
FT_EE_Program@8	@37
FT_EE_ProgramEx@24	@67
FT_EE_Read@8	@38
FT_EE_ReadEx@24	@68
FT_EE_UARead@16	@39
FT_EE_UASize@8	@40
FT_EE_UAWrite@12	@41
....

  • Переходим в пакет mingw в папку bin
  • Копируем туда ftd2xx.lib ftd2xx.dll ftd2xx.def и выполняем команду dlltool -U -d ftd2xx.def -l ftd2xx.a
  • Ключ -U означает что создастся новый файл содержащий в себе и .dll и новые заголовки вызова в соответствии с .def файлом
  • Можно копирование не производить, но тогда папка mingw/bin должна быть добавлена в path
  • Полученный файл ftd2xx.a переименовываем в ftd2xx.lib и копируем в директорию проекта, туда где лежит заголовочный файл ftd2xx.h (файл ftd2xx.dll нужно удалить из этой директории)
  • Для проведения процесса сборки (sccom -link) добавлем параметры линковщику -LПуть_к_папке_с_файлом_ftd2xx.lib (параметр -L пишется слитно с путем) и -lимя_либы (пишется также слитно)
 sccom -link -vv -LD:/tmp/ftdichip/simhard_w/simhard/src/sysc/ -lftd2xx
  • 200px-Yes check.png После можно запускать проект на моделирование


Bombilla amarilla - yellow Edison lamp.pngИнформация по преобразованию либ взята с сайта www.mingw.org