找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4536

积分

0

好友

592

主题
发表于 2 小时前 | 查看: 5| 回复: 0

前两天写了个操作 DDR4 IP 核的代码,准备用 DDR4 的 example design 仿真文件验证一下。结果在编译 top 文件 sim_tb_top 时,TCL 控制台直接甩出两个错误:

'arch_package' is not declared
'_8G' is not declared

说人话就是:包没声明,编译器完全不认识。网上搜了一圈,没找到能对症下药的解答,只能自己动手试。结果还真给试出来了。

解决方法其实不复杂。第一步,先确认 arch_package.sv 这个文件确实已经包含在工程里了:

Vivado工程文件目录,SystemVerilog目录下包含arch_package.sv文件

第二步,打开 Compile Order 选单,切到 Simulation 窗口,把 arch_package.sv 这个文件拖到 sim_tb_top.sv 的上面:

Vivado Compile Order界面,将arch_package.sv调整到sim_tb_top.sv上方

调整完之后,文件顺序应该变成下面这种状态:

调整后的仿真源文件列表,arch_package.sv位于sim_tb_top.sv之前

原理不复杂:sim_tb_top.sv 在编译时需要引用 arch_package 里定义的参数或类型,而 Vivado 默认的编译顺序可能把这个包排在了后面。SystemVerilog 的 package 必须先编译、后引用,顺序一反,编译器自然就报 is not declared 了。手动调整编译顺序,让包定义先于使用它的模块,问题就解决了。

调整之后应该就能正常编译并启动仿真了。如果你仿真的是别的 IP 核,遇到类似的包未声明问题,大概率也能用同样的方式解决——核心思路就是检查编译顺序,确保被引用的 package 先编译。

这类编译顺序导致的报错在 FPGA 仿真中其实很常见,尤其是手动往工程里添加文件的时候。遇到 is not declared 别急着改代码,先看看 Compile Order 往往能省不少时间。




上一篇:pnpm 12 底层正式切换 Rust:Monorepo 依赖解析提速 3 倍,TypeScript 被彻底替换
下一篇:GTA6夜总会视频泄露背后:黑客炒币割韭菜,假游戏包全是病毒
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-8-28 04:14 , Processed in 1.060357 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表