IPweave
Copyright 2026 IPweave contributors

This product includes software developed as part of the Amaranth project
(https://amaranth-lang.org), Copyright (C) Amaranth HDL contributors, licensed
under the BSD 2-Clause Licence. The full licence text is in LICENSE.amaranth.txt
and applies to the files derived from it.

Which files those are
---------------------

The language core, its standard library, its simulator, its build system and its
existing backends were taken from Amaranth and are covered by BSD-2-Clause:

    ipweave/hdl/            ipweave/lib/            ipweave/sim/
    ipweave/build/          ipweave/vendor/         ipweave/_toolchain/
    ipweave/back/rtlil.py   ipweave/back/verilog.py ipweave/back/cxxrtl.py
    ipweave/asserts.py      ipweave/rpc.py          ipweave/tracer.py
    ipweave/utils.py        ipweave/_utils.py       ipweave/_unused.py
    ipweave/cli.py          ipweave/__init__.py
    tests/lang/             examples/basic/  examples/board/

They have been modified: the Python namespace was renamed from `amaranth` to
`ipweave`, and three third-party dependencies (jschon, jinja2, pyvcd) were made
optional so that the core installs with none. Every other change is recorded in
the project's version control history.

Files added by IPweave, covered by Apache-2.0 (see LICENSE):

    ipweave/emit/sv/        ipweave/rules/          ipweave/strict.py
    ipweave/check/          ipweave/platform/       ipweave/ip/
    ipweave/regs/           ipweave/params.py       ipweave/_tree.py
    ipweave/emit/ipxact.py  ipweave/_loc.py         ipweave/cli.py
    tests/test_*.py         tools/                  examples/ipweave/

Board definitions
-----------------

The board files in ipweave/board/ are IPweave's own: one shape for all of them,
written by tools/canonicalise.py. What was *read* to write them came from two
upstream projects, and both are BSD 2-Clause.

    amaranth-boards   75 boards   https://github.com/amaranth-lang/amaranth-boards
                                  Copyright (C) Amaranth HDL contributors
                                  board/LICENSE.amaranth-boards.txt

    litex-boards      95 boards   https://github.com/litex-hub/litex-boards
                                  Copyright 2012-2026 Enjoy-Digital
                                  Copyright 2012-2026 / LiteX-Hub community
                                  board/LICENSE.litex-boards.txt

Neither is copied verbatim. Upstream's platform classes descend from bases this
tree does not carry - migen and LiteX on one side, amaranth-boards' own on the
other - so tools/litex_import.py and tools/boards.py read each pinout out of the
source and IPweave board definitions are written from it. The pin numbers,
connector maps and clock frequencies are therefore theirs; the file shape, the
resource model and the code are this project's.

That distinction does not reduce what is owed. A pin table is the work, and it is
the part that took somebody a board revision to get right, so the exact upstream
file each board was read from is recorded per board in
ipweave/board/_provenance.json alongside the commit it was read at.

Nine boards have no upstream: they were written here from a vendor's own kit
files or datasheet, and _provenance.json says which and from what.

Efinity kit files (efinix-kits)
-------------------------------

Some Efinix board definitions were written from the .isf interface files that
ship with a local Efinity installation - the Interface Designer's own description
of each kit. Those files are *not* redistributed here. The pad assignments were
read out of a licensed local install and IPweave board definitions written from
them; the generated files are Apache-2.0 like the rest of this project's code.

IP-XACT schemas
---------------

This product includes the IP-XACT (IEEE 1685-2022) XML schemas published by the
Accellera Systems Initiative, redistributed verbatim under the Apache License,
Version 2.0 - the same licence as this framework. Each file carries Accellera's
own notice at the top, unmodified.

    ipweave/emit/ipxact_schemas/*.xsd

They are shipped so that `ipweave.emit.ipxact.validate()` checks a generated
document against the standard rather than against somebody's reading of it. Their
source, the date they were fetched and a digest of each file are recorded in
ipweave/emit/ipxact_schemas/PROVENANCE.json.

Accellera's own index.xsd is deliberately *not* included: it includes six files
that Accellera's server returns 404 for, so it cannot be used as an entry point.
component.xsd is self-contained for what this framework emits and is what
validate() loads. That is recorded in PROVENANCE.json too.

Interoperability identifiers kept deliberately
----------------------------------------------

Some names are contracts with software outside this tree, so renaming them would
break interoperability rather than establish independence. They are unchanged on
purpose:

    amaranth_yosys                   the PyPI package providing a bundled Yosys
    AMARANTH_USE_YOSYS               honoured alongside IPWEAVE_USE_YOSYS
    runAmaranthYosys                 the JavaScript hook used in browser builds
    _amaranth_shape_                 the attribute third-party shape-castable
    _amaranth_view_class_            classes set; renaming would break them
    https://amaranth-lang.org/schema/amaranth/0.5/component.json
                                     the component-metadata schema identifier.
                                     It is that schema, and tools that consume
                                     Amaranth component metadata recognise it by
                                     this URI. Annotations original to IPweave
                                     will carry an IPweave identifier instead.
