First, you must install the CMSIS-Stream
package:
pip install cmsis-stream
The Python functions and classes inside the cmsis-stream
package can be used to describe and generate the schedule.
You need a recent Graphviz dot tool supporting the HTML-like labels. You'll need cmake
and make
In folder ComputeGraph/example/build
, type the cmake
command:
cmake -DHOST=YES \
-DDOT="path to dot.EXE" \
-DCMSISDSP="path to cmsis dsp" \
-DHOST=YES \
-G "Unix Makefiles" ..
If cmake is successful, you can type make
to build the examples. It will also build CMSIS-DSP for the host.
If you don't have graphviz, the option -DDOT can be removed.
If for some reason it does not work, you can go into an example folder (for instance example1), and type the commands:
python graph.py
dot -Tpdf -o test.pdf test.dot
It will generate the C++ files for the schedule and a pdf representation of the graph.
Note that the Python code is relying on the cmsis-stream
package.
For example3
which is using an input file, cmake
should have copied the input test pattern input_example3.txt
inside the build folder. The output file will also be generated in the build folder.
example4
is like example3
but in pure Python and using the CMSIS-DSP Python wrapper (which must already be installed before trying the example). To run a Python example, you need to go into an example folder and type:
python main.py
example7
is communicating with OpenModelica
. You need to install the VHTModelica blocks from the AVH-SystemModeling project on our GitHub
- Simple example without CMSIS-DSP : How to get started
- Simple example with CMSIS-DSP : How to get started with CMSIS-DSP
- Example 1 : Same as the simple example but explaining how to add arguments to the scheduler API and node constructors. This example is also giving a detailed explanation of the C++ code generated for the scheduler
- Example 2 : Explain how to use CMSIS-DSP pure functions (no state) and add delay on the arcs of the graph. Explain some configuration options for the schedule generation.
- Example 3 : A full signal processing example with CMSIS-DSP using FFT and sliding windows and overlap and add node
- Example 4 : Same as example 3 but where we generate a Python implementation rather than a C++ implementation. The resulting graph can be executed thanks to the CMSIS-DSP Python wrapper
- Example 5 : Another pure Python example showing how to compute a sequence of Q15 MFCC and generate an animation (using also the CMSIS-DSP Python wrapper)
- Example 6 : Same as example 5 but with C++ code generation
- Example 7 : Pure Python example demonstrating a communication between the compute graph and OpenModelica to generate a Larsen effect
- Example 8 : Introduce structured datatype for the samples and implicit
Duplicate
nodes for the graph - Example 9 : Check that duplicate nodes and arc delays are working together and a scheduling is generated
- Example 10 : The dynamic dataflow mode
- Cyclo-static scheduling
- Simple example with the event recorder
- runtime_mode : This example shows how to change the graph at runtime without recompiling