- 
                Notifications
    
You must be signed in to change notification settings  - Fork 88
 
Home
        Julian Speith edited this page Sep 3, 2025 
        ·
        159 revisions
      
    - 
Introduction to HAL - The idea of HAL and an overview of its core components.
- Building HAL - How to build HAL on your own machine.
 - Starting HAL - How to start HAL with or without its GUI.
 - Using HAL - First steps in HAL.
 - Example Projects - A description of the example projects shipped with HAL.
 - HAL in Academia - Applications of HAL in academia.
 
 - 
Core - The part of HAL that provides its underlying functionality.
- 
Netlist - Represents the connectivity of an electronic circuit.
- Data Container - A general structure to hold arbitrary data.
 - Gate - Represents the functional or sequential building blocks of a netlist.
 - Net - Serves as a connection between gates within the netlist.
 - Module - Represents a functional unit of gates fulfilling a dedicated purpose.
 - Grouping - Provides an easy way to group gates, nets, and modules.
 - Endpoint - The point where a net connects to a gate.
 
 - 
Gate Library - Holds all available gate types of a specific standard cell library.
- Gate Type - Specifies details of the underlying type of a gate.
 
 - Boolean Function - Specifies the Boolean function of a gate (type).
 - Decorators (WIP)
 - Netlist Utilities - A set of utility functions operating on the netlist providing diverse functionality.
 
 - 
Netlist - Represents the connectivity of an electronic circuit.
 - 
GUI - An in-depth description of the HAL GUI and its functionalities.
- General Concepts - Some of the concepts that are important to understand when dealing with the GUI.
 - Widgets - Details regarding each of the GUI's widgets.
- Graph View - Displays the netlist and substructures as a visual graph.
 - Modules Widget - An overview about the netlist's module hierarchy.
 - Views Widget - Shows and manages all existing views.
 - Groupings Widget - Shows and manages all existing groupings.
 - Selection Details Widget - Presents detailed information on all items of the current selection.
 - Log Widget - Provides a live view of the HAL log.
 - Python Editor Widget - A lightweight tool for developing HAL python scripts.
 - Python Console Widget - Fast and easy access to the HAL Python API.
 
 - Python GUI API - Interact with GUI selections via python.
 - Python Thread - Running Python interpreter in background thread.
 - Settings - Settings for the HAL GUI.
 - Plugin Management - Manage plugins from GUI.
 
 - 
Provided Plugins - The set of plugins that come with the off-the-shelf variant of HAL.
- Gate Library Files - The gate libraries supported by HAL by default.
 - Netlist Preprocessing (WIP)
 - Graph Algorithms - An interface to igraph that enables running graph algorithms on a netlist.
 - Dataflow Analysis - DANA tool to automatically analyze the flow of data through the netlist.
 - HAWKEYE - A tool to automatically locate symmetric cryptographic primitives within a gate-level netlist.
 - Bitorder Propagation (WIP)
 - Logic Evaluator - A tool to evaluate the behavior of (sub-)networks comprising only combinatorical logic.
 - Netlist Simulator and Waveform Viewer - A simulation framework with integrated viewer for waveform analysis.
 - Netlist Parsers & Writers (TODO)
 - Gate Library Parsers & Writers (TODO)
 
 - 
- Creating an Empty Plugin
 - Adding Functionality to a Plugin (WIP)
 - Creating Python Bindings for a Plugin (WIP)
 - outdated:
- Standard Plugin (outdated)
 - Netlist Parser (TODO)
 - Netlist Writer (TODO)
 - Gate Library Parser (TODO)
 - Gate Library Writer (TODO)
 - Gate Library - Create a gate library file that can be read by HAL.
 
 
 - 
Contributing