Harris,
I edited your sdc as follows, it performs better:
create_clock -period 8 -name clk
derive_pll_clocks
create_generated_clock -name clk_out -source }]
set_output_delay -clock clk_out -max 1.2
set_output_delay -clock clk_out -min -.2
Rysc: Thanks for your response.
The whole system (input device,fpga,output device) must be viewed as one single rtl chain. In general, each launching register is used to fulfil timing of latching register.
The part of the rtl chain inside input device (except if it is another fpga or similarly configurable) does not have that versatility of fpga so the fpga is used to latch its data correctly.
The output device may be an advanced DAC that can latch correctly to any input automatically tracking the timing. Or it could be another FPGA. In these cases, no worry. Otherwise the fpga is used to ouput such that the device's fixed latching will work.
The fpga's tool to do that is by inserting delays between io register and pins to reconfigure its own tSU/tH for inputs and its tCO for outputs. Thus the fpga is a device with user configurable tSU/tH/tCO unlike most ASICs.
If you look at the diagram in the link, you will see a cloud between io register and the output data pin. This where delay is meant right inside FPGA.
Motreover, the statement clearly says: latency of data with respect to clk out