revela — an image signal processing pipeline in NumPy, generating synthesisable Verilog.

Copyright 2026 Serge Rabyking

Licensed under the Solderpad Hardware License v2.1 (the "License"), a wraparound
licence over the Apache License, Version 2.0. You may not use this work except in
compliance with the License. You may obtain a copy of the License at:

    https://solderpad.org/licenses/SHL-2.1/

and a copy is distributed with this work as the file LICENSE. The Apache License,
Version 2.0, whose terms the License incorporates and modifies, is distributed with
this work as the file LICENSE-APACHE and may be obtained at:

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, any work distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
language governing permissions and limitations under the License.

Per SHL-2.1, you may at your option choose to treat any work released under this
licence as released under the Apache License, Version 2.0.

Every source file carries the SPDX identifier:

    SPDX-License-Identifier: Apache-2.0 WITH SHL-2.1

--------------------------------------------------------------------------------
Verilog generated by revela
--------------------------------------------------------------------------------

Verilog emitted by this project carries this project's licence, because its
datapath is derived from the models in revela/blocks/. Generated files include an
SPDX header identifying this.

The surrounding structure -- the streaming handshake, line buffers, register file
and top level -- is emitted by np2hw, which grants its output unconditionally
under the Output Exception in its own licence: that part carries no obligation,
not even attribution. See docs/LICENSING.md.

--------------------------------------------------------------------------------
Third-party components
--------------------------------------------------------------------------------

This project depends on, but does not include or redistribute:

    np2hw                      MIT           https://github.com/lanserge/np2hw
    NumPy                      BSD-3-Clause AND 0BSD AND MIT AND Zlib AND CC0-1.0
                                             https://numpy.org
    jsonschema                 MIT           https://github.com/python-jsonschema/jsonschema
    jsonschema-specifications  MIT           https://github.com/python-jsonschema/jsonschema-specifications
    referencing                MIT           https://github.com/python-jsonschema/referencing
    rpds-py                    MIT           https://github.com/crate-py/rpds
    attrs                      MIT           https://github.com/python-attrs/attrs
    typing-extensions          PSF-2.0       https://github.com/python/typing_extensions

Required only to run the tests:

    pytest                     MIT           https://pytest.org
    cocotb                     BSD-3-Clause  https://cocotb.org

Every dependency of this project, at every depth, is under a permissive licence.
Continuous integration enforces that with an allow-list, so a dependency whose
licence is not among the permitted ones fails the build.

The full audit -- every transitive dependency, its role, and the licences of the
external simulators used for verification -- is in docs/THIRD-PARTY.md. It is
kept there rather than here because this file is an attribution notice under
section 4(d) of the Apache License, and a dependency audit is a different
document with a different audience.

--------------------------------------------------------------------------------
Sensor descriptions
--------------------------------------------------------------------------------

The sensor descriptions under revela/sensors/ are derived from publicly available
manufacturer datasheets and from the sensor vendors' published documentation. They
are NOT transcribed from the Linux kernel media drivers (drivers/media/i2c/imx219.c
and its siblings), whose licence is incompatible with this project's and whose
register tables therefore must not appear here. Every sensor description carries a
provenance declaration stating its derivation, enforced by the schema.
Contributions to revela/sensors/ must do the same; see CONTRIBUTING.md.
