contents.gifindex.gif

Grouping Signals

You can refer to a group of flip-flops or I/O pads by using the corresponding keywords:

webpack00090000.gif FFS

webpack00090000.gif PADS

These predefined groups represent all flip-flops or I/O pads in the design. For example, the following timing constraint specifies that the maximum delay between any two flip-flops must be no greater than 30 ns:

TS01=FROM:FFS:TO:FFS:30

You can also group signals together by pattern matching. To specify a single input, output or I/O pad, use the PADS keyword followed by the name of a pad net (the name of the net connected to a pad). For example,

PADS(IN1)

To specify a single flip-flop, use the FFS keyword followed by the name of the net connected to the Q output of a flip-flop. For example,

FFS(Q1)


Note: When specifying signal names for pattern matching, do not forget to include the names of any hierarchical levels above the net you are naming.


Pattern matching also allows you to use wildcard characters to define groups of signals. For example, the following timing constraint specifies that the maximum propagation delay from address bus ADDR[15:0] to the RAMSEL chip select output be no more than 7.5 ns.

TS01=FROM:PADS(ADDR*):TO:PADS(RAMSEL):7.5

You can also define a new timing group name by attaching the TNM attribute to a pad or flip-flop instance in your design as follows:

TNM=group_name

If you attach a TNM to a macro instance that contains I/O pads or flip-flops, the group name will be applied to all applicable elements in the macro. If you attach a TNM to an input or output pad net, it will be applied to the connected pad. If you attach the TNM to any other net in the design, the fitter will forward trace from the attached net, through all branches, until it encounters pads or flip-flops, and apply the group name to them.


Note: If you attach a TNM to the net connected to the Q-output of a flip-flop, it will NOT be applied to the flip-flop driving that net but will instead be forward-traced to a subsequent flip-flop or output pad.


You can also define a new timing group name based on other timing group specifications using a timegroup definition of the form:

new_group_name=group_name[:group_name]...;

For example:

BIG_GROUP=PADS(ADDR*):PADS(DATA*):OLD_GROUP