π€ Contributing Guide β SemiDevKit
Thank you for your interest in contributing to SemiDevKit!
SemiDevKit integrates semiconductor device physics, compact modeling, reliability analysis,
and physical design workflows. Contributions that improve clarity, correctness, usability,
or educational value are highly welcome.
π± 1. Ways to Contribute
There are multiple ways to contribute to the project:
β 1. Improve Documentation
- Fix typos or unclear explanations
- Improve structure or wording
- Add diagrams, tables, or figures
- Contribute tutorials or example workflows
β 2. Submit Bug Reports
Please report issues via GitHub:
https://github.com/Samizo-AITL/SemiDevKit/issues
When reporting a bug, include:
- Operating system
- Python version
- ngspice version (if applicable)
- Exact error messages or logs
- Steps to reproduce
- Expected vs. actual behavior
β 3. Add New Features
Examples of welcome feature contributions include:
- New TCAD solvers (e.g. 2D Poisson, DD-lite)
- Additional BSIM4 analyzers
- Extended reliability models
- New PZT material or ferroelectric models
- OpenLane-Lite flow enhancements
β 4. Improve Code Quality
- Refactor existing scripts
- Add comments and docstrings
- Improve modularity and readability
- Reduce duplicated or hard-coded logic
π 2. Contribution Workflow
Please follow this standard GitHub workflow:
Step 1 β Fork the Repository
https://github.com/Samizo-AITL/SemiDevKit
Step 2 β Create a Feature Branch
git checkout -b feature/my-new-feature
Step 3 β Make Your Changes
- Follow the coding and style guidelines (see below)
- Test your changes locally before committing
Step 4 β Commit Message Guidelines
Use clear, descriptive commit messages:
Add new MOSCAP CV model
Fix ngspice path handling on Windows
Improve PZT hysteresis visualization
Step 5 β Push and Open a Pull Request
git push origin feature/my-new-feature
Then open a Pull Request on GitHub with a clear description of your changes.
π§βπ» 3. Coding Guidelines
β Python
- Follow PEP8 style guidelines where practical
- Keep scripts short and readable
- Prefer functions over long procedural code
- Save plots under
fig/and data underresults/
β SPICE
- Store templates under
templates/ - Use
.paramvariables instead of hard-coded values - Keep instance naming consistent (
m1,dut, etc.)
β Documentation
- Use Markdown (
.md) - Add tables or diagrams where helpful
- Keep explanations clear, concise, and technical
π§© 4. Module Design Rules
To preserve reproducibility and clarity:
- Each module must be self-contained
- Modules must not depend on files outside their directory
- Use consistent subdirectory names:
run/plot/models/templates/results/fig/
- Do not commit generated results, except for small demonstration examples
π§ͺ 5. Testing Guidelines
Before submitting a Pull Request, please verify:
β TCAD Playground
- MOSFET and MOSCAP scripts execute successfully
- PNG figures are generated under
fig/
β BSIM4 Analyzer
.csv,.dat,.log, and.pngfiles are generated- Vth, gm, and Id extraction completes without error
β Reliability Analyzer
- HCI / NBTI scripts execute correctly
- ΞVth and ΞId degradation curves are reasonable
β OpenLane-Lite
- Docker-based flow runs successfully
- GDS output is produced for the example design
π¨ 6. Style & Naming Conventions
β File Naming
- Use
lowercase_with_underscores - No spaces in file names
β Variable Naming
- Use
snake_casefor Python variables and functions
β Output Naming
Include the following when applicable:
- Technology node (e.g.
130nm) - Device type (
nmos/pmos) - Analysis mode (
vgid,vdid,cv) - Sweep condition (
LT,RT,HT)
Example:
130nm_nmos_vgid_RT.csv
βοΈ 7. Licensing Rules for Contributions
SemiDevKit uses a hybrid license model:
| Component | License |
|---|---|
| Source code | MIT License |
| Documentation | CC BY or CC BY-SA |
| Figures | CC BY-NC |
By submitting a contribution, you agree that your work will be released under the same licensing terms.
π 8. Contributor Recognition
Contributors may be acknowledged through:
- GitHub contributor listings
- SemiDevKit documentation pages
- Acknowledgment sections in future release notes
π¬ 9. Contact
If you would like to discuss an idea before contributing:
| Item | Details |
|---|---|
| π€ Name | Shinichi Samizo |
| π§βπ» GitHub | https://github.com/Samizo-AITL |
π Thank you for helping improve SemiDevKit!