在FPGA设计流程中,使用Vivado生成比特流(bitstream)是最后的关键一步。然而,有时在这一步你会遇到一个令人头疼的错误:“This design contains one or more cells for which bitstream generation is not permitted”。这通常意味着你设计中使用的某个IP核缺少有效的许可证。

如上图所示,错误信息明确指出问题与加密的密钥文件有关,并建议更新许可证或重置IP输出产品。别担心,这个问题在计算机基础层面的理解就是软件授权验证失败。下面我们一步步来解决它。
第一步:检查当前许可证状态
首先,我们需要确认是否是许可证(License)过期或缺失导致的。在Vivado界面中,点击顶部菜单栏的 Help -> Manage License。

在弹出的许可证管理器中,你可以查看当前加载的所有许可证及其状态,重点关注你设计中用到的IP核(例如以太网MAC、视频处理IP等)对应的许可证是否有效、是否过期。

第二步:获取或更新所需许可证
如果发现许可证已过期或缺失,你需要前往Xilinx(AMD)官方网站获取新的许可证。
-
在许可证管理器中,点击 Get License 或相关按钮,它会引导你进入官方许可证获取页面。

-
在官网的许可证管理页面,你可以搜索或浏览你需要的特定IP核的许可证。通常可以选择“Evaluation”(评估)或已购买的许可证。

-
找到你需要的IP核许可证(例如下图的以太网相关IP),点击“加”号按钮添加到清单。

第三步:生成并绑定节点许可证
添加许可证后,需要为它指定运行的机器(节点)。
-
点击“添加主机”或类似选项,进入主机信息填写页面。

-
关键一步是填写 Host ID。如果你不知道本机的Host ID,可以回到许可证管理器的 View License Status 页面查看,通常在 Host ID in L... 列会显示 ANY 或具体的ID。更准确的做法是使用提供的“添加主机”向导,它会自动检测或让你选择操作系统类型来生成ID。

(查看现有许可证的Host ID信息)

-
填写完主机信息后,点击“下一个”继续。

-
阅读并接受最终用户许可协议。

-
完成流程后,点击“下载”将生成的 .lic 许可证文件保存到本地。

第四步:在Vivado中加载新许可证
下载好许可证文件后,需要将其加载到Vivado中。
- 回到Vivado License Manager,选择 Load License。
- 点击 Copy License... 按钮,找到你刚刚下载的
.lic 文件,将其复制到Vivado的默认许可证目录(通常是 C:\Users\[用户名]\AppData\Roaming\Xilinx\licenses)。Vivado会自动检测该目录下的新许可证。

第五步:重置并重新生成比特流
加载新许可证后,问题可能还未立即解决。因为Vivado在综合时已经基于旧的(或无)许可证信息生成了IP核的网表。我们需要重置IP输出产品,强制Vivado用新的许可证信息重新生成IP。
- 在Vivado的 Sources 窗口中,找到你的Block Design对应的顶层文件(通常是
.bd 文件)。
- 右键点击该文件,选择 Reset Output Products...。

- 重置完成后,再右键点击该文件,选择 Generate Output Products...。等待IP核重新生成。
- 最后,再次尝试运行 Generate Bitstream。
完成以上步骤后,困扰你的“bitstream generation is not permitted”错误应该就能得到解决,比特流文件可以顺利生成了。处理这类编译和工具链的授权问题,需要耐心和清晰的排查步骤。如果你在FPGA开发中遇到了其他有趣或棘手的问题,欢迎来云栈社区分享和讨论。
|