Jump to content

    

Quartus II 13.1 ModelSim как подружить?

Добрый день!
Прошу помощи у опытных пользователей.
Опишите подробно ваш флоу создания и отладки проекта под альтеровскую ПЛИСу.
Я не часто этим занимаюсь и мой процесс выглядит следующим образом:

1. Написание исходников в текстовом редакторе с поддержкой синтаксиса SV (обычно это встроенный Qurtus текстовый редактор).
2. Создание проекта под ModelSim, в котором происходит функциональная симуляция и исправление логических ошибок.
3. Создание проекта под Qurtus II на основе отлаженных исходников, где происходит оптимизация по затраченным ресурсам и создание Netlist для следующего этапа.
4. Создание нового проекта (или модификация созданного) под ModelSim для временной отладки.
5. TimeQuest, написание констрейнов при необходимости.

Понятно, что такой рабочий процесс как минимум не оптимален и не логичен. Известно, что есть способы подружить Quartus II и ModelSim (иначе не было бы в интерфейсе Quartus настроек Nativelink для ModelSim). Но как это грамотно осуществить я не разобрался, и хотелось бы узнать как выглядит рабочий процесс у профессионалов.

ЗЫ: Чтобы не показалось, что я сам ничего не пытался сделать и хочу, чтоб мне на шару расписали, что куда нажимать, приведу пример того, как я делаю на, мой взгляд, "не так":

1. Создаю проект в квартусе, пишу исходники на SV и тестбенч.
2. Компилирую библиотеки Altera для своего кристалла.
3. В настройках Simulation в Quartus выбираю ModelSim (прописываю путь к екзешнику), указываю выходную директорию для файлов симуляции, настраиваю тестбенч (картинка в аттаче).
4. В Nativelink указываю путь к скомпилированным библиотекам.
3. Далее при запуске функционального моделирования запускается ModelSim и начинает перекомпилировать все библиотеки и мапить их в указанную директорию. При повторном запуске происходит ровно тоже самое, несмотря на то, что все папки созданы и лежат на своих местах. Выполняется это согласно автоматически созданному скрипту, в котором написано:

transcript on
if ![file isdirectory verilog_libs] {
    file mkdir verilog_libs
}

vlib verilog_libs/altera_ver
vmap altera_ver ./verilog_libs/altera_ver
vlog -vlog01compat -work altera_ver {c:/altera/13.1/quartus/eda/sim_lib/altera_primitives.v}

vlib verilog_libs/lpm_ver
vmap lpm_ver ./verilog_libs/lpm_ver
vlog -vlog01compat -work lpm_ver {c:/altera/13.1/quartus/eda/sim_lib/220model.v}

vlib verilog_libs/sgate_ver
vmap sgate_ver ./verilog_libs/sgate_ver
vlog -vlog01compat -work sgate_ver {c:/altera/13.1/quartus/eda/sim_lib/sgate.v}

vlib verilog_libs/altera_mf_ver
vmap altera_mf_ver ./verilog_libs/altera_mf_ver
vlog -vlog01compat -work altera_mf_ver {c:/altera/13.1/quartus/eda/sim_lib/altera_mf.v}

vlib verilog_libs/altera_lnsim_ver
vmap altera_lnsim_ver ./verilog_libs/altera_lnsim_ver
vlog -sv -work altera_lnsim_ver {c:/altera/13.1/quartus/eda/sim_lib/altera_lnsim.sv}

vlib verilog_libs/cycloneiii_ver
vmap cycloneiii_ver ./verilog_libs/cycloneiii_ver
vlog -vlog01compat -work cycloneiii_ver {c:/altera/13.1/quartus/eda/sim_lib/cycloneiii_atoms.v}

Но как мне его изменить или заменить, чтобы каждый раз он не компилил то, что и так скомпилено.
Или может я совсем все не так делаю и мой флоу изначально не верен, расскажите, как действуете вы.

