Add regression test for expressions in attributes
Check that all types of constant expressions are supported in attributes. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
parent
497c98bf9b
commit
481f461e59
|
|
@ -0,0 +1,81 @@
|
|||
// Check that all types of constant expression are supported for attributes
|
||||
|
||||
module test;
|
||||
|
||||
localparam [7:0] x = 1;
|
||||
|
||||
// Binary operators
|
||||
(* attr = x + x *) reg attr0;
|
||||
(* attr = x - x *) reg attr1;
|
||||
(* attr = x * x *) reg attr2;
|
||||
(* attr = x / x *) reg attr3;
|
||||
(* attr = x % x *) reg attr4;
|
||||
(* attr = x == x *) reg attr5;
|
||||
(* attr = x != x *) reg attr6;
|
||||
(* attr = x === x *) reg attr7;
|
||||
(* attr = x !== x *) reg attr8;
|
||||
(* attr = x && x *) reg attr9;
|
||||
(* attr = x || x *) reg attr10;
|
||||
(* attr = x ** x *) reg attr11;
|
||||
(* attr = x < x *) reg attr12;
|
||||
(* attr = x <= x *) reg attr13;
|
||||
(* attr = x > x *) reg attr14;
|
||||
(* attr = x >= x *) reg attr15;
|
||||
(* attr = x & x *) reg attr16;
|
||||
(* attr = x | x *) reg attr17;
|
||||
(* attr = x ^ x *) reg attr18;
|
||||
(* attr = x ^~ x *) reg attr19;
|
||||
(* attr = x >> x *) reg attr20;
|
||||
(* attr = x << x *) reg attr21;
|
||||
(* attr = x >>> x *) reg attr22;
|
||||
(* attr = x <<< x *) reg attr23;
|
||||
|
||||
// Unary operators
|
||||
(* attr = +x *) reg attr24;
|
||||
(* attr = -x *) reg attr25;
|
||||
(* attr = !x *) reg attr26;
|
||||
(* attr = ~x *) reg attr27;
|
||||
(* attr = &x *) reg attr28;
|
||||
(* attr = ~&x *) reg attr29;
|
||||
(* attr = |x *) reg attr30;
|
||||
(* attr = ~|x *) reg attr31;
|
||||
(* attr = ^x *) reg attr32;
|
||||
(* attr = ~^x *) reg attr33;
|
||||
|
||||
// Ternary operator
|
||||
(* attr = x ? x : x *) reg attr34;
|
||||
|
||||
// Concat
|
||||
(* attr = {x,x} *) reg attr35;
|
||||
(* attr = {3{x}} *) reg attr36;
|
||||
|
||||
// Part select
|
||||
(* attr = x[0] *) reg attr37;
|
||||
(* attr = x[1:0] *) reg attr38;
|
||||
(* attr = x[0+:1] *) reg attr39;
|
||||
(* attr = x[1-:1] *) reg attr40;
|
||||
|
||||
// Parenthesis
|
||||
(* attr = (x) *) reg attr41;
|
||||
|
||||
// Literals
|
||||
(* attr = 10 *) reg attr42;
|
||||
(* attr = 32'h20 *) reg attr43;
|
||||
(* attr = "test" *) reg attr44;
|
||||
|
||||
// System function
|
||||
(* attr = $clog2(10) *) reg attr45;
|
||||
|
||||
// Function
|
||||
function fn;
|
||||
input x;
|
||||
fn = x*2;
|
||||
endfunction
|
||||
|
||||
(* attr = fn(10) *) reg attr46;
|
||||
|
||||
initial begin
|
||||
$display("PASSED");
|
||||
end
|
||||
|
||||
endmodule
|
||||
|
|
@ -183,6 +183,7 @@ attrib06_operator_suffix normal ivltests
|
|||
attrib07_func_call normal ivltests
|
||||
attrib08_mod_inst normal ivltests
|
||||
attrib09_case normal ivltests
|
||||
attrib_expr normal ivltests
|
||||
automatic_error1 CE ivltests
|
||||
automatic_error2 CE ivltests
|
||||
automatic_error3 CE ivltests
|
||||
|
|
|
|||
Loading…
Reference in New Issue