I am sorry I am not able to understand the statement " If I use a SystemC SC_METHOD, they will
always get executed". SC_METHOD will only get executed in case of activity on their senstivity list.
If I have understood your problem correctly then the above statement rstall <= resetn and pcirst when PCIEN else resetn; can be implemented as follows.
SC_METHOD(drive_rstall);
sensitive << resetn << pcirst;
void drive_rstall(void)
{
if(PCIEN){
rstall.write(resetn.read() & pcirst.read());
}else{
rstall.write(resetn.read());
}
}
So the above process will only be executed whenever there is any activity on resetn and pcirst.
Hope it helps.
Although I am not an expert on VHDL to SystemC conversion but there are some commericial tools available from companies like Carbon which can convert your behavioral VHDL/Verilog code to equivalent SystemC code. You may explore them too.