赛灵思
直播中

李海洪

7年用户 183经验值
私信 关注
[问答]

生成比特流时收到错误

你好,
技术信息:董事会:ZCU104
Vivado 2018.1
附加日志文件
约束文件附加
确切的问题:
将以下两行添加到我的XDC文件中没有做任何事情来防止组合循环错误[DRC LUTLP-1]阻止比特流创建。
请提供更多方法来覆盖此错误。
set_property SEVERITY {警告} [get_drc_checks LUTLP-1]
set_property ALLOW_COMBINATORIAL_LOOPS是的
扩展说明:
我正在研究一个使用环形振荡器产生异步应力的研究项目,因此我无意去除组合环(环形振荡器)。
我尝试生成比特流时收到以下错误。
[DRC LUTLP-1]组合循环警报:10001 LUT细胞形成组合循环。
这可能会造成竞争条件。
时序分析可能不准确。
首选的解决方案是修改设计以移除组合逻辑循环。
如果循环已知并被理解,则可以通过确认条件并在循环中的任何一个网络上设置以下XDC约束来绕过此DRC:'set_property ALLOW_COMBINATORIAL_LOOPS TRUE [get_nets]'。
循环中的一个网络是rings_inst / temp8 [0] _1。
请评估您的设计......(继续)我搜索了Xilinx论坛,并按照下面链接的线程中的建议进行了搜索,
1. [Drc 23-20]规则违规(LUTLP-1)
2. [DRC 23-20]违反规则(LUTLP-1)(同一标题的第二个)
3.AR#58828
4.调试组合循环
5.AR#60591
6. [DRC 23-20]规则违规(LUTLP-1)组合循环
7. [Drc 23-20]规则违规(LUTLP-1)组合循环(同一标题的第二个)
这些都没有解决我的问题。
我想知道我可以采取哪些其他步骤来覆盖此错误。
我试过进去
set_property SEVERITY {警告} [get_drc_checks LUTLP-1]
set_property ALLOW_COMBINATORIAL_LOOPS TRUE直接进入Vivado TcL控制台,而不是XDC文件,但这没有任何效果。
错误消息本身表明我使用以下语法,
set_property ALLOW_COMBINATORIAL_LOOPS TRUE [get_nets]
所以我尝试将以下行插入到我的XDC文件中,以便传递所有可能的环形振荡器实例。
set_property ALLOW_COMBINATORIAL_LOOPS TRUE [get_nets ring_basys / rings_inst / temp *]
也许以上是正确的方法,但我的语法不正确?
ring_basys是我的顶级模块,rings_inst是包含环形振荡器的实体。
我再次重申,我不会删除这些组合循环,而只是试图找到一个可行的解决错误的方法。
谢谢,
标记
runme.log 171 KB
Constraints.txt 41 KB

以上来自于谷歌翻译


以下为原文

Hello,

Technical Info:Board: ZCU104
Vivado 2018.1
log file attached
constraints file attached

Exact Problem:
Adding the follow two lines to my XDC file has done nothing to prevent the combinatorial loop error [DRC LUTLP-1] from preventing bit stream creation. Please suggest more ways to override this error.


set_property SEVERITY {Warning} [get_drc_checks LUTLP-1]set_property ALLOW_COMBINATORIAL_LOOPS TRUE
Expanded Explanation:
I am working on a research project that uses ring oscillators to create asynchronous stress so I have no intention of removing the combinatorial loops (ring oscillators). I receive the following error when I attempt to generate a bit-stream.


[DRC LUTLP-1] Combinatorial Loop Alert: 10001 LUT cells form a combinatorial loop.
This can create a race condition. Timing analysis may not be accurate. The preferred
resolution is to modify the design to remove combinatorial logic loops.
If the loop is known and understood, this DRC can be bypassed by acknowledging
the condition and setting the following XDC constraint on any one of the nets in the loop:
'set_property ALLOW_COMBINATORIAL_LOOPS TRUE [get_nets ]'.
One net in the loop is rings_inst/temp8[0]_1. Please evaluate your design... (Continues) I searched the Xilinx forums and followed the advice found in the threads linked below,

1. [Drc 23-20] Rule violation (LUTLP-1)
2. [DRC 23-20] Rule Violation (LUTLP-1) (second of same title)
3. AR# 58828
4. Debugging combinatorial loop
5. AR# 60591
6. [DRC 23-20] Rule violation (LUTLP-1) Combinatorial Loop
7. [Drc 23-20] Rule violation (LUTLP-1) Combinatorial Loop (second of same title)

None of these has resolved my problem. I would like to know what other steps I can take to override this error. I have tried entering

set_property SEVERITY {Warning} [get_drc_checks LUTLP-1]set_property ALLOW_COMBINATORIAL_LOOPS TRUEdirectly into the Vivado TcL console as opposed to in the XDC file but this had no effect.


The error message itself suggests that I use the following syntax,


set_property ALLOW_COMBINATORIAL_LOOPS TRUE [get_nets ]
So I tried inserting the following line into my XDC file in order to pass all possible ring oscillator instances.


set_property ALLOW_COMBINATORIAL_LOOPS TRUE [get_nets ring_basys/rings_inst/temp*]
Maybe the above is the correct approach but my syntax is incorrect? ring_basys is my top module and rings_inst is the entity that contains the rings oscillators.

Once again I would like to repeat that I will not be removing these combinatorial loops and am simply trying to find a viable work around for the error.

Thank you,

Mark

            runme.log ‏171 KB                Constraints.txt ‏41 KB

回帖(5)

俞丽

2018-11-9 11:55:40
你好@ mmusil。
我建议尝试使用Tcl而不是XDC文件。
存在XDC限制,其中在编写设计检查点时不保存DRC对象(get_drc_checks),例如用于write_bitstream的设计检查点。
set_property USED_IN write_bitstream [get_files /sev.xdc]
https://www.xilinx.com/support/answers/71393.html
此外,将-segments选项添加到get_nets可能会有所帮助。
set_property ALLOW_COMBINATORIAL_LOOPS TRUE [get_nets -segments]
--------------------------------------------------
-----------------------不要忘记回答,kudo,并接受为解决方案.-------------
--------------------------------------------------
----------
在原帖中查看解决方案

以上来自于谷歌翻译


以下为原文

Hi @mmusil. I would suggest trying a Tcl instead of an XDC file. There is an XDC limitation where DRC objects (get_drc_checks) are not saved when writing design checkpoints, like the one used for write_bitstream.
 
set_property USED_IN write_bitstream [get_files /sev.xdc]
 
 
https://www.xilinx.com/support/answers/71393.html
 
Also, adding the -segments option to get_nets could help. 
 
set_property ALLOW_COMBINATORIAL_LOOPS TRUE [get_nets -segments ]

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
View solution in original post
举报

张梅

2018-11-9 12:01:26
嗨,@ mmusil,
1.您可以尝试以下链接中描述的方法:(在源代码中添加属性)
https://forums.xilinx.com/t5/Implementation/Allow-Combinatorial-Loops/m-p/846193#M20427
2.或者使用另一种命令格式: 
set_property ALLOW_COMBINATORIAL_LOOPS true [get_nets -of_objects [get_cells]]
--------------------------------------------------
-----------------------不要忘记回答,kudo,并接受为解决方案.-------------
--------------------------------------------------
----------

以上来自于谷歌翻译


以下为原文

Hi, @mmusil ,
1. You can try the method described in the below link: (add the property in the source code)
https://forums.xilinx.com/t5/Implementation/Allow-Combinatorial-Loops/m-p/846193#M20427
2. Or use another format of the command:
   set_property ALLOW_COMBINATORIAL_LOOPS true [get_nets -of_objects [get_cells ]]
-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
举报

陈秀珍

2018-11-9 12:16:15
在我看来,问题是组合循环中有大量的细胞 - 报告显示10001个细胞。
似乎Vivado希望您在该循环中将该属性应用于每个网络。
这将需要更大的set_property命令集,或者可能是对正则表达式的创造性使用。
人们想知道您是否可以将该属性应用于整个设计 - 即每个网络。
运行可能需要一段时间。
它基本上会关闭全局检查。
但它可能会奏效。
当然,这是用火箭筒杀死蚊子。
我的两分钱,值得一试。
机器时间比工程时间便宜....
如果这确实有效,那么它可能会让Xilinx有一些动力来添加一个全局开关以转换该检查,而不是仅仅具有网络精确版本。
祝你好运
标记

以上来自于谷歌翻译


以下为原文

Looks to me the problem is that there's a LARGE number of cells in the combinatorial loop - the report indicates 10001 cells.
It appears that Vivado wants you to apply that property to EVERY net on that loop.  That'll take a rather larger set of set_property commands, or perhaps a rather creative use of regular expressions.
 
One wonders if you could just apply the property to the WHOLE design - i.e. every net.  It may take a while to run.  It basically turns off that check globally.  But it might work.
 
Sure, this  is using a bazooka to kill a mosquito.  My two cents, it's worth a shot.  Machine time is cheaper than engineering time....
 
If that does work, it might give Xilinx some motivation to add a global switch to turn of that check, instead of only having the net-precise only version.
 
Good Luck
 
Mark
举报

俞丽

2018-11-9 12:26:35
你好@ mmusil。
我建议尝试使用Tcl而不是XDC文件。
存在XDC限制,其中在编写设计检查点时不保存DRC对象(get_drc_checks),例如用于write_bitstream的设计检查点。
set_property USED_IN write_bitstream [get_files /sev.xdc]
https://www.xilinx.com/support/answers/71393.html
此外,将-segments选项添加到get_nets可能会有所帮助。
set_property ALLOW_COMBINATORIAL_LOOPS TRUE [get_nets -segments]
--------------------------------------------------
-----------------------不要忘记回答,kudo,并接受为解决方案.-------------
--------------------------------------------------
----------

以上来自于谷歌翻译


以下为原文

Hi @mmusil. I would suggest trying a Tcl instead of an XDC file. There is an XDC limitation where DRC objects (get_drc_checks) are not saved when writing design checkpoints, like the one used for write_bitstream.
 
set_property USED_IN write_bitstream [get_files /sev.xdc]
 
 
https://www.xilinx.com/support/answers/71393.html
 
Also, adding the -segments option to get_nets could help. 
 
set_property ALLOW_COMBINATORIAL_LOOPS TRUE [get_nets -segments ]

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
举报

更多回帖

发帖
×
20
完善资料,
赚取积分