String concatenation inside generate block

In reply to randomcoder:

You still did not explain why you need individually named signals instead of using an array in the first place.

As you are already aware, `define macros get expanded before any parsing any SystemVerilog code. There is no way to have a macro loop. Your only other option is using an external macro processor. That can make debugging much more difficult.