Nick_K 0 Posted January 24 · Report post 3 minutes ago, 5EN5E said: Как будет понимание и реальные результаты, поделюсь. Задал вопрос на Реддите, пока ответов по существу нет. Ну попробуйте через мастер скрипт всё сделать. Уверен так будет проще всего. Quote Ответить с цитированием Share this post Link to post Share on other sites
5EN5E 0 Posted January 24 · Report post 1 minute ago, Nick_K said: Ну попробуйте через мастер скрипт всё сделать. Уверен так будет проще всего. Я бы хотел сборку осуществлять по дизайн флоу, как в Vivado, т.е. по шагам. У меня для каждого этапа написан скрипт, а вот запуском скриптов управляют taskи vscodа. У меня собсно вопрос по написанию этих самих taskов, т.к. у меня не получается передать следующий скрипт в уже запущенный Shell Vivado. Мастер скрипт просто прогонит все нужные мне скрипты за раз, а это не то что мне нужно. Quote Ответить с цитированием Share this post Link to post Share on other sites
Nick_K 0 Posted January 24 · Report post 36 minutes ago, 5EN5E said: Я бы хотел сборку осуществлять по дизайн флоу, как в Vivado, т.е. по шагам. У меня для каждого этапа написан скрипт, а вот запуском скриптов управляют taskи vscodа. У меня собсно вопрос по написанию этих самих taskов, т.к. у меня не получается передать следующий скрипт в уже запущенный Shell Vivado. Мастер скрипт просто прогонит все нужные мне скрипты за раз, а это не то что мне нужно. Немного не согласен. Мастер скрипт будет вызывать нужные скрипты один за другим в соответствии с вышеупомянутым флоу при этом дожидаясь выполнения соответствующего шага. Грубо говоря мастер скрипт состоит из: source synthesis.tcl source place.tcl source route.tcl source program.tcl соответственно каждый скрипт будет запущен по очереди и только после завершения предыдущего (при условии что в скрипте синтеза есть команда запуска собственно синтеза launch_runs synth_1 и т.д.). Сложности начнутся, когда нужно сделать только синтез, к примеру. Тогда придётся городить скрипт с аргументами запуска. Quote Ответить с цитированием Share this post Link to post Share on other sites
5EN5E 0 Posted January 24 · Report post 1 minute ago, Nick_K said: Немного не согласен. Мастер скрипт будет вызывать нужные скрипты один за другим в соответствии с вышеупомянутым флоу при этом дожидаясь выполнения соответствующего шага. Грубо говоря мастер скрипт состоит из: source synthesis.tcl source place.tcl source route.tcl source program.tcl соответственно каждый скрипт будет запущен по очереди и только после завершения предыдущего (при условии что в скрипте синтеза есть команда запуска собственно синтеза launch_runs synth_1 и т.д.). Сложности начнутся, когда нужно сделать только синтез, к примеру. Тогда придётся городить скрипт с аргументами запуска. При Вашем подходе получается сквозной маршрут сборки, т.е. если мне нужно сделать place, то обязательно выполнится этап синтеза. Я бы хотел отсинтезировать проект, запустить ГУЙ, поковырять DEBUG, поиграться с репортами, выйти из ГУЯ. Если все ок, то запустить сборку следующего этапа. Quote Ответить с цитированием Share this post Link to post Share on other sites
Nick_K 0 Posted January 24 · Report post 3 minutes ago, 5EN5E said: При Вашем подходе получается сквозной маршрут сборки, т.е. если мне нужно сделать place, то обязательно выполнится этап синтеза. Я бы хотел отсинтезировать проект, запустить ГУЙ, поковырять DEBUG, поиграться с репортами, выйти из ГУЯ. Если все ок, то запустить сборку следующего этапа. Это то, что я указал последним. Придётся добавлять аргументы на запуск мастер скрипта (по крайней мере у нас так сделано) и получится нечто: set run_step=place // выполнить присвоение в обычной консоли или через bash/bat скрипт // Далее идёт вместимость собственно мастер скрипта if { $env(run_step) == all } { source synthesis.tcl source place.tcl source route.tcl source program.tcl } elsif { $env(run_step) == syn } { source synthesis.tcl } elsif { $env(run_step) == place } { source place.tcl } elsif { $env(run_step) == route } { source route.tcl } elsif { $env(run_step) == program } { source program.tcl } else { puts "Uncorrect argument passed" } Quote Ответить с цитированием Share this post Link to post Share on other sites
5EN5E 0 Posted January 24 · Report post 25 minutes ago, Nick_K said: Это то, что я указал последним. Придётся добавлять аргументы на запуск мастер скрипта (по крайней мере у нас так сделано) и получится нечто: set run_step=place // выполнить присвоение в обычной консоли или через bash/bat скрипт // Далее идёт вместимость собственно мастер скрипта if { $env(run_step) == all } { source synthesis.tcl source place.tcl source route.tcl source program.tcl } elsif { $env(run_step) == syn } { source synthesis.tcl } elsif { $env(run_step) == place } { source place.tcl } elsif { $env(run_step) == route } { source route.tcl } elsif { $env(run_step) == program } { source program.tcl } else { puts "Uncorrect argument passed" } Спасибо за идею. Тогда остается вопрос по написанию taskов в vscode, чтоб этот же скрипт с новыми параметрами передать в существующий shell. Quote Ответить с цитированием Share this post Link to post Share on other sites
Nick_K 0 Posted January 24 · Report post 10 minutes ago, 5EN5E said: Тогда остается вопрос по написанию taskов в vscode, чтоб этот же скрипт с новыми параметрами передать в существующий shell. Вот у меня был собственно вопрос как эти самые task'и создавать. Может и себе смогу чего оптимизировать в процессе. Это скорее уточнение предыдущего вопроса. Quote Ответить с цитированием Share this post Link to post Share on other sites
5EN5E 0 Posted January 24 (edited) · Report post 25 minutes ago, Nick_K said: Вот у меня был собственно вопрос как эти самые task'и создавать. Может и себе смогу чего оптимизировать в процессе. Это скорее уточнение предыдущего вопроса. При написании taskов я руководствовался приведенной ниже документацией: https://code.visualstudio.com/docs/editor/tasks#_custom-tasks Моей фантазии хватило разве что на это (кусок task.json): { "label": "viv: Synthesis Project", "type": "shell", "command": "vivado -mode tcl -source c:/utils/nonproject/synth_step.tcl" } Edited January 24 by 5EN5E Quote Ответить с цитированием Share this post Link to post Share on other sites
Nick_K 0 Posted January 24 · Report post Спасибо. По сути это и есть интересный мне момент. От себя добавлю, возможно изменив команду с добавлением $arg получится запускать Виваду и передавать ей нужные аргументы: 58 minutes ago, 5EN5E said: "command": "vivado -mode tcl -source c:/utils/nonproject/synth_step.tcl $arg" Quote Ответить с цитированием Share this post Link to post Share on other sites