Add integer type for inline assignment
Summary
integer
is not supported as inline variable initialization in for loop.
TMRG Version
Steps to reproduce
for_loops2.sv:
module for_loops (
input x,
input clk,
input rst
);
localparam N = 5;
logic [N-1:0] data;
always_comb begin
for (integer i=0; i<N; i++)
if(i < x)
data[i] = 0;
else
data[i] = 1;
end
endmodule : for_loops
What is the current bug behavior?
$ tmrg for_loops2.sv
[ERROR ] Error in file 'for_loops2.sv' around line '9'.
[ERROR ]
[ERROR ] always_comb begin
[ERROR ] ^
[ERROR ] Expected {module | Group:({"primitive" {baseIdent | escapedIdent} "(" Group:({{baseIdent | escapedIdent} [{Suppress:(",") {baseIdent | escapedIdent}}]...}) ")" ";" {{Group:({"output" Group:([wire | reg | logic]) Group:([signed | real]) Group:([{Suppress:("[") Group:(Forward: {{unop Forward: {{{{unop : ...} | Group:({{{{Group:({{{{{{{{numeric | {{"(" mintypmax} ")"}} | nestedExpr} | {{{baseIdent | escapedIdent} "::"} {baseIdent | escapedIdent}}} | multiConcat} | {["'"] Group:({{Suppress:("{") {Group:(: ...) [{Suppress:(",") Group:(: ...)}]...}} Suppress:("}")})}} | string enclosed in double quotes} | Group:({{{{baseIdent | escapedIdent} "("} Group:([Group:({Group:(: ...) [{Suppress:(",") Group:(: ...)}]...})])} ")"})} | Group:({{baseIdent | escapedIdent} Group:({[{Group:({{Suppress:("[") {{{Forward: : ... + | -} ":"} Forward: : ...}} Suppress:("]")}) | Group:({{Suppress:("[") {Group:(: ...) [{Suppress:(":") Group:(: ...)}]...}} Suppress:("]")})}] [{Group:({{Suppress:("[") {{{Forward: : ... + | -} ":"} Forward: : ...}} Suppress:("]")}) | Group:({{Suppress:("[") {Group:(: ...) [{Suppress:(":") Group:(: ...)}]...}} Suppress:("]")})}]})})}) Suppress:("?")} Group:(: ...)} Suppress:(":")} Group:(: ...)})} | {{{{{{{baseIdent | escapedIdent} | {{"(" : ...} ")"}} | ) Suppress:(":") Group:(Forward: {{unop Forward: {{{{unop : ...} | Group:({{{{Group:({{{{{{{{numeric | {{"(" mintypmax} ")"}} | nestedExpr} | {{{baseIdent | escapedIdent} "::"} {baseIdent | escapedIdent}}} | multiConcat} | {["'"] Group:({{Suppress:("{") {Group:(: ...) [{Suppress:(",") Group:(: ...)}]...}} Suppress:("}")})}} | string enclosed in double quotes} | Group:({{{{baseIdent | escapedIdent} "("} Group:([Group:({Group:(: ...) [{Suppress:(",") Group:(: ...)}]...})])} ")"})} | Group:({{baseIdent | escapedIdent} Group:({[{Group:({{Suppress:("[") {{{Forward: : ... + | -} ":"} Forward: : ...}} Suppress:("]")}) | Group:({{Suppress:("[") {Group:(: ...) [{Suppress:(":") Group:(: ...)}]...}} Suppress:("]")})}] [{Group:({{Suppress:("[") {{{Forward: : ... + | -} ":"} Forward: : ...}} Suppress:("]")}) | Group:({{Suppress:("[") {Group:(: ...) [{Suppress:(":") Group:(: ...)}]...}} Suppress:("]")})}]})})}) Suppress:("?")} Group:(: ...)} Suppress:(":")} Group:(: ...)})} | {{{{{{{baseIdent | escapedIdent} | {{"(" : ...} ")"}} | ) Suppress:("]")}]) Group:({{baseIdent | escapedIdent} [{Suppress:(",") {baseIdent | escapedIdent}}]...}) Suppress:(";")}) | Group:({"input" Group:([wire | reg | logic]) Group:([signed | real]) Group:([{Suppress:("[") Group:(Forward: {{unop Forward: {{{{unop : ...} | Group:({{{{Group:({{{{{{{{numeric | {{"(" mintypmax} ")"}} | nestedExpr} | {{{baseIdent | escapedIdent} "::"} {baseIdent | escapedIdent}}} | multiConcat} | {["'"] Group:({{Suppress:("{") {Group:(: ...) [{Suppress:(",") Group:(: ...)}]...}} Suppress:("}")})}} | string enclosed in double quotes} | Group:({{{{baseIdent | escapedIdent} "("} Group:([Group:({Group:(: ...) [{Suppress:(",") Group:(: ...)}]...})])} ")"})} | Group:({{baseIdent | escapedIdent} Group:({[{Group:({{Suppress:("[") {{{Forward: : ... + | -} ":"} Forward: : ...}} Suppress:("]")}) | Group:({{Suppress:("[") {Group:(: ...) [{Suppress:(":") Group:(: ...)}]...}} Suppress:("]")})}] [{Group:({{Suppress:("[") {{{Forward: : ... + | -} ":"} Forward: : ...}} Suppress:("]")}) | Group:({{Suppress:("[") {Group:(: ...) [{Suppress:(":") Group:(: ...)}]...}} Suppress:("]")})}]})})}) Suppress:("?")} Group:(: ...)} Suppress:(":")} Group:(: ...)})} | {{{{{{{baseIdent | escapedIdent} | {{"(" : ...} ")"}} | ) Suppress:(":") Group:(Forward: {{unop Forward: {{{{unop : ...} | Group:({{{{Group:({{{{{{{{numeric | {{"(" mintypmax} ")"}} | nestedExpr} | {{{baseIdent | escapedIdent} "::"} {baseIdent | escapedIdent}}} | multiConcat} | {["'"] Group:({{Suppress:("{") {Group:(: ...) [{Suppress:(",") Group:(: ...)}]...}} Suppress:("}")})}} | string enclosed in double quotes} | Group:({{{{baseIdent | escapedIdent} "("} Group:([Group:({Group:(: ...) [{Suppress:(",") Group:(: ...)}]...})])} ")"})} | Group:({{baseIdent | escapedIdent} Group:({[{Group:({{Suppress:("[") {{{Forward: : ... + | -} ":"} Forward: : ...}} Suppress:("]")}) | Group:({{Suppress:("[") {Group:(: ...) [{Suppress:(":") Group:(: ...)}]...}} Suppress:("]")})}] [{Group:({{Suppress:("[") {{{Forward: : ... + | -} ":"} Forward: : ...}} Suppress:("]")}) | Group:({{Suppress:("[") {Group:(: ...) [{Suppress:(":") Group:(: ...)}]...}} Suppress:("]")})}]})})}) Suppress:("?")} Group:(: ...)} Suppress:(":")} Group:(: ...)})} | {{{{{{{baseIdent | escapedIdent} | {{"(" : ...} ")"}} | ) Suppress:("]")}]) Group:({{baseIdent | escapedIdent} [{Suppress:(",") {baseIdent | escapedIdent}}]...}) Suppress:(";")}) | regDecl}}... [udpInitialStmt] table "endprimitive"}) | Group:({Suppress:("__COMP_DIRECTIVE") !W:(;) Suppress:(";")})}, found 'a' (at char 106), (line:9, col:3)
[ERROR ] Error during parsing
What is the expected correct behavior?
No error.
Possible fixes
Fix parser.