Vivado[DRC 23-20]
近日,在Vivado15.2上实现一个简单的RS触发器,在生成比特流时,遇到[DRC 23-20]这个错误,错误提示如下:[DRC 23-20] Rule violation (LUTLP-1) Combinatorial Loop - 1 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. To allow bitstream creation for designs with combinatorial logic loops (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks LUTLP-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Q_OBUF_inst_i_1.
大概的意思就是说我在设计时,有一个循环电路,这会造成竞争冒险,推荐修改设计。如果想让Vivado允许这个循环电路存在(不推荐),可以使用命令:set_property SEVERITY {Warning} [get_drc_checks LUTLP-1],将该命令写成一个.tcl文件,并且在生成比特流文件之前,将该文件加到预处理处。
由于RS触发器天然就是循环电路,故我并不能修改设计。那么问题来了,如何把一条命令写成.tcl文件,并加到写比特流的预处理处呢?在网上看了很多帖子,大家提供了很多解决的思路,但是每个人的问题不太相同,开始我完全按照帖子的提示操作,并没有解决问题。后在导师的帮助下,结合Vivado给出的提示与网友提供的思路,顺利解决问题。
- 新建一个记事本。
- 复制“set_property SEVERITY {Warning} [get_drc_checks LUTLP-1]”到记事本中,这一步中导师特地叮嘱要加一个回车,以避免不必要的麻烦,虽然还不理解,照办就是了。
- 保存并命名,名字自己起,但文件的后缀名要写成“.tcl”,保存类型选“所有文件”。
4.在比特流设置中,有.tcl文件的预处理和后处理,点击箭头所指的地方,将写好的.tcl文件添加进去,点击OK。
5.重新生成比特流文件,就不会再报错了。