Vivado生成bitstream报错,DRC NSTD-1与DRC UCIO-1]

错误信息如下:

[DRC NSTD-1] Unspecified I/O Standard: 102 out of 102 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 this command: set_property SEVERITY {Warning} [get_drc_checks NSTD-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. Problem ports: dout_ch1[23:0], dout_ch2[23:0], dout_ch3[23:0], dout_ch4[23:0], clk, dout_valid_ch1, dout_valid_ch2, dout_valid_ch3, dout_valid_ch4, and rstn.

[DRC UCIO-1] Unconstrained Logical Port: 102 out of 102 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 this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-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. Problem ports: dout_ch1[23:0], dout_ch2[23:0], dout_ch3[23:0], dout_ch4[23:0], clk, dout_valid_ch1, dout_valid_ch2, dout_valid_ch3, dout_valid_ch4, and rstn.

Vivado生成bitstream报错,DRC NSTD-1与DRC UCIO-1 -1

刚开始很奇怪,因为这些报错的信号在bd中是中间信号(如下图),我也没有给它们创建port,这些vivado却要给它们分配引脚,打开IO ports窗口,发现它们都被随机分配了引脚,这是怎么回事呢?

Vivado生成bitstream报错,DRC NSTD-1与DRC UCIO-1 -2

百度发现,有很多人遇到了这个问题,解决方法也记录在Xilinx官网中:

Vivado write_bitstream - ERROR: [Drc 23-20] Rule violation (NSTD-1) Unspecified I/O Standard - X out of Y logical ports use I/O standard (IOSTANDARD) value ‘DEFAULT’, instead of a user assigned specific value

Vivado生成bitstream报错,DRC NSTD-1与DRC UCIO-1 -3

解决方案是对vivado进行设置,让其忽略这些未在约束中分配引脚的信号。这样设置之后可以生成比特流了。

但是这个错误是怎么产生的呢?经过几个小时的折腾,我发现Source中的Top不知道什么时候被改变了,应该是wrapper才对啊,原来是将一个中间文件设为了Top,那当然vivado要给它的端口信号分配引脚了,原来如此!

Top改为wrapper后,生成比特流就不出错了!

记录一下,小问题查起来也很花时间。

Vivado生成bitstream报错,DRC NSTD-1与DRC UCIO-1 -4

### 解决方案概述 DRC NSTD-1 错误提示表明,在FPGA设计中,有部分逻辑端口未指定具体的I/O标准(`IOSTANDARD`),而是使用默认值 `DEFAULT`。这种设置可能导致硬件行为不可预测,甚至可能引发信号完整性问题或设备损坏[^1]。 为了消除这一警告并提高设计的可靠性,需为涉及的所有逻辑端口显式指定合适的 `IOSTANDARD` 值。以下是具体方法: --- ### 方法一:通过 Vivado GUI 设置 I/O 标准 可以利用 Vivado 的图形化界面完成 I/O 标准配置: 1. 打开 **Implementation** 流程下的 **I/O Planning** 工具。 2. 定位到报错提到的具体端口列表(如 `W_data_i_0[31:0]`, `W_wren_i_0`, `PL_CLK`, `dma_start[0]`, 和 `dma_rstn[0]`)。 3. 右键点击目标端口,选择 **Set Properties** 或者双击进入属性编辑器。 4. 将 `IOSTANDARD` 属性修改为目标板卡支持的标准(例如 LVCMOS18, HSTL_I_DCI 等)。这些值通常由开发板手册提供[^2]。 --- ### 方法二:通过 Tcl 脚本批量设定 I/O 标准 如果项目规模较大或者需要自动化处理,则可以通过编写 Tcl 脚本来统一管理所有端口的 I/O 配置。以下是一个示例脚本片段: ```tcl # 设定特定端口的 IOStandard set_property IOSTANDARD LVCMOS18 [get_ports {W_data_i_0[*]}] set_property IOSTANDARD LVCMOS18 [get_ports W_wren_i_0] set_property IOSTANDARD DIFF_HSTL_I_DCI [get_ports PL_CLK] # 对于其他端口重复上述操作... ``` 将以上代码保存至 `.tcl` 文件,并将其作为实现阶段的一个预挂钩步骤加载。这样可以在每次重新编译时自动应用所需的更改。 #### 如何添加预挂钩? 执行如下命令即可将自定义TCL文件挂载到bitstream生成流程之前: ```tcl add_files -fileset constrs_1 -norecurse your_custom_io.tcl set_property STEPS.WRITE_BITSTREAM.ARGS.PRE_HOOK your_custom_io.tcl [get_runs impl_1] ``` --- ### 方法三:忽略错误(不建议) 尽管强烈反对忽视此类问题,但如果确实希望暂时绕过此检查点而不修正实际物理层参数的话,可通过降低其严重级别来达成目的: ```tcl set_property SEVERITY {Warning} [get_drc_checks NSTD-1] ``` 需要注意的是,这种方法仅适用于调试期间快速验证功能正确性的场景;最终产品发布前仍应彻底解决问题以保障长期稳定性安全性。 --- ### 总结 综上所述,最理想的解决方案是从根本上去除潜在风险源——即明确定义每一个外部接口所遵循的确切电气特性描述符(IO Standards),从而杜绝因误解而导致的各种隐患发生可能性。同时也要记得定期复查更新后的约束条件是否仍然满足当前环境需求变化情况。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值