# FPGA Verification Commercial Reciprocity License 1.0

Version 1.0 — 9 October 2026

Copyright © 2026 Yaroslav Mariukha. All rights reserved.

Permission is granted to copy and distribute verbatim copies of this license
document. Modified versions of this license document must use a different name
and must not imply approval by Yaroslav Mariukha or the FPGA Verification
project.

This License applies only when the copyright holder expressly applies it to an
identified version of the Software. Publication of this license text by itself
does not change the license of any Software version.

## 1. Purpose

This License permits Personal Use without notice. It also permits a person or
organization to begin using an unmodified Official Release in a commercial,
academic, charitable, public-interest, or other project immediately, provided
that a private Notice of Use is sent within thirty days.

If a person or organization uses a Covered Change in a project, the
Corresponding Source of that Covered Change must be submitted to the Official
Project. The obligation cannot be avoided by moving an actual modification or
extension of the Software into another library, process, package, plugin, or
online service, or by obtaining it from a supplier.

Independent tests, scripts, and workarounds that merely use the Software
through its documented public interfaces, without modifying, extending,
replacing, or altering the Software, are not Covered Changes.

Selling or otherwise commercially distributing the Software itself, whether
modified or unmodified, requires a separate written agreement with the
Licensor.

## 2. Definitions

### 2.1 Licensor

“Licensor” means Yaroslav Mariukha, the copyright holder applying this License
to the Software.

The Licensor’s contact address for notices and requests under this License is
`yarko@proton.me`.

### 2.2 Official Project

“Official Project” means the FPGA Verification project maintained by the
Licensor. Its “Official Repository” is
`https://github.com/yarko18/fpga-verification`. A downstream distributor cannot
change the Official Repository by changing package metadata. No successor
repository or License Steward is currently designated. The Licensor may
publicly designate one in the future for later notices and administration, but
that designation cannot retroactively change the terms applicable to a
released version.

### 2.3 Software

“Software” means the source code, object code, documentation, and other
materials to which the Licensor has expressly applied this License.

### 2.4 Official Release

“Official Release” means a version, commit, source archive, wheel, or other
artifact expressly published by the Licensor through the Official Repository
or the `fpga-verification` project on the Python Package Index, and identifiable
by an official version, tag, commit, or published artifact checksum. A fork,
repackaged artifact, or downstream build is not an Official Release merely
because its metadata points to the Official Repository.

### 2.5 Personal Use

“Personal Use” means use by a natural person solely for that person’s private,
personal, educational, or non-commercial purposes. Use performed as an
employee, officer, member, contractor, consultant, researcher, student acting
for an institution, or agent of an organization is not Personal Use.

### 2.6 Project Use

“Project Use” means use of the Software or a Covered Change:

1. by or on behalf of any company, university, school, research institution,
   non-profit organization, charity, government body, association, organized
   project, or other organization;
2. in employment, research, consulting, contract work, continuous integration,
   continuous delivery, or another organized activity; or
3. to develop, test, verify, validate, manufacture, deliver, operate, maintain,
   support, license, sell, or otherwise provide any product, service, design,
   research result, or project.

Project Use includes both Commercial Use and Institutional Non-Commercial Use.
The subject being developed, tested, verified, or otherwise worked on may be
hardware, software, a service, a design, research, documentation, or anything
else.

### 2.7 Commercial Product

“Commercial Product” means any hardware, software, service, design, or other
offering that is developed, tested, manufactured, operated, licensed, sold,
supported, or otherwise provided for monetary compensation or commercial
advantage. An offering may be a Commercial Product before it is publicly
released or generates revenue.

### 2.8 Commercial Use

“Commercial Use” means any direct or indirect use of the Software:

1. by or on behalf of a for-profit business, or by another organization in
   revenue-generating or commercially advantageous activities;
2. for monetary compensation or commercial advantage;
3. to develop, test, verify, validate, manufacture, deliver, operate, maintain,
   support, license, or sell a Commercial Product;
4. in internal development, continuous integration, continuous delivery,
   consulting, or contract work relating to a Commercial Product; or
5. by a contractor, consultant, or service provider for a person or
   organization engaged in any of the activities above.

For clarity, using the Software solely as a development, testing, verification,
validation, automation, or infrastructure tool for any commercial product,
service, design, or project is Commercial Use.

### 2.9 Institutional Non-Commercial Use

“Institutional Non-Commercial Use” means Project Use by or on behalf of a
university, school, research institution, non-profit organization, charity,
government body, public-interest organization, or other organization when that
use is not Commercial Use.

### 2.10 Unmodified Official Use

“Unmodified Official Use” means Project Use of an Official Release without a
Modification or other Covered Change.

Installing the Software, selecting documented parameters, supplying ordinary
runtime configuration through documented public interfaces, and using
unmodified generally available dependencies do not by themselves prevent use
from being Unmodified Official Use.

Independent tests, scripts, integration code, and workarounds do not prevent
use from being Unmodified Official Use when they merely use documented public
interfaces and do not modify, extend, replace, or alter the Software or its
runtime behavior.

### 2.11 Modification

“Modification” means any addition to, deletion from, replacement of, or change
to the substance, structure, interfaces, or runtime behavior of the Software.
It includes a new file containing a material portion of the Software or created
primarily to extend, replace, or alter the Software’s functionality.

### 2.12 Externalized Component

“Externalized Component” means any library, package, module, plugin,
executable, process, service, generated artifact, or other component that:

1. is specifically designed or materially adapted to extend, replace, alter,
   or provide functionality of the Software; and
2. operates as an extension or replacement of the Software rather than merely
   as independent user code; and
3. is invoked by the Software, invokes the Software, replaces part of the
   Software, or communicates directly or indirectly with the Software through
   an API, ABI, FFI, command line, subprocess, dynamic load, plugin mechanism,
   file exchange, IPC, RPC, HTTP, network protocol, code generation,
   configuration mechanism, shared orchestration, or comparable interface.

An Externalized Component includes server-side functionality of an online or
hosted service when that functionality would be a Modification if implemented
inside the Software.

### 2.13 Protected Information

“Protected Information” means private keys, passwords, access tokens, personal
data, production data, confidential project or customer identifiers,
confidential specifications, confidential test vectors, confidential portions
of a product under test, information whose publication would create a material
security risk, and legally protected trade secrets.

The fact that source code or another work is internally developed,
commercially valuable, stored in a private repository, or designated
confidential does not by itself make it Protected Information.

### 2.14 Required Materials

“Required Materials” means all non-secret source code, interface definitions,
schemas, scripts, configuration, build files, deployment files, and
documentation that a person of ordinary skill reasonably needs to build,
install, operate, test, modify, and, where applicable, self-host a Covered
Change.

Required Materials do not include Protected Information. Protected Information
must be removed before publication. Where reasonably practical, omitted secret
values or data must be replaced with non-secret placeholders or synthetic data
that permit the published materials to be understood and exercised.

### 2.15 Covered Change

“Covered Change” means:

1. a Modification;
2. an Externalized Component; or
3. Required Materials for a Modification or Externalized Component.

Moving functionality out of the Software does not prevent it from being a
Covered Change.

### 2.16 Corresponding Source

“Corresponding Source” means the preferred form for making changes to a
Covered Change, together with its Required Materials and a clear description
of what was added, removed, or changed. Corresponding Source excludes Protected
Information as provided by Section 4.

### 2.17 Pull Request

“Pull Request” means a publicly accessible proposal to incorporate or reference
Corresponding Source in the Official Repository, using the contribution
mechanism provided by the Official Repository.

### 2.18 Qualifying Personal-Use License

“Qualifying Personal-Use License” means a written license that grants every
natural person, without payment, nondisclosure agreement, or individual
approval, a worldwide, royalty-free, non-exclusive, and irrevocable right for
Personal Use to:

1. access the complete source code;
2. run and use the code;
3. reproduce the code;
4. modify the code and create derivative works; and
5. distribute source code and modified versions for Personal Use.

The license may impose attribution, notice, source-availability, and
same-license requirements. It may impose separate conditions on Commercial
Use.

