Vivado在产生bitstream时遇到Vivado write_bitstream - ERROR: [Drc 23-20] Rule violation (NSTD-1)…
问题
生成比特流时,会出现以下错误消息:
代码语言:javascript复制
1. ERROR: [Drc 23-20] Rule violation (NSTD-1) Unspecified I/O Standard
- 3 out of 3 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT',
- instead of a user assigned specific value. This may
cause I/O contention or incompatibility with the board power or
connectivity affecting performance, signal integrity or in extreme
cases cause damage to the device or the components to which it is
connected. To correct this violation, specify all I/O standards.
This design will fail to generate a bitstream unless all logical
ports have a user specified I/O standard value defined. To allow
bitstream creation with unspecified I/O standard values (not
recommended), use set_property SEVERITY {Warning} [get_drc_checks
NSTD-1]. Problem ports: clk, din, dout.
翻译: 错误:[Drc 23-20]违反规则(NSTD-1)未指定I / O标准-3个逻辑端口中有3个使用I / O标准(IOSTANDARD)值’DEFAULT’,而不是用户指定的特定值。这可能会导致I / O争用或与电路板电源或连接性不兼容,从而影响性能,信号完整性,或者在极端情况下会损坏设备或与其连接的组件。若要更正此冲突,请指定所有I / O标准。除非所有逻辑端口都定义了用户指定的I / O标准值,否则此设计将无法生成位流。要允许使用未指定的I / O标准值创建位流(不推荐),请使用set_property SEVERITY {Warning} [get_drc_checks NSTD-1]。问题端口:clk,din,dout。
代码语言:javascript复制
1. ERROR: [Drc 23-20] Rule violation (UCIO-1) Unconstrained Logical
Port - 3 out of 3 logical ports have no user assigned specific
location constraint (LOC). This may cause I/O contention or
incompatibility with the board power or connectivity affecting
performance, signal integrity or in extreme cases cause damage to
the device or the components to which it is connected. To correct
this violation, specify all pin locations. This design will fail to
generate a bitstream unless all logical ports have a user specified
site LOC constraint defined. To allow bitstream creation with
unspecified pin locations (not recommended), use set_property
SEVERITY {Warning} [get_drc_checks UCIO-1]. Problem ports: clk, din,
dout.
翻译: 错误:[Drc 23-20]违反规则(UCIO-1)不受限制的逻辑端口-3个逻辑端口中的3个没有用户分配的特定位置约束(LOC)。这可能会导致I / O争用或与电路板电源或连接性不兼容,从而影响性能,信号完整性,或者在极端情况下会损坏设备或与其连接的组件。要更正此冲突,请指定所有引脚位置。除非所有逻辑端口都定义了用户指定的站点LOC约束,否则此设计将无法生成比特流。要允许使用未指定引脚位置的位流创建(不推荐),请使用set_property SEVERITY {Warning} [get_drc_checks UCIO-1]。问题端口:clk,din,dout。
解决方案:
该错误消息是为了通知客户他们需要设置IOSTANDARD和PACKAGE_PIN,以保护设备免受意外损坏,这可能是由于工具在不了解电路板电压或连接的情况下随机选择了引脚位置或IOSTANDARD而引起的。
例如:
如果引脚在板上接地,而Vivado选择此引脚作为高电平驱动的输出,则会引起竞争。 如果板上有一个针对该引脚的端接方案,即HSTL或SSTL建议的端接,并且Vivado选择LVCMOS18(默认值),则信号的信号完整性将达不到最佳状态。 7系列的默认I / O标准是LVCMOS18,用于所有存储区的单端信号。在以前的体系结构中,默认的I / O标准为LVCMOS25。
以下是这些错误的可能解决方案。
1.(推荐)为设计中的所有I / O添加IOSTANDARD和PACKAGE_PIN约束。
2.如果您不关心那些不受限制的I / O,请使用以下解决方案之一。
对于GUI项目流程,创建一个.tcl文件,并将其放在其中的两个命令下面。在“比特流设置”的“ tcl.pre”选项中指定此.tcl文件。然后,您可以重新运行“ Generate Bitstream”(生成比特流),而无需重新运行“实现”。
代码语言:javascript复制set_property SEVERITY {Warning} [get_drc_checks NSTD-1]
set_property SEVERITY {Warning} [get_drc_checks UCIO-1]
对于项目模式的Tcl脚本流,请创建一个.tcl文件并向其中添加以下两个命令。
代码语言:javascript复制set_property SEVERITY {Warning} [get_drc_checks NSTD-1]
set_property SEVERITY {Warning} [get_drc_checks UCIO-1]
在“ launch_runs -to_step write_bitstream”命令之前,将以下命令添加到脚本中。
代码语言:javascript复制set_property STEPS.WRITE_BITSTREAM.TCL.PRE {<path_and_file_name>.tcl} [get_runs impl_1]
对于非项目模式的Tcl脚本流,请将以下两个命令添加到脚本中的write_bitstream命令之前。
代码语言:javascript复制set_property SEVERITY {Warning} [get_drc_checks NSTD-1]
set_property SEVERITY {Warning} [get_drc_checks UCIO-1]
不管您使用什么流程,都将以下命令添加到XDC并重新运行Implementation。
代码语言:javascript复制set_property BITSTREAM.General.UnconstrainedPins {Allow} [current_design]
3.如果您只需要从现有已完成的实施运行中生成位文件,并暂时忽略那些不受约束的I / O,请使用以下解决方案:
打开已实现的设计或打开路由的DCP,然后在Tcl控制台中运行以下命令:
代码语言:javascript复制set_property SEVERITY {Warning} [get_drc_checks NSTD-1]
set_property SEVERITY {Warning} [get_drc_checks UCIO-1]
write_bitstream <path_and_file_name>.bit
或着
代码语言:javascript复制set_property BITSTREAM.General.UnconstrainedPins {Allow} [current_design]
write_bitstream <path_and_file_name>.bit
注意:
1)在GUI项目模式下,当您在位流生成中收到这些错误时,仅在Tcl控制台中运行上述set_property命令,然后仅重新运行“ Generate Bitstream”将无法解决这些错误。
这是因为属性未应用到已经完成的实施运行中。当您重新运行“生成比特流”时,将加载此实现运行,并且仅使用存储在其中的属性。
2)在某些情况下,这些DRC错误是由工具问题引起的。以下是两个DRC错误是由工具问题引起的示例。