Krys 0 Posted September 18, 2017 · Report post Здравствуйте. Вопрос такой. Есть у нас в 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 из них. Так вот проблема в том, что очерёдность выполнения какая-то произвольная. Есть ли способ жёстко указать, какая очерёдность? Дело в том, что мне хотелось бы некоторые запуски выполнить вперёд, а некоторые после, если уж не будет результата у первых. Quote Ответить с цитированием Share this post Link to post Share on other sites
Raven 0 Posted September 18, 2017 · Report post Первое, что приходит в голову: отправлять на исполнение impl'ы нужными порциями, а затем ставить вызов ожидания на завершение соответствующих частей. Вернее, в общем случае, скомбинировать скриптик из запусков порций, ожиданий их исполнения и ветвлений для последующих порций запусков и ожиданий. Quote Ответить с цитированием Share this post Link to post Share on other sites
Krys 0 Posted September 19, 2017 · Report post Спасибо, тоже думал над таким же решением. Если я Вас правильно понял, то Вы предлагаете сделать примерно так: 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 предыдущие будут закончены. А у них время выполнения у каждого разное, поэтому некоторое время процессор будет недонагружен, когда некоторые из задач уже закончились, но не все. Quote Ответить с цитированием Share this post Link to post Share on other sites
warrior-2001 0 Posted September 19, 2017 · Report post Пока выходит так, что невозможно в полуавтоматическом режиме держать процессор загруженным на 100%. Либо поставил и забыл и пусть САПР сам думает, либо порциями. О последовательности выполнения скриптов лучше запросить саппорт! Quote Ответить с цитированием Share this post Link to post Share on other sites
Raven 0 Posted September 19, 2017 · Report post Думаю все же, что можно запустить первую порцию в нужном порядке в соотвествии с вашими приоритетами, например 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 в помощь, как говорится. Quote Ответить с цитированием Share this post Link to post Share on other sites
Krys 0 Posted September 22, 2017 · Report post Raven, спасибо за подсказки. Надо будет попробовать. Только небольшая поправочка: у меня не вивадо, а планахед. Это несколько более печально )) И ещё вопросик: когда я запущу несколько команд в скрипте в разных линиях launch impl_1 launch impl_4 launch impl_6 launch impl_2 то по-моему, он будет дожидаться выполнения каждой, а затем переходить к следующей. Не так ли? Или как-то можно сделать, чтобы он выполнил запуск и, не дожидаясь завершения, перешёл к следующей команде? (извиняюсь, в tcl не силён). Quote Ответить с цитированием Share this post Link to post Share on other sites
Raven 0 Posted September 22, 2017 · Report post Про PlanAhead не скажу, а в Vivado команда launch неблокирующая, т.е., запустил - и пошел дальше. Во всяком случае, иначе не требовалась бы команда wait_on_run. И, кстати, дело здесь не в Tcl как таковом, а в Vivado'вских долнительных командах (таких, как launch), в их реализации в данном EDA. Quote Ответить с цитированием Share this post Link to post Share on other sites
Krys 0 Posted September 25, 2017 · Report post Спасибо, действительно, я заблуждался. wait on run есть и в планахеде. Так что моя задача действительно реализуема Quote Ответить с цитированием Share this post Link to post Share on other sites