реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Quartus/Modelsim и командная строка, Как при помощи командной строки запустить проверку синтаксиса
Flip-fl0p
сообщение Dec 28 2016, 10:41
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 337
Регистрация: 11-06-13
Пользователь №: 77 140



Цитата(warrior-2001 @ Dec 28 2016, 09:40) *
Хотелось бы увидеть тут последовательность механизма дружбы. Если не трудно.

Вот ссылки для справки:
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.
Далее подробно описывать процесс настройки командной строки я не буду, поскольку это уже красивости. Но просто приведу пару настроек, которые я сделал, чтобы упростить себе жизнь и не выводить ненужные мне сообщения компилятора:

Не сообщать о подключении всяких библиотек при компиляции


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


Вот как это работает у меня:




Сообщение отредактировал Flip-fl0p - Dec 28 2016, 10:46
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Dec 28 2016, 11:57
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 337
Регистрация: 11-06-13
Пользователь №: 77 140



Обратите внимание, если вы подключаете компонент, то чтобы правильно скомпилировался модуль, содержащий применяемый компонент необходимо этот компонент скомпилироваьть. Как обойти это я не придумал, да и не думал пока.
Go to the top of the page
 
+Quote Post
dxp
сообщение Dec 29 2016, 04:16
Сообщение #18


Adept
******

Группа: Свой
Сообщений: 3 362
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (Vengin @ Dec 28 2016, 14:49) *
А можно поподробнее про "достаточно ткнуть на соответствующее сообщение". Также пользуюсь 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...


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Vengin
сообщение Dec 29 2016, 17:22
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 7-02-07
Из: Беларусь, г. Минск
Пользователь №: 25 149



Цитата(dxp @ Dec 29 2016, 07:16) *
...В общем, подход универсальный, к конкретному запускаемому инструменту не привязан....
Спасибо, то что надо!
А можем ещё можно цветами выделять тип сообщений/ошибок (Info, Warning, Error), чтоб уж совсем красиво было? rolleyes.gif
Go to the top of the page
 
+Quote Post
AnatolySh
сообщение Dec 30 2016, 12:23
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 20-01-06
Из: Зеленоград
Пользователь №: 13 407



Чтобы при повторном компилировании не возникало сообщение
Код
** Warning: (vlib-34) Library already exists at "xxx\syntax_check".
и, заодно, чистить консоль (при необходимости), надо добавить пару строк:
Код
cls
cd $(SYS.MODEL_TECH)
vdel -lib "$(CURRENT_DIRECTORY)\syntax_check" -all
и далее как раньше


--------------------
WMBR
Go to the top of the page
 
+Quote Post
dxp
сообщение Dec 31 2016, 07:59
Сообщение #21


Adept
******

Группа: Свой
Сообщений: 3 362
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (Vengin @ Dec 30 2016, 00:22) *
Спасибо, то что надо!
А можем ещё можно цветами выделять тип сообщений/ошибок (Info, Warning, Error), чтоб уж совсем красиво было? rolleyes.gif

На эту тему не заморачивался. Это уже свойства сликовского окна, надо разбираться с его возможностями. Я как правило не вчитываюсь в список сообщений об ошибках - если что-то есть, то сразу жму Ctrl-Shift-Down и оказываюсь в файле и на строке с ошибкой, а текст ошибки вижу в строке состояния. Так мне удобнее понять причину, видя весь контекст.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Feb 10 2017, 07:37
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 337
Регистрация: 11-06-13
Пользователь №: 77 140



Поскольку я продолжаю упрощать себе жизнь и настраиваю средства разработки на максимальное выполнение рутинных задач, у меня возник вопрос по запуску TCL скриптов.
На данный момент я смог настроить Notepad ++ на проверку текущего открытого файла. Но когда в проекте используется несколько модулей, то модуль верхнего уровня не будет работать пока не скомпилировать все остальные модули. Я планирую написать простенький TCL скрипт который исправит этот недостаток. Да вот другая беда, никак не могу запустить TCL скрипт через консоль. Может вы сможете навести на мысль в чем моя ошибка ?
На данный момент команду пытаюсь запустить так:
Код
cd $(SYS.MODEL_TECH)                           -- Делаем текущую папку с основными исполняемыми файлами Modlesim
vlib "$(CURRENT_DIRECTORY)\syntax_check"       -- Создаю библиотеку с названием syntax_check в папке с открытм файлом, который надо проверить
vsim "$(CURRENT_DIRECTORY)\" do.tcl            -- Пытаюсь запустить TCL скрипт. -do и другие аргументы не помогают в запуске


Сообщение отредактировал Flip-fl0p - Feb 10 2017, 08:07
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Feb 10 2017, 09:03
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 337
Регистрация: 11-06-13
Пользователь №: 77 140



Путём проб и ошибок выявил следующую закономерность. Если устанавливаемый компонент объявить "как раньше" т.е объявить в архитектурном теле секцию:
Код
COMPONENT MODULE1
....
....
END COMPONENT


И устанавливать этот компонент соответственно как раньше:
Код
MODULE1_COMP : MODULE1
PORT MAP ( .......... );


То проблема проверки файла содержащего компоненты пропадает.
Т.е. Modelsim'у не нравиться установка компонента таким образом:
Код
MODULE1_COMP : ENTITY WORK.MODULE1

Возникает вопрос, а собственно почему так ?

Сообщение отредактировал Flip-fl0p - Feb 10 2017, 09:04
Go to the top of the page
 
+Quote Post
Tausinov
сообщение Feb 10 2017, 09:32
Сообщение #24


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 19-10-13
Пользователь №: 78 795



Цитата(Flip-fl0p @ Feb 10 2017, 12:03) *
Код
MODULE1_COMP : ENTITY WORK.MODULE1

Возникает вопрос, а собственно почему так ?

А вы добавляете в начало объявление библиотеки?
Код
library work;

Ну это так, на всякий случай.
А основной проблемой может быть то, что вы создаете свою библиотеку и указываете ее в качестве work. Т.е. компонент уже будет
Код
UUT : entity syntax_check.comp_name


Или я не так понял?

Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Feb 10 2017, 09:51
Сообщение #25


Местный
***

Группа: Участник
Сообщений: 337
Регистрация: 11-06-13
Пользователь №: 77 140



Цитата(Tausinov @ Feb 10 2017, 12:32) *
А вы добавляете в начало объявление библиотеки?
Код
library work;

Ну это так, на всякий случай.
А основной проблемой может быть то, что вы создаете свою библиотеку и указываете ее в качестве work. Т.е. компонент уже будет
Код
UUT : entity syntax_check.comp_name


Или я не так понял?

Библиотеку объявляю.
Но сдаётся мне, что всё-же надо TCL писать. Поскольку хотелось бы проверки всей иерархии проекта. Поскольку даже если найти способ что-бы Modelsim не ругался на:
Код
UUT : entity syntax_check.comp_name

Появляется другая проблема: если компонент, содержащий ошибку, был изменён, но не был скомпилирован, то компиляция верхнего модуля не выявит ошибку в модуле нижнего уровня.
А хотелось бы, чтобы начиная с верхнего уровня компиляция проверяла бы и нижние уровни... Вернее наоборот. Чтобы начиная с нижних уровней, компиляция доходила до верхних, т.о. отслеживая все изменения во всех файлах проекта.

Сообщение отредактировал Flip-fl0p - Feb 10 2017, 10:18
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2017 - 08:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01449 секунд с 7
ELECTRONIX ©2004-2016