Flip-fl0p 4 28 декабря, 2016 Опубликовано 28 декабря, 2016 (изменено) · Жалоба Хотелось бы увидеть тут последовательность механизма дружбы. Если не трудно. Вот ссылки для справки: http://azjio.narod.ru/NppHelp/Plugins/NppExec.html ссылка где достаточно подробно описываются настройки командой строки. https://habrahabr.ru/post/147870/ ссылка где описано как запускать внешние приложения через командную сроку. Процесс прикручивания достаточно простой: 1. Итак для начала необходимо установить плагин для Notepad ++, который называется NppExec. Устанавливается через Plugin Manager (плагины --> Plugin Manager --> Show Plugin Manager) 2.Далее проверяем поставились ли у нас вместе с Modelsim переменные среды. Для Win7 это делаем так ПУСК-->Компьютер-->Свойства системы-->Дополнительные параметры системы -->Дополнительно-->Переменные среды. Смотрим есть ли у нас переменная среда с названием MODEL_TECH и путём к исполняемым файлам Modelsima. Если нет, то создаём сами. 3. Основные приготовления закончены, и осталось только настроить плагин NppExec для вызова компиляции файла. Для этого нажимаем клавишу F6 в текстовом редакторе Notepad ++ и пишем следующие строки: cd $(SYS.MODEL_TECH) vlib "$(CURRENT_DIRECTORY)\syntax_check" vcom -work "$(CURRENT_DIRECTORY)\syntax_check" -O0 "$(FULL_CURRENT_PATH)" cd $(SYS.MODEL_TECH) Команда cd - обычная dos'овская команда означающая change directory т.е смены текущей директории. Нужна чтобы не писать полный путь до каждой команды. $(SYS.MODEL_TECH)- устанавливает текущую папку ту, которую мы указали в переменных средах. Напомню, что данная папка содержит исполняемые файлы Modelsim'а котороые мы и будет вызывать через командную строку. vlib "$(CURRENT_DIRECTORY)\syntax_check" команда vlib создает библиотеку (папку с файлами необходимыми для компиляции по адресу где расположен текущий файл, открытый в Notepad ++. Т.е в папке где содержится файл VHDL\VERILOG описания. syntax_check означает, что название папки, куда будтут "складываться" файлы, создаваемые при компиляции, будет syntax_check vcom -work "$(CURRENT_DIRECTORY)\syntax_check" -O0 "$(FULL_CURRENT_PATH)" Собственно сама команда компиляции. -work указывает пользовательскую библиотеку "$(CURRENT_DIRECTORY)\syntax_check" которую мы создали -O0 говорит не оптимизировать при компиляции "$(FULL_CURRENT_PATH)" - это полный путь до текущего файла, который у нас открыт в Notepad ++, который мы хотим скомпилировать Обратите внимание, что если работаете с verilog то вроде как надо компилятор вызывать командой vlog а не vcom. Далее подробно описывать процесс настройки командной строки я не буду, поскольку это уже красивости. Но просто приведу пару настроек, которые я сделал, чтобы упростить себе жизнь и не выводить ненужные мне сообщения компилятора: Не сообщать о подключении всяких библиотек при компиляции Строку содержащую фразу об ошибке окрасить в красный цвет, а строку с предупреждением в желтый. Вот как это работает у меня: Изменено 28 декабря, 2016 пользователем Flip-fl0p Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 28 декабря, 2016 Опубликовано 28 декабря, 2016 · Жалоба Обратите внимание, если вы подключаете компонент, то чтобы правильно скомпилировался модуль, содержащий применяемый компонент необходимо этот компонент скомпилироваьть. Как обойти это я не придумал, да и не думал пока. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 29 декабря, 2016 Опубликовано 29 декабря, 2016 · Жалоба А можно поподробнее про "достаточно ткнуть на соответствующее сообщение". Также пользуюсь SlickEdit и для прерки синтаксиса прикрутил ему VHDL компилятор vcom, но не моделсимовский, а от Acitive-HDL. И в результате компиляции (при наличии ошибок) в консоль выводится просто текст с указанием кодов ошибок и позиции (строка-столбец). Т.е. гиперссылок, на которые можно было бы кликать нет. Это можно где-то дополнительно настроить? О гиперссылках речь и не шла, штатное поведение "программерских" редакторов - это возможность перехвата вывода запускаемой внешней программы (типично - компилятора) с возможностью обработки перехваченного текста и перехода к месту ошибки (с показом текста ошибки в строке статуса). У слика для перехода можно сделать даблклик на строке сообщения или по горячей клавише (Ctrl-Shift-Down/Ctrl-Shift-Up для перехода на следующую/предыдущую ошибку). Для того, чтобы это работало, надо в настройках проекта во вкладке Tools установить соответствующие опции, у меня установлены: * Capture output * Output to build window * Clear build window Далее нужно настроить фильтр регулярных выражений: меню Build->Configure Error Parsing... Там нужно добавить паттерн регулярного выражения, соответствующего формату сообщения об ошибке, что бы программа могла выделить имя файла, номер строки (и опционально столбца) и собственно текст сообщения. Настройка и формат регулярного выражения описаны в документации на слик. У меня это успешно использовалось для компиляторов IAR, VisualDSP++, GCC, Model/Questasim, CodeComposer Studio. В общем, подход универсальный, к конкретному запускаемому инструменту не привязан. Для облегчения настройки регулярного выражения у слика есть подходящее средство Tools->Regеx Evaluator... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vengin 0 29 декабря, 2016 Опубликовано 29 декабря, 2016 · Жалоба ...В общем, подход универсальный, к конкретному запускаемому инструменту не привязан....Спасибо, то что надо! А можем ещё можно цветами выделять тип сообщений/ошибок (Info, Warning, Error), чтоб уж совсем красиво было? :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AnatolySh 0 30 декабря, 2016 Опубликовано 30 декабря, 2016 · Жалоба Чтобы при повторном компилировании не возникало сообщение ** Warning: (vlib-34) Library already exists at "xxx\syntax_check". и, заодно, чистить консоль (при необходимости), надо добавить пару строк: cls cd $(SYS.MODEL_TECH) vdel -lib "$(CURRENT_DIRECTORY)\syntax_check" -all и далее как раньше Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 31 декабря, 2016 Опубликовано 31 декабря, 2016 · Жалоба Спасибо, то что надо! А можем ещё можно цветами выделять тип сообщений/ошибок (Info, Warning, Error), чтоб уж совсем красиво было? :rolleyes: На эту тему не заморачивался. Это уже свойства сликовского окна, надо разбираться с его возможностями. Я как правило не вчитываюсь в список сообщений об ошибках - если что-то есть, то сразу жму Ctrl-Shift-Down и оказываюсь в файле и на строке с ошибкой, а текст ошибки вижу в строке состояния. Так мне удобнее понять причину, видя весь контекст. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 10 февраля, 2017 Опубликовано 10 февраля, 2017 (изменено) · Жалоба Поскольку я продолжаю упрощать себе жизнь и настраиваю средства разработки на максимальное выполнение рутинных задач, у меня возник вопрос по запуску TCL скриптов. На данный момент я смог настроить Notepad ++ на проверку текущего открытого файла. Но когда в проекте используется несколько модулей, то модуль верхнего уровня не будет работать пока не скомпилировать все остальные модули. Я планирую написать простенький TCL скрипт который исправит этот недостаток. Да вот другая беда, никак не могу запустить TCL скрипт через консоль. Может вы сможете навести на мысль в чем моя ошибка ? На данный момент команду пытаюсь запустить так: cd $(SYS.MODEL_TECH) -- Делаем текущую папку с основными исполняемыми файлами Modlesim vlib "$(CURRENT_DIRECTORY)\syntax_check" -- Создаю библиотеку с названием syntax_check в папке с открытм файлом, который надо проверить vsim "$(CURRENT_DIRECTORY)\" do.tcl -- Пытаюсь запустить TCL скрипт. -do и другие аргументы не помогают в запуске Изменено 10 февраля, 2017 пользователем Flip-fl0p Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 10 февраля, 2017 Опубликовано 10 февраля, 2017 (изменено) · Жалоба Путём проб и ошибок выявил следующую закономерность. Если устанавливаемый компонент объявить "как раньше" т.е объявить в архитектурном теле секцию: COMPONENT MODULE1 .... .... END COMPONENT И устанавливать этот компонент соответственно как раньше: MODULE1_COMP : MODULE1 PORT MAP ( .......... ); То проблема проверки файла содержащего компоненты пропадает. Т.е. Modelsim'у не нравиться установка компонента таким образом: MODULE1_COMP : ENTITY WORK.MODULE1 Возникает вопрос, а собственно почему так ? Изменено 10 февраля, 2017 пользователем Flip-fl0p Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tausinov 0 10 февраля, 2017 Опубликовано 10 февраля, 2017 · Жалоба MODULE1_COMP : ENTITY WORK.MODULE1 Возникает вопрос, а собственно почему так ? А вы добавляете в начало объявление библиотеки? library work; Ну это так, на всякий случай. А основной проблемой может быть то, что вы создаете свою библиотеку и указываете ее в качестве work. Т.е. компонент уже будет UUT : entity syntax_check.comp_name Или я не так понял? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 10 февраля, 2017 Опубликовано 10 февраля, 2017 (изменено) · Жалоба А вы добавляете в начало объявление библиотеки? library work; Ну это так, на всякий случай. А основной проблемой может быть то, что вы создаете свою библиотеку и указываете ее в качестве work. Т.е. компонент уже будет UUT : entity syntax_check.comp_name Или я не так понял? Библиотеку объявляю. Но сдаётся мне, что всё-же надо TCL писать. Поскольку хотелось бы проверки всей иерархии проекта. Поскольку даже если найти способ что-бы Modelsim не ругался на: UUT : entity syntax_check.comp_name Появляется другая проблема: если компонент, содержащий ошибку, был изменён, но не был скомпилирован, то компиляция верхнего модуля не выявит ошибку в модуле нижнего уровня. А хотелось бы, чтобы начиная с верхнего уровня компиляция проверяла бы и нижние уровни... Вернее наоборот. Чтобы начиная с нижних уровней, компиляция доходила до верхних, т.о. отслеживая все изменения во всех файлах проекта. Изменено 10 февраля, 2017 пользователем Flip-fl0p Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 25 мая, 2019 Опубликовано 25 мая, 2019 · Жалоба Подниму свою старую темку. А как можно сделать проверку синтаксиса всего проекта без работы в GUI таких программ как Vivado\Quartus\Modelsim ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 26 мая, 2019 Опубликовано 26 мая, 2019 · Жалоба Запустить компилятор (этих программ) в консоли. Я компилирую проект для симулятора прямо из редактора (нажав хоткей), в котором работаю с исходниками. Компилятор симулятора запускается и отрабатывает очень быстро (в отличие от компиляторов синтезаторов, которые запускаются сами по себе дольше, чем симуляторный компиляет проект), и если есть ошибки, то редактор позволяет быстро (по хоткею) переходить к месту ошибки (это штатная фича любого приличного программерского редатора). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 2 26 мая, 2019 Опубликовано 26 мая, 2019 · Жалоба 21 hours ago, Flip-fl0p said: Подниму свою старую темку. А как можно сделать проверку синтаксиса всего проекта без работы в GUI таких программ как Vivado\Quartus\Modelsim ? Попалась на глаза ваша тема, вспомнил давно интересующий вопрос. В большей части модулей пользуюсь типами, которые объявлены где-то (допустим, ./inc/types.svh). Так вот, что бы корректно откомпилировался текущий модуль - нужно компилятору объяснить, где типы лежат. В квесте собираю полный тестбенч - там это описано. В квартусе - тоже. А вот для одиночного модуля, проверямого прямо из редактора - не понятно, как делать. Я вижу два пути: 1. Более-менее унверсальный. В каждом модулей явно прописывать файлик с типами (#include "./inc/types.svh") - не красиво, лишняя писанина, некоторые компиляторы не любят, когда так делают (пример - Libero); 2. Не универсальный. Для каждого проекта нужно в скриптах запуска прописывать путь до файла с типами. Тоже неудобно - скрипты разные под каждый проект, что-то куда-то переложилось - нужно править скрипты. В общем, оба варианта не нравятся. Подскажите, как знающие люди делают? Может быть, есть что-то покрасивше? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 26 мая, 2019 Опубликовано 26 мая, 2019 · Жалоба 7 часов назад, dxp сказал: Запустить компилятор (этих программ) в консоли. Я компилирую проект для симулятора прямо из редактора (нажав хоткей), в котором работаю с исходниками. Компилятор симулятора запускается и отрабатывает очень быстро (в отличие от компиляторов синтезаторов, которые запускаются сами по себе дольше, чем симуляторный компиляет проект), и если есть ошибки, то редактор позволяет быстро (по хоткею) переходить к месту ошибки (это штатная фича любого приличного программерского редатора). Так я так и делаю с модельсимом (с Vivado пока не пробовал). Но проблема возникает когда есть сложная иерархия проекта: компилятор проверяет только тот файл, который в данный момент открыт в редакторе. Файлы уровнем ниже - он не проверяет поскольку не может найти. И собственно есть 2 пути как писал Уважаемый nice_vladi. Вот я и думаю может есть какой TCL скрипт который парсит иерархию проекта, и компиляцию начинает с самого низкого уровня. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 26 мая, 2019 Опубликовано 26 мая, 2019 · Жалоба Приветствую! 5 hours ago, nice_vladi said: В большей части модулей пользуюсь типами, которые объявлены где-то (допустим, ./inc/types.svh). Так вот, что бы корректно откомпилировался текущий модуль - нужно компилятору объяснить, где типы лежат. В квесте собираю полный тестбенч - там это описано. В квартусе - тоже. А вот для одиночного модуля, проверямого прямо из редактора - не понятно, как делать. Не совсем понял в чем проблема? Если типы объявлены в .svh, то как ни крути его надо включать в модуле через include. Если проблема в том как объяснить, где искать эти .svh, то я например делаю в каждой папке с исходниками файл sv_opt.f. В которых пишу опции компиляции при симуляции. А в редакторе универсальная команда запуска (в данном случае для Sublime) "shell_cmd": "%MODEL_TECH%/vlog.exe -F $file_path/sv_opt.f +incdir+$file_path $file" Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться