Перейти к содержанию
    

Gate Level Simulation в ModelSim из Quartus

Сначала компилирую в Quartus'е, потом комментирую `define NOSIMULATE, сохраняю, и запускаю EDA Gate Level Simulation. Как-то все-же хреновато...

и чего только люди не придумают, лишь бы консоль/скриптование моделсима не изучать

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и чего только люди не придумают, лишь бы консоль/скриптование моделсима не изучать

Если подскажете скрипт для ModelSim, с помощью которого можно не симулировать exGlitch, скажу спасибо.

Для него в NativeLink settings и место есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если подскажете скрипт для ModelSim, с помощью которого можно не симулировать exGlitch, скажу спасибо.

Для него в NativeLink settings и место есть.

дык берете ваши логи консоли, убираете комментарии и лишний мусор, переставляете местами порядок компиляции и все.

if {[file exists gate_work]} {
vdel -lib gate_work -all
}
vlib gate_work
vmap work gate_work

vlog -sv -work work +incdir+D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch {D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch/exGlitch.sv}
vlog -vlog01compat -work work +incdir+. {exGlitch_8_1200mv_85c_slow.vo}

vsim -t 1ps +transport_int_delays +transport_path_delays -L altera_ver -L cycloneiii_ver -L gate_work -L work -voptargs="+acc" exGlitch_tb

add wave *
run 120 ns

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

дык берете ваши логи консоли, убираете комментарии и лишний мусор, переставляете местами порядок компиляции и все.

Спасибо! "Проканало!"

Теперича придется и в скрипты погрузиться :)

 

# Reading C:/Programs/Altera/91/modelsim_ase/tcl/vsim/pref.tcl 
# do exGlitch_run_msim_gate_verilog.do 
# if {[file exists gate_work]} {
#  vdel -lib gate_work -all
# }
# vlib gate_work
# vmap work gate_work
# Copying C:\Programs\Altera\91\modelsim_ase\win32aloem/../modelsim.ini to modelsim.ini
# Modifying modelsim.ini
# ** Warning: Copied C:\Programs\Altera\91\modelsim_ase\win32aloem/../modelsim.ini to modelsim.ini.
#          Updated modelsim.ini.
# 
# vlog -vlog01compat -work work +incdir+. {exGlitch_8_1200mv_85c_slow.vo}
# Model Technology ModelSim ALTERA vlog 6.5b Compiler 2009.10 Oct  1 2009
# -- Compiling module exGlitch
# 
# Top level modules:
#  exGlitch
# 
# vlog -sv -work work +incdir+D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch {D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch/exGlitch.sv}
# Model Technology ModelSim ALTERA vlog 6.5b Compiler 2009.10 Oct  1 2009
# -- Compiling module exGlitch
# -- Compiling module exGlitch_tb
# 
# Top level modules:
#  exGlitch_tb
# 
# vsim -t 1ps +transport_int_delays +transport_path_delays -L altera_ver -L cycloneiii_ver -L gate_work -L work -voptargs="+acc" exGlitch_tb
# vsim +transport_int_delays +transport_path_delays -L altera_ver -L cycloneiii_ver -L gate_work -L work -voptargs=\"+acc\" -t 1ps exGlitch_tb 
# Loading sv_std.std
# Loading work.exGlitch_tb
# Loading work.exGlitch
# 
# do D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch/exGlitch.tcl
# if {[file exists gate_work]} {
# vdel -lib gate_work -all
# }
# vlib gate_work
# vmap work gate_work
# Modifying modelsim.ini
# 
# vlog -sv -work work +incdir+D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch {D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch/exGlitch.sv}
# Model Technology ModelSim ALTERA vlog 6.5b Compiler 2009.10 Oct  1 2009
# -- Compiling module exGlitch
# -- Compiling module exGlitch_tb
# 
# Top level modules:
#  exGlitch_tb
# vlog -vlog01compat -work work +incdir+. {exGlitch_8_1200mv_85c_slow.vo}
# Model Technology ModelSim ALTERA vlog 6.5b Compiler 2009.10 Oct  1 2009
# -- Compiling module exGlitch
# 
# Top level modules:
#  exGlitch
# 
# vsim -t 1ps +transport_int_delays +transport_path_delays -L altera_ver -L cycloneiii_ver -L gate_work -L work -voptargs="+acc" exGlitch_tb
# vsim +transport_int_delays +transport_path_delays -L altera_ver -L cycloneiii_ver -L gate_work -L work -voptargs=\"+acc\" -t 1ps exGlitch_tb 
# Loading sv_std.std
# Loading work.exGlitch_tb
# Loading work.exGlitch
# Loading cycloneiii_ver.cycloneiii_routing_wire
# Loading cycloneiii_ver.cycloneiii_io_obuf
# Loading cycloneiii_ver.cycloneiii_io_ibuf
# Loading cycloneiii_ver.cycloneiii_lcell_comb
# Loading altera_ver.dffeas
# Loading instances from exGlitch_8_1200mv_85c_v_slow.sdo
# Loading altera_ver.PRIM_GDFF_LOW
# Loading timing data from exGlitch_8_1200mv_85c_v_slow.sdo
# ** Note: (vsim-3587) SDF Backannotation Successfully Completed.
#    Time: 0 ps  Iteration: 0  Region: /exGlitch_tb  File: D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch/exGlitch.sv
# 
# add wave *
# run 120 ns

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Когда запускаю gate симуляцию из Quartus
И что же вы хотите? Quartus, как ему было велено, скормил синтезатору ваш модуль (вместе с тест бенчем), синтезатор, как и любой порядочный синтезатор, сделал из вашего тест бенча схему на уровне гейтов (полностью проигнорировав все задержки, что тоже в порядке вещей). Modelsim потом эти гейты, как ему и было велено, отсимулировал.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И что же вы хотите?

Кажется, вы не до конца разобрались в моем вопросе, и в способе его решения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кажется, вы не до конца разобрались в моем вопросе, и в способе его решения.
У вас было 2 вопроса -

  1. Кто виноват? - Я отвечал на него
  2. Что делать? - На это вам уже ответили до меня

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  1. Кто виноват? - Я отвечал на него

Нет смысла махать кулаками после драки, но давайте попробуем. Что в вашем ответе понимается под синтезатором - Quartus или ModelSim? Надо думать - Quartus. Кто его просил синтезировать тестбенч? Который, кстати, обрамлен атрибутами не синтезировать? Почему он "проигнорировал" задержки? И почему задержки не "игнорируются", если тестбенч находится в другом файле?

 

Я понимаю так, что это ModelSim перекомпилировал устройство_под_тестом, потому что оно находилось в том же файле. При этом он переписал рабочую библиотеку, и задержки исчезли, так как не были подключены альтеровские библиотеки. Я думаю, если бы я их подключил, задержки бы были.

Когда же устройство_под_тестом отсутствовало, ModelSim использовал уже готовую библиотеку, полученную от Quartus'а. Также и когда модули были переставлены местами в скрипте - ModelSim для второго модуля получил уже "готовое". В терминах могу путаться...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет смысла махать кулаками после драки, но давайте попробуем. Что в вашем ответе понимается под синтезатором - Quartus или ModelSim?
Quartus

Кто его просил синтезировать тестбенч?
Он сам. Все, что нашел, все просентезил :rolleyes:

Который, кстати, обрамлен атрибутами не синтезировать?
В самом первом посте атрибутов не было.

Почему он "проигнорировал" задержки?
Задержки - это в принципе не синтезабельные конструкции. При синтезе игнорируются (хотя вменяемый синтезатор должен выдавать варнинги)

И почему задержки не "игнорируются", если тестбенч находится в другом файле?
Потому что в другом файле их не синтезировали, а подавали этот файл 'как есть' на вход ModelSim'а. Моделируемое же устройство попало в ModelSim в виде набора примитивных гейтов (с выхода синтеза). Заодно туда попал и тестбенч оттуда же :rolleyes:

 

Я понимаю так, что это ModelSim перекомпилировал устройство_под_тестом, потому что оно находилось в том же файле.
Дальше у ModelSim съехала крыша, т.к. он нашел 2 версии тестбенча (одну оригинальную - поведенческую, а вторую в виде гейтов) и начал брать ту, что ближе лежала (в его понимании ;) ) У него наблюдаются некоторые трудно отлавливаемые глюки, если есть одинаковые модули где то в проекте - они начинают кочевать по библиотекам и плодить глюки (лично наступал на эти грабли)

 

При этом он переписал рабочую библиотеку, и задержки исчезли, так как не были подключены альтеровские библиотеки.

Я думаю, если бы я их подключил, задержки бы были.

Вряд ли. Попробуйте посмотреть, что пришло в ModelSim от синтеза (соответствующий *.v файл должен где то лежать). Задержек там не будет

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В самом первом посте атрибутов не было.

Как же не было? Посмотрите, первый пост на прежнем месте.

Потому что в другом файле их не синтезировали, а подавали этот файл 'как есть' на вход ModelSim'а.

Вот это - правильно.

Моделируемое же устройство попало в ModelSim в виде набора примитивных гейтов (с выхода синтеза).

И это правильно.

Заодно туда попал и тестбенч оттуда же :rolleyes:

Только не "заодно", а наоборот, именно его и передал Quartus для симуляции в ModelSim, а моделируемое устройство попало "заодно".

Дальше у ModelSim съехала крыша, т.к. он нашел 2 версии тестбенча (одну оригинальную - поведенческую, а вторую в виде гейтов) и начал брать ту, что ближе лежала (в его понимании ;) ) У него наблюдаются некоторые трудно отлавливаемые глюки, если есть одинаковые модули где то в проекте - они начинают кочевать по библиотекам и плодить глюки (лично наступал на эти грабли)

Не было двух версий тестбенча. Когда всё "в одном флаконе", второй файл никому не нужен. Когда тест в отдельном файле (а именно он и передается симулятору), то нужно моделируемое устройство. Quartus его уже синтезировал и отдал ModelSim'у, без тестбенча. Но с задержками.

Вряд ли. Попробуйте посмотреть, что пришло в ModelSim от синтеза (соответствующий *.v файл должен где то лежать). Задержек там не будет

С этим буду разбираться...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как же не было? Посмотрите, первый пост на прежнем месте.
Да, действительно было. Посыпаю голову пеплом :unsure:

Не было двух версий тестбенча.
Были проблемы (правда в ISE) - Modelsim складывал в библиотеку work все, что приходило на симуляцию, при этом он оттуда ничего не удалял. Т.е. если мы какой то модуль убрали из набора для тестирования и перенесли его в другое место, то его прежняя версия оставалась в библиотеке и подхватывалась при симуляции :cranky: Лечилось полным стиранием всей work библиотеки

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...