|
Особенности ModelSim, и сопутствующие вопросы |
|
|
|
Aug 15 2018, 11:30
|
Профессионал
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643
|
Приветствую! Цитата(Kluwert @ Aug 15 2018, 12:01) Слушайте, Моделсим, конечно, убожество ещё то. У меня по этому поводу в совё время даже язвительная статья на другом ресурсе была. Но, с другой стороны, без него сейчас никуда. Ну можно ещё DSPbuilder задействовать, но он удобен для ваяния ... Конечно - язвительная статья это веский аргумент. Учтем! Цитата(Kluwert @ Aug 15 2018, 12:01) ... алгоритмических вещей, "тупой" HDL-код лучше мучать в Моделсиме (ну или его урезанной версии - Квестасиме). Ха ха ха ... QuestaSim обрезанная версия ModelSim .. повеселили Цитата(Kluwert @ Aug 15 2018, 12:01) Ещё учтите, что у Моделсима часто случается несварение желудка от верилоговского кода. Он по-моему нормально поедает только vhdl. Вы наверно готовите ему прокисший верилог код Удачи! Rob.
|
|
|
|
|
Aug 15 2018, 14:30
|
Профессионал
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643
|
Приветствую! Цитата(Vengin @ Aug 15 2018, 11:07) ... Кстати vcom Active-HDL позволяет такие вольности. И нормально хавает список файлов с составными строками аргументов типа "-opt1 file1" Кстати! - совсем забыл - можно ведь и так над собой приколоться Код if {[llength [namespace which {vcom_}]]==0} { rename ::vcom vcom_
proc ::vcom args { puts "Hook of vcom"
# processing input options set cmd_line [list] for {set i 0} {$i < [llength $args]} {incr i} { set option [string trim [lindex $args $i]] switch -regexp -- $option { "-my_options1" { lappend cmd_line [lindex $args [incr i]]] } "-my_options2" { set sub_lst [lindex $args [incr i]] foreach sub_opt $sub_lst { lappend cmd_line $sub_opt # ... } default { lappend cmd_line $option # ... } } } vcom_ {*}$cmd_line } } вставляете это в startup.tcl и получаете собственный уникальный vcom|vlog|... (c блэкджеком и ш...) Главное не забыть со временем про это Удачи! Rob.
|
|
|
|
|
Aug 15 2018, 19:11
|
фанат Linux'а
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008
|
Цитата(Kluwert @ Aug 15 2018, 12:01) Слушайте, Моделсим, конечно, убожество ещё то. У меня по этому поводу в совё время даже язвительная статья на другом ресурсе была. Но, с другой стороны, без него сейчас никуда. Ну можно ещё DSPbuilder задействовать, но он удобен для ваяния алгоритмических вещей, "тупой" HDL-код лучше мучать в Моделсиме (ну или его урезанной версии - Квестасиме). Если симулятор оценивать по GUI, то Modelsim убог, но что если любить его внутреннюю красоту? А вообще, я чего нередко из консоли дергаю без "междумордия", под тот же UVM. И да, Questasim >> Modelsim, не наоборот.
--------------------
|
|
|
|
|
Aug 16 2018, 07:27
|
Частый гость
Группа: Свой
Сообщений: 82
Регистрация: 7-02-07
Из: Беларусь, г. Минск
Пользователь №: 25 149
|
Цитата(RobFPGA @ Aug 15 2018, 17:30) вставляете это в startup.tcl и получаете собственный уникальный vcom|vlog|... (c блэкджеком и ш...) Не до конца уловил смысл всех этих махинаций. Насколько я понял, этот скрипт позволит парсить некую сложную строку/лист аргументов $args, анализируя инидвидуальные опции/флаги при помощи switch -regexp (а также анализировать составные элементы/sub_lst как в "-my_options2"). Всё это в итоге компонуется в лист $cmd_line, который потом во flatten виде (поэлементно) передаётся на вход vcom, вроде так? Но если я правильно понимаю, при однократном вызове vcom всё равно применит опции/аргументы все сразу ко всем файлам (а не каждому файлу свой параметр)? Т.е. если есть 10 файлов и, допустим один с флагом -2008, то все 10 файлов будут компилится с этим флагом. А это некорректно (не то, что надо). И ещё немного оффтопик. RobFPGA, если не секрет, что используете для дебага TCL скриптов (я так думаю не просто текствые файлы интерпретатору скармливаете)? Я в своё время остановился на связке Eclipse+Komodo Remote Debugging Package.
|
|
|
|
|
Aug 16 2018, 08:07
|
Профессионал
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643
|
Приветствую! Цитата(Vengin @ Aug 16 2018, 10:27) Не до конца уловил смысл всех этих махинаций. Насколько я понял, этот скрипт позволит парсить некую сложную строку/лист аргументов $args, анализируя инидвидуальные опции/флаги при помощи switch -regexp (а также анализировать составные элементы/sub_lst как в "-my_options2"). Всё это в итоге компонуется в лист $cmd_line, который потом во flatten виде (поэлементно) передаётся на вход vcom, вроде так? Tcl позволяет подменить любой proc на свою реализацию. Для того чтобы подправит/изменить что то в поведении подменяемого proc, (ну или обрушить мозг коллеге блокируя какую либо опцию или выдавая черное за белое ) Это всего лишь пример как можно порезвится в этом направлении. Добавить свои опции, развернуть список файлов в формат cmd строки, ну либо корректно распарсить сложный .f файл в вашем уникальном формате с несколькими запусками vcom_ для разных опций, и.т.д ... думаю Вы идею поняли Цитата(Vengin @ Aug 16 2018, 10:27) И ещё немного оффтопик. RobFPGA, если не секрет, что используете для дебага TCL скриптов (я так думаю не просто текствые файлы интерпретатору скармливаете)? Я в своё время остановился на связке Eclipse+Komodo Remote Debugging Package. В основном хватает puts . Увы я не пишу профессионально на TCL. Для отладки больших и сложных скриптов иногда использую Komodo. Удачи! Rob.
|
|
|
|
|
Aug 16 2018, 08:46
|
Местный
Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243
|
Цитата(Vengin @ Jul 11 2018, 13:51) Ну, начать хотя бы с того, что GUI кривой. Для сравнения, в Active-HDL множество мелких вещей лично мне удобнее/быстрее делать через GUI/hotkeys. Более сложыне уже скриптами. В ModelSim пока даже многие мелкие вещи мне делать иногда проще в командной строке. Та же компиляция файлов, и симуляция ИМХО в ModelSim гораздо удобнее скриптом. Немного оффтопа. Подскажите, а что стало причиной перехода с Active-HDL на ModelSim?
|
|
|
|
|
Aug 16 2018, 08:49
|
Частый гость
Группа: Свой
Сообщений: 82
Регистрация: 7-02-07
Из: Беларусь, г. Минск
Пользователь №: 25 149
|
Цитата(Tpeck @ Aug 16 2018, 11:46) Немного оффтопа. Подскажите, а что стало причиной перехода с Active-HDL на ModelSim? То, что у меня Active-HDL v9.1, а нужно компилить корки Xilinx Vivado 2017.4. Долго пытался, часть удалось, но думаю в этой версии Active-HDL не светит (а более новую найти и попробовать увы не удалось).
|
|
|
|
|
Aug 20 2018, 08:01
|
Частый гость
Группа: Свой
Сообщений: 82
Регистрация: 7-02-07
Из: Беларусь, г. Минск
Пользователь №: 25 149
|
Опять небольшие грабли. Исходники открываются в режиме ReadOnly. Если открывать "обычным" способом (File -> Open), то файлы открываются и на запись. В то же время, когда файл открывается по другому (судя по всему внутренней командой edit), например, во время симуляции при дабл-клике в окнах Structure, Objects, Process и т.п. файл в окне Source открывается ReadOnly. Вроде как есть специальная опция, отвечающая за это дело (ModelSim® SE User's Manua -> Chapter 17:Source Window -> Changing File Permissions): Цитата By default, files open in read-only mode even if the original source document file permissions allow you to edit the document. To change this behavior, set the PrefSource(ReadOnly) preference variable to 0. Поменял через GUI (Tools -> Edit Preferences -> вкладка By Name -> Source -> ReadOnly = 0) - по-прежнему открываются в ReadOnly. Поменял в скрипте pref.tcl: set PrefSource(ReadOnly) 0 - ничего. Может кто знает, как это побороть? Приходится каждый раз в окне Source делать правый клик и снимать флажок ReadOnly. Мелочь, но неприятно (тем более что по идее этого быть не должно).
|
|
|
|
|
Aug 20 2018, 09:33
|
Знающий
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515
|
Для косвенной передачи списков параметров в произвольную команду нужно использовать стандартную команду tcl eval: Код set arg "-2008 version.vhd" eval vcom $arg И никаких извращений .
|
|
|
|
|
Aug 20 2018, 09:56
|
Частый гость
Группа: Свой
Сообщений: 82
Регистрация: 7-02-07
Из: Беларусь, г. Минск
Пользователь №: 25 149
|
Цитата(Timmy @ Aug 20 2018, 12:33) Для косвенной передачи списков параметров в произвольную команду нужно использовать стандартную команду tcl eval: Код set arg "-2008 version.vhd" eval vcom $arg И никаких извращений . Действительно работает. А я (т.к. смысла команды eval до конца честно говоря не понимаю), пытался делать как в экзамплах, со всякими доп скобками: Код eval {vcom $arg} eval "vcom $arg" eval [list vcom $arg] и всё выдавало ошибки. А тут было так просто! Спасибо, будем знать.
|
|
|
|
|
Aug 21 2018, 20:00
|
Местный
Группа: Участник
Сообщений: 239
Регистрация: 15-11-09
Из: Санкт-Петербург
Пользователь №: 53 639
|
Цитата(AVR @ Aug 15 2018, 22:11) И да, Questasim >> Modelsim, не наоборот. Видимо что-то поменялось с тех времён, когда я последний раз юзал Квестасим. На тот момент Квестасим даже не понимал расширенного объявления входов и выходов в заголовках верилоговских модулей, в то время как даже урезанная альтеровская версия Моделсима прекрасно понимала объявления и в "старом" и в "новом" стиле. С тех пор к Квестасиму я потерял интерес. Сейчас глянул на "Менторовский" сайт, да, теперь, типа, Квестасим в флагманах, ну рад за него.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|