Jump to content

    
Sign in to follow this  
des00

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

Recommended Posts

Добрый день!

 

Подскажите как сделать следующее :

есть tb, в котором прописано несколько возможных сценариев моделирования. Выбор конкретного сценария сделан через параметры запуска моделирования и $value$plusargs. Нужно последовательно перебрать все сценарии моделирования, желательно автоматически.

 

Для этого была написана tcl процедура запуска моделировния do_test(args), в которую параметрами передаются нужные аргументы. Казалось бы, перебрать сценарии, можно кодом

 

onbreak {resume}

 

do_test(arg1)

run -all

 

do_test(arg2)

run -all

 

do_test(arg3)

run -all

 

do_test(arg4)

run -all

 

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

 

Поиск в документации ответа как определить именно окончание моделирования (пусть и командами отличными от $stop) результата не дал. Сделать менеджер сценариев на языке в tb можно, но хотелось бы этого не делать. Может быть есть какой то общепринятый способ?

 

Спасибо.

Share this post


Link to post
Share on other sites

А onerror вместе с resume/abort не поможет?

 

Например, установить внутри onerror / onbreak какую нибудь переменную-флаг и сделать resume, а перед следующим run ее проверить, и если установлена, выйти.

 

Или вообще абортнуться сразу.

Share this post


Link to post
Share on other sites
А onerror вместе с resume/abort не поможет?

 

Например, установить внутри onerror / onbreak какую нибудь переменную-флаг и сделать resume, а перед следующим run ее проверить, и если установлена, выйти.

 

Или вообще абортнуться сразу.

судя по поведению onerror относиться к ошибкам исполнения самого do файла. например отсутствие файла при компиляции.

 

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

 

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

Share this post


Link to post
Share on other sites

А поиграть на разнице между $stop и $finish никак?

 

...а, уже написали :)

 

P.S. в аналогичной ситуации я пользовался системным скриптом (а иногда и просто bat-файлом), который запускал N раз моделсим и просто сохранял нужные файлы (в т.ч. и wlf) для "неудачных" кейсов. Но у меня можно было определить удачность/неудачность по неким сохраняемым бинарным файлам, которые банально сравнивались с референсом по завершении каждого кейса.

Edited by o_khavin

Share this post


Link to post
Share on other sites

А всякие там "assertion fail" случаем не реагируют на assertions из SV? Можно брейк устроить по assertion fail.

 

Добраться до значений внутри модулей можно командой examine

Share this post


Link to post
Share on other sites
Добраться до значений внутри модулей можно командой examine

 

А комманду "examine " не смотрели?

Спасибо, забыл про нее, все было хорошо, пока не запустил моделирование с оптимизацией (с оптимизацией оно занимает где то часов 6), без нее намного дольше. Тогда сигнал tb_done был с оптимизирован и естественно не сработала ловушка.

 

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

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this