Kfactory is a gdsfactory-like tool. It is built with KLayout as a backend instead of gdstk, but aims to offer the similar features.
Caution
KFactory is still experimental Expect API changes without notice (even though we try to keep it to a minimum!). The core should be fairly stable with the exception of the all-angle router. It is likely to change in future releases
It is suggest to pin the version of KFactory in requirements.txt
or pyproject.toml
with kfactory==0.21.11
for example.
Features similar to gdsfactory:
- Cells & decorator for caching & storing cells
- Simple routing (point to point and simpl bundle routes for electrical routes)
- Basic cells like euler/circular bends, taper, waveguide
- Path extrusion (no interface with CrossSections)
- Jupyter integration
- PDK/package configuration
- Plugin system (simulations etc.) - Check kplugins
- Generic PDK example - Check kgeneric
Notable missing Features:
- CrossSection
- Netlist/Schematics and LVS
- More advanced routing
New/Improved Features:
- Fully hierarchical bi-directional conversion to YAML
- Automatic snapping to grid thanks to KLayout
- More features for vector geometries due to concept of Point/Edge/Vector/Polygon from Klayout
- Easy booleans thanks to KLayout Regions
- Enclosures: use the concept of enclosures, similar to cross sections, to allow automatic calculation of boolean layers for structures based on minkowski sum, which are built into KLayout
kfactory is available on pypi
pip install kfactory
At the moment kfactory works only on python 3.10 and above
A development environment can be installed with
python -m pip install -e .[dev]
It is defined in pyproject.toml
. For committing pre-commit
should be installed with pre-commit install
.