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

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.
