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

 
 
> Особенности ModelSim, и сопутствующие вопросы
Vengin
сообщение Jul 11 2018, 08:15
Сообщение #1


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

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



Добрый день. В очередной раз пытаюсь «пересеть» на ModelSim, и уже вроде пошёл процесс, но как-то всё весьма своеобразно. Уже закрыл глаза на убогийсвоеобразный и постоянно «прыгающий» GUI. И пока лишь только настораживают не столь уж редкие подвисания/вылеты без явных вроде причин.
Сейчас больше интересует непосредственно основной функционал моделсима, то бишь симуляция/верификация. Пытаюсь максимально всё делать через консоль и скриптами. Со «стандартными» командами (типа vcom, vsim и т.п.) всё очевидно - есть документация, примеры. Но в то же время есть ещё, скажем так, «второстепенные» команды, с которыми не всё так понятно. Как правило, это команды в формате CamelCase с более длинными названиями. Для примера, при экспорте wavefrom в файле wave.do появляются такие команды как WaveActivateNextPane, TreeUpdate, WaveRestoreCursors и т.п. И вот как именно с этими «второстепенными» командами работать не совсем понятно. В лучшем случае они мимоходом упоминаются в доках, но лишь поверхностно. В худшем и поисковики не выдают ничего вразумительного.

Да, с одной стороны «общее назначение» команды можно уловить исходя из названия. Но, для начала было бы неплохо хотя бы представлять количество таких команд. Например, если набирать в командной строке ModelSim скажем Wave, то в списке подсказанных команд насчиталось 13 штук.

Или вот, например команда WaveActivateNextPane. Поначалу не придавал ей внимания. Потом поэкспериментировал и оказалось, что например "WaveActivateNextPane {} 2" добавляет (или активирует уже добавленное) подокно (Wave Pane), т.е. разбивает единое окно wave на несколько подокон. Как раз нужен такой функционал при большом количестве сигналов, а найти это удалось лишь случайно, методом тыка. И пока по-прежнему не понятно, как закрывать эти самые добавленные подокна (panes). В GUI меню есть такое дело (Wave->”Delete Window Pane”), но соответствующей команды найти пока не удалось. А где и как искать неизвестно.
И это кстати не первый пример в ModelSIm, когда какое-то действие можно выполнить в GUI, а прямого аналога команд консоли вроде как нет. И зачастую нет прямого «отражения» (вывода) GUI действий в консоли, что уж совсем странно.
Может, есть какие-то команды, которые посылают события в GUI, имитация нажатия меню/иконок, макросы, хуки, …?

Ещё, не всегда понятно как интерпретировать вывод стандартных/второстепенных команд. Например, команда view выдаёт список открытых окон типа такого
Код
>view
# .main_pane.objects .main_pane.source .main_pane.structure .main_pane.transcript .main_pane.wave .main_pane.process .main_pane.library .main_pane.memory .main_pane.project
Тут ещё более менее понятно из названий. Но скажем, когда глубина элементов увеличивается, уже малопонятно. Та же команда WaveActivateNextPane может выдать что-то такое:
Код
.main_pane.wave.interior.cs.body.pw.wf.tree.tree1
Откуда вообще эта структура, как вообще устроена вся эта иерархия? И насколько вообще нужно/желательно её знать понимать (опять таки для управления через командную строку)? С одной стороны это представляет больше академический интерес. Но из-за определённой кривости ModelSim приходится ковыряться в этих дебрях.
Опять-таки, в качестве примера, можно привести вот эту тему: "Как сделать главное окно Modelsim при старте во весь экран?". Решение, подсказанное RobFPGA, выглядит так:
Код
wm state . zoomed
Вот только откуда всё это? В документации ModelSim этого нет. Судя по всему, это уже имеет отношение к Tcl/Tk, на котором вроде построен ModelSim?

Пожалуй хватит для начала для одного сообщения sm.gif. Хотелось бы услышать мнения общества по этому поводу.
И может заодно ответы на пару конкретных вопросов:
1) Есть ли где-то какой-то список/документация на «второстепенные» команды (API)?
2) Может есть команды «имитации» событий GUI (нажатия меню/иконок)?
3) Какой командой можно закрыть подокно (Wave Pane), открытое командой "WaveActivateNextPane {} 2" (без закрытия переоткрытия всего кона Wave)?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Vengin
сообщение Aug 3 2018, 11:44
Сообщение #2


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

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



Cудя по отсутствию комментариев, придётся набивать шишки самому. Э-эх.

Вот конкретная проблема. Не могу до конца разобраться со скриптом startup.do. Пытаюсь заставить Modelsim стартовать окно во весь экран (как описано в этой теме).
Создаём файл $MODEL_TECH/startup.do, в котором одна строчка, которая максимизирует окно Моделсима:
Код
wm state . zoomed
В файле modelsim.ini прописываем следующее:
Код
; VSIM Startup command
Startup = do $MODEL_TECH/startup.do
Запускаем Modelsim и видим следующую ошибку:
Код
...
# do $MODEL_TECH/startup.do
can't read "MODEL_TECH": no such variable
Хотя в самом файле modelsim.ini переменнамя $MODEL_TECH фигурирует неоднократно.

