Hello,
I am another happy reader of the TimeQuest User Guide: I mean that it looks like it has been written by someone that really uses the tool while some application notes seems written by someone that designed the tool (or have studied it) but used it rarely. This is my poor opinion, I hope no-one takes offence at this (I'm sorry if this happens). Thanks a lot, Rysc!
I have a question which is not intended to be answered only by Rysc, I think anyone with enough experience can give a hint.
I have a signal which is generated by a state machine and is sent out of the fpga to a device that use it as a clock to capture data which are output by the same state machine. This interface is something like an SPI, to explain better the situation.
The transmission is centre-aligned.
The state machine has been designed to keep data stable at least an entire clock cycle (12.5 ns) before and after the rising edge of the generated clock: the output clock is the flip-flop clock divided by four, the data are refreshed when the output clock is falling.
For timing constraints I have the following scenarios:
1) given the possible jitter, the trace delays and the requirements of the slave external device, I could be confident that the requirements are met by design ad put a set_false_path
2) open the window of the timing using the multicycle constraints, constraint the output of the state machine to the flip-flop clock putting the little of Tsu, Th, board delay in the count. The relation between the output clock and the data is determined by the design and enforced by constraining the relation of both the lines to the real clock.
Personally, I don't like the option (1). Option (2) seems what I usually do for flash devices, which are asynchronous. I would not put any virtual clock nor generated clock. Any suggestion?
Thanks,
Gabriele