Vivado HLS实现RISCV遇语法错误,求修正方案
解决Vivado HLS中"missing terminating ' character"错误
这个错误的核心原因是你在代码里使用了不符合Verilog/SystemVerilog语法的数字常量写法,Vivado HLS无法解析12'0b0这种格式。
问题根源拆解
在Verilog的语法规则里,二进制常量的正确格式是:[位宽]'[进制符][数字],其中二进制的进制符是b(或大写B),不需要加前缀0。你写的12'0b0把0b混在一起,编译器会误判单引号的作用范围,找不到正确的终止位置,所以才会在每一行重复抛出这个错误。
快速修复方案
把所有类似12'0b0的代码行,修改成标准的Verilog二进制常量写法即可:
func imm_u return {inst[31:12],12'b0};
扩展:不同进制的正确写法示例
为了避免后续再踩类似的坑,给你整理了常用进制的规范写法:
- 二进制:
8'b10101100(8位二进制数值) - 十进制:
10'd255(10位十进制数值,值为255) - 十六进制:
32'h12345678(32位十六进制数值) - 八进制:
6'o77(6位八进制数值)
如果不需要显式指定位宽,也可以用'b0这种写法(表示匹配上下文位宽的二进制0),不过在Vivado HLS中明确指定位宽,能减少隐式位宽转换带来的意外问题,建议优先使用带位宽的写法。
内容的提问来源于stack exchange,提问作者Ahmed
相关产品推荐
相关产品推荐

