Frequently Asked Questions
General Questions
Where can I go for more help?
All documentation is available at opencpi.gitlab.io and there is a public mailing list (with archive) at lists.opencpi.org.
Install-Specific Questions
Does it matter what version of CentOS is used?
Both CentOS 6 (tested using 6.10) and CentOS 7 are supported. Local hardware support (e.g. PCIe-based platforms) is officially supported on both OS releases starting with Version 1.1. CentOS 6, while not officially deprecated, does not get as much testing by the core team, so may have unnoticed issues.
CentOS 7 is now considered a “rolling release” so they say, for example, that at a point in time 1 it is “CentOS 7 (1810)” but not specifically “7.6”. OpenCPI is tested using “7 (1804)” which is informally 7.5, so if you are running a version older than 7.5, you need to upgrade the target OS or use the source distribution.
General Usage Problems / Questions
Make error: “*** isim not an available HDL platform. Stop.”
Either the Core Project was never built, or it is not properly registered. This is explained in the Getting Started Guide.
/opt/opencpi/cdk/centos7/bin/ocpigen: /opt/Xilinx/.../libstdc++.so.6: version 'GLIBCXX_3.4.15' not found (required by /opt/opencpi/cdk/centos7/bin/ocpigen)
If the OpenCPI tools, e.g. ocpigen, are reporting problems with a libstdc++ within a Xilinx tool path, that means your environment has imported the Xilinx tool’s configuration script, e.g. settings64.sh (Xilinx-Specific Questions). If you didn’t manually import it, ensure you don’t have a line that does elsewhere, e.g. in .bashrc.
I am trying to run a demo application with “ocpirun” and artifacts are not being found.
The usual causes of this are:
Core Project was not built for the target platform
Consult the Getting Started Guide
OCPI_LIBRARY_PATHwas not properly setView the artifacts being checked by adding “-l 8” on the ocpirun command line to increase the logging level
HDL Workers are failing Unit Tests that passed before 1.4.
The most likely cause is that “backpressure” is now automatically asserted by default; see the Component Development Guide for details.
How do I handle iqstream_protocol’s I and Q data ordering in HDL workers?
As noted in the HDL Development Guide, when a Protocol contains a Struct Argument, the first Argument Member defined in the Protocol’s XML is always in the least significant bits of the resulting Port. A good example of the importance of this is the scenario where a Port’s default data width is overridden (in the OWD) to present all of a Struct’s Members in parallel within a single clock cycle. For example, iqstream_protocol‘s default ordering is a 16-bit interleaved I/Q data:
\(I_{t=0}, Q_{t=0}, I_{t=1}, Q_{t=1}, I_{t=2}, ...\)
However, if the Worker configures its data Ports to be a width of 32 bits, then the I/Q data is presented as a parallel I/Q sample pair with “I” in the lower 16 bits and “Q” in the upper 16 bits, i.e.:
\(I_{0}=InPort_{0}[15:0]; Q_{0}=InPort_{0}[31:16]\)
\(I_{1}=InPort_{1}[15:0]; Q_{1}=InPort_{1}[31:16]\)
A Worker to consult as an example is “iqstream_max_calculator.hdl.”
Xilinx-Specific Questions
Are there any other setups I need to perform on the Xilinx Vivado or ISE side?
No, we abstract away a lot of the requirements if you simply install as described in the OpenCPI Installation Guide.
Additionally, sourcing the Xilinx setup scripts, e.g. source /opt/Xilinx/14.7/ISE_DS/settings64.sh or source /opt/Xilinx/Vivado/2017.1/settings64.sh, can cause other problems (Make error: “*** isim not an available HDL platform. Stop.”) and should not be performed.
The ZedBoard comes with a license, but it is for the Vivado tools.
Xilinx’s “WebPack” Vivado or ISE license is sufficient to do anything with the ZedBoard.
ISE Note: As for purchasing, you can “rollback” a Vivado license by contacting Xilinx and they will issue you an ISE license with the same expiration with a gentleman’s agreement that you won’t use both at the same time.