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

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


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 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
AVR
сообщение Jul 11 2018, 10:21
Сообщение #2


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 303
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Vengin @ Jul 11 2018, 11:15) *
Пожалуй хватит для начала для одного сообщения sm.gif. Хотелось бы услышать мнения общества по этому поводу.
И может заодно ответы на пару конкретных вопросов:
1) Есть ли где-то какой-то список/документация на «второстепенные» команды (API)?
2) Может есть команды «имитации» событий GUI (нажатия меню/иконок)?
3) Какой командой можно закрыть подокно (Wave Pane), открытое командой "WaveActivateNextPane {} 2" (без закрытия переоткрытия всего кона Wave)?

Вынужден спросить - зачем автоматизировать работу с GUI? Какой от этого выигрыш? Я бы посоветовал сменить принципы отладки и тестирования своих проектов, раз возникли такие вопросы, просто подозреваю недопонимание принципов тестирования и назначения такого инструмента как Modelsim...


--------------------
Go to the top of the page
 
+Quote Post
Vengin
сообщение Jul 11 2018, 10:51
Сообщение #3


Участник
*

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



Цитата(AVR @ Jul 11 2018, 13:21) *
Вынужден спросить - зачем автоматизировать работу с GUI? Какой от этого выигрыш?
Ну, начать хотя бы с того, что GUI кривой. Для сравнения, в Active-HDL множество мелких вещей лично мне удобнее/быстрее делать через GUI/hotkeys. Более сложыне уже скриптами. В ModelSim пока даже многие мелкие вещи мне делать иногда проще в командной строке. Та же компиляция файлов, и симуляция ИМХО в ModelSim гораздо удобнее скриптом.
По поводу автоматизации - это не самоцель, а скорее необходимость. Просто вместо того чтобы тыкать десять кнопок, можно же упростить себе жизнь и сделать скрипт. Ну а в больших проектах по любому нужны скрипты. Да и можно ведь ModelSim вообще без GUI использовать, в режиме командой строки.

Цитата(AVR @ Jul 11 2018, 13:21) *
Я бы посоветовал сменить принципы отладки и тестирования своих проектов, раз возникли такие вопросы, просто подозреваю недопонимание принципов тестирования и назначения такого инструмента как Modelsim...
Можете посоветовать что-то конкретное? В своё время посматривал на всякие OVM и разные другие методы тестирования и автоматизации. Но пока особо не прижилось, т.к. затраты времени на освоение или зависимость от сторонних ресурсов не особо оправдывают себя.

Сообщение отредактировал Vengin - Jul 11 2018, 10:53
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2018 - 09:31
Рейтинг@Mail.ru


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