1. A computer implemented method of solving a constraint satisfaction problem that comprises a model comprising a problem having zero or more ports, and zero or more sub-problems coupled to the zero or more ports, the method comprising: storing a cross problem constraint template for one or more cross problem constraints; receiving a request to connect a first sub-problem to a first port of a first problem; determining if the first sub-problem forms a participating problem combination for the cross problem constraint template, wherein the participating problem combination comprises all participating problems of the cross problem constraint; and generating the cross problem constraint for the participating problem combination.