1.PNG

Edited by TamRazZ

Share this post


Link to post
Share on other sites

У меня часть скрипта моделирования выглядит так:

if {!([vsimAuth] == "ALTERA")} {
    # https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=122907
    # main window at full screen
    wm state . zoomed
}

# clear transript window of Modelsim
.main clear

# Turns off the transcript echo for all commands
transcript quietly

# close previous waveform window
quit -sim

# delete old libs if exist
if {[file exists work/_info]} {
   vdel -lib work -all
}

# create and map work lib
vlib work
vmap work work

# compile all verilog and systemverilog modules
vlog *.sv
vlog *.v

# simulate with libraries
vsim -L altera_ver -L lpm_ver -L sgate_ver -L altera_mf_ver -L altera_lnsim_ver \
-L cycloneii_ver -L work work.$current_tb -onfinish stop -voptargs="+acc" -debugDB

и ещё вот сюда посмотрите:
https://www.doulos.com/knowhow/tcltk/examples/modelsim/

Share this post


Link to post
Share on other sites
1 час назад, TamRazZ сказал:

Прошу помощи у опытных пользователей.

Или может я совсем все не так делаю и мой флоу изначально не верен, расскажите, как действуете вы.

Почту посмотрите...

Share this post


Link to post
Share on other sites
15 hours ago, MaratZuev said:

У меня часть скрипта моделирования выглядит так:

Спасибо!

Как вы запускаете этот скрипт из Quartus?  Или вся отладка у вас в интерфейсе ModelSim происходит?

Share this post


Link to post
Share on other sites
38 minutes ago, MaratZuev said:

Второе

Понятно... В моделсиме я более менее разобрался, вопрос, как их подружить с квартусом. Но спасибо за ваш скрипт, некоторые команды взял на вооружение

Share this post


Link to post
Share on other sites

С запуском ModelSim из Qurtus разобрался! Спасибо!

Компилируется и симмулится как надо. НО...

При запуске ModelSim (именно ModelSim а не AlteraEdition) из Quartus происходит компиляция множества библиотек под конкретный кристалл, занимает изрядное количество времени и процедура бесполезная т.к. я запускаю функциональную симуляцию. Не понятно куда деваются эти библиотеки однажды откомпиленные, почему это происходит при каждом запуске симулятора (только из Quartus, при запуске ModelSim как самостоятельное приложение такого не происходит)?

Каждый запуск ModelSim из Quartus сопровождется обновлением *.ini файла, из чего делаю вывод, что именно в Quartus-gui надо искать-отключать настройки. Перерыл все настройки связанные с запуском EDA Tools пока ничего не нашел. Помогите, кто с этим сталкивался...

Share this post


Link to post
Share on other sites

А зачем вам именно ModelSim SE и прочие, а не родной AE?
Вы пути к скомпилённым библиотекам в *.ini прописали?
Вот кусочек моего *.ini:
 

[Library]
std = $MODEL_TECH/../std
ieee = $MODEL_TECH/../ieee
vital2000 = $MODEL_TECH/../vital2000
;
; VITAL concerns:
;
; The library ieee contains (among other packages) the packages of the
; VITAL 2000 standard.  When a design uses VITAL 2000 exclusively, it should use
; the physical library ieee (recommended), or use the physical library
; vital2000, but not both.  The design can use logical library ieee and/or
; vital2000 as long as each of these maps to the same physical library, either
; ieee or vital2000.
;
; A design using the 1995 version of the VITAL packages, whether or not
; it also uses the 2000 version of the VITAL packages, must have logical library
; name ieee mapped to physical library vital1995.  (A design cannot use library
; vital1995 directly because some packages in this library use logical name ieee
; when referring to the other packages in the library.)  The design source
; should use logical name ieee when referring to any packages there except the
; VITAL 2000 packages.  Any VITAL 2000 present in the design must use logical
; name vital2000 (mapped to physical library vital2000) to refer to those
; packages.
; ieee = $MODEL_TECH/../vital1995
;
; For compatiblity with previous releases, logical library name vital2000 maps
; to library vital2000 (a different library than library ieee, containing the
; same packages).
; A design should not reference VITAL from both the ieee library and the
; vital2000 library because the vital packages are effectively different.
; A design that references both the ieee and vital2000 libraries must have
; both logical names ieee and vital2000 mapped to the same library, either of
; these:
;   $MODEL_TECH/../ieee
;   $MODEL_TECH/../vital2000
;

verilog = $MODEL_TECH/../verilog
std_developerskit = $MODEL_TECH/../std_developerskit
synopsys = $MODEL_TECH/../synopsys
modelsim_lib = $MODEL_TECH/../modelsim_lib
sv_std = $MODEL_TECH/../sv_std
mtiAvm = $MODEL_TECH/../avm
mtiRnm = $MODEL_TECH/../rnm
mtiOvm = $MODEL_TECH/../ovm-2.1.2
mtiUvm = $MODEL_TECH/../uvm-1.1d
mtiUPF = $MODEL_TECH/../upf_lib
mtiPA  = $MODEL_TECH/../pa_lib
floatfixlib = $MODEL_TECH/../floatfixlib
mc2_lib = $MODEL_TECH/../mc2_lib
osvvm = $MODEL_TECH/../osvvm

; added mapping for ADMS
mgc_ams = $MODEL_TECH/../mgc_ams
ieee_env = $MODEL_TECH/../ieee_env

;vhdl_psl_checkers = $MODEL_TECH/../vhdl_psl_checkers       // Source files only for this release
;verilog_psl_checkers = $MODEL_TECH/../verilog_psl_checkers // Source files only for this release
;mvc_lib = $MODEL_TECH/../mvc_lib
infact = $MODEL_TECH/../infact
vhdlopt_lib = $MODEL_TECH/../vhdlopt_lib

; Automatically perform logical->physical mapping for physical libraries that
; appear in -L/-Lf options with filesystem path delimiters (e.g. '.' or '/').
; The tail of the filesystem path name is chosen as the logical library name.
; For example, in the command vopt -L ./path/to/lib1 o opttop top”,
; vopt automatically performs the mapping lib1 -> ./path/to/lib1”.
; See the User Manual for more details.
;
; AutoLibMapping = 0

altera_ver = $MODEL_TECH/../altera/verilog_libs/altera_ver
lpm_ver = $MODEL_TECH/../altera/verilog_libs/lpm_ver
sgate_ver = $MODEL_TECH/../altera/verilog_libs/sgate_ver
altera_mf_ver = $MODEL_TECH/../altera/verilog_libs/altera_mf_ver
altera_lnsim_ver = $MODEL_TECH/../altera/verilog_libs/altera_lnsim_ver
cycloneii_ver = $MODEL_TECH/../altera/verilog_libs/cycloneii_ver

 

Share this post


Link to post
Share on other sites
26 minutes ago, MaratZuev said:

А зачем вам именно ModelSim SE и прочие, а не родной AE?

AlteraEdition накладывает некоторые ограничения на проект (использование разных языков, размер исходников), что в некоторых ситуациях критично, поэтому чтобы не искать ошибок в будущем осваиваю оригинальный МС.

27 minutes ago, MaratZuev said:

Вы пути к скомпилённым библиотекам в *.ini прописали?

В этом и проблема... Я не прописывал путей к скомпилированным библиотекам. Quartus, как я понимаю, сам правит ini файл МС и все изменения, которые я пытаюсь сотворить с ним вручную теряют смысл.

Видимо в Квартусе стоят какие-то опции, влияющие на запуск МС из под Ква и надо править их, но какие это опции я пока не вкурил...

Share this post


Link to post
Share on other sites

Ещё АЕ раза в три+ медленнее, чем SE.

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