La unidad se divide en dos partes "interface" que es pública, es decir cualquier unidad puede hacer uso de las constantes, tipos de datos, funciones y variables definidos en la parte de interfaz.
Todo lo que haya bajo la palabra implementation, es "privado a las funciones internas de la unidad", por tanto no pueden verse desde el exterior de esa unidad.
Para el problema que tienes, suele hacerse lo que te han comentado, o incluso mejor, crearte una cuarta unidad donde sólo tengas todo lo que ha de ser público (yo, como original que soy, suelo crearme la unidad publica.pas en todos mis programas
![Wink](http://www.clubdelphi.com/foros/images/smilies/wink.gif)
). Todas las unidades hacen uso de publica.pas, pero publica.pas no hace uso de ninguna unidad del proyecto.
Edito: Ya puestos a ser quisquillosos, el hecho de que tengas referencias circulares, o que ciertas unidades necesiten de otras, significa que tu diseño de la aplicación se podría/debería mejorar
![Wink](http://www.clubdelphi.com/foros/images/smilies/wink.gif)
.
Saludos