Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: как в tcl-скрипте указать приоритет (очерёдность) запуска стратегий
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Krys
Здравствуйте. Вопрос такой. Есть у нас в Planahead несколько запусков имплементации (design runs), как на приложенной картинке. Если их запускать из гуя выбрав все запуски, нажав правой кнопкой и выбрав launch runs, то выполняется такой скрипт:
Код
launch_runs impl_1 impl_2 impl_3 impl_4 impl_5 impl_6 impl_7 impl_8 impl_9 impl_10 impl_11 impl_12 impl_13 impl_14 impl_15 impl_16 impl_17 impl_18 impl_19 -jobs 3

Вроде как тут эти запуски перечислены последовательно и говорится, что одновременно запускается 3 из них. Так вот проблема в том, что очерёдность выполнения какая-то произвольная. Есть ли способ жёстко указать, какая очерёдность? Дело в том, что мне хотелось бы некоторые запуски выполнить вперёд, а некоторые после, если уж не будет результата у первых.
Raven
Первое, что приходит в голову:
отправлять на исполнение impl'ы нужными порциями, а затем ставить вызов ожидания на завершение соответствующих частей. Вернее, в общем случае, скомбинировать скриптик из запусков порций, ожиданий их исполнения и ветвлений для последующих порций запусков и ожиданий.
Krys
Спасибо, тоже думал над таким же решением. Если я Вас правильно понял, то Вы предлагаете сделать примерно так:
Код
launch_runs impl_1 impl_2 impl_3 -jobs 3
launch_runs impl_4 impl_5 impl_6 -jobs 3
launch_runs impl_7 impl_8 impl_9 -jobs 3

и т.д. Ну там условия ещё наворотить о завершении задач...

Но мне кажется такое решение не совсем подходит: при запуске согласно строчке из первого сообщения происходит автоматический запуск следующей стратегии, когда предыдущая закончилась. А согласно строчкам выше следующие 3 запуска будут произведены, когда все 3 предыдущие будут закончены. А у них время выполнения у каждого разное, поэтому некоторое время процессор будет недонагружен, когда некоторые из задач уже закончились, но не все.
warrior-2001
Пока выходит так, что невозможно в полуавтоматическом режиме держать процессор загруженным на 100%. Либо поставил и забыл и пусть САПР сам думает, либо порциями. О последовательности выполнения скриптов лучше запросить саппорт!
Raven
Думаю все же, что можно запустить первую порцию в нужном порядке в соотвествии с вашими приоритетами, например
Код
launch impl_1
launch impl_4
launch impl_6
launch impl_2


а затем, используя wait_on_run и/или опрос в цикле с использованием чего-то вроде
Код
[get_property <NAME_OF_RUN_STATE_PROPERTY> [get_runs impl_1]]
    где <NAME_OF_RUN_STATE_PROPERTY> - имя подходящего property, какое конкретно - я не смотрел, но должно там быть что-то подходящее, отвечающее за состояние прогона.

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

И вообще, дальше в этом направлении можно творчество развивать по полной программе. Vivado Design Suite Tcl Command Reference Guide в помощь, как говорится.
Krys
Raven, спасибо за подсказки. Надо будет попробовать. Только небольшая поправочка: у меня не вивадо, а планахед. Это несколько более печально ))
И ещё вопросик: когда я запущу несколько команд в скрипте в разных линиях
Код
launch impl_1
launch impl_4
launch impl_6
launch impl_2
то по-моему, он будет дожидаться выполнения каждой, а затем переходить к следующей. Не так ли? Или как-то можно сделать, чтобы он выполнил запуск и, не дожидаясь завершения, перешёл к следующей команде? (извиняюсь, в tcl не силён).
Raven
Про PlanAhead не скажу, а в Vivado команда launch неблокирующая, т.е., запустил - и пошел дальше. Во всяком случае, иначе не требовалась бы команда wait_on_run. И, кстати, дело здесь не в Tcl как таковом, а в Vivado'вских долнительных командах (таких, как launch), в их реализации в данном EDA.
Krys
Спасибо, действительно, я заблуждался. wait on run есть и в планахеде. Так что моя задача действительно реализуема
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.