Jump to content

    

Особенности ModelSim

Приветствую!

 

Слушайте, Моделсим, конечно, убожество ещё то. У меня по этому поводу в совё время даже язвительная статья на другом ресурсе была. Но, с другой стороны, без него сейчас никуда. Ну можно ещё DSPbuilder задействовать, но он удобен для ваяния ...
Конечно - язвительная статья это веский аргумент. Учтем!

 

... алгоритмических вещей, "тупой" HDL-код лучше мучать в Моделсиме (ну или его урезанной версии - Квестасиме).
Ха ха ха ... QuestaSim обрезанная версия ModelSim .. повеселили :)

 

Ещё учтите, что у Моделсима часто случается несварение желудка от верилоговского кода. Он по-моему нормально поедает только vhdl.
Вы наверно готовите ему прокисший верилог код :crying:

 

Удачи! Rob.

 

Share this post


Link to post
Share on other sites

Приветствую!

... Кстати 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 блэкджеком и ш...) :)

Главное не забыть со временем про это :smile3046:

 

Удачи! Rob.

 

Share this post


Link to post
Share on other sites
Слушайте, Моделсим, конечно, убожество ещё то. У меня по этому поводу в совё время даже язвительная статья на другом ресурсе была. Но, с другой стороны, без него сейчас никуда. Ну можно ещё DSPbuilder задействовать, но он удобен для ваяния алгоритмических вещей, "тупой" HDL-код лучше мучать в Моделсиме (ну или его урезанной версии - Квестасиме).

Если симулятор оценивать по GUI, то Modelsim убог, но что если любить его внутреннюю красоту? :)

А вообще, я чего нередко из консоли дергаю без "междумордия", под тот же UVM.

И да, Questasim >> Modelsim, не наоборот.

Share this post


Link to post
Share on other sites
вставляете это в 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.

 

Share this post


Link to post
Share on other sites

Приветствую!

Не до конца уловил смысл всех этих махинаций. Насколько я понял, этот скрипт позволит парсить некую сложную строку/лист аргументов $args, анализируя инидвидуальные опции/флаги при помощи switch -regexp (а также анализировать составные элементы/sub_lst как в "-my_options2"). Всё это в итоге компонуется в лист $cmd_line, который потом во flatten виде (поэлементно) передаётся на вход vcom, вроде так?
Tcl позволяет подменить любой proc на свою реализацию. Для того чтобы подправит/изменить что то в поведении подменяемого proc, (ну или обрушить мозг коллеге блокируя какую либо опцию или выдавая черное за белое ;))

Это всего лишь пример как можно порезвится в этом направлении. Добавить свои опции, развернуть список файлов в формат cmd строки, ну либо корректно распарсить сложный .f файл в вашем уникальном формате с несколькими запусками vcom_ для разных опций, и.т.д ... думаю Вы идею поняли :biggrin:

 

И ещё немного оффтопик. RobFPGA, если не секрет, что используете для дебага TCL скриптов (я так думаю не просто текствые файлы интерпретатору скармливаете)? Я в своё время остановился на связке Eclipse+Komodo Remote Debugging Package.
В основном хватает puts :laughing: . Увы я не пишу профессионально на TCL. Для отладки больших и сложных скриптов иногда использую Komodo.

 

Удачи! Rob.

 

 

Share this post


Link to post
Share on other sites
Ну, начать хотя бы с того, что GUI кривой. Для сравнения, в Active-HDL множество мелких вещей лично мне удобнее/быстрее делать через GUI/hotkeys. Более сложыне уже скриптами. В ModelSim пока даже многие мелкие вещи мне делать иногда проще в командной строке. Та же компиляция файлов, и симуляция ИМХО в ModelSim гораздо удобнее скриптом.

Немного оффтопа.

Подскажите, а что стало причиной перехода с Active-HDL на ModelSim?

 

 

Share this post


Link to post
Share on other sites
Немного оффтопа.

Подскажите, а что стало причиной перехода с Active-HDL на ModelSim?

То, что у меня Active-HDL v9.1, а нужно компилить корки Xilinx Vivado 2017.4. Долго пытался, часть удалось, но думаю в этой версии Active-HDL не светит (а более новую найти и попробовать увы не удалось).

 

Share this post


Link to post
Share on other sites

Опять небольшие грабли. Исходники открываются в режиме 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. Мелочь, но неприятно (тем более что по идее этого быть не должно).

Share this post


Link to post
Share on other sites

Для косвенной передачи списков параметров в произвольную команду нужно использовать стандартную команду tcl eval:

set arg "-2008 version.vhd"
eval vcom $arg

И никаких извращений:).

Share this post


Link to post
Share on other sites
Для косвенной передачи списков параметров в произвольную команду нужно использовать стандартную команду tcl eval:
set arg "-2008 version.vhd"
eval vcom $arg

И никаких извращений:).

Действительно работает. А я (т.к. смысла команды eval до конца честно говоря не понимаю), пытался делать как в экзамплах, со всякими доп скобками:

eval {vcom $arg}
eval "vcom $arg"
eval [list vcom $arg]

и всё выдавало ошибки. А тут было так просто! Спасибо, будем знать.

 

Share this post


Link to post
Share on other sites
И да, Questasim >> Modelsim, не наоборот.

Видимо что-то поменялось с тех времён, когда я последний раз юзал Квестасим. На тот момент Квестасим даже не понимал расширенного объявления входов и выходов в заголовках верилоговских модулей, в то время как даже урезанная альтеровская версия Моделсима прекрасно понимала объявления и в "старом" и в "новом" стиле. С тех пор к Квестасиму я потерял интерес.

 

Сейчас глянул на "Менторовский" сайт, да, теперь, типа, Квестасим в флагманах, ну рад за него.

Share this post


Link to post
Share on other sites

Мои 5 копеек. Насколько помню, квеста всегда была расширенной версией моделсима, по сути квеста = моделсим + верификационные шняжки.

Share this post


Link to post
Share on other sites

Стыдно спросить, но никак не могу понять в чём затык.

Есть некий простейший package, в котором определяются следующие alias:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.MATH_REAL.ALL;

package FUNCTIONS_PKG is
  alias conv_slv is ieee.std_logic_arith.CONV_STD_LOGIC_VECTOR [integer,integer return STD_LOGIC_VECTOR];
  alias conv_int is ieee.std_logic_unsigned.CONV_INTEGER [STD_LOGIC_VECTOR return INTEGER];
end FUNCTIONS_PKG;

package body FUNCTIONS_PKG is
end FUNCTIONS_PKG;

Пытаюсь компилировать это в ModelSim SE-64 10.5. Когда делаю просто "vcom functions_pkg.vhd" (по умолчанию стандарт 2002) всё норм. Когда же пытаюсь скомпилить под 2008 "vcom -2008 functions_pkg.vhd" , получаем:

# ** Error: d:/tmp/functions_pkg.vhd(9): Cannot find subprogram "CONV_STD_LOGIC_VECTOR" with corresponding signature.
# ** Error: d:/tmp/functions_pkg.vhd(10): Cannot find subprogram "CONV_INTEGER" with corresponding signature.

Не совсем улавливаю в чём причина. Когда делаю то же самое в Active-HDL - проблем нет.

functions_pkg.vhd

Share this post


Link to post
Share on other sites

 

On 8/16/2018 at 11:49 AM, Vengin said:

То, что у меня Active-HDL v9.1

Что мешает обновиться, Вы же свой? 

Share this post


Link to post
Share on other sites
15 минут назад, AnatolySh сказал:

 

Что мешает обновиться, Вы же свой? 

На тот момент был "несвой". Теперь уже обновился.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now