---
title: "OpenTitan Trademark Usage Policy"
layout: "info"
---

The OpenTitan trademarks and logos ("OpenTitan Trademarks") are licensed
separately from the copyright or patent license grants contained in the
Apache-licensed OpenTitan repositories on GitHub. Except as provided in this
policy, you may not use any of the OpenTitan Trademarks.

## Purpose of the Trademark Policy

This policy exists to ensure that the identity and meaning of OpenTitan
technology is clear to everyone. By using this policy, the OpenTitan project
can share its technology under open source licenses while making sure that
"OpenTitan" is protected as a meaningful source identifier in a way that's
consistent with trademark law. This policy permits clear and appropriate use of
the OpenTitan project name while preventing abusive uses that could mislead
consumers. By adhering to this policy, you help to promote the freedom to use
and develop high-quality OpenTitan technology.

## Acceptable Use

You may use the OpenTitan Trademarks without prior written permission (subject
to other sections):

  1. To refer to the OpenTitan Project itself;
  2. To identify OpenTitan design(s) in unmodified forms;
  3. To refer to unmodified source code, verilog, or other files shared by
     lowRISC's OpenTitan repositories on GitHub;
  4. To refer to certified, approved chip implementations of the OpenTitan
     design(s) in accordance with the "technical specifications" section of
     this policy; and
  5. To explain or disclose that your design or implementation is based on the
     OpenTitan design(s), _if and only if_ (i) the use of the OpenTitan
     Trademarks is in accordance with this policy, (ii) your product itself
     does not describe itself as being "OpenTitan," and (iii) it is adequately
     disclaimed that the implementation is not approved or OpenTitan Certified.
     For example, it is acceptable to say, "This is an unofficial
     implementation of the OpenTitan design. It is not (yet) OpenTitan
     Certified." It is not acceptable to say, "This is an OpenTitan chip,"
     unless the OpenTitan Project actually approved that specific
     implementation for the OpenTitan Certification.

## Logo Usage Guidelines

The OpenTitan logos serve as graphic trademarks for the OpenTitan Project. We
ask that any use of the OpenTitan logos be in compliance with the general usage
guidelines provided in this policy.

## Use as a Source Identifier

You may not use the OpenTitan Trademarks or any confusingly similar mark as the
name of your product or feature, except to accurately reference implementation
or uses of OpenTitan in a manner that meets the OpenTitan Technical Framework
specifications set forth below. You may not use the OpenTitan Trademarks in any
other manner that might cause confusion as to the source or affiliation of your
product, including but not limited to advertising, websites, or social media,
or packaging. We ask that you not use the word "OpenTitan," the OpenTitan logos
and any portion of the logos in association with any other product, service, or
entity other than the OpenTitan project.

The OpenTitan Project reserves the right to prohibit the use of the OpenTitan
Trademarks in a manner consistent with these guidelines that would weaken or
dilute the OpenTitan Trademarks, create confusion, or otherwise infringe upon
these trademarks.

## Technical Specifications & OpenTitan Certification

Any person may utilize and implement the designs shared in the OpenTitan GitHub
repositories according to the license terms in the LICENSE file. However, no
implementations or uses may be referred to as "OpenTitan" unless such usage is
approved for OpenTitan Certification.

In order to be eligible for OpenTitan Certification, an implementation of the
OpenTitan designs must (i) meet the standards of the OpenTitan Technical
Framework ("Technical Framework") approved by the OpenTitan Steering Committee
(as described in the OpenTitan Project Charter), and (ii) be approved by the
lowRISC Board of Directors.

The Technical Framework for OpenTitan Certification will not be updated
frequently but may be amended by the process described in the OpenTitan Project
Charter. The OpenTitan Steering Committee will only vote on proposed changes to
the Technical Framework if the changes are recommended by the OpenTitan
Technical Committee. The Technical Framework will be available in a separate
document on the OpenTitan website.

Any other use of the OpenTitan Trademarks to describe or promote an
implementation, or to imply affiliation of an implementation with the OpenTitan
project, is strictly prohibited.

## Contact Us

The OpenTitan Project protects the OpenTitan Trademarks on behalf of all of the
contributors to the OpenTitan Project. This policy does not authorize you to
act as an agent on behalf of the OpenTitan Project, and we would prefer to make
our own determinations as to whether a given use of the OpenTitan Trademarks is
acceptable or unacceptable use.

If you see any of the OpenTitan Trademarks being used in a way that could be
misleading or infringing, please tell us! Just send an email to
[legal-committee@lowrisc.org](mailto:legal-committee@lowrisc.org). We
appreciate the help!

Please do not hesitate to contact us at
[legal-committee@lowrisc.org](mailto:legal-committee@lowrisc.org) if you are
unsure whether your intended use of the OpenTitan Trademarks is in compliance
with this policy, or to simply ask for permission to use the OpenTitan
Trademarks.
