SystemVerilog - это скомпилированный язык , не интерпретируемый . Вы не можете получить доступ к идентификаторам напрямую, используя строку. Вы можете использовать директивы компилятора в командной строке
module ab;
bit lock;
always_comb
begin
lock = `GPIO_SEL;
end
endmodule
Затем при компиляции кода используйте переключатель +define
vlog your_file.sv +define+GPIO_SEL=test_bench.gpio
Если вы думаете, что перекомпилируете ваш testbench /dut является значительным бременем (большинство инструментов предлагают опции инкрементальной компиляции), и у вас есть фиксированное количество путей доступа, тогда вы можете использовать оператор case
module ab
string abc;
initial $value$plusargs("GPIO_SEL=%s" , abc);
reg lock;
always_comb
case (abc)
"test_bench.gpio": lock = test_bench.gpio;
"test_bench.gpio1": lock = test_bench.gpio1;
endcase
end
И вы можете просто использовать вместо него простое числостроки для выбора.