The snoop-memory interface has the exact same layout as the timing-model interface, but its operate() function is called after the memory access has been performed. The return value from the operate() function of a snoop-memory interface is ignored.
See the Creating a Timing Model chapter in the Simics User Guide for more information on how to use these interfaces.
typedef cycles_t (*operate_func_t)(conf_object_t *NOTNULL mem_hier, conf_object_t *NOTNULL space, map_list_t *NOTNULL map_list, generic_transaction_t *NOTNULL mem_op); typedef struct timing_model_interface { operate_func_t operate; } timing_model_interface_t; typedef struct snoop_memory_interface { operate_func_t operate; } snoop_memory_interface_t; #define TIMING_MODEL_INTERFACE "timing_model" #define SNOOP_MEMORY_INTERFACE "snoop_memory"