Skip to content

Releases: emsec/hal

v3.2.3

18 Jan 17:24
Compare
Choose a tag to compare
  • fixed z3_utils plugin being disabled by default causing linking errors
  • fixed load_initial_values and load_initial_values_from_netlist assigning values to potentially non-existing nets

v3.2.2

16 Jan 13:57
Compare
Choose a tag to compare
  • refactored gate library handling
    • separated gate library manager from gate library parser interface
    • added gate library writer interface to enable writing out gate library files
  • extended and refactored gate library functionality
    • added create_gate_type to class GateLibrary to enable gate type creation from Python
    • added mark_vcc_gate_type and mark_gnd_gate_type to class GateLibrary to enable marking gate types as power or ground connections
    • added get_gate_type_by_name and contains_gate_type_by_name to class GateLibrary
    • added pin types and respective functions to GateType to enable assigning special-purpose pins
    • added get_gate_library to class GateType
    • added base types ram, dsp, and io
    • merged input and output pin groups to simplify pin group handling
    • removed add_gate_type function from class GateLibrary
    • removed GateTypeSequential and GateTypeLut classes and moved their functionality into class GateType
    • renamed some functions to have shorter and more understandable names
  • added new gate library format: "HAL Gate Library" (HGL)
    • supports assignment of pin types to gate types
    • added parser for HGL (.hgl) files
    • added writer for HGL (.hgl) files
  • refactored liberty gate library parser
    • added parsing of power and ground pins (pg_pin) to Liberty parser
  • added more netlist utility functions
    • added get_nets_at_pins to retrieve nets that are connected to a vector of pins
    • added remove_buffers to remove buffer gates from a netlist
    • added remove_unused_lut_endpoints to remove unused LUT fan-in endpoints
    • added rename_luts_according_to_function to rename LUTs depending on the Boolean function they implement
  • added to_z3 to class BooleanFunction to translate a Boolean function into a z3 expression
  • added highly experimental solve_fsm plugin for FSM verification using z3
  • added z3_utils plugin to provide common z3 functions to all other plugins
  • improved layouter uses location information from gate API
  • switched from float gate coordinates to integer ones
  • the netlist simulator VCD writer now optionally takes a set of target nets to write to VCD
  • fixed add_boolean_function of class Gate assigning wrong functions to LUTs
  • fixed wrong Python binding for property gate_library of class Netlist
  • fixed netlist simulator segfaulting when an output pin of a FF remains unconnected
  • fixed optimization of Boolean functions sometimes producing wrong or non-optimal results
  • fixed netlist_utils::get_subgraph_function returning wrong results if input pins without relevance for the Boolean function remained unconnected
  • fixed layouter not showing connections if things change within submodules by adding additional test whether removing or adding a gate/module requires context update

v3.1.11

03 Jan 10:38
Compare
Choose a tag to compare
  • added highly experimental way to close and reopen netlists at runtime
    • known issue: the Python context does not change properly between netlists
  • added creation of backups for Python files created within the editor outside of the .hal file
  • added user prompt when detecting Python file backups after a crash
  • fixed crash when moving top module upward
  • fixed module cache inconsistencies causing bad memory allocs in the GUI when deleting nets or endpoints

v3.1.10

18 Dec 12:37
Compare
Choose a tag to compare
  • added SB_GB_IO, SB_GB, SB_I2C, SB_SPI, SB_HFOSC, and SB_LFOSC gate types to ICE40ULTRA gate library
  • added jumping to gates, nets, and modules from the selection details widget when double-clicking the respective item in the list or using the context menu
  • added isolating gates and modules in new views from the selection details widget using the conext menu
  • changed layouter to only be called after fully executing a Python script
  • improved performance of selection details widget
  • fixed layouter flaw that junctions could not be drawn if in- and outgoing wires were swapped
  • fixed parsing of bit order for INIT strings in FPGA gate libraries
  • fixed GUI segfaulting when deleting wires without unfolding the containing module
  • fixed occasional null pointer exceptions on GUI startup
  • fixed GUI listening to signals from netlists other than the one loaded within the GUI
  • fixed graph view resizing when navigating using the arrow keys or the GUI API

v3.1.9

02 Dec 12:04
Compare
Choose a tag to compare
  • added NetlistSimulator::load_initial_value_from_netlist to load the initial value from the netlist
  • changed NetlistSimulator::load_initial_values to load a user-specified value instead of reading it from the netlist
  • fixed layouter not showing gates within modules for netlists with coordinates

v3.1.8

02 Dec 09:03
Compare
Choose a tag to compare
  • added optional placement of gates and modules according to COORDINATE info parsed from netlist file
  • fixed crash caused by NodeBoxes hash not completely emptied on clear
  • fixed mistakes in module Python documentation
  • fixed missing include in graph_navigation_widget.cpp
  • fixed missing initialization in NetlistSimulator::generate_vcd
  • fixed missing input label when separated net is connected to more than one port

v3.1.7

26 Nov 13:28
Compare
Choose a tag to compare
  • WARNING: the function signature of netlist_utilities::get_subgraph_function has changed
  • added cycle detection to netlist_utilities::get_subgraph_function again
  • added Lattice ICE gate library
  • improved access to layout class NodeBox for GUI C++ developer
  • improved Python plugin, added command line option --python-script and --python-args
  • improved appearance and programmcode for arrow-key navigation
  • removed all Boost and Kyoto references
  • fixed crashes due to missing entries in coordinate system in views with unconnected boxes
  • fixed crashes when navigating from global inputs connected to multiple boxes
  • fixed bad alignment between net endpoint and port label for gates with ports not connected to nets
  • fixed log output got incorrectly supressed in case command line arguments were solely directed at plugins
  • fixed wrong layouting of endpoints in GUI in the presence of unconnected pins/ports
  • fixed wrong calculation of minimum size of the dockbars
  • fixed bottom dockbar not reappearing when dragging removing every widget from it

v3.1.6

22 Nov 18:31
Compare
Choose a tag to compare
  • added netlist_utilities::get_subgraph_function variants with and without cache
  • added netlist_utilities::get_next_sequential_gates variants with and without cache
  • added tests for netlist_utilities::get_next_sequential_gates
  • added python bindings for gate_library_manager
  • cleaned up DataContainer
  • removed hidden internal cache from netlist_utilities::get_subgraph_function
  • removed netlist_utilities::get_subgraph_function cycle detection due to unintended behavior
  • fixed netlist parsers wrongly handling escapings within strings
  • fixed netlist_utilities::copy_netlist did not copy DataContainer contents
  • fixed netlist pybind handling of netlists that occasionally led to double-free segfaults
  • fixed segfault in BooleanFunction::from_string when providing partial variable names

v3.1.5

16 Nov 13:40
Compare
Choose a tag to compare
  • fixed and expanded Python decorators for logging in study environment to additionally cover the GUI
  • fixed infinite loop when renaming groupings using the GUI

v3.1.4

15 Nov 13:11
Compare
Choose a tag to compare
  • added tests for netlist_utils
  • fixed crash when creating invalid module when using netlist::create_module
  • fixed assigning nets instead of gates when copying netlist using netlist_utils::copy_netlist
  • fixed netlist_utils::copy_netlist not copying port names
  • fixed netlist_utils::get_subgraph_function crashing on unconnected input pin
  • fixed infinite loop within netlist_utils::get_subgraph_function if the combinational logic contains a feedback path