nanohub-padre
A Python library for creating and running PADRE semiconductor device simulations.
Overview
nanohub-padre provides a Pythonic interface to generate PADRE input decks, making it easier to set up complex device simulations programmatically. PADRE is a 2D/3D device simulator that solves the drift-diffusion equations for semiconductor devices.
Features
- Pythonic Interface: Define meshes, regions, doping profiles, and solver settings using Python objects
- Device Factory Functions: Pre-built functions to create common devices (PN/PIN diode, NIN/PIP isotype diode, MOSFET, BJT, solar cell, etc.)
- Complete PADRE Support: Covers mesh generation, material properties, physical models, and solve commands
- Validation: Built-in parameter validation and helpful error messages
- Examples: Ready-to-run examples for common device structures
Installation
pip install nanohub-padre
Or install from source:
git clone https://github.com/nanohub/nanohub-padre.git
cd nanohub-padre
pip install -e .
Quick Start
Using Device Factory Functions (Recommended)
from nanohubpadre import create_mosfet, Solve, Log
# Create an NMOS transistor with one line
sim = create_mosfet(
channel_length=0.05,
device_type="nmos",
temperature=300
)
# Add solve commands
sim.add_solve(Solve(initial=True))
sim.add_log(Log(ivfile="idvg"))
sim.add_solve(Solve(v3=0, vstep=0.1, nsteps=15, electrode=3))
# Generate the input deck
print(sim.generate_deck())
Building from Scratch
from nanohubpadre import (
Simulation, Mesh, Region, Electrode, Doping,
Contact, Models, System, Solve
)
# Create simulation
sim = Simulation(title="Simple PN Diode")
# Define mesh
sim.mesh = Mesh(nx=100, ny=3)
sim.mesh.add_x_mesh(1, 0)
sim.mesh.add_x_mesh(100, 1.0)
sim.mesh.add_y_mesh(1, 0)
sim.mesh.add_y_mesh(3, 1)
# Define silicon region
sim.add_region(Region(1, ix_low=1, ix_high=100, iy_low=1, iy_high=3, silicon=True))
# Define electrodes
sim.add_electrode(Electrode(1, ix_low=1, ix_high=1, iy_low=1, iy_high=3))
sim.add_electrode(Electrode(2, ix_low=100, ix_high=100, iy_low=1, iy_high=3))
# Define doping
sim.add_doping(Doping(p_type=True, concentration=1e17, uniform=True, x_right=0.5))
sim.add_doping(Doping(n_type=True, concentration=1e17, uniform=True, x_left=0.5))
# Set contacts
sim.add_contact(Contact(all_contacts=True, neutral=True))
# Configure models
sim.models = Models(temperature=300, srh=True, conmob=True, fldmob=True)
sim.system = System(electrons=True, holes=True, newton=True)
# Solve
sim.add_solve(Solve(initial=True))
# Generate and print the input deck
print(sim.generate_deck())
Device Factory Functions
The library includes factory functions for common devices:
| Function | Description |
|---|---|
create_pn_diode |
PN junction diode (PIN with intrinsic_width) |
create_nin_diode |
NIN/PIP isotype diode — unipolar, non-rectifying |
create_mos_capacitor |
MOS capacitor for C-V analysis |
create_mosfet |
NMOS/PMOS transistor |
create_mesfet |
Metal-semiconductor FET |
create_bjt |
NPN/PNP bipolar transistor |
create_schottky_diode |
Schottky barrier diode |
create_solar_cell |
PN junction solar cell |
Examples
The examples/ directory contains Python equivalents of common PADRE simulations:
- pndiode.py: PN junction diode I-V characterization
- moscap.py: MOS capacitor C-V analysis
- mosfet_equivalent.py: NMOS transistor transfer and output characteristics
- mesfet.py: Metal-Semiconductor FET simulation
- single_mosgap.py: Simple oxide-silicon structure
Device factory examples in examples/devices/:
- pn_diode_example.py: PN diode using factory function
- mosfet_example.py: NMOS using factory function
- bjt_example.py: NPN BJT using factory function
- solar_cell_example.py: Solar cell using factory function
Run an example:
PYTHONPATH=. python3 examples/pndiode.py > pndiode.inp
padre < pndiode.inp > pndiode.out
Supported Commands
nanohub-padre supports all major PADRE commands:
| Category | Commands |
|---|---|
| Mesh | MESH, X.MESH, Y.MESH, Z.MESH |
| Structure | REGION, ELECTRODE |
| Doping | DOPING (uniform, Gaussian, ERFC, file) |
| Boundaries | CONTACT, INTERFACE, SURFACE |
| Materials | MATERIAL, ALLOY |
| Models | MODELS |
| Solver | SYSTEM, METHOD, LINALG, SOLVE |
| Output | LOG, PLOT.1D, PLOT.2D, PLOT.3D, CONTOUR, VECTOR |
| Control | OPTIONS, LOAD, REGRID, ADAPT |
Documentation
Full documentation is available at https://nanohub-padre.readthedocs.io/
Testing
Run the test suite:
pytest tests/ -v
License
MIT License - see LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Metadata
Release files for nanohub-padre 0.0.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| nanohub_padre-0.0.11.tar.gz | 158.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nanohub_padre-0.0.11-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 318.1 kB
Release files / nanohub_padre-0.0.11.tar.gz
| Download URL | nanohub_padre-0.0.11.tar.gz |
|---|---|
| Size | 158.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3f254b5260928772ce727c02bcf5a1cc9af27c85f59429c49d3a6eaa7092eef2
|
|
BLAKE2b-256 checksum How to use checksums |
b9c9c945c5ea44d5999d308d10f862a1236ae19115691cafe60838cde45d4eab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.11
|
Release files / nanohub_padre-0.0.11-py3-none-any.whl
| Download URL | nanohub_padre-0.0.11-py3-none-any.whl |
|---|---|
| Size | 159.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4ea9cac507aaf1f0c0bfdef3e11c4028e37c48d8fb20567da95dd3ec4a822288
|
|
BLAKE2b-256 checksum How to use checksums |
c6fc1000add87b4932774dc424b3cd86f338b8d3c1b096e57de03300e286d0c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.11
|
Security for nanohub-padre 0.0.11
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.