简体   繁体   中英

compare multiple values with a variable in SystemVerilog

I have logic to compare a variable with multiple values. For example:

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

Is there a easy way to write this statement?

This is more concise using the inside operator:

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

This is more scalable as well, allowing you to easily add or remove values from the set.

The syntax also supports ranges of values:

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

Refer to IEEE Std 1800-2017, section 11.4.13 Set membership operator.

Since the values in the set are all constants, it should be synthesizable (but YMMV).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM