The User Constraint File (UCF) is a user-created ASCII file that contains user timing and location constraints. It is read by NGDBuild, which also accepts a design netlist, such as EDIF, and produces a ".ngd" file.
How do I constrain by time specification or time group in a UCF?
-- User Constraint File (UCF) Below---
# This is a comment.
# "Period" specifies a minimum PERIOD of CLK net. "Offset" specifies that data on MAY, which can arrive up to 6 ns before the clock edge arrives on CLK. (NOTE: PERIOD constraints do not apply to elements in output pads.)
NET CLK PERIOD = 20ns;
NET MAY OFFSET = IN:6ns:BEFORE:CLK_PD;
# Groups all clocked loads of CLK2 into CLK2_LOADS time group.
# Groups all clocked loads of VAL into VAL_LOADS time group.
# TNM => Time group Name
NET CLK2 TNM=CLK2_LOADS;
NET VAL TNM=VAL_LOAD;
# Specifies the worst-case speed of path from IPAD to CLK2 loads.
# Includes pad, buffer, and net delays. TS01 is a time spec identifier; it can have names of the form TS<string>.
# PADS(CLK2_PD) is a time group name specified inside of a time spec.
TIMESPEC TS01=FROM:PADS(CLK2_PD):TO:CLK2_LOADS=15ns;
# Specifies the maximum frequency for all loads clocked by CLK2.
TIMESPEC TS02 = PERIOD CLK2_LOADS 10Mhz;
# or
TIMESPEC TS02A=FROM:CLK2_LOADS:TO:CLK2_LOADS=30Mhz;
# Specifies the minimum delay on the path from Synchronous RAM to OFD. Includes Clock to Out delay, net delay, and setup time.
TIMESPEC TS03=FROM:CLK2_LOADS:TO:VAL_LOAD=15000ps;