Licensing#
Re-distribution of the PeakRDL-rust code generator tool shall adhere to the terms outlined by the GNU LGPL v2.1 or later license. For a copy of the license, see: darsor/PeakRDL-rust
Why LGPLv2.1+?#
LGPLv2.1 or later was chosen because the intent is to promote a thriving ecosystem of free and open source register automation tools. The license terms discourage this tool from being bundled into some commercially sold closed-source software, as that would be contrary to this project’s philosophy.
What is covered by the LGPLv2.1+ license?#
The LGPL license is intended for the code generator itself. This includes all Python sources, Jinja template files, as well as testcase infrastructure not explicitly mentioned in the exemptions below.
What is exempt from the LGPLv2.1+ license?#
Don’t worry. Not everything that the PeakRDL-rust project touches is considered LGPLv2.1+ code.
The following are exempt and are free to use with no restrictions:
Any Rust code that is generated using PeakRDL-rust is 100% yours. Since it was derived from your register block definition, it remains yours. You can distribute it freely, use it in proprietary software, sell it as part of an IP, whatever.
Any code snippets in this documentation can be freely copy/pasted. These are examples that are intended for this purpose.
The provided
upds.rdlfile can be downloaded and used freely.The
peakrdl-rustcrate that the generated code uses is licensed under the dual MIT/Apache 2.0 license.The
peakrdl-rust-buildbuild utility crate is licensed under the dual MIT/Apache 2.0 license.
Can I use this as part of my company’s internally developed tools?#
Absolutely!
Sometimes it may be necessary to integrate this into a larger toolchain at your workplace. This is totally OK, as long as you don’t start distributing it outside your workplace in ways that violate the LGPLv2.1+ license.
That said, I’d encourage you to check out the PeakRDL command line tool. It might already do everything you need.
Generated Code License#
The Rust code generated by PeakRDL-rust is completely unrestricted and belongs to you. This includes:
All register structure definitions
Field accessor methods and types
Enumeration definitions
Test code and validation functions
Any custom traits or implementations
You are free to:
Use the generated code in commercial products
Modify the generated code as needed
Distribute the generated code under any license
Include the generated code in proprietary software
Sell products containing the generated code