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

如何在SystemVerilog的case inside语句中使用实数范围?

SystemVerilog中case inside语句使用实数匹配失败的解决方法

在SystemVerilog的case inside语句中使用实数范围匹配时,若所有分支都不命中、始终执行default分支,核心问题在于范围的起始值大于结束值。

你的示例代码中存在两处范围顺序错误:

case (value_in) inside
  [-97:-20]:         return 4'hA;  // 正确:-97 < -20
  [-10.25:-1]:       return 4'hB;  // 正确:-10.25 < -1
  [13.78:12.25]:     return 4'h4;  // 错误:13.78 > 12.25
  [29:13]:           return 4'h5;  // 错误:29 > 13
  default: `info("no match");
endcase

解决方案

将所有范围的起始值调整为较小的数值,结束值调整为较大的数值,确保范围是左小右大的顺序:

case (value_in) inside
  [-97:-20]:         return 4'hA;
  [-10.25:-1]:       return 4'hB;
  [12.25:13.78]:     return 4'h4;  // 修正顺序
  [13:29]:           return 4'h5;  // 修正顺序
  default: `info("no match");
endcase

这种修改完全符合SystemVerilog语法规范,不存在工具依赖性,也无需使用realtobits转换,仅需调整范围的数值顺序即可解决匹配失败问题。

内容的提问来源于stack exchange,提问作者Magor Keszthelyi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:47:07