- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all,
I am using SystemVerilog to handle a 3-dimensional array. My code is as follows.
module sub_bytes();
reg word_stream_reg = '{'{8'hFF,8'hA4},'{8'h50,8'hC6}};
reg test = word_stream_reg;
endmodule
I get this error: Error (10748): Verilog HDL error at sub_bytes.v(6): expression in variable declaration assignment to test must be constant I spent about 4 hours but could not find the reason for this error. I would be grateful if anyone could assist me in this.
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Even if some tools allow it, it is a very bad programming practice to initialize a static variable with a another static variable. This is refereed to the "static initialization fiasco" in many programming languages. Outside of a procedural context, there is no defined ordering of static initializers.
Assigning a constant value to a variable does not make that variable a constant. It's still a variable as far as the compiler is concerned. What you probably want to do is use a parameter instead of a variable.parameter logic word_stream_reg = '{'{8'hFF,8'hA4},'{8'h50,8'hC6}};
Note: Since you are using SystemVerilog, use logic instead of reg.

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page