verilog - 使用 $bits 时定义宏中的编译错误
问题描述
在编写以下宏时,我收到编译错误:
`define TEST1(out, in, sel) \ \
integer i; \ \
always_comb begin \ \
out = $bits(1'b0); \\
for(i=0; i<=$bits(sel); i=i+1) \\
out = out | ({$bits(out){sel[i]}} & in[i]); \\
end ;
错误消息:
near "[": syntax error, unexpected '[', expecting ',' or '}'.
解决方案
删除空白行,每行只使用一个反斜杠。请参阅 IEEE Std 1800-2017,第 22.5.1 节“定义”:
如果需要多行来指定文本,则换行符前面应加上反斜杠 (\)。前面没有反斜杠的第一个换行符应结束宏文本。
`define TEST1(out, in, sel) \
integer i; \
always_comb begin \
out = $bits(1'b0); \
for(i=0; i<=$bits(sel); i=i+1) \
out = out | ({$bits(out){sel[i]}} & in[i]); \
end ;
推荐阅读
- php - 创建一个在安装另一个插件时运行的 WordPress 插件
- docker - 我可以在 Docker Alpine 容器中使用“mount”吗?
- python - 为什么使用函数后从文件中读取不起作用?
- ibm-watson - 如何从 UiPath 中的 IBMKeyword 中提取数据?
- spring - spring 数据和 ORA-00942: 表或视图不存在
- mongodb - 使用多个 mongo db 访问同一个文件
- google-chrome-extension - chrome.notifications.create 不起作用,已创建警报但未显示通知
- spring - 如果我登录了角度登录页面,则使用 spring boot 2.1 和 angular 6
- neo4j - 关系实体的更新重置 Neo4j 中各种其他丰富关系的值
- delphi - 如何在Delphi中将数组中的数据从最小到最大添加到TRichEdit中