You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Quartus中正确使用SystemVerilog $display生成格式化消息

Quartus中SystemVerilog $display的正确使用方式

在Questa环境下,以下代码可正常格式化输出64位整数:

localparam uint64_t timeout_active = integer'(500e-6 / (g_clockPeriod * 1e-9));
$display(g_instance_name, ": Timeout to get 500us active time is %0d clock cycles", 
         timeout_active);

输出结果:

# motor: Timeout to get 500us active time is 25000 clock cycles

但在Quartus编译时,%0d格式化规则会被忽略,uint64_t(本质为logic [63:0]向量类型)会被显示为二进制,普通整数和实数的格式化也失效。针对该问题,正确的使用方式如下:

  • 显式转换向量为整数类型:Quartus的$display对logic向量默认按二进制解析,需将64位向量显式转换为无符号长整型(longint unsigned),确保工具识别为整数类型。修改示例:

    localparam uint64_t timeout_active = integer'(500e-6 / (g_clockPeriod * 1e-9));
    $display("%s: Timeout to get 500us active time is %0d clock cycles", 
             g_instance_name, longint unsigned'(timeout_active));
    
  • 匹配格式化符与数据类型:对于64位无符号整数,也可使用标准格式化符%lu,同样能让Quartus正确输出十进制数值:

    $display("%s: Timeout to get 500us active time is %lu clock cycles", 
             g_instance_name, longint unsigned'(timeout_active));
    
  • 优先使用标准语法:%0d是Questa的工具扩展语法,Quartus对其支持有限,建议使用SystemVerilog标准格式化符配合显式类型转换,保证跨工具兼容性。

内容的提问来源于stack exchange,提问作者David Belohrad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:24:55