Even without explicit timing constraints, the tools will evaluate timing and give you the estimated max frequency at which your design can safely run. Did you take a look at this?
Then, not knowing anything about your design, one thing I can say is that "marginal behavior", if you're certain 1/ that you don't exceed the above max frequency and 2/ that your design is at least behaviorally correct (did you simulate it?), is often due to clock domain crossing issues. If you're not explicitely using two different (and unsynchronized) clocks in your design, the most probable culprit would be that there is some input signal that is asynchronous to your clock, and that you're not correctly resynchronizing before "using" it (metastability issues). So we don't know squat about your design, but here's some food for thought.