Environmental constraints in VLSI


Both DRC and optimization constraints follow environmental constraints. Setting up of operating conditions and wire load model falls under environmental constraints.

The constraints are:
  • set_operating_conditions 

This constraint describes PVT condition of the design. Names of the operating condition is dependent on library. Generally worst corner library is used for synthesis.

set_operating_conditions [-library lib_name] [-analysis_type type] [-max max_condition] [-min min_condition] [-max_library max_lib] [-min_library min_lib] [-object_list objects] [condition]
# Sets the specified operating condition for timing analysis. Analysis type can be single, bc_wc, or on_chip_variation. Operating conditions are defined in libraries using the operating_conditions command.

set_operating_conditions -analysis_type bc_wc
set_operating_conditions WCCOM
set_operating_conditions -analysis_type on_chip_variation

  • set_wire_load_model

 This constraint provides estimated statistical wire load information to the synthesis tool. Tool uses wire load information to model the net delays as function of loading. There are seveal wire load models are present in technology logic library (.lib).

set_wire_load_model -name model_name [-library lib_name] [-min] [-max] [object_list]
# Defines the wire load model to be used for the current design or for the specified nets.

set_wire_load_model -name “eSiliconLightWLM”

  • set_wire_load_mode

 This constraints defines any of the three modes associated with wire load models. The three modes are top, segmented and enclosed.

set_wire_load_mode mode_name
# Defines the mechanism of how a wire load model is to be used for nets in a hierarchical design. The mode_name can be top, enclosed, or segmented. The top mode causes the wire load model defined in the top-level of the hierarchy to be used at all lower levels. The enclosed mode causes the wire load odel of the block that fully encloses that net to be used for that net. The segmented mode causes net segment in the block to use the block’s wire load model.


set_wire_load_mode enclosed

  • set_drive

 This constraints specifies the drive strength of input port.

set_drive [-rise] [-fall] [-min] [-max] resistance port_list
# Is used to specify the drive strength of the input port. It specifies the external drive resistance to the port. A value of 0 signifies highest drive strength.


set_drive 0 {CLK RST}

  • set_driving_cell

 This constraints specifies the external drive strangth of input port.

set_driving_cell [-lib_cell lib_cell_name] [-rise] [-fall] [-library lib_name] [-pin pin_name] [-from_pin from_pin_name] [-multiply_by factor] [-dont_scale] [-no_design_rule] [-input_transition_rise rise_time] [-input_transition_fall fall_time] [-min] [-max] [-clock clock_name] [-clock_fall] port_list
# Is used to model the drive resistance of the cell driving the input port.


set_driving_cell -lib_cell BUFX4 -pin ZN [all_inputs]

  • set_load

This constraint defines the capacitive load to the output port or any specified net.

set_load [-min] [-max] [-subtract_pin_load] [-pin_load] [-wire_load] value objects
# Set the value of capacitive load on pin or net in design. The -subtract_pin_load option specifies to subtract the pin cap from the indicated load.

set_load 50 [all_outputs]
set_load 0.1 [get_pins UFF0/Q] # On an internal pin.
set_load -subtract_pin_load 0.025 [get_nets UCNT0/NET5]
# On a net.

  • set_fanout_load

set_fanout_load value port_list
# Sets the specified fanout load on the output ports.


set_fanout_load 5 [all_outputs]

  • set_input_transition

set_input_transition [-rise] [-fall] [-min] [-max] [-clock clock_name] [-clock_fall] transition port_list
# Specifies the transition time on an input pin.

set_input_transition 0.2 [get_ports SD_DIN*]
set_input_transition -rise 0.5 [get_ports GPIO*]

Next Post »