Simics does not currently have the ability to rename all architectural state, thus there are a limited number of instructions that write to the architectural state immediately. These instructions are called synchronous instructions as they must be run synchronously. SIM_instruction_is_sync can be used to determine if an instruction is synchronous. These instructions need to be executed non-speculatively and when all earlier instructions in the tree have been executed or committed. This is to ensure that the immediate changes to the architectural state caused by the instruction are never incorrect. If a synchronous instruction is executed in an illegal way SIM_instruction_proceed will return an error code.
Note that this is a Simics limitation and not an architectural limitation. In appendix B and appendix C all synchronous instructions are listed for SPARC and x86 respectively.