### 2.19 Public External Project

“Public External Project” means a publicly accessible source repository that:

1. contains the complete Corresponding Source of an Externalized Component;
2. identifies a specific commit or immutable release containing that source;
3. applies a Qualifying Personal-Use License to that source;
4. can be accessed without payment, nondisclosure agreement, or individual
   approval; and
5. remains available for the entire period of Project Use of the Externalized
   Component and for at least three years afterward.

### 2.20 Commercial Distribution

“Commercial Distribution” means selling, offering for sale, licensing,
sublicensing, renting, leasing, or distributing the Software for monetary
compensation or commercial advantage, whether modified or unmodified. It also
includes:

1. including the Software in a paid software development kit, bundle,
   appliance, container image, marketplace offering, or other paid deliverable;
   and
2. providing paid hosted, managed, or online access when access to the Software
   or its functionality is itself part of what customers receive.

Using the Software internally or as a tool to develop, test, verify, validate,
manufacture, operate, maintain, or support another product, service, design, or
project is not by itself Commercial Distribution.

## 3. License Grant

Subject to compliance with this License, the Licensor grants each recipient a
worldwide, royalty-free, non-exclusive copyright license, revocable only as
provided by Section 12, to:

1. use and run the Software;
2. reproduce the Software;
3. modify the Software and create derivative works;
4. distribute the Software and permitted derivative works other than through
   Commercial Distribution; and
5. make the Software available to others other than through Commercial
   Distribution.

Personal Use is permitted without a Notice of Use. Project Use may begin
immediately and is permitted subject to the Notice of Use requirement below
and, where a Covered Change is involved, Sections 4 through 8.

Unmodified Official Use does not by itself require a Pull Request. Independent
tests, scripts, integration code, and workarounds described in Section 2.10 do
not require a Pull Request.

No person or organization is required to accept this License. However, nothing
else grants permission to copy, install, modify, distribute, or engage in
Project Use of the Software. By performing any of those acts, the person or
organization accepts this License and agrees to comply with it.

### 3.1 Notice of Project Use

A natural person or legal entity responsible for beginning Project Use must
send a private Notice of Use to `yarko@proton.me` no later than thirty calendar
days after that Project Use begins.

The Notice of Use may use any written format, must contain the following, and
need contain no additional project details:

1. the name of the natural person, legal entity, or organized project;
2. the version of the Software initially used;
3. a general, non-confidential category of the project or activity; and
4. a contact name or contact address.

The notice must not contain Protected Information. No confidential or internal
project name, customer name, product design, source code, test data, result,
architecture, or other secret detail is required. If no legal entity is
responsible for the project, a generic project identifier is sufficient.

Project Use does not require prior approval and may begin before the notice is
sent. A Notice of Use is required once for each project or organized activity.
Employees and other individuals covered by a notice from the responsible legal
entity do not send separate notices for the same project. No annual or other
periodic confirmation is required merely because the same use continues.
Updating the Software within the same project does not require another notice;
the notice identifies the version with which that Project Use began.

Notice information is handled as described in the privacy notice shipped with
the applicable release.

Sending a Notice of Use does not replace the contribution obligation for a
Covered Change and does not authorize Commercial Distribution.

### 3.2 Commercial Distribution Requires a Separate Agreement

This License does not grant permission for Commercial Distribution of the
Software, whether modified or unmodified.

A person or organization wishing to engage in Commercial Distribution must
first obtain a separate written agreement from the Licensor. Requests may be
sent to `yarko@proton.me`. Sending a request or Notice of Use does not itself
grant permission.

This restriction concerns commercial distribution or commercial provision of
the Software itself. It does not prohibit permitted Project Use of the Software
as an internal or supporting tool for any product, service, design, research
activity, or project, including one that is sold or otherwise commercialized,
provided that the notice and contribution obligations of this License are met.

For clarity, internal use, consulting in which the Software remains an internal
tool of the consultant, charging for human support rather than for receipt of
the Software, and publishing results produced with the Software are not by
themselves Commercial Distribution. Delivering a copy of the Software to a
customer as part of a paid deliverable is Commercial Distribution.

