Перейти к содержанию

    

Vengin

Свой
  • Публикаций

    88
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Vengin

  • Звание
    Частый гость

Контакты

  • Сайт
    http://
  • ICQ
    438549118

Информация

  • Город
    Беларусь, г. Минск

Посетители профиля

1 068 просмотров профиля
  1. Знаю, что можно через tcl, но хотелось знать можно ли непосредственно в .xpr файле.
  2. В Vivado в файле проекта *.xpr добавляемые файлы исходников выглядят прибизительно так: <File Path="$PPRDIR/file1.vhd"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PPRDIR/file2.vhd"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> Только вот Vivado по своей инициативе меняет последовательность файлов (переставляет местами и тасует как заблагорассудиться). Это неудобно при корректировке *.xpr файла вручную (как в текстовый файл), сравнения изменений, ведения истории и т.п. Может можно как-то запретить эти вольности в *.xpr файле и "застолбить" последовательность файлов?
  3. Есть простой record с 32-битными данными (float32) и стробом: type FL32_T is record fl32 : std_logic_vector(31 downto 0); -- single precision valid : std_logic; -- valid, strobe, enable, etc... end record; Когда отображаем это в waveform, отдельно сигнал данных fl32 можно отобразить в формате float32, а вот в группе рисуется просто как hex: Может можно как-то отображать значения float32 и в группе сигналов? По идее что-то похожее можно делать используя virtual types, но там получается только один сигнал сделать виртульаным (а не 2 или больше), да и так можно только какой-то заранее известный фискированный поднабор float32 "переиминовать". Может есть какой-то универсальный способ решения такой проблемы?
  4. Не совсем. Во-первых до того как не мог пользоваться новым (10.4) Active-HDL уже "перевёл" симуляционную часть проекта в ModelSim и, в принципе, пока им и пользуюсь. Когда получил доступ к Active-HDL 10.4 обновил проект, проверил симуляцию, но там не всё так гладко. К примеру, мне не удалось скомпилить все симуляционные библиотеки IP cores Vivado 2017.4 - автоматом они не копмилятся (вроде подразумевается, что их нужно качать с сайта Aldec готовым инсталляционным пакетом, но как будто это доступно только с официальным софтом). Попытался компилить вручную (на основе скрипта компиляции корок для ModelSim) - в основном скомпилилось, но пару корок (штук 7) были с ошибками. Пока ещё не знаю, понадобятся ли они для симуляции в Active-HDL, т.к. процесс миграции с Quartus в Vivado ещё идёт. В общем пока для данного проекта в основном пользуюсь ModelSim, иногда проверяю в Active-HDL.
  5. На тот момент был "несвой". Теперь уже обновился.
  6. Стыдно спросить, но никак не могу понять в чём затык. Есть некий простейший package, в котором определяются следующие alias: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.MATH_REAL.ALL; package FUNCTIONS_PKG is alias conv_slv is ieee.std_logic_arith.CONV_STD_LOGIC_VECTOR [integer,integer return STD_LOGIC_VECTOR]; alias conv_int is ieee.std_logic_unsigned.CONV_INTEGER [STD_LOGIC_VECTOR return INTEGER]; end FUNCTIONS_PKG; package body FUNCTIONS_PKG is end FUNCTIONS_PKG; Пытаюсь компилировать это в ModelSim SE-64 10.5. Когда делаю просто "vcom functions_pkg.vhd" (по умолчанию стандарт 2002) всё норм. Когда же пытаюсь скомпилить под 2008 "vcom -2008 functions_pkg.vhd" , получаем: # ** Error: d:/tmp/functions_pkg.vhd(9): Cannot find subprogram "CONV_STD_LOGIC_VECTOR" with corresponding signature. # ** Error: d:/tmp/functions_pkg.vhd(10): Cannot find subprogram "CONV_INTEGER" with corresponding signature. Не совсем улавливаю в чём причина. Когда делаю то же самое в Active-HDL - проблем нет. functions_pkg.vhd
  7. Здравствуйте. Осваивал нынче Sublime Text - конечно вещь! Гибкость, а уж тем более программируемость самой среды разработки это что-то. В процессе настройки под себя для работы с HDL наткнулся на package SublimeLinter-contrib-vcom, который позволяет подсвечивать errors/warnings генерируемые компилятором vcom от Modelsim/Questasim. Решил добавить поддержку vlog для Verilog/SysemVerilog и чуток подпилил vcom (по возможности подсвечивается конкретное место ошибки (колонка в строке), а не вся строка). В итоге выглядит это как в традиционных IDE как-то так: Этот подход (linting) немного пересекатеся с build_systems (как пример настройки предложенные здесь), но лично мне привычнее "традиционный вид" (да и можно использовать оба подхода). Вроде достаточно удобно, может кому пригодится. P.S.: после добавления поддержки компилятора vlog, автор переименовал репозиторий на SublimeLinter-contrib-modelsim, но процесс переименования самого package что-то подвис и поэтому в Package Control он по прежнему пока под старым именем SublimeLinter-contrib-vcom.
  8. Действительно работает. А я (т.к. смысла команды eval до конца честно говоря не понимаю), пытался делать как в экзамплах, со всякими доп скобками: eval {vcom $arg} eval "vcom $arg" eval [list vcom $arg] и всё выдавало ошибки. А тут было так просто! Спасибо, будем знать.
  9. Опять небольшие грабли. Исходники открываются в режиме ReadOnly. Если открывать "обычным" способом (File -> Open), то файлы открываются и на запись. В то же время, когда файл открывается по другому (судя по всему внутренней командой edit), например, во время симуляции при дабл-клике в окнах Structure, Objects, Process и т.п. файл в окне Source открывается ReadOnly. Вроде как есть специальная опция, отвечающая за это дело (ModelSim® SE User's Manua -> Chapter 17:Source Window -> Changing File Permissions): Поменял через GUI (Tools -> Edit Preferences -> вкладка By Name -> Source -> ReadOnly = 0) - по-прежнему открываются в ReadOnly. Поменял в скрипте pref.tcl: set PrefSource(ReadOnly) 0 - ничего. Может кто знает, как это побороть? Приходится каждый раз в окне Source делать правый клик и снимать флажок ReadOnly. Мелочь, но неприятно (тем более что по идее этого быть не должно).
  10. То, что у меня Active-HDL v9.1, а нужно компилить корки Xilinx Vivado 2017.4. Долго пытался, часть удалось, но думаю в этой версии Active-HDL не светит (а более новую найти и попробовать увы не удалось).
  11. Не до конца уловил смысл всех этих махинаций. Насколько я понял, этот скрипт позволит парсить некую сложную строку/лист аргументов $args, анализируя инидвидуальные опции/флаги при помощи switch -regexp (а также анализировать составные элементы/sub_lst как в "-my_options2"). Всё это в итоге компонуется в лист $cmd_line, который потом во flatten виде (поэлементно) передаётся на вход vcom, вроде так? Но если я правильно понимаю, при однократном вызове vcom всё равно применит опции/аргументы все сразу ко всем файлам (а не каждому файлу свой параметр)? Т.е. если есть 10 файлов и, допустим один с флагом -2008, то все 10 файлов будут компилится с этим флагом. А это некорректно (не то, что надо). И ещё немного оффтопик. RobFPGA, если не секрет, что используете для дебага TCL скриптов (я так думаю не просто текствые файлы интерпретатору скармливаете)? Я в своё время остановился на связке Eclipse+Komodo Remote Debugging Package.
  12. Работать-то работает. Но для большого количества файлов дейстивтельно быстрее получается компилировать не "поштучно" (на каждый файл свой vcom), а пачкой. Плюс всё равно мне нужно делать более сложный скрипт, чтобы учитывать разные конфигурации и прочие нюансы. Так что есть смысл заморочиться, да и полезно "для общего развития".
  13. Да уж, даже мысли такой не было. Как-то этот "параллелизм" боком вылазит. По поводу всяких извращиней - что-то мне подсказывает что оно того не будет стоить. Имеется пара сотня файлов, и комплитиь нужно смешанно - часть из них с параметрами, а часть нет. А так как для компиляции vhdl важен порядок, то эти отдельные .f файлы может чуть и помогут, но в целом ситуация конечно грустная. Ладно, благодарю за помощь, будем дальше сражаться. :smile3009:
  14. Очередная странность. Надо скопмилить vhdl файл с поддержкой 2008 стандарта. Например, vcom -2008 version.vhd отрабатывает нормально. В то же время, если параметры для vcom передать через переменную, имеем ошибку: > set arg "-2008 version.vhd" > vcom $arg # Model Technology ModelSim SE-64 vcom 10.5 Compiler 2016.02 Feb 13 2016 # ** Error (suppressible): (vcom-1902) Option "-2008 version.vhd" is either unknown, requires an argument, or was given with a bad argument. # Use the -help option for complete vcom usage. # Errors: 1, Warnings: 0 Почему-то при замене переменной возникают "кавычки", которые вводят vcom в ступор. Как это перебороть пока не понимаю. Вообще изначально пытаюсь скомпилить множество файлов используюя опцию vcom (-F | -file | -f) <filename>. Некоторые (не все) файлы нужно скомпилить с поддержкой 2008 стандарта. Т.е. делаю лист файлов с аргументами и без, пишу в файл и этот файл пытаюсь скармливать vcom. Когда индивидуальный аргрумент это имя файла (без доп параметров) - процесс нормальный. Т.е. если есть файл flist.tmp: functions_pkg.vhd version.vhd то vcom -f flist.tmp отрабатывает без проблем. Если же нужно скажем какой-то файл скомпилить с доп аргументом, то всё ломается: flist2008.tmp: functions_pkg.vhd -2008 version.vhd параметр -2008 как бы "передаётся" первому файлу, а тот выдаёт ошибку > vcom -f flist2008.tmp # Model Technology ModelSim SE-64 vcom 10.5 Compiler 2016.02 Feb 13 2016 # Start time: 15:29:09 on Aug 13,2018 # vcom -reportprogress 300 -2008 functions_pkg.vhd # -- Loading package STANDARD # -- Loading package TEXTIO # -- Loading package std_logic_1164 # -- Loading package MATH_REAL # -- Compiling package FUNCTIONS_PKG # -- Loading package std_logic_arith # ** Error: functions_pkg.vhd(19): Cannot find subprogram "CONV_STD_LOGIC_VECTOR" with corresponding signature. # -- Loading package STD_LOGIC_UNSIGNED # ** Error: functions_pkg.vhd(20): Cannot find subprogram "CONV_INTEGER" with corresponding signature. # ** Error: functions_pkg.vhd(34): VHDL Compiler exiting # End time: 15:29:09 on Aug 13,2018, Elapsed time: 0:00:00 # Errors: 3, Warnings: 0 Как по человечески это сделать? Пока только нашёл полуобходной вариант: если строка аргумента "составная" вручную разбивать её на индивидуальные элементы и передавать их поотделности, но это ерунда какая-то: set arg {-2008 version.vhd} vcom [lindex $arg 0] [lindex $arg 1]; #ok vcom_2008_example.zip