Thursday, October 26, 2023

Running Xilinx ChipScope under Ubuntu

I've belatedly realized that ChipScope Pro is a free feature of Xilinx ISE 14.7. While trying a simple example I ran into two problems, both of which I have managed to work around.

First, my attempts to create the ChipScope controller and analyzer modules with Coregen failed with errors like:

Failed to generate file: chipscope_bb_lib
Searching on the Internet I discovered that this can be linked to a problem with the Java JDK provided with the ISE installation. Looking in the ISE installation I found two different Java installations:
/opt/Xilinx/14.7/ISE_DS/ISE/java
/opt/Xilinx/14.7/ISE_DS/ISE/java6

I renamed the directory called "java" to "java5", and created a symlink called "java" to the "java6" directory:

cd /opt/Xilinx/14.7/ISE_DS/ISE/
mv java java5
ln -s java6 java
This allowed Coregen to generate my ChipScope cores. Yay!

With my FPGA loaded, I then attempted to start the ChipScope Analyzer from within ISE. This displayed the expected happy messages in the ISE Console window, but nothing else happened. Eventually I found these error messages:

/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/unwrapped/analyzer: 72: /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/unwrapped/cs_common.sh: XIL_DIRS[0]=/opt/Xilinx/14.7/ISE_DS/ISE/: not found
/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/unwrapped/analyzer: 73: /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/unwrapped/cs_common.sh: count++: not found
/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/unwrapped/analyzer: 152: /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/unwrapped/cs_common.sh: Syntax error: Bad for loop variable

These I recognized as what happens when a program assumes that the default system shell is "bash" when it's actually "sh" (or "dash", in the case of Ubuntu). This is easy to fix, at the cost of a fractionally slower system startup (dash being a bit faster than bash):

sudo dpkg-reconfigure dash

Ta da! Now I can start the ChipScope Analyzer from within ISE.

No comments:

Post a Comment