### 3.3 Patent Grant from Licensor

To the extent the Licensor controls patent claims necessarily infringed by the
Software, the Licensor grants each compliant licensee a worldwide,
royalty-free, non-exclusive patent license to make, have made, use, offer to
sell, sell, import, and otherwise transfer the Software, but only as necessary
to exercise the permissions expressly granted by this License and subject to
its restrictions, including the restriction on Commercial Distribution.

If a licensee institutes patent litigation alleging that the Software or a
contribution incorporated into the Software infringes a patent, the patent
licenses granted to that licensee under this License terminate on the date the
litigation is filed.

## 4. Project Contribution Obligation

A licensee engaging in Project Use of, with, or through a Covered Change must
submit its Corresponding Source through a Pull Request no later than thirty
calendar days after that Project Use of the Covered Change first begins.

Later changes may be batched, but while materially updated versions of a
Covered Change remain in Project Use, updated Corresponding Source must be
submitted at least once during every thirty consecutive calendar days.

A “Material Update” is an update that affects functionality, public or private
interfaces, compatibility, observable behavior, a bug fix, or a security fix.
Comments, formatting, documentation-only changes, and renaming local symbols
without changing behavior are not Material Updates.

The obligation applies to a licensee that creates, receives, obtains, licenses,
uses, integrates, deploys, controls, directs, commissions, funds, or arranges
the creation or provision of the Covered Change. It applies whether the Covered
Change is supplied by the licensee, an employee, contractor, consultant,
affiliate, vendor, service provider, or another person.

A licensee may not avoid the obligation by outsourcing work, purchasing or
licensing a component, using a hosted service, arranging for another person to
operate the component, or lacking possession of its source code. If the
licensee does not have the rights and materials necessary to satisfy this
Section, the licensee may not engage in Project Use of that Covered Change
under this License.

Protected Information is not required to be published. The licensee must submit
the non-secret portions of the Covered Change and, where reasonably practical,
replace omitted secrets with placeholders or synthetic data. If Protected
Information is inseparable from the Covered Change and prevents submission of
meaningful Corresponding Source, the licensee must obtain a separate written
agreement from the Licensor before the contribution deadline in order to
continue that Project Use.

## 5. Pull Request Requirements

The Pull Request must:

1. be public;
2. follow the contribution process documented in `CONTRIBUTING.md`;
3. identify the Software version and Covered Change;
4. contain the complete non-secret Corresponding Source, or satisfy the Public
   External Project alternative in Section 6;
5. include build, test, and self-hosting instructions where applicable;
6. describe all additions, removals, external dependencies, and material
   runtime interactions;
7. identify in general terms any category of Protected Information that was
   removed, without disclosing that information; and
8. comply with the contribution format and automated checks reasonably
   documented by the Official Project.

The Licensor is not required to review, accept, merge, publish a release
containing, maintain, or support a Pull Request.

The contribution obligation is satisfied when a complete and compliant Pull
Request is submitted. Rejection or closure by the Licensor does not by itself
place the submitter in breach. If the Pull Request is not merged, the submitter
must keep its source branch or linked Public External Project publicly
available for the period required by Section 6.

### 5.1 Security-Sensitive Changes

When immediate publication would disclose an unremediated security
vulnerability, the licensee may temporarily satisfy the contribution deadline
by privately notifying `yarko@proton.me` and providing a sufficient description
of the issue and affected change without including credentials, personal data,
or unrelated Protected Information.

The complete public Pull Request must be submitted when the vulnerability is
remediated or no later than ninety calendar days after the private notice,
whichever occurs first. A longer embargo requires a separate written agreement
with the Licensor.

### 5.2 Unavailable Contribution Mechanism

The licensee may satisfy the contribution deadline by publishing the
Corresponding Source as a Public External Project and attempting to send its
durable URL and exact commit identifier to `yarko@proton.me` when:

1. the Official Repository has no functioning Pull Request mechanism for seven
   consecutive days;
2. the licensee’s account is blocked from using that mechanism;
3. access to the mechanism is unavailable in the licensee’s country;
4. the Official Repository is archived, removed, or publicly declared closed;
   or
5. the Licensor does not respond to a contribution-mechanism inquiry for thirty
   consecutive days.

The licensee must submit the Pull Request within thirty days after the
mechanism becomes reasonably available to it again. If the Official Repository
has been permanently closed without a designated successor, publication as a
Public External Project permanently satisfies the Pull Request requirement.

## 6. Public External Project Alternative

An Externalized Component does not have to be copied into the Official
Repository if the licensee:

1. publishes it as a Public External Project;
2. submits a Pull Request to the Official Repository containing a durable link
   to the exact commit or immutable release;
3. documents how the Software communicates with the Externalized Component;
4. supplies all non-secret client and server source, API definitions, schemas,
   build files, deployment files, and instructions needed to operate and
   self-host the component; and
5. keeps the linked source available for the period stated in Section 2.19.

Publishing only a client, wrapper, SDK, API description, binary, container
image, hosted endpoint, or generated artifact is not sufficient when other
source code is needed to reproduce the functionality.

This alternative does not permit relicensing any portion of the Software that
is incorporated into the Externalized Component. Such portions remain subject
to this License.

Merely linking to an independently owned Public External Project does not grant
the Licensor a right to commercially relicense that project. Its qualifying
license governs the independent code. Code copied into or directly submitted
through the Pull Request remains subject to Section 10 and any applicable
contributor agreement.

## 7. No Externalization, Supplier, or Service Loophole

A licensee may not avoid the obligations of this License by separating an
actual Modification or extension from the Software, placing it behind an
interface, or arranging for a different person or organization to provide it.
The technical location, repository, process boundary, address space, machine,
network, ownership arrangement, contractual arrangement, supplier relationship,
or deployment model of a Covered Change does not determine whether it is
covered.

In particular, the obligations apply when functionality is moved into or
implemented as:

1. a separately distributed library or package;
2. a dynamically loaded module or plugin;
3. a helper executable or subprocess;
4. generated code or configuration;
5. a local or remote API;
6. a hosted or online service;
7. a component supplied by a contractor, affiliate, vendor, or service
   provider; or
8. a component operated for the licensee by another person.

This Section does not turn independent tests, scripts, integration code, or
workarounds described in Section 2.10 into Covered Changes.

## 8. Exclusions and Boundaries

The following are not Covered Changes solely because they interact with the
Software:

1. an unmodified, generally available third-party dependency not specifically
   designed or adapted for the Software;
2. an operating system, language runtime, compiler, FPGA toolchain, simulator,
   standard protocol implementation, or system library;
3. a generally available hosting, source-control, package-index, or continuous
   integration service;
4. a product, service, design, research subject, project, or other subject under
   test, merely because the Software tests, verifies, validates, develops, or
   otherwise interacts with it;
5. independent product-specific tests, scripts, test data, integration code,
   or workarounds that merely use documented public interfaces without
   modifying, extending, replacing, or altering the Software or its runtime
   behavior; or
6. Protected Information removed as permitted by Section 4.

These exclusions do not apply to modifications of those items that are
specifically designed or materially adapted to externalize a Covered Change.

## 9. Distribution Other Than Commercial Distribution

Commercial Distribution is not permitted without the separate written
agreement required by Section 3.2.

A person distributing the Software or a Covered Change other than through
Commercial Distribution must:

1. provide a copy of this License;
2. preserve copyright, attribution, license, and modification notices;
3. identify material changes and their authors;
4. provide the Corresponding Source of any Covered Change required by this
   License; and
5. impose no terms that prevent a recipient from exercising the rights granted
   by this License.

A recipient receives rights directly from the Licensor under this License and
must independently comply with its conditions.

## 10. Contribution License Grant

Each person or organization intentionally submitting source code or other
copyrightable material to the Official Project, whether voluntarily or to
satisfy this License, grants the Licensor a perpetual, irrevocable, worldwide,
non-exclusive, royalty-free, transferable, and sublicensable license to:

