Force and release inside for loop with hierarchical paths

I am trying to force and release asynchronous reset in my design inside a for loop, it shouts for the error.

Example -

localparam channel = 8

initial
begin
for (int i=0;i<channel;i=i+1) begin 
force a.b.c.g[i].d.e.rst_n=0;
#10ns;
release a.b.c.g[i].d.e.rst_n;
end
end

The above example fails during compilation with below error(above example is shortened code):
Error-[XMRE] Cross-module reference resolution error
./…/…//top_tst.sv, 102
Error found while trying to resolve cross-module reference.
token ‘g_xcvr_native_insts’. Originating module ‘top_tst’.
Source info: release
top_inst.topdesign_inst.native_phy_inst.xcvr_native_s10_etile_0.g_xcvr_native_insts[j].ct3_xcvr_native_inst.inst_ct3_xcvr_channel.inst_ct3_hssi_xcvr.ct3_hssi_xcvr_encrypted_inst.ct1_hssirtl_c3xcvr_inst.i_async_reset_n;

If I force and release w/o for loop it works.

Example -

initial 
begin
force .....g[0]...=0;
|
|
|..........g[7]...=0;
#10ns;
release ..........
|
|
|....
end

Can you please help me with this issue? Is it that I cannot for and release inside a for loop?

Thanks,
Karma

In reply to Karmapanchal:

Error-[XMRE] Cross-module reference resolution error
./…/…//top_tst.sv, 102
Error found while trying to resolve cross-module reference.
token ‘g_xcvr_native_insts’. Originating module ‘top_tst’.
Source info: release
top_inst.topdesign_inst.native_phy_inst.xcvr_native_s10_etile_0.g_xcvr_native_insts[j].ct3_xcvr_native_inst.inst_ct3_xcvr_channel.inst_ct3_hssi_xcvr.ct3_hssi_xcvr_encrypted_inst.ct1_hssirtl_c3xcvr_inst.i_async_reset_n;

In reply to Karmapanchal:

If I remove the for loop and force/release individual instance. It works.

Can you please help me out here?

Thanks,
Karma

In reply to Karmapanchal:

You cannot have a variable index on the LHS of a force or any continuous assignment. Change your procedural for-loop to a generate for-loop.

for (genvar i=0;i<channel;i++) begin 
initial
  begin
   force a.b.c.g[i].d.e.rst_n=0;
   #10ns;
   release a.b.c.g[i].d.e.rst_n;
  end
end

Generate for-loops get expanded at compile time, so [i] becomes 8 different constants.