Jump to content

    

Recommended Posts

3 minutes ago, 5EN5E said:

Как будет понимание и реальные результаты, поделюсь. Задал вопрос на Реддите, пока ответов по существу нет.

Ну попробуйте через мастер скрипт всё сделать. Уверен так будет проще всего.

Share this post


Link to post
Share on other sites
1 minute ago, Nick_K said:

Ну попробуйте через мастер скрипт всё сделать. Уверен так будет проще всего.

Я бы хотел сборку осуществлять по дизайн флоу, как в Vivado, т.е. по шагам. У меня для каждого этапа написан скрипт, а вот запуском скриптов управляют taskи vscodа. У меня собсно вопрос по написанию этих самих taskов, т.к. у меня не получается передать следующий скрипт в уже запущенный Shell Vivado. Мастер скрипт просто прогонит все нужные мне скрипты за раз, а это не то что мне нужно.

Share this post


Link to post
Share on other sites
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 и т.д.).

Сложности начнутся, когда нужно сделать только синтез, к примеру. Тогда придётся городить скрипт с аргументами запуска.

Share this post


Link to post
Share on other sites
1 minute ago, Nick_K said:

Немного не согласен. Мастер скрипт будет вызывать нужные скрипты один за другим в соответствии с вышеупомянутым флоу при этом дожидаясь выполнения соответствующего шага.

Грубо говоря мастер скрипт состоит из:


source synthesis.tcl
source place.tcl
source route.tcl
source program.tcl

соответственно каждый скрипт будет запущен по очереди и только после завершения предыдущего (при условии что в скрипте синтеза есть команда запуска собственно синтеза launch_runs synth_1 и т.д.).

Сложности начнутся, когда нужно сделать только синтез, к примеру. Тогда придётся городить скрипт с аргументами запуска.

При Вашем подходе получается сквозной маршрут сборки, т.е. если мне нужно сделать place, то обязательно выполнится этап синтеза. Я бы хотел отсинтезировать проект, запустить ГУЙ, поковырять DEBUG, поиграться с репортами, выйти из ГУЯ. Если все ок, то запустить сборку следующего этапа.

Share this post


Link to post
Share on other sites
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"
}

 

Share this post


Link to post
Share on other sites
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. 

Share this post


Link to post
Share on other sites
10 minutes ago, 5EN5E said:

Тогда остается вопрос по написанию taskов в vscode, чтоб этот же скрипт с новыми параметрами передать в существующий shell.

Вот у меня был собственно вопрос как эти самые task'и создавать. Может и себе смогу чего оптимизировать в процессе.

Это скорее уточнение предыдущего вопроса.

Share this post


Link to post
Share on other sites
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 by 5EN5E

Share this post


Link to post
Share on other sites

Спасибо. По сути это и есть интересный мне момент.

От себя добавлю, возможно изменив команду с добавлением $arg получится запускать Виваду и передавать ей нужные аргументы:

58 minutes ago, 5EN5E said:

"command": "vivado -mode tcl -source c:/utils/nonproject/synth_step.tcl $arg"

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.