I have a BLE module. The reset is pulled up to 1.8V. The IOVDD is 3.3V. I need to use a programmer that can reset the module but the programmer is 3.3V. Is it ok to use the circuit below to make the programmer reset the module? (The MOSFET has Rds 0.15@Vgs=2.5V, Vgs(th)=0.85V)
When NRST=0V, the PMOS will pull down the voltage close to VTH i.e., 0.85V. It will not go to 0V. To get the exact voltage, you need to simulate the condition. With this voltage, you then need to check if the BLE module can be reset properly. Since you confirmed that VILmax is 0.54V max, it won't work as you rightly concluded.
Edit: Here's a possible solution using NMOS. However, do look into the diode solution proposed by Spehro; that seems to be much easier to implement.
You'd be better off to use a Schottky diode. For example, at 1mA a 1N5819 would pull the /RESET input down to the NRST voltage + less than 200mV.
The p-channel MOSFET will pull it down to something like Vgs(th). Vgs(th) is typically specified at a very low current such as 250uA so if R? draws more than 250uA it won't even get that low.
Incidentally, the classic solution (which potentially has less voltage drop than a diode) is to use a single "1.8V" n-channel MOSFET with gate tied to +1.8, source to the module and drain to the 0/3.3V signal.