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

Никто не в курсе, случаем, как в ModelSim можно вывести результат симуляции в текстовый или, хотя бы, бинарный вид?

какой именно результат симуляции вас интересует?

есть следующие на вскидку варианты

1)всё что выводит моделсим на дисплей паралельно выводится и в лог файл

2)средствами Tcl

3)средствами языка ХДЛ можно организовывать вывод в файлы

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


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

По предыдущему вопросу еще раз спасибо, все получилось.

Следующий вопрос:

У меня два монитора. На мониторе справа развернут UEStudio, из него я запускаю Modelsim. Существуют ли команды (do), позволяющие "отцепить" wave от GUI моделсима и развернуть его на правом мониторе? А то надоело это постоянно вручную делать. Плюс еще wave после "отцепления" вручную постоянно перепрыгивает на левый монитор :crying:

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


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

Какой командой можно остановить симуляцию после run -all или run -continue ?

Сделать это у меня получается только путем нажатия кнопки Simulate - break в GUI. Какая команда соответствует этой волшебной кнопке?

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


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

stop

(вообще обращайтесь всё-таки по этим вопросам к ModelSim Reference Manual, это будет экономить ваше время)

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


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

stop

Команда stop не работает. Чтобы не быть голословным:

Запускаю моделсим. Потом Tools - TCL - Execute macro...

do такой:

------------------------------------------------------------------------------------------------------

cd D:/Libraries/HDL/VHDL/sintez_2007

vcom -work work D:/Libraries/HDL/VHDL/sintez_2007/testbench/test_sintez_basket.vhd

vsim work.test_sintez_basket

------------------------------------------------------------------------------------------------------

Пишу run -all. Enter. Вижу, время в левом нижнем углу меняется, т.е симулятор работает.

Пишу stop. Enter - не реагирует, время стремительно бежит вперед.

Жму Simulate - break - время замирает, симулятор остановился.

(вообще обращайтесь всё-таки по этим вопросам к ModelSim Reference Manual, это будет экономить ваше время)

Я это сделал перед тем, как задать вопрос.

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


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

Напишите в одном из initial вашего test bench (после того как закончаться все процессы) команду $stop

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


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

Напишите в одном из initial вашего test bench (после того как закончаться все процессы) команду $stop

Спасибо, но

1. Я не знаю, что такое initial

2. У меня нет никакого test bench

3. Скорее всего, Вы мне объясняете, как в верилоговском файле установить breakpoint, но с верилогом я не знаком, а как установить breakpoint в vhdl, я в курсе. Вопрос, скорее, касается tcl.

 

Проблема в том, что при запущенном симуляторе не воспринимается команда stop. Проблему решил:

----------------------------------------------------------------------------------------------------------

set StopEn 0

when {test_sintez_basket/CLOCK_OUT'event and test_sintez_basket/CLOCK_OUT = '1'} {

if $StopEn {

stop

}

}

run -all

-----------------------------------------------------------------------------------------------------------

В отличие от команды stop, команда set variable воспринимается запущенным симулятором.

Теперь симуляция останавливается командой set StopEn 1, а запускается двумя:

set StopEn 0

run -continue

что меня вполне устраивает

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


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

Как задушить сообщения симулятора в нулевой момент времени?

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


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

Как задушить сообщения симулятора в нулевой момент времени?
Телепаты в отпуске. Какие именно сообщения вам мешают? "Loading..." сразу после vsim?

Советую посмотреть modelsim.ini. Там к каждой опции даётся краткое описание.

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


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

Телепаты в отпуске.

Не, они просто в "Общение" обитают :)

Какие именно сообщения вам мешают? "Loading..." сразу после vsim?

Ну Вы придумали тоже... :07:

Примерно такие:

# ** Warning: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, the result will be 'X'(es).
#    Time: 0 ns  Iteration: 0

Советую посмотреть modelsim.ini. Там к каждой опции даётся краткое описание.

Уверен, что modelsim.ini здесь не при чем.

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


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

Примерно такие:

# ** Warning: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, the result will be 'X'(es).
#    Time: 0 ns  Iteration: 0

 

Уверен, что modelsim.ini здесь не при чем.

Как это ни при чём? Моделсим управляется именно этим файлом. Цитата:

; Turn off warnings from the std_logic_arith, std_logic_unsigned 
; and std_logic_signed packages. 
; StdArithNoWarnings = 1 

; Turn off warnings from the IEEE numeric_std and numeric_bit packages. 
; NumericStdNoWarnings = 1

 

Того же эффекта можно добиться, если к vsim добавить ключ

-do "set NumericStdNoWarnings 1; set StdArithNoWarnings 1"

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


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

Блин, так и знал... Был у меня приступ ясновидения... Что начнется... И началось...

Предлагаете их выключить? А мне не надо их выключать. Не хочу видеть их только, когда Time: 0 ns, а в остальные моменты времени пусть генерятся сколько угодно.

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


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

Блин, так и знал... Был у меня приступ ясновидения... Что начнется... И началось...

Предлагаете их выключить? А мне не надо их выключать. Не хочу видеть их только, когда Time: 0 ns, а в остальные моменты времени пусть генерятся сколько угодно.

Извините, а в чем прикол?

Какая конечная цель в таком выключении? (может закрыть глаза во время Time: 0 :-)

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

 

===========

добавлено:

можно выключить вывод определенных(по номеру)

в modelsim.ini

suppress=NUMBER

 

где NUMBER - номер сообщения, которое надо подавить

пример:

suppress=3017,3722

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


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

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

Вот именно. Если Time > 0, проблем нет, лажа в коде находится почти мгновенно. А если Time = 0, никаких лаж мне никогда отыскать не удавалось. Если умеете, научите :)

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


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

Имеем сигнал - массив из 32 аналоговых сигналов (31 downto 0).

Каждый сигнал из массива нужно по-отдельности добавить в wave. Как?

 

Так не получается:

 

add wave -color "gold" -analog -min -3.0 -max 12.0 -height 25\

{sim:/test_sintez_crate/comp_sintez_basket/gen_channels_module__1/comp_channels_module/dut_s(?)}

 

Так тоже:

 

add wave -color "gold" -analog -min -3.0 -max 12.0 -height 25\

{sim:/test_sintez_crate/comp_sintez_basket/gen_channels_module__1/comp_channels_module/dut_s(*)}

 

И вообще никак :crying: Только тупым повторением 32 команд:

 

...dut_s(0)...

...

...dut_s(31)...

 

 

Reference manual по поводу add wave и Wildcard Characters курил, не помогает.

Помогите кто чем...

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


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

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

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

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

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

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

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

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

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

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