Co-simulation of a circuit design includes simulating a first subset of
blocks of the circuit design on a software-based co-simulation platform,
simulating a second subset of the blocks of the circuit design on a
hardware-based co-simulation platform, and maintaining coherency for a
memory block of the circuit design between a first representation of data
in the memory block on the software-based co-simulation platform and a
second representation of the data in the memory block on the
hardware-based co-simulation platform. Coherency is maintained by
managing mutually exclusive access to the memory block from the first
subset of blocks and the second subset of blocks.