首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查Systemverilog中最小综合区域的范围

检查Systemverilog中最小综合区域的范围
EN

Stack Overflow用户
提问于 2022-08-14 14:53:56
回答 1查看 112关注 0票数 0

我有各种不同的输入,宽度不同。我必须检测每个输入是否在某些特定范围内。例如,输入可以是6位,因此理论上的值为0-63。但是,我想看看它是否恰好是2-5,8,14-50,52,54,56-58,61-63。有没有哪种方法比直接上升范围或相等的比较更适合于区域综合?目前我会:

代码语言:javascript
复制
always_comb begin
   value_is_in_special_range = 1'b0;
   if (
      (value >= 'd2 && value <= 'd5) ||
      (value == 'd8) ||
      (value >= 'd14 && value <= 'd50) ||
      (value == 'd52) ||
      (value == 'd54) ||
      (value >= 'd56 && value <= 'd58) ||
      (value >= 'd61 && value <= 'd63) ||
   ) begin
      value_is_in_special_range = 1'b1;
   end
end

各种输入的特定范围是相当随机的,可以很好地落在相对较少的大范围内,或者它们可以分散在整个地方。

EN

回答 1

Stack Overflow用户

发布于 2022-08-14 17:18:52

您应该能够将这段代码放入合成工具中,优化应该负责共享公共子表达式,以使所有这些比较最有效。这假设要比较的所有值和范围都是常量。

顺便说一句,用SystemVerilog编写这个表达式的一种更简单的方法是使用set成员资格运算符:

代码语言:javascript
复制
assign value_is_in_special_range = 
    value inside {[2:5], 8, [14:50], 52, 54, [56:58], [61:63]};
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73352607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档