在查询类似帖子时我发现这一问题是由于在设计实现时vivado认为没有输出端口所以报错。
于是在.v文件中我添加了一个随意的端口,并且在.xdc文件中为它分配了管脚
这样做的确可以让设计实现的过程顺利进行,但是会发现在summary中,设计实现的资源量与分析综合的资源量有较大差距,在设计实现的资源量表格中几乎无资源占用(我的工程中甚至只占用了一个IO口),并且时序报告中显示NA,这显然是不正确的。
经过我的排查,这一报错在我的工程中出现的原因是我的顶层文件中有多个内部输出没有分配输出端口,所以在设计实现时vivado才会报错告诉我需要有输出端口,用上述做法固然能解决报错,但设计实现时却会因为内部输出没有输出端口而被优化掉,这解释了为什么设计实现后出现结果异常。
针对这种问题,有两种解决方法,一种是老老实实把每个内部输出分配一个输出端口(这里的内部输出指的是从一个例化模块输出而不再输入到其他模块的输出),另一种,在我们不知道分配到哪个管脚合适,只是想看设计报告时,可以通过对内部输出信号添加“keep true”的方式,阻止它被视为多余输出导致整个模块被优化掉的情况,如下所示:
这样就能正常进行设计实现,这是我在出现[Place 30-494]错误时我的工程存在的问题与我的解决办法,遇到这一报错可以检查一下代码中是否有被vivado视为多余的输出端口并为它添加一些处理。