# The OpenTitan Product

## Overview

&lt;Paragraph about how OpenTitan will be used as a product, reference to Titan, brief purpose, etc&gt;

## Features

&lt;Paragraph about the features of the silicon and system around it, how it is used, pointer to top level silicon technical specification ../hw/doc/top_earlgrey.md&gt;

## System Integration

&lt;Paragraph about integration concepts at a high level, admissible architectures, eventual goal of integration schematics, OTPF&gt;

## Open Source FPGA versus Final Silicon

&lt;Brief dissertation into the distinction between OpenTitan the Open Source project (mention of FPGA as a target) and OpenTitan the silicon incarnation.
Methods to ensure they are equivalent (early reference to compliance regime).
Distinctions of silicon needs (foundry collateral, analog designs, security hardening, ASIC signoff flow).&gt;

## Software and firmware

&lt;mention of the importance of the software and firmware deliveries.
List of expected software and firmware deliveries to come (Boot ROM, boot loaders, manufacturing code, operating system, final application, DIFs, etc).&gt;

