Whenever I change the PL Fabric clock frequencies in the ZNQ7 Processsing System (5.5) GUI and then create the *.bit file the FPGA*_CLK_CTRL register have the wrong values in them. The registers either contain the default values or some of the set values, but in the wrong clock registers.
The BD where the PS7 core is instantiated is called cpu_core:
I've looked at the *.srcs/bd/cpu_core/cpu_core_processing_system7_0_1 directory. All the config files have the correct divisor 0 and frequencies set in them. The includes the ps7_* files, *.xci, *.xdc, *.xml
However, once the bit file is generated, converted to a bin via promgen, and then the Zynq programmed via /dev/xdevcfg the FPGA?_CLK_CTRL registers have the wrong values in them.
I've tried the advanced tab and setting things there as well. The new values don't seem to propagate through to where the *.bit file sets the registers. The other PL logic seems to be working fine, it's just the FPGA fabric clock registers that seem to have the wrong values in them. I've also verified with an O-scope that the frequency of the clocks routed out to pins is wrong.
Vivado 14.x didn't seem to have this problem.
I am using a Microzed Z7010 board selected in the project. The board files were downloaded from Microzed.org and it's the 2015.x version of the files. Block automation was run after instantiating the processor core and the values were changed after it.
I am running on Ubuntu 14.04 64 bit OS. I am running Vivado 2015.2
If I manually poke the registers to the correct values, then I get the correct clock frequencies, but the values don't seem to be propagating through to the *.bit file. If I reload the bit file, the registers go back to the wrong values. So it's the way the *.bit file is being built.
I've tried clearing out all files in the build and cache directories along with deleting the core, clearing out it's IP files and re-adding and rebuilding everything. The new build only had the default GUI values in the registers after loading the *.bit file.
I have verified *.bit file are getting built new and the correct *.bit file is getting converted to a *.bin file and put on the Microzed and programmed in through xdevcfg. Since all the source files look to have the correct values in them, I believe it is a problem is the way that data gets put into the *.bit file to setup the registers somewhere along the chain that has a possible bug and is not transferring the correct values to the *.bit file. It seem like it's either partially picking up the changes or ignoring them all together.