> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hardwave.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Installation

> Install Hardwave and its dependencies for hardware simulation in Python

## Requirements

* **Python** 3.11 or later
* **pip** (or another Python package manager)

Hardwave depends on `numpy`, `scipy`, `scikit-learn`, and `pandas` for numerical simulation, ODE integration, and ML solvers.

## Install from PyPI

```bash theme={null}
pip install hardwave
```

## Install dependencies manually

If you are developing from source or want to manage dependencies yourself:

```bash theme={null}
pip install numpy scipy scikit-learn pandas
```

Then install Hardwave in editable mode from the repository:

```bash theme={null}
git clone https://github.com/HardwaveDev/hardwave.git
cd hardwave
pip install -e .
```

## Verify the installation

Every Hardwave session starts with two imports. The `hardwave.stdlib` import registers all built-in types and components:

```python theme={null}
import hardwave
import hardwave.stdlib

from hardwave.types import TypeRegistry
from hardwave.components import ComponentRegistry

print("Types registered   :", len(TypeRegistry.instance().list_types()))
print("Components registered:", len(ComponentRegistry.instance()._classes))
```

Expected output:

```
Types registered   : 30
Components registered: 28
```

<Check>
  If both counts match, Hardwave is installed correctly.
</Check>

## Module overview

```
hardwave/
├── types/           HardwaveType base class + TypeRegistry
├── ports/           Port, PortDirection, input_port(), output_port()
├── components/      Component ABC, CompositeComponent, ComponentHealth, ComponentRegistry
├── solvers/         FormulaSolver, ODESolver, LookupTableSolver, MLModelSolver
├── simulation/      SimulationGraph, SimulationEngine, SimulationConfig, FaultMode, SimulationResult
├── serialization/   Serializable protocol, schema version constants
├── diagnostics/     Diagnostic, DiagnosticLevel (INFO/WARNING/ERROR/FAULT), exception hierarchy
├── premium/         Cloud-served premium components (optional)
└── stdlib/
    ├── types/       30 pre-registered hardware signal types
    └── components/  28 pre-built primitive components
```

<Tip>
  You do not need to import stdlib submodules individually. `import hardwave.stdlib` registers everything with the global registries.
</Tip>
