IEEE 1800-2023 LRM支持的三引号字符串无法被模拟器编译求解
三引号字符串编译报错(未终止字符串)排查方向
核心格式问题(最可能原因)
IEEE 1800-2023标准对三引号字符串的格式有严格要求:
- 开头的三个双引号(
"""")后必须紧跟换行 - 结尾的三个双引号必须单独占一行,行内仅允许三引号及前后空白字符,不能将分号或其他字符与结束三引号放在同一行
你的代码中结束三引号与分号;在同一行,违反了该规则,导致模拟器无法识别字符串结束标记,触发"未终止字符串"错误。修正示例:
module top; string foo; initial begin foo = """ This is one continuous string. Single ' and double " can be placed throughout, and only a triple quote will end it. """ ; $display("%0s",foo); end endmodule
其他排查方向
- 模拟器标准支持:确认模拟器是否启用了IEEE 1800-2023标准支持。部分模拟器默认采用旧版本标准(如1800-2017),需通过编译选项手动指定(例如添加
-std IEEE1800-2023参数)。 - 字符串内部字符检查:确认字符串内部未出现意外的连续三个双引号(若需嵌套需遵循标准规则),不过你的代码无此问题,可优先排除。
内容的提问来源于stack exchange,提问作者Emman
相关产品推荐
相关产品推荐

