用Vivado TCL处理实施错误

发布于 2025-02-11 19:57:45 字数 481 浏览 2 评论 0原文

我有几个实现(每个实现策略不同),并且我会在Vivado中使用以下脚本自动运行它们:

reset_run synth_1

launch_runs synth_1 -jobs 16
wait_on_runs synth_1

# Run all implementations
launch_runs impl_1 -jobs 16
launch_runs impl_2 -jobs 16
launch_runs impl_3 -jobs 16
launch_runs impl_4 -jobs 16
launch_runs impl_5 -jobs 16
launch_runs impl_6 -jobs 16

但是有时其中一个失败(工具中的记忆力低或错误,这是已知的),我想抓住它,并且做某事,也许尝试再次运行它或停止下一步(例如,如果实现失败,我不想导出硬件,因为它会导致另一个错误,因为它找不到bitstream)。

您知道如何在我的TCL脚本中遇到这个问题吗?

I have several implementation (each with a different strategy) and I automate running them in Vivado with the following script:

reset_run synth_1

launch_runs synth_1 -jobs 16
wait_on_runs synth_1

# Run all implementations
launch_runs impl_1 -jobs 16
launch_runs impl_2 -jobs 16
launch_runs impl_3 -jobs 16
launch_runs impl_4 -jobs 16
launch_runs impl_5 -jobs 16
launch_runs impl_6 -jobs 16

However sometimes one of them fails (low memory or bug in the tools, this is known) and I would like to catch it and do something, maybe try running it again or stop the next steps (for instance if implementation has failed I don't want to export the hardware, because it would lead to another error because it can't find the bitstream).

Do you know how can I catch this problem within my tcl script?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱给你人给你 2025-02-18 19:57:45

我找到了一个解决方案,但是由于某种原因,结果并不是搜索诸如“ vivado catch run失败”之类的单词时的第一个结果,所以我会发布一个答案:

基于此答案记录我们可以做:

set isAllOk false

set outputOfSynthRun [launch_runs synth_1]

set runStatus [get_property STATUS [get_runs synth_1]

set runProgress [get_property PROGRESS [get_runs synth_1\\]]

if { $outputOfSynthRun == 0 && $runStatus == "XST Complete!" && $runProgress == "100%"} {

set isAllOk true

} else {

set isAllOk false

}

I have found a solution, but for some reason the result is not among the first ones when googling for words like "vivado catch run failure" and similar, so I'll post an answer:

Based on this Answer Record we can do:

set isAllOk false

set outputOfSynthRun [launch_runs synth_1]

set runStatus [get_property STATUS [get_runs synth_1]

set runProgress [get_property PROGRESS [get_runs synth_1\\]]

if { $outputOfSynthRun == 0 && $runStatus == "XST Complete!" && $runProgress == "100%"} {

set isAllOk true

} else {

set isAllOk false

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文