AR# 8254


FPGA/Design Compiler - How do I pass the IOSTANDARD constraint for Virtex designs?


Keywords: template, script, Synopsys

In the $XILINX/synopsys/examples, the template.synopsys_dc.setup_virtex does not include the option for passing through the IOSTANDARD constraint.

How do I specify special Virtex I/O standards on my ports?



One option is to specify these standards in the synthesis compilation script. After running "set_port_is_pad", use this syntax to specify an I/O standard:

set_pad_type -exact <buffer_type>_<standard> {<port_list>}

where <buffer_type> represents the type of buffer to be inserted, <standard> represents an I/O standard, and <port_list> represents the ports to receive this standard. For example:

set_pad_type -exact IBUF_GTL {DIN}


The IOSTANDARD attribute can always be applied via the UCF file. Using the UCF overrides attributes that have been placed in the netlist (this does not affect the Synopsys flow). The UCF syntax is as follows:

NET <port_name> IOSTANDARD = <standard>;

For example:



The I/O standards can be instantiated in your HDL code along with the I/O buffers. The names of these components follow the <buffer_type>_<standard> convention, such as IBUF_GTL.

When these buffers are instantiated, they must not be included during the set_port_is_pad command. Consequently, when calling set_port_is_pad, either list only the ports that do not have buffers inserted:

set_port_is_pad {CLK, RST, DOUT}

or, set this attribute on all ports, and then remove it for those ports that have instantiated I/O buffers:

set_port_is_pad "*"
remove_attribute {DIN} port_is_pad
AR# 8254
Date 06/05/2006
Status Archive
Type General Article
People Also Viewed