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

как в tcl-скрипте указать приоритет (очерёдность) запуска стратегий

Здравствуйте. Вопрос такой. Есть у нас в 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 из них. Так вот проблема в том, что очерёдность выполнения какая-то произвольная. Есть ли способ жёстко указать, какая очерёдность? Дело в том, что мне хотелось бы некоторые запуски выполнить вперёд, а некоторые после, если уж не будет результата у первых.

post-13271-1505721509_thumb.png

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


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

Первое, что приходит в голову:

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

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


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

Спасибо, тоже думал над таким же решением. Если я Вас правильно понял, то Вы предлагаете сделать примерно так:

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 предыдущие будут закончены. А у них время выполнения у каждого разное, поэтому некоторое время процессор будет недонагружен, когда некоторые из задач уже закончились, но не все.

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


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

Пока выходит так, что невозможно в полуавтоматическом режиме держать процессор загруженным на 100%. Либо поставил и забыл и пусть САПР сам думает, либо порциями. О последовательности выполнения скриптов лучше запросить саппорт!

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


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

Думаю все же, что можно запустить первую порцию в нужном порядке в соотвествии с вашими приоритетами, например

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 в помощь, как говорится.

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


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

Raven, спасибо за подсказки. Надо будет попробовать. Только небольшая поправочка: у меня не вивадо, а планахед. Это несколько более печально ))

И ещё вопросик: когда я запущу несколько команд в скрипте в разных линиях

launch impl_1
launch impl_4
launch impl_6
launch impl_2

то по-моему, он будет дожидаться выполнения каждой, а затем переходить к следующей. Не так ли? Или как-то можно сделать, чтобы он выполнил запуск и, не дожидаясь завершения, перешёл к следующей команде? (извиняюсь, в tcl не силён).

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


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

Про PlanAhead не скажу, а в Vivado команда launch неблокирующая, т.е., запустил - и пошел дальше. Во всяком случае, иначе не требовалась бы команда wait_on_run. И, кстати, дело здесь не в Tcl как таковом, а в Vivado'вских долнительных командах (таких, как launch), в их реализации в данном EDA.

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


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

Спасибо, действительно, я заблуждался. wait on run есть и в планахеде. Так что моя задача действительно реализуема

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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