An abstraction layer of EDA CLI tools.
Project description
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
PATH
or 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyEDAA.CLITool-0.2.1.tar.gz
(19.9 kB
view hashes)
Built Distribution
Close
Hashes for pyEDAA.CLITool-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a32006b86d0c162103f9e71c58f5b72bc6e1cab51fb66fb58cb3668af1400de6 |
|
MD5 | 2c12dc8879022382ae82e7e011e35ed0 |
|
BLAKE2b-256 | 974b42b3a153f2892945eab73e625b7fe6fccf461034847e2db2f17b28ab0a66 |