Shaikhul,
Why not use the magic instructions, and the sim_api.h to communicate this data to the Sniper backend? When this instruction is called, the state can be packaged up, and sent to Sniper for interpretation. Then, the return value is stored back into the program. We already use this to query the status of the hardware or simulator, directly from the application (like the frequency). In fact, there are functions that can check whether you are running inside the simulator, and can take specific actions if that is the case.
Updating data from
core.cc back into the application will be very difficult, or might not even be possible. This is because the backend (timing simulator) runs behind the frontend. If you try to push a change from the backend to the frontend, the frontend will already have executed past that point.