Provide unified interfaces to execute EDA tools via CLI from Python, agnostic to any specific configuration format/object.
Main Goals
- Provide a pythonic solution to construct command line calls for EDA tools based on pyTooling.CLIAbstraction
- Launch CLI tools and connect to STDIn, STDOUT, STDERR for realtime output post-processing.
Features
- Support multiple native platforms: Linux, macOS, Windows.
- Support nested platforms like MSYS2 with MinGW32, MinGW64, URCT64, Clang64, ...
- Find CLI programs either in
PATHor specify an exact installation location. - Generate CLI options in correct order.
- Generate correctly escaped CLI options.
Supported Tools
- Aldec
- 🚧 Active-HDL
- 🚧 Riviera-PRO
- Altera
- 🚧 Quartus
- 🚫 ModelSim Altera (Student) Edition
- Cadence
- 🙋 need a list of tools
- IntelFPGA
- 🚧 Quartus
- 🚫 ModelSim Altera (Student) Edition
- Lattice
- 🚧 Diamond
- 🚫 Active-HDL Lattice Edition
- 🚫 ModelSim Lattice Edition
- MentorGraphics
- ✅ ModelSim DE/SE/PE
- 🚫 QuestaSim
- SiemensEDA
- 🚫 ModelSim DE/SE/PE
- 🚫 QuestaSim
- Synopsys
- 🙋 need a list of tools
- Xilinx
- 🚧 ISE
- 🚧 Vivado
- 🚫 Vivado-SDK
- 🚫 Vitis
- System Tools
- ✅ Git
- Open Source
- ✅ GHDL
- ✅ GTKWave
- Yosys
- 🙋 need a list of tools
Legend:
✅ → implemented and tested
🚧 → under test
🚫 → planned but not yet implemented ⇒ accepting PRs
🙋 → need help
Examples
from pyEDAA.CLITool.GHDL import GHDL
tool = GHDL()
tool[tool.CommandAnalyze] = True
tool[tool.FlagVHDLStandard] = "08"
tool[tool.FlagSynopsys] = True
tool[tool.FlagRelaxed] = True
tool[tool.FlagExplicit] = True
tool[tool.FlagMultiByteComments] = True
tool[tool.FlagLibrary] = "lib_Test"
print(f"Calling GHDL: {tool}")
# Calling GHDL: "ghdl" "analyze" "--std=08" "-fsynopsys" "-frelaxed" "-fexplicit" "--work=lib_Test" "--mb-comments"
Consumers
This layer is used by:
References
- docs.siliconcompiler.com: Tools directory
- GHDL:
- Paebbels/pyIPCMI: pyIPCMI/Simulator/GHDLSimulator.py
- VUnit/vunit: vunit/sim_if/ghdl.py
- olofk/edalize: edalize/ghdl.py
- im-tomu/fomu-workshop: hdl/mixed/blink/Makefile
- PyFPGA/pyfpga: fpga/tool/openflow.py
- XedaHQ/xeda: xeda/flows/ghdl/init.py
- cocotb/cocotb: cocotb/runner.py (cocotb/cocotb#2634)
- stnolting/neorv32: tasks/examples.py (stnolting/neorv32#110)
- ghdl/ghdl: scripts/vendors/shared.sh
- OSVVM/OSVVM-Scripts: VendorScripts_GHDL.tcl
Contributors
- Patrick Lehmann (Maintainer)
- Unai Martinez-Corral
- and more...
License
This Python package (source code) is licensed under Apache License 2.0.
The accompanying documentation is licensed under Creative Commons - Attribution 4.0 (CC-BY 4.0).
SPDX-License-Identifier: Apache-2.0
Metadata
Release files for pyEDAA.CLITool 0.4.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyedaa_clitool-0.4.4.tar.gz | 27.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyedaa_clitool-0.4.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 65.0 kB
Release files / pyedaa_clitool-0.4.4.tar.gz
| Download URL | pyedaa_clitool-0.4.4.tar.gz |
|---|---|
| Size | 27.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b8cd03991880e14d1b03c91e7b44ec588155ff19ac0ce2890998269ea742cc59
|
|
BLAKE2b-256 checksum How to use checksums |
619247ce7d3cfa698b760b9c844f74d69b851956dc22870d8123b7fed92692ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|
Release files / pyedaa_clitool-0.4.4-py3-none-any.whl
| Download URL | pyedaa_clitool-0.4.4-py3-none-any.whl |
|---|---|
| Size | 37.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0a3af246a71b1add917dab028ebed2bfd95021326466363bcb721066ea8f7b7a
|
|
BLAKE2b-256 checksum How to use checksums |
4ec03b38a5056e68485a40308ec77deb1faa659f856f76a57c6c2969d8d7f6ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|