1. use, reproduce, modify, and prepare derivative works of the submission;
2. publicly display, publicly perform, distribute, and make it available;
3. combine it with other works;
4. offer support, warranties, or commercial services relating to it; and
5. distribute and relicense it, in source or object form, under this License or
   under different terms, including commercial terms.

The contributor retains ownership of its contribution. The Licensor has no
obligation to use or include it.

To the extent the contributor controls patent claims necessarily infringed by
the submitted contribution, the contributor also grants the Licensor and
recipients of the contribution a perpetual, worldwide, royalty-free patent
license to make, have made, use, offer to sell, sell, import, and otherwise
transfer the contribution, alone or as part of the Software.

The contributor represents that it has the authority to make these grants and
will identify any known third-party material or restrictions in the Pull
Request.

Every contribution is also subject to the individual or corporate contributor
agreement identified by the Official Project’s contribution process. To the
extent permitted by applicable law, the contributor authorizes the Licensor to
enforce the applicable project license with respect to the contribution and
agrees to provide reasonable assistance with enforcement at the Licensor’s
expense.

## 11. Attribution and Trademarks

This License grants no right to use the Licensor’s or project’s names, logos,
or trademarks except as reasonably necessary to identify the origin of the
Software and comply with attribution requirements.

Modified versions must not imply that they are official, endorsed, or supported
by the Licensor.

## 12. Termination and Cure

Rights granted by this License terminate automatically upon material breach.

For a first non-willful breach, the rights are automatically and permanently
reinstated if the licensee cures the breach before receiving written notice or
within thirty calendar days after receiving written notice from the Licensor.

After a repeated or willful breach, rights are reinstated only by an express
written statement from the Licensor. An uncured breach remains subject to
enforcement by the applicable copyright holders.

Termination does not eliminate obligations that arose before termination,
including source-availability and contribution-license grants.

Termination of one licensee’s rights does not terminate rights that a
downstream recipient independently received and continues to exercise in
compliance with this License.

## 13. Disclaimer of Warranty

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE, TITLE, QUIET ENJOYMENT, AND NON-INFRINGEMENT. THE
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH THE
LICENSEE.

## 14. Limitation of Liability

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSOR AND
CONTRIBUTORS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, CONSEQUENTIAL, OR OTHER DAMAGES ARISING FROM OR RELATING TO THE
SOFTWARE OR THIS LICENSE, WHETHER IN CONTRACT, TORT, STRICT LIABILITY, OR
OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

## 15. Severability and No Waiver

If a provision of this License is held unenforceable, it will be reformed only
to the minimum extent necessary, and the remaining provisions will continue in
effect. Failure to enforce a provision is not a waiver of future enforcement.

## 16. Earlier Releases and Effective Scope

This License does not retroactively alter the license of any earlier release,
commit, or copy of the Software. A version is governed by this License only if
the Licensor expressly identifies that version as licensed under this License.

Earlier versions remain available under the licenses that applied when those
versions were released.

Each version of the Software remains governed by the version of this License
expressly applied to that Software version. A later revision of this License
does not apply retroactively.

## 17. Governing Law, Venue, Language, and Notices

This License is governed by the laws of the Czech Republic, without regard to
its conflict-of-law rules. To the maximum extent permitted by mandatory law,
the courts located in Prague, Czech Republic, have exclusive jurisdiction over
disputes arising from or relating to this License or the Software.

The Licensor is acting as a natural person, not through a company. A later
change in the Licensor’s residence does not change the governing law or venue
for a version of the Software already released under this version of the
License. A later license version may specify different governing law or venue
for future Software releases.

The United Nations Convention on Contracts for the International Sale of Goods
does not apply. Disputes are not subject to mandatory private arbitration under
this License.

The English text of this License controls. Notices to the Licensor must be sent
to `yarko@proton.me`, unless the Licensor publicly designates a replacement
address for future notices.

## 18. License Identifier

Until and unless this License is assigned a standard SPDX identifier, software
using it should refer to it as:

`LicenseRef-FPGA-Verification-Commercial-Reciprocity-1.0`
