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

Verilog模块内调用$strobe打印其他模块输出报语法错误求解

问题原因

$strobe属于Verilog的过程性语句,语法要求这类语句必须放在initial、always这类过程块内部,不能直接写在模块的顶层作用域(也就是和模块实例化、信号声明同级的位置)。你直接把$strobe语句放在ibq模块的顶层作用域,不符合语法规则,所以编译器抛出了语法错误、无效模块项的提示。
你之前写在get_quantizer_output模块里的$strobe没有报错,正是因为那些语句都放在了always @(*)的过程块内部,符合语法要求。

解决方法

如果需要打印cluster_index_out的值,把$strobe放到合法的过程块里即可,常用写法参考:

// 写在ibq模块内部,和现有实例化语句同级
// 方案1:时钟沿触发打印,适合时序逻辑调试
always @(posedge clk) begin
  $strobe("cluster_index_out is %d", cluster_index_out);
end

// 方案2:信号变化就打印,适合组合逻辑调试
// always @(*) begin
//   $strobe("cluster_index_out is %d", cluster_index_out);
// end

内容的提问来源于stack exchange,提问作者Usman Sajid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:36:01