Content-Addressable Memory (CAM) Circuits and Architectures: A Tutorial and Survey | Synapse