constraint_file ::= constraint_statements
constraint_statements ::= {constraint_statement}
constraint_statement ::= critical_port_statement
| dont_fix_statement
| dont_optimize_statement
| dont_touch_statement
| empty_io_statement
| empty_location_statement
| initial_location_statement
| io_statement
| jtag_statement
| location_statement
| macro_define_statement
| max_fanout_statement
| net_criticality_statement
| net_critical_ports_statement
| net_delay_statement
| optimize_statement
| path_delay_statement
| read_statement
| timing_fanout_statement
create_clock_statement :: CREATE_CLOCK -PERIOD POSFLOAT {net_name|port_name}
critical_port_statement ::= SET_CRITICAL_PORT criticality_number hier_inst_names;
dont_fix_statement ::= DONT_FIX_GLOBALS;
dont_optimize_statement :=DONT_OPTIMIZE [{buffer inverter clocktree resettree const dangling}];
dont_touch_statement ::= DONT_TOUCH hier_net_names;
empty_io_statement ::= SET_EMPTY_IO pad_location_defs;
empty_location_statement ::= SET_EMPTY_LOCATION location_def;
SET_EMPTY_LOCATION location_region;
generate_paths_statement ::= GENERATE_PATHS [-COVER_DESIGN] [-TOP POSNUMBER] [-MAX_PATHS POSNUMBER];
global_net_statement ::= {SET_GLOBAL | SET_NOGLOBAL} hier_net_names;
initial_io_statement ::= SET_INITIAL_IO io_location_def io_port_names;
initial_location_statement ::= SET_INITIAL_LOCATION location_def hier_inst_names;
| SET_INITIAL_LOCATION location_def hier_subdesign_inst_name macro_name [transformations];
io_statement ::= SET_IO io_location_def io_port_names;
location_statement ::= SET_LOCATION location_def hier_inst_name;
| SET_LOCATION location_region hier_name_wildcard;
| SET_LOCATION location_def hier_subdesign_inst_name macro_name [transformations];
macro_define_statement ::= MACRO macro_name macro_location_def {macro_statements}
macro_statements ::= {macro_statement}
macro_statement ::= SET_LOCATION location_def hier_inst_name;
| SET_INITIAL_LOCATION location_def hier_inst_name;
| SET_EMPTY_LOCATION location_def;
max_fanout_statement ::= SET_MAX_FANOUT POSNUMBER;
net_criticality_statement ::= SET_CRITICAL criticality_number hier_net_names;
net_critical_ports_statement ::= NET_CRITICAL_PORTS hier_net_name critical_ports;
optimize_statement ::=OPTIMIZE [{buffer inverter resettree clocktree const dangling}];
path_delay_statement ::= SET_MAX_PATH_DELAY delay_value delay_path;
read_statement ::= READ [-FORMAT format] [-ECO] file;
set_false_path_statement ::= SET_FALSE_PATH [-FROM portname]
[-THROUGH portname] [-TO portname]
set_input_to_register_delay_statement ::= SET_INPUT_TO_REGISTER_DELAY delay_value [-FROM port_name];
set_multicycle_path_statement ::= SET_MULTICYCLE_PATH num_cycles [-FROM port_name] [-TO port_name] [-THROUGH port_name];
set_register_to_output_delay_statement ::= SET_REGISTER_TO_OUTPUT_DELAY delay_value [-TO port_name]
set_default_swtich_threshold_statement ::= SET_DEFAULT_SWITCH_THRESHOLD POSNUMBER;
set_swtich_threshold_statement ::= SET_SWITCH_THRESHOLD POSNUMBER hier_net_name;
use_global_statement ::= USE_GLOBAL global_region hier_net_name;
criticality_number ::= POSNUMBER
critical_ports ::= instance_port_name [ , instance_port_name]
delay_path ::= instance_port_name [, instance_port_name]
delay_value ::= POSFLOAT
file ::= FILEIDENTIFIER
global_region ::= T1 to T<n> | B1 to B<n>
format ::= SDF | GF
hier_inst_name ::= QPATH
hier_inst_names ::= hier_inst_name [, hier_inst_name]
hier_net_name ::= QPATH
hier_net_names ::= hier_net_name [, hier_net_name]
hier_subdesign_inst_name ::= QPATH
instance_port_name ::= hier_inst_name.port_name
io_location_def ::= side | pad_location | package_pin
io_port_names ::= io_port_name [, io_port_name]
io_port_name ::= IDENTIFIER
location_def ::= (x, y )
location_region ::= (x1, y1 x2, y2)
transformation ::= flip lr
| flip ud
| rotate 90 cw
| rotate 180 cw
| rotate 270 cw
| rotate 90 ccw
| rotate 180 ccw
| rotate 270 ccw
macro_location_def ::= (x1, y1 x2, y2)
macro_name ::= IDENTIFIER
offset ::= POSNUMBER
package_pin ::= IDENTIFIER
pad_location_defs ::= pad_location_def [ , pad_location_def ]
pad_location_def ::= package_pin | pad_location
pad_location ::= ( side , offset )
port_name ::= IDENTIFIER
side ::= N | S | E | W
transformations ::= transformation
| transformation transformations
xgrid ::= POSNUMBER
ygrid ::= POSNUMBER