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!

AR# 58163

32-bit Initiator/Target for PCI v5.0 - Vivado Cannot Disable BAR


Version Found: v5.0 (Vivado only; CORE Generator/ISE tool is not affected)
Version Resolved and other Known Issues: See (Xilinx Answer 54651).

Unused PCI BAR(s) are still enabled even though it is disabled through the GUI and in the RTL wrapper.

Note: "Version Found" refers to the version the problem was first discovered. The problem may also exist in earlier versions, but no specific testing has ben performed to verify earlier versions.


The new PCI core v5.0 in the Vivado tool is no longer using c_bar#_enable parameter to enable/disable BAR(s). However, the parameter still exist at the top level core wrapper; instead it will take PCI BAR value of 0000_0000 (hex) as BAR disabled. By default, the GUI assigns FFF0_0000 (hex) value when a BAR is disabled. Therefore, to fully disable a BAR, you need to use the work-around below or use the patch that is attached to the end of this answer record.

Note: You only need to use one; either the work-around or the patch, but not both.

Work-around (needs to be applied whenever the core is generated or changed):

1) Navigate to the <project_directory>/<project_name>.srcs/sources/ip/<core_name>/sim
     Navigate to the <project_directory>/<project_name>.srcs/sources/ip/<core_name>/synth

     In both directories above you will find <core_name>.v(hd) file; open them using a text editor of your choice (outside of the Vivado tool).

2) Find c_bar#_value parameters. You should see one for each BAR (bar0, bar1, and bar2). For each BAR you want disabled, change the value to 0000_0000.
3) Save the file and go back to the Vivado tool; the change should be reflected in your project.

(needs to be applied once and will continue to work in any project even when the core is newly generated or changed. If the core is already generated before the patch is applied, the core needs to be removed and replaced):

1) Download the pci32.tcl file located at the end of this answer record.
2) Make a copy of the original pci32.tcl file in this directory and replace it with the one you just downloaded:
     <Xilinx Install Directory>\Vivado\2013.3\data\ip\xilinx\pci32_v5_0\xgui

Revision History
11/19/2013 - Initial release


Associated Attachments

Name File Size File Type
pci32.tcl 27 KB TCL
AR# 58163
Date Created 10/28/2013
Last Updated 11/19/2013
Status Active
Type General Article
  • Vivado Design Suite - 2013.2
  • Vivado Design Suite - 2013.3
  • 32-bit Initiator/Target for PCI