When I place an "OFFSET IN BEFORE" or "OFFSET OUT AFTER" specification on a timing group, NGDBuild reports the following error:
"ERROR:Ngd:668 - OFFSET specification "<TIMEGRP> OFFSET= IN <n>PS BEFORE net" is relative to a pad group (<pad group>), which contains one or more non-pad elements. The pad group must contain only pads."
This error can occur when an "OFFSET IN BEFORE" or "OFFSET OUT AFTER" constraint is referenced to a net or group that does not contain a clock pad.
For example, suppose the following setup is used for a clock input:
CLK_IN -> IBUF -> CLK
If the "OFFSET" constraint references the CLK net instead of the CLK_IN net, NGDBuild will report the "Ngd:668" error.
To set an "OFFSET IN BEFORE" constraint on a hypothetical group of input pads named "input_pads_grp," use the following syntax:
TIMEGRP "input_pads_grp" OFFSET = IN 20 ns BEFORE "clk_in";
For information on applying "OFFSET" constraints to differential clock inputs, see (Xilinx Answer 11348).
For more details on timing constraints, please see the Timing Constraints User Guide: http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/ug612.pdf
This error can also occur if the ".pad" suffix is used in the UCF to restrict a pattern match to pad elements (e.g., "PM*.PAD") when a TNM group used in an "OFFSET" is created. (This syntax might have worked properly in the 3.1i software.)
As of the 4.1i software and later, PADs are no longer inferred with the ".pad" suffix. To work around this, add the PADS qualifier to the TNM.
INST "xxx*.PAD" TNM = PADS "xxx_outs";
This will prevent inappropriately matched non-pad instances from being included in the group.