Welcome to the Pulse Wiki
We use this space to talk about various features and possibilities you may not know Pulse supports, demonstrate best practices, and provide detailed explanations for any questions or problems anyone brings to our attention.
If you would like us to expand upon anything feel free to bring it up in our discourse channel.
Before diving into the topics below, make sure you have a good understanding of the the Common Data Model and its structures, as well as the Pulse interface.
We also assume you have built the source code per instruction from our repository.
- We will refer to the source code directory as
<pulse/source>
- The build directory you set where you ran CMake, will be refereed to as
<pulse/build>
- All commands will be run from a terminal in the
<pulse/build>/install/bin
, which we will refer to as<pulse/bin>
Executing Pulse
Being a C++ library, Pulse requires a separate application to instantiate and execute the engine. We will explore various execution mechanisms in our repository in the sections below :
When developing Pulse, we provide a script to run all of our tests, utilities, and tools to help you gather as much information as possible on the impacts of your changes to the overall system. This is the primary tool used when developing Pulse. This script can call fuctionality implented in Java or Python. The Pulse repository contains all reqired Java jar files, so we only require that Java is discoverable on your Path. However Python based functionality requires that Python is discoverable on your Path and your Python environment has pip installed the packages in our requirements.txt
More on running the Pulse Test Suite
We provide a library of scenarios we use to exercise all of the various functionality provided by Pulse. You can directly execute these scenarios and any of your scenairos using our Scenario Driver. This executable will generate a time based CSV file containing the data requested in the scenario. Learn more about running the Scenario Driver.
Setting up an IDE
Using C++ with Visual Studio
Using C++ with CLion
Using Java with Eclipse
Using Java with IntelliJ
Using Python with PyCharm
Using Pulse
Learn how to use the Pulse SDK
Integrating Pulse into your application
Pulse provides an API for many different languages. To learn more about working with the Pulse API, you can find HowTo folders in many of the language folders in src Pulse provides an API for each of these languages, and they are designed to be very consistent with each other. So if you are looking for how to use a particular feature in Pulse and the language you are using does not provide an example, look around in the other languages and it should be trivial to translate to the language of your application.
Extending and Contributing to Pulse
To get started with your Pulse contribution:
Contributing to Pulse
While these topics are referenced in the Contributing to Pulse document, for quick reference here are individual topics:
How to modify a system circuit
How to extend a system
How to create a new action
How to create a new condition
How to add a new parameter
How to create a scenario
How to create a unit test
How to update the documentation
How to generate the documentation
How to perform verification and validation
How to rebase the verification baselines