Skip to main content

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)

Source distribution for isaac-toolkit 0.5.7
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)

Table of built distributions (wheels) for isaac-toolkit 0.5.7
File Interpreter ABI Platform Actions
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page