A timing closure at a faster clock may not be acceptable at a slower clock due to setup/hold tradeoffs.
Thanks. That's interesting.
Now you mention it, I remember reading about the "clock uncertainty" thing, but I didn't pay it much attention at the time; I'll go back and take another look.
I think you're saying that Vivado analyses the timing
at the specified frequency, not
up to the specified frequency (as I'd assumed)?
Just add a replica logic ... or add an additional pipe stage
You could at least ask me to post my code before you start suggesting ways to improve it.
Less snarkily - in the simplest pipelines, each "layer" of flops is driven only from the "layer" before it, which makes it really easy to add more intermediate "layers", because they cost you only a clock of latency.
When I said "non-trivial" I meant that this particular pipeline needs to look ahead in order to avoid certain hazards that can occur when things happen in quick succession.
This means that there are connections back from later stages to earlier ones, and adding more stages means adding more "layers" of lookahead, which means a lot more complexity, both in the code and in its validation.