Generally speaking, the most common sorts of constraints you use in these situations are AtomPair constraints (often between the Calpha atoms) with FLAT_HARMONIC functions. This way you don’t penalize things which are “in range”, but apply a progressively steeper penalty as you go outside of the “allowed” region.
Regarding co-evolutionary data, take a look at papers from Ovchinnikov and Baker (e.g. https://www.ncbi.nlm.nih.gov/pubmed/28104891) to see dettails of how exactly they used this information.