You didn't state this, but I will assume one of these cores in in Software ( C / C++ ) , the other in an HDL like Verilog.
- Pli is your best bet for moving data between these two things. If you have an interrupt request, you can poll on it from Verilog, and call into the C model, this will keep the two in lock step cycle wise, and will allow you to get back information like if there is a current interrupt pending.
- Write a $call_ref_model in an always @(posedge clk) block. This will make sure that you can get a call to any C source code on a cycle by cycle boundary. Now assuming you have a cycle accurate Reference model, you can call the clock function of that model, and keep the two designs synchronized.
PLI is pretty much the only way. There are many PLI's tf_ , acc_, vpi_, and now the DPI stuff coming with the SystemVerilog ( though double check your simulator supports it, SystemVerilog support is spotty at present ). Tf based pli tends to be very fast and well supported on most any simulator. I would recommend using that.
-Art