Попытался сделать через $env(), т.е. в modelsim.ini пишем:
Код
; VSIM Startup command
Startup = do $env(MODEL_TECH)/startup.do
Modelsim успешно запускается, и окно во весь экран. Однако затем, при дальнейше работе в Modelsim проблема всё равно всплывает. Для примера, пытаемся прогнать простейший example входящий в состав моделсима (лежит в папке $MODEL_TECH/../examples/vhdl/io_utils/:
Код
cd ../examples/vhdl/io_utils
source run.do
Скрипт run.do успешно создаёт библиотеку, комплит в ней исходники. Но когда дело доходит до симуляции, и вызывается команда vsim, вываливается ошибка
# Cannot open macro file: (MODEL_TECH)/startup.do
Т.е. непосредственно в самом моделсиме при любом явном вызове команды vsim повторно пытается запуститься скрикт startup.do (видно заново парсится файл modelsim.ini), но при этом почему-то конструкция $env(MODEL_TECH) уже не срабатывает (хотя если написать только $MODEL_TECH/startup.do то сработает, но, как и описывалось выше, будет ошибка при первоначальном запуске Моделсим).

Как разорвать этот порочный круг? Можно конечно прописать абсолютный путь к startup.do, но неужто нельзя через относительный с переменной $MODEL_TECH?
P.S.: в аттаче описанный экзампл и полный транскрипт (ошибка на строке 44).
Прикрепленные файлы
Прикрепленный файл  examples.zip ( 4.27 килобайт ) Кол-во скачиваний: 6
 
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Aug 3 2018, 13:28
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!
Цитата(Vengin @ Aug 3 2018, 14:44) *
Cудя по отсутствию комментариев, придётся набивать шишки самому. Э-эх.
...
А то - нам в чужих синяках облом ходить sm.gif
Тут видимо проблемы в контексте запуска vsim. Можно с ними бодаться - а можно и подстроится.
Я обычно держу startup.tcl файл в локальных sim папках проектов. А в нем уже можно сделать ссылку и на глобальный в $::env(MODEL_TECH)/..

Хотя вот попробовал задать как и Вы
Код
Startup = source "$::env(MODEL_TECH)/../setup.tcl"

То при запуске на симуляцию vsim действительно ругается НО при этом потом все равно запускает
Код
Error: (vsim-21) Unable to expand "$::env(MODEL_TECH)../setup.tcl".
> execute source of .../Msim64/win64/../setup.tcl

Успехов! Rob.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Vengin   Особенности ModelSim   Jul 11 2018, 08:15
- - AVR   Цитата(Vengin @ Jul 11 2018, 11:15) Пожал...   Jul 11 2018, 10:21
|- - Vengin   Цитата(AVR @ Jul 11 2018, 13:21) Вынужден...   Jul 11 2018, 10:51
|- - Tpeck   Цитата(Vengin @ Jul 11 2018, 13:51) Ну, н...   Aug 16 2018, 08:46
|- - Vengin   Цитата(Tpeck @ Aug 16 2018, 11:46) Немног...   Aug 16 2018, 08:49
|- - Vengin   Ещё кстати, как вариант решения проблемы со startu...   Aug 5 2018, 10:25
- - AVR   Вот мой пример как работать с ModelSim: Тут и тес...   Aug 5 2018, 15:46
- - Vengin   Очередная странность. Надо скопмилить vhdl файл с ...   Aug 13 2018, 12:12
|- - RobFPGA   Приветствую! Цитата(Vengin @ Aug 13 2018,...   Aug 13 2018, 13:32
|- - Vengin   Цитата(RobFPGA @ Aug 13 2018, 16:32) Пара...   Aug 13 2018, 13:51
||- - RobFPGA   Приветствую! Цитата(Vengin @ Aug 13 2018,...   Aug 13 2018, 14:16
|- - Vengin   Цитата(RobFPGA @ Aug 13 2018, 16:32) Это ...   Aug 15 2018, 08:07
|- - Kluwert   Слушайте, Моделсим, конечно, убожество ещё то. У м...   Aug 15 2018, 09:01
||- - RobFPGA   Приветствую! Цитата(Kluwert @ Aug 15 201...   Aug 15 2018, 11:30
||- - AVR   Цитата(Kluwert @ Aug 15 2018, 12:01) Слуш...   Aug 15 2018, 19:11
||- - Kluwert   Цитата(AVR @ Aug 15 2018, 22:11) И да, Qu...   Aug 21 2018, 20:00
|- - RobFPGA   Приветствую! Цитата(Vengin @ Aug 15 2018,...   Aug 15 2018, 09:52
||- - Vengin   Цитата(RobFPGA @ Aug 15 2018, 12:52) Прав...   Aug 15 2018, 10:37
|- - RobFPGA   Приветствую! Цитата(Vengin @ Aug 15 2018,...   Aug 15 2018, 14:30
|- - Vengin   Цитата(RobFPGA @ Aug 15 2018, 17:30) вста...   Aug 16 2018, 07:27
|- - RobFPGA   Приветствую! Цитата(Vengin @ Aug 16 2018,...   Aug 16 2018, 08:07
- - Vengin   Опять небольшие грабли. Исходники открываются в ре...   Aug 20 2018, 08:01
- - Timmy   Для косвенной передачи списков параметров в произв...   Aug 20 2018, 09:33
|- - Vengin   Цитата(Timmy @ Aug 20 2018, 12:33) Для ко...   Aug 20 2018, 09:56
- - dxp   Мои 5 копеек. Насколько помню, квеста всегда была ...   Aug 22 2018, 03:36


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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 20:11
Рейтинг@Mail.ru


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