How to instantiate Multiple Interfaces in uvm environment?

How can i instantiate multiple interfaces in uvm environment?
I want N number of interfaces for N number of agents, for which the value of N will be taken from $value$plusargs.

For loop is not working ,I was trying this

for(int i=1;i<=(`link);i++) 
intf_jesd_parallel_rx  #(2,8) intf_rx_($sformatf("%0d",i))(clk2);	// for parallel_interface input interface (RX agent 1) ////

but getting error

for(int i=1;i<=(`link);i++)
        |
ncvlog: *E,MISEXX

This is working fine but what if i want to form instantiated names based upon ith value

intf_jesd_parallel_rx  #(2,8) intf_rx_1[`link-1:0](clk2);

And then how to connect those interface signals ?

In reply to aditgupta100:

Are you putting the “for” statement inside procedure coding either always/initial ? But we can’t instantiate modules inside procedural code, best way will be with “generate” keyword.

In reply to shanmuga.raja:

Using generate Keyword it works but can you please explain the reason/logic behind it ?
Thanks a lot shanmuga.raja

In reply to aditgupta100:

I assume your adding this logic in testbench top, if so only procedural and continuous state ment can execute in parallel for any module. So we always have “for” inside procedural code but inside procedural code we can’t do module instances.