NanoPlaceR: Reinforcement-learning placement and routing for FCN
NanoPlaceR is an open-source physical-design tool for field-coupled nanocomputing (FCN). It uses masked Proximal Policy Optimization to place logic elements and routes each partial placement with A* search. It can generate layouts for logic networks of roughly 200 gates while using about 50% less area than the state-of-the-art heuristic approach described in the publications below.
Installation
NanoPlaceR supports Python 3.11 through 3.14 and requires mnt.pyfiction 0.8 or newer. The CI suite covers both ends of that range.
python -m venv .venv
source .venv/bin/activate
python -m pip install mnt.nanoplacer
On Windows, activate the environment with .venv\Scripts\activate.
Usage
Use NanoPlaceR from Python:
from mnt.nanoplacer import create_layout
create_layout(
benchmark="trindade16",
function="mux21",
clocking_scheme="2DDWave",
technology="QCA",
minimal_layout_dimension=False,
layout_width=3,
layout_height=4,
time_steps=10_000,
reset_model=True,
verbose=1,
optimize=True,
)
Or use the command-line interface:
mnt.nanoplacer --help
mnt.nanoplacer --benchmark trindade16 --function mux21 \
--clocking-scheme 2DDWave --technology Gate-level \
--minimal-layout-dimension --time-steps 10000 --verbose 1
Runs store generated layouts in layouts/, trained agents in models/, and TensorBoard data in tensorboard/. By default, the CLI resumes a matching saved model when one exists; pass --reset-model to train from scratch.
Repository structure
src/mnt/nanoplacer/
├── benchmarks/ Verilog benchmark circuits
├── main.py Python and command-line entry point
└── placement_envs/
├── nano_placement_env.py Gymnasium placement environment
└── utils/
├── layout_dimensions.py Predefined minimal dimensions
└── placement_utils.py Network and action helpers
tests/ Unit and integration tests
References
If you use NanoPlaceR in your work, please cite the following publications:
- Late Breaking Results From Hybrid Design Automation for Field-coupled Nanotechnologies (DAC 2023)
- Thinking Outside the Clock: Physical Design for Field-coupled Nanocomputing with Deep Reinforcement Learning (ISQED 2024)
@INPROCEEDINGS{hofmann2023nanoplacer,
author = {S. Hofmann and M. Walter and L. Servadei and R. Wille},
title = {{Late Breaking Results From Hybrid Design Automation for Field-coupled Nanotechnologies}},
booktitle = {{2023 60th ACM/IEEE Design Automation Conference (DAC)}},
year = {2023},
}
@INPROCEEDINGS{hofmann2024nanoplacer,
author = {S. Hofmann and M. Walter and L. Servadei and R. Wille},
title = {{Thinking Outside the Clock: Physical Design for Field-coupled Nanocomputing with Deep Reinforcement Learning}},
booktitle = {{2024 25th International Symposium on Quality Electronic Design (ISQED)}},
year = {2024},
}
Metadata
Release files for mnt.nanoplacer 0.2.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mnt_nanoplacer-0.2.6.tar.gz | 4.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mnt_nanoplacer-0.2.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 8.5 MB
Release files / mnt_nanoplacer-0.2.6.tar.gz
| Download URL | mnt_nanoplacer-0.2.6.tar.gz |
|---|---|
| Size | 4.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
06a143dbb1fcf36ac88ce368c007530c55876f55d25743b83ecce67a0552b4d6
|
|
BLAKE2b-256 checksum How to use checksums |
f95f23ae350067d4ee383195e9bd54edbcaf10fc9957d251bd690c18ab73a5d3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency logRelease files / mnt_nanoplacer-0.2.6-py3-none-any.whl
| Download URL | mnt_nanoplacer-0.2.6-py3-none-any.whl |
|---|---|
| Size | 4.2 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4a306d4e20fffc8a9a3fe54b063b7df6ad13a21476a1fe739eb00f08a6e42399
|
|
BLAKE2b-256 checksum How to use checksums |
fed5703a7c4f1a3154c6771bad867ab1280f5891c8ac09c1590fcd0b6dc4ec9a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency log