【问题标题】:compare multiple values with a variable in SystemVerilog将多个值与 SystemVerilog 中的变量进行比较
【发布时间】:2020-05-13 23:44:41
【问题描述】:

我有逻辑将一个变量与多个值进行比较。 例如:

logic [3:0] a;
always_comb begin
    flag = (a == 'd13) || (a == 'd2) || (a=='d1); //can this be simplified?
end

有没有简单的方法来写这个语句?

【问题讨论】:

    标签: verilog system-verilog register-transfer-level


    【解决方案1】:

    使用inside 运算符更简洁:

    always_comb begin
        flag = (a inside {1, 2, 13});
    end
    

    这也更具可扩展性,让您可以轻松地在集合中添加或删除值。

    语法还支持值的范围:

        flag = (a inside {[1:2], 13});
    

    请参阅 IEEE Std 1800-2017,第 11.4.13 节 设置成员运算符。

    由于集合中的值都是常数,所以应该是可综合的(但YMMV)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      相关资源
      最近更新 更多