Vivado 在产生 bitstream 时遇到 Vivado write_bitstream - ERROR: [Drc 23-20] Rule violation (NSTD-1)…

问题

生成比特流时,会出现以下错误消息:

 

 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。

 

 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”(生成比特流),而无需重新运行“实现”。


set_property SEVERITY {Warning} [get_drc_checks NSTD-1]
set_property SEVERITY {Warning} [get_drc_checks UCIO-1]

 


 

对于项目模式的 Tcl 脚本流,请创建一个 .tcl 文件并向其中添加以下两个命令。

 

set_property SEVERITY {Warning} [get_drc_checks NSTD-1]
set_property SEVERITY {Warning} [get_drc_checks UCIO-1]

 

在“ launch_runs -to_step write_bitstream”命令之前,将以下命令添加到脚本中。

 

set_property STEPS.WRITE_BITSTREAM.TCL.PRE {.tcl} [get_runs impl_1]

 

对于非项目模式的 Tcl 脚本流,请将以下两个命令添加到脚本中的 write_bitstream 命令之前。

 

set_property SEVERITY {Warning} [get_drc_checks NSTD-1]
set_property SEVERITY {Warning} [get_drc_checks UCIO-1]

 

不管您使用什么流程,都将以下命令添加到 XDC 并重新运行 Implementation。

 

set_property BITSTREAM.General.UnconstrainedPins {Allow} [current_design]

 

3. 如果您只需要从现有已完成的实施运行中生成位文件,并暂时忽略那些不受约束的 I / O,请使用以下解决方案:

 

打开已实现的设计或打开路由的 DCP,然后在 Tcl 控制台中运行以下命令:

 

set_property SEVERITY {Warning} [get_drc_checks NSTD-1]
set_property SEVERITY {Warning} [get_drc_checks UCIO-1]
write_bitstream .bit

 

或着

 

set_property BITSTREAM.General.UnconstrainedPins {Allow} [current_design]
write_bitstream .bit

 

注意:

1)在 GUI 项目模式下,当您在位流生成中收到这些错误时,仅在 Tcl 控制台中运行上述 set_property 命令,然后仅重新运行“ Generate Bitstream”将无法解决这些错误。

 

这是因为属性未应用到已经完成的实施运行中。当您重新运行“生成比特流”时,将加载此实现运行,并且仅使用存储在其中的属性。

 

2)在某些情况下,这些 DRC 错误是由工具问题引起的。以下是两个 DRC 错误是由工具问题引起的示例。