verilog - 为仿真和综合定义不同的参数值
问题描述
我正在使用 systemVerilog,并且我有一个包含我的一些模块参数值的包(例如parameter SPI_RATE = 2_000_000;
)。有什么方法可以为模拟设置一个值,为综合设置一个不同的值?(我正在使用 ModelSim)。例如,我想要类似的东西:
if(IN_SIM) begin
parameter SPI_RATE = 2_000_000;
end
else begin
parameter SPI_RATE = 1_000_000;
end
谢谢!
解决方案
是的,这是可能的。SystemVerilog 支持条件编译器指令,例如`ifdef
、`ifndef
、`else
、`elsif
和`endif
. 请注意,这些指令使用重音符号(ASCII 0x60) 而不是普通的撇号 (ASCII 0x27)。
此外,大多数综合工具都支持宏标识符SYNTHESIS
。因此,您可以执行以下操作:
`ifdef SYNTHESIS
parameter SPI_RATE = 1_000_000;
`else
parameter SPI_RATE = 2_000_000;
`endif
推荐阅读
- sql - 数据库中已经有一个名为“checks”的对象
- ruby-on-rails - 如何在 Rails 中设置数据表编辑器,然后处理 JSON 响应?
- python - 将时间戳转换更改为函数
- python - 如何将小部件添加到 FloatLayout 内的 ScrollView 内的 StackLayout?
- kubernetes - 需要为来自 Kubernetes 前端服务的每个新请求创建一个 pod
- mysql - 无法使用 JSON_EXTRACT 在 MySQL 中提取具有特殊字符的键
- javascript - 脚本无法读取 Cookie
- excel - 如果单元格值与上单元格值相同
- python - 如何使用 Python REST API 更新 Azure DevOps 中的测试结果?
- android - 如何通过 Miracast 从 Android 应用程序投射网页网址?