isaac-toolkit
Automated Customization Toolkit for Instruction Set Architectures (ISAs)
Repository Structure
Python Package
isaac_toolkit
├── algorithm
│ └── ... # work in progress
├── analysis
│ ├── dynamic # dynamic analysis tools
│ │ ├── histogram
│ │ │ ├── instr.py
│ │ │ ├── opcode.py
│ │ │ └── pc.py
│ │ ├── profile
│ │ │ └── profile.py
│ │ └── trace
│ │ ├── basic_blocks.py
│ │ ├── instr_operands.py
│ │ ├── track_used_functions.py
│ │ └── trunc_trace.py
│ └── static # static analysis tools
│ ├── dwarf.py
│ ├── histogram
│ │ ├── disass_instr.py
│ │ └── disass_opcode.py
│ ├── linker_map.py
│ ├── llvm_bbs.py
│ └── mem_footprint.py
├── artifact
│ └── artifact.py
├── backend # ISAAC backends
│ ├── isa # not implemented
│ │ └── ...
│ ├── ise # not implemented
│ │ └── ...
│ ├── memgraph # annotate CFDG database with bb_weights
│ │ └── annotate_bb_weights.py
│ └── profile # not implemented
│ └── ...
├── frontend # ISAAC frontends
│ ├── cfg # configuration parsing
│ │ └── yaml.py
│ ├── disass
│ │ └── objdump.py
│ ├── elf
│ │ └── riscv.py
│ ├── instr_trace
│ │ ├── etiss.py
│ │ └── spike.py
│ ├── isa # work in progress
│ │ └── ...
│ ├── linker_map.py
│ ├── memgraph # work in progress
│ │ ├── llvm_ir_cdfg.py
│ │ └── llvm_mir_cdfg.py
│ ├── mem_trace # not implemented
│ │ └── ...
│ └── source # not implemented
│ └── ...
├── generate # ISAAC generators
│ ├── ise # Propose ISAXes
│ │ ├── choose_bbs.py
│ │ ├── pool
│ │ │ └── random.py
│ │ └── query_candidates_from_db.py
│ └── iss # ISS retargeting
│ └── generate_etiss_core.py
├── session # Infrastructure for sessions/artifacts
│ ├── artifact.py
│ ├── config.py
│ ├── create.py
│ ├── session.py
│ └── summary.py
├── utils
│ ├── cli.py
│ ├── nx_converter.py # Nextworkx graph to images
│ ├── pickle_printer.py # Convert pickle files (including DFs to text)
│ └── ...
└── visualize
└── pie # Pie chart generators
├── disass_counts.py
├── mem_footprint.py
└── runtime.py
Examples
Usage
Prerequisites
Install (optional) APT Requirements: sudo apt install libgraphviz-dev
Setup a Python virtual environment:
virtualenv -p python3 venv/
# Alternative: python3 -m venv venv/
Install packages:
pip install -e .
# Optional:
pip install -e ".[dev]"
pip install -e ".[memgraph]"
Demo
Package installation: TODO
Make sure to add the top level directory of this repository to your Python path:
export PYTHONPATH=$(pwd):$PYTHONPATH
For Python v3.10+ you can also just use pip install -e .!
Minimal example:
python3 -m isaac_toolkit.session.create --session sess/
python3 -m isaac_toolkit.session.summary --session sess/
See Examples/standalone/coremark/README.md for an end-to-end example.
Development
Style
We use the black formatter to maintain a consistent Python style (See setup.cfg & pyproject.toml)
Pylint config is also available, but not enforced.
Testing
First, make sure that the additional development packages are installed via:
pip install -r requirements_dev.txt
Run Pytest:
python3 -m pytest tests -rs -s
Create Coverage Report:
coverage run --source isaac_toolkit -m pytest tests
coverage report -m
coverage html
Metadata
Release files for isaac-toolkit 0.5.7
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 | Actions |
|---|---|---|---|---|
| isaac_toolkit-0.5.7.tar.gz | 1.0 MB | Without provenance | Details for isaac_toolkit-0.5.7.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| isaac_toolkit-0.5.7-py3-none-any.whl | Python 3 | none | any | Details for isaac_toolkit-0.5.7-py3-none-any.whl |
Total release size: 1.4 MB
Release files / isaac_toolkit-0.5.7.tar.gz
| Download URL | isaac_toolkit-0.5.7.tar.gz |
|---|---|
| Size | 1.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3ed74a662fec2c3938d20a09105ccfc1ba9d3955f86c42658a1b890589132ed4
|
|
BLAKE2b-256 checksum How to use checksums |
6431e8ba12a25b7f6d1f0bcf21852a1249b2f396af24189cc522ef86fd98a521
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / isaac_toolkit-0.5.7-py3-none-any.whl
| Download URL | isaac_toolkit-0.5.7-py3-none-any.whl |
|---|---|
| Size | 348.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b559f6cce91762c577075206bfb4702548ec38b7e33f387dc3ac6288fee44b84
|
|
BLAKE2b-256 checksum How to use checksums |
d5414539b9f73bc1e3e65e16666e83f8b79506d30bb9a40e27e5a156d278219b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Security for isaac-toolkit 0.5.7
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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.