You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
WARNING: this release breaks compatibility with Ubuntu 20.04 LTS
WARNING: this release breaks the API of the graph_algorithm, dataflow, and xilinx_toolbox plugins
GUI
refactored module widget
added option to show gate content for each module
added option to show interior nets for each module
added Isolate in new view feature for nets
added button to expand or collapse all tree items
added delete module action and shortcut
added entries for context menu
adapted appearance for menu content tree, selection details tree, grouping content tree (same model for all)
refactored view widget
changed appearance from tabular view to tree view
added 'directory' elements to organize and manage groups of views
added drag'n drop feature allowing to relocate views or directories to another branch in the tree
added column for view ID
added functions to Python GUI API to create, modify and delete views and directories
added UNDO functionality for create/delete view and directory actions
fixed sort-by-column feature. The tree is not sorted at program start thus showing elements in 'natural' order.
refactored search bar
changed appearance of search bar to be more intuitive
added menu for extended options - e.g. option to search in selected columns only
added search history
added filter proxy class for trees and tables increasing the search performance
refactored layouter module
switched to multithreaded algorithm
boosted performance by using classes with faster memory access
removed layouter code used prior to version 3.1.0 - thus removing the setting option to use that code
added setting option to dump junction layout input data for experts to debug in case of layout errors
plugins
added hawkeye plugin for the detection of symmetric cryptographic implementations in gate-level netlists
see publication HAWKEYE - Recovering Symmetric Cryptography From Hardware Circuits at CRYPTO'24 for details
changed graph_algorithm plugin
updated the igraph dependency shipped with HAL
graph corresponding to a netlist is now encapsulated within an NetlistGraph object that allows easy interaction with the graph
added new functions for computing neighborhoods, shortest paths, subgraphs, and (strongly) connected components
changed the API to facilitate for the aforementioned changes and made everything accessible via Python
changed dataflow_analysis plugin
can now operate on arbitrary, user-defined gate types, not only FFs
user can now specify the pin types to be considered as control pins
can now take known registers and other known word-level structures into account during analysis
changed the API to facilitate for the aforementioned changes
changed netlist_simulator_controller plugin
added feature to VCD parser: removal of leading backslash and trailing whitespace from waveform name
added converter for net names which don't qualify as C++ variable name
extended maximum line with the CSV parser can handle
changed warning messages for waveform parsing and made them more specific
changed policy toward 'dangling' wires, they are no longer ignored but considered as global inputs or outputs
changed waveform_viewer plugin
added GUI wizard to structure input steps when launching a new simulation
added table widget to enter engine parameter
added table widget to enter simulation input data
added viewer to show output of simulation process while running
added algorithm to identify simulated pin groups and bundle apropriate waveform to groups
changed xilinx_toolbox plugin
added split_shift_registers function to split SRL16E gates into multiple flip-flops
changed Python bindings for better usability
core
pin (groups)
added optional flag to determine whether a pin group has an inherent order (defaults to false)
added GateType::delete_pin_group and GateType::assign_pin_to_group to enable more operations on pin groups of gate pins
added parameter force_name to enforce pin (group) renaming to Module::set_pin_name, Module::set_pin_group_name, Module::create_pin, and Module::create_pin_group
added pin types status, error, error_detection, done, and control
added qualifier for module pin_changed core events telling receiver details about the recent modification
added event scope and stacking classes so that module pin_changed events can be collected and prioritized
added specific GUI handler for every module pin_changed event thus replacing the reload-entire-pingroup-tree policy
added class ActionPingroup so that UNDO function works for all pin / pin group actions issued from GUI
decorators
added NetlistTraversalDecorator to ease exploration of a netlist
added get_next_matching_gates to get successor/predecessor gates matching a certain condition
added get_next_matching_gates_until to get successor/predecessor gates until a certain condition is fulfilled
added get_next_matching_gates_until_depth to get successor/predecessor gates up to a certain depth
added get_next_sequential_gates and get_next_sequential_gates_map to get the next layer of sequential successors/predecessors
added get_next_combinational_gates to get all combinational gates until the next non-combinational gates are reached
miscellaneous
added support for Ubuntu 24.04 LTS
added INIT field declaration to FF-gate-types in example library
added drag'n drop feature allowing to move several nodes in graph view at same time
added GUI PluginParameter type ComboBox for parameters that can be requested from plugin
added GUI PluginParameter types Module and Gated for parameters that can be requested from plugin
added Show content button to Groupings widget to show content of grouping as a list
added flag which Python editor tab is active when serializing project
added extended gate library picker when importing a netlist
added keyboard shortcut for delete-item action from toolbar
added gate type properties fifo and shift_register
added optional filter to Net::get_num_of_sources and Net::get_num_of_destinations
added function unify_ff_outputs to netlist preprocessing plugin
added function replace_gate_type to gate library
changed supported input file formats for import from hard coded list to list provided by loadable parser plugins
changed behavior of import netlist dialog, suggest only non-existing directory names and loop until an acceptable name was entered
changed appearance and behavior of import project dialog, make sure existing hal projects don't get overwritten
changed installation script policy to install Python packages (omit 'pip install' which would need virtual environment)
removed hard coded path names from CI MacOS workflow script
deprecated many functions in netlist_utils as they have been moved somewhere else
bugfixes
fixed saleae input data reader which gets linked into external Verilator simulation code
fixed waveform viewer: opening old results will no longer generate the same view twice
fixed waveform viewer: opening old results will by now also update waveform time axis
fixed colors in Python Console when switching between color schemes
fixed pybind of Module::get_gates
fixed Python script execution abort button disappearing when switching tabs
fixed Python interpreter crash due to release of GIL semaphore before cleanup is done
fixed segfault when deleting a module for which an exclusive view exists
fixed not loading all plugins if the GUI is not in control
fixed Verilog writer not being a dependency of Verilator plugin
fixed order of pins within pin groups not being properly handled for modules and gate types
fixed netlist parsers assigning gate pins in wrong order (compensated by the bug above, imported netlists were still correct)
fixed wrong order of pins within pin groups in provided gate libraries
fixed format string handling of enums in log outputs
fixed restoring user assigned module colors from project file
fixed no scrollbar shown in Data tab of Selection Details widget
fixed declaration of FF-gate type in example gate library
fixed error which could cause crashes in do-not-render-layout-until-complex-operation-finished algorithm
fixed wrong placements of nodes in view by XML-macro (might even crash)
fixed problems in GUI plugin management caused by addressing plugins by absolute path
fixed several bugs related to moving node boxes in GUI by drag'n'drop
fixed several bugs in automated tests, eliminate cases which produce non-deterministic results