UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Explorer
Explorer
226 Views
Registered: ‎04-06-2017

Does IO standard modification in xdc file need re-synthesis?

Jump to solution

I have read some related questions in this forum and get to know that timing constraint will have effect when synthesis and physical constraints have not. I'd like to know if IO standard constraint has effect when synthesis. Thank you.

0 Kudos
1 Solution

Accepted Solutions
Historian
Historian
86 Views
Registered: ‎01-23-2009

Re: Does IO standard modification in xdc file need re-synthesis?

Jump to solution

The answer is "it depends". The I/O standard is a physical property of the IBUF/OBUF. The synthesis tool doesn't care about these physical properties. So if they are set before/during synthesis, they will simply be carried forward to the implementation phase. If they are not set during synthesis that's fine - they are only needed during implementation.

So now we have to ask the question "how does this property get set?". There are a couple of ways

  • In your RTL you can specify the IOSTANDARD property of the IBUF/OBUF instantiation
    • (not really recommended)
  • You can specify the IOSTANDARD in an XDC file
    • The XDC file can be read in during both synthesis and implementation (which is the default)
    • The XDC file can be set to only be read in during implementation (set by clearing the USED_IN_SYNTHESIS property of the .XDC file)

All three of these end up with the same final result, but changing the value when using the different mechanisms will have different effects on the project.

If you specify the IOSTANDARD in your RTL then changing the RTL will obviously require re-synthesis.

If you specify the IOSTANDARD in an XDC that is used by synthesis, then changing that XDC will result in the synthesis being declared "out-of-date" and thus needing resynthesis

If you specify the IOSTANDARD in an XDC that is only used by implementation then changing it will not result in the synthesis being declared out of date; only implementation will need to be rerun.

As a final statement, the IOSTANDARD can be (easily) changed as an "ECO (engineering change order)". If  you have a .dcp (regardless of how it was generated - project or non-project mode), you open a Vivado session and read in the .dcp using read_checkpoint (opening a design). Once open, the design is in memory, and hence you have access to the design database. The IOSTANDARD is a property of the IBUF/OBUF and can therefore be changed with

set_property IOSTANDARD <new_standard> [get_cell <instance_name_of_IBUF/OBUF]

Now the design in memory has the new I/O standard. You can then write this out (write_checkpoint) and/or generate a new bitstream (write_bistream) with this modified design. NOTE: This is all done outside project mode - if you do this on a .dcp that is managed by a Vivado project, then you will "break" the dependency management stuff - the tools will have no way of knowing that this new .dcp exists - if you overwrite the old .dcp, then the tools will have no way of knowing that the .dcp does not reflect the RTL/XDC files used to build the project.

Avrum

Tags (1)
0 Kudos
4 Replies
Highlighted
Xilinx Employee
Xilinx Employee
215 Views
Registered: ‎05-22-2018

Re: Does IO standard modification in xdc file need re-synthesis?

Jump to solution

Hi @greatmaverick ,

I guess it does impact. Specially if the I/O planning is done pre-synthesis.

Anyways when you do changes in constraints or sources,etc. the tool will show Synthesis Out of Date.

For more information on I/O planning please check below link:

https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_2/ug935-vivado-io-clock-planning-tutorial.pdf

Thanks,

Raj

Explorer
Explorer
121 Views
Registered: ‎04-06-2017

Re: Does IO standard modification in xdc file need re-synthesis?

Jump to solution
Thank you.
0 Kudos
102 Views
Registered: ‎01-22-2015

Re: Does IO standard modification in xdc file need re-synthesis?

Jump to solution

@greatmaverick 

Also, take a look at the new "incremental synthesis" feature available starting in v2019.1 Vivado (see also UG901 v2019.1).  Incremental synthesis will reuse results of previous runs of synthesis.  Thus, for designs with small changes, the new synthesis runtime will be greatly reduced.

Mark

0 Kudos
Historian
Historian
87 Views
Registered: ‎01-23-2009

Re: Does IO standard modification in xdc file need re-synthesis?

Jump to solution

The answer is "it depends". The I/O standard is a physical property of the IBUF/OBUF. The synthesis tool doesn't care about these physical properties. So if they are set before/during synthesis, they will simply be carried forward to the implementation phase. If they are not set during synthesis that's fine - they are only needed during implementation.

So now we have to ask the question "how does this property get set?". There are a couple of ways

  • In your RTL you can specify the IOSTANDARD property of the IBUF/OBUF instantiation
    • (not really recommended)
  • You can specify the IOSTANDARD in an XDC file
    • The XDC file can be read in during both synthesis and implementation (which is the default)
    • The XDC file can be set to only be read in during implementation (set by clearing the USED_IN_SYNTHESIS property of the .XDC file)

All three of these end up with the same final result, but changing the value when using the different mechanisms will have different effects on the project.

If you specify the IOSTANDARD in your RTL then changing the RTL will obviously require re-synthesis.

If you specify the IOSTANDARD in an XDC that is used by synthesis, then changing that XDC will result in the synthesis being declared "out-of-date" and thus needing resynthesis

If you specify the IOSTANDARD in an XDC that is only used by implementation then changing it will not result in the synthesis being declared out of date; only implementation will need to be rerun.

As a final statement, the IOSTANDARD can be (easily) changed as an "ECO (engineering change order)". If  you have a .dcp (regardless of how it was generated - project or non-project mode), you open a Vivado session and read in the .dcp using read_checkpoint (opening a design). Once open, the design is in memory, and hence you have access to the design database. The IOSTANDARD is a property of the IBUF/OBUF and can therefore be changed with

set_property IOSTANDARD <new_standard> [get_cell <instance_name_of_IBUF/OBUF]

Now the design in memory has the new I/O standard. You can then write this out (write_checkpoint) and/or generate a new bitstream (write_bistream) with this modified design. NOTE: This is all done outside project mode - if you do this on a .dcp that is managed by a Vivado project, then you will "break" the dependency management stuff - the tools will have no way of knowing that this new .dcp exists - if you overwrite the old .dcp, then the tools will have no way of knowing that the .dcp does not reflect the RTL/XDC files used to build the project.

Avrum

Tags (1)
0 Kudos