In this design, the TPTHRU is used to create a slow exception off the FROM:TO constraint.
The design is as follows:
input ----->ff1 ------->BUFE-------->ff2----->output
NET IBUS2 is between output of BUFE and ff2. The following constraints are in the UCF:
NET IBUS2 TPTHRU = IBUS_PATH;
TIMESPEC TS_TIG = FROM:FF1:THRU:IBUS_PATH:TO:FF2:TIG;
TIMESPEC TS01 = FROM:FF1:TO:FF2:10;
NGDBuild gives the following warnings:
WARNING:basts:75 - TPTHRU "IBUS_PATH" is on NET "IBUS2", which is not connected to any drivers.
WARNING:basts:16 - TPTHRU TIMEGRP "IBUS_PATH" has been applied only toINST, PIN, or NET elements that are not connected to the rest of the design. This occurs if a TPSYNC is placed on a macro that is empty, a block that has no input pins that are driven by a net, an undriven macro pin, an output pin that does not drive anything, or a net that is not driven. Please correct this situation.
The THRU get pushed to all drivers on the TBUF net at the top level of the design hierarchy, but not those drivers at a lower hierarchy level.
This problem is fixed in M1.5.
Some work-arounds for M1.4:
1. Use a different TNM for the Flops driven by the BUFE. If you do this, you can get around the problem by just specifying from:to timespec.
2. Use the following constraint:
PIN $1I58/$1I10.O TPTHRU = IBUF_PATH;
**$1I58 is the name of BUFE instantiation, $1I10 is the name of BUFT instantiation inside the BUFE macro, and O is the output pin.
3. Use BUFT with inverted T input on the top level to replace the BUFE symbol.