HAL – The Hardware Analyzer
BooleanFunction::substitute(const std::map<std::string, std::string>&)
to substitute multiple variable names at onceBooleanFunction::get_constant_value
to return std::vector<BooleanFunction::Value>
, thereby removing the 64-bit limitBooleanFunction::Node::get_constant_value
, BooleanFunction::Node::get_index_value
, and BooleanFunction::Node::get_variable_name
BooleanFunction::get_constant_value_u64
and BooleanFunction::Node::get_constant_value_u64
to retrieve the constant value as u64
if it comprises less than 64-bitBooleanFunction::has_constant_value(const std::vector<BooleanFunction::Value>&)
and BooleanFunction::Node::has_constant_value(const std::vector<BooleanFunction::Value>&)
BooleanFunction::algebraic_printer
as an alternative printer for BooleanFunction::to_string
to print a Boolean function in algebraic formShl
, Lshr
, Ashr
, Rol
, and Ror
boolean_influence
get_boolean_influence
netlist_preprocessing
decompose_gates_of_type
and decompose_gate
that decompose combinational logic gates into basic gate typesparse_def_file
to parse a Design Exchange Format file that contains placement informationsimplify_lut_inits
now annotates the original init string into the data containerverilog_parser
z3_utils
compare_netlists
function that functionally compares two netlists that only differ in their combinational logicz3Wrapper
to_z3
to from_bf
and added support for missing node typesto_hal
to to_bf
and added support for missing node typesto_cpp
to output only the C++ code implementing the Boolean function and nothing moredataflow_analysis
plugin_dataflow::execute
as its functionality is now split between dataflow::analyze
and the members of dataflow::Result
netlist_simulation_controller
add_waveform_group
taking a module pin group as inputset_input
taking a WaveData
object, vectors of nets and values, a WaveDataGroup
and a vector of values, and a module pin group and a vector of values as inputsolve_fsm
xilinx_toolbox
NetlistModificationDecorator
delete_modules
to delete all (or a filtered subset of) the modules in a netlistreplace_gate
from netlist_utils
, now returns pointer to replacement gateconnect_gates
to connect two gates at the specified pins via a new or already existing netconnect_nets
to merge two nets into one, thereby connecting themBooleanFunctionDecorator
get_boolean_function_from
that takes a module pin group as inputFocus item in graph view
to several context menusIsolate in new view
to gate/module related context menusIsolate in new view
policy for modules: open exclusive module view if such a view already existsGate::get_modules
to recursively get all modules that contain the gate by traversing the module hierarchyNet::is_a_source(const Gate*)
and Net::is_a_destination(const Gate*)
that check whether a gate is a source/destination independent of the gate pinPinGroup<T>::contains_pin
to check whether a pin is part of the respective gate or module pin groupdeserialize_netlist
that takes a gate library, thereby overruling the gate library path in the .hal fileutils::wrapped_stoull
and utils::wrapped_stoul
that wrap the standard string to integer conversion and use hal::Result<>
for error handlung instead of exceptionsis_valid_enum
to check whether the string representation of an enum value is valid.filter
parameter to get_fan_[in/out]_[nets/endpoints]
LogManager
classProjectDirectory
classModule::move_pin_group
to change the order of pin groups of a moduleGatePinGroup
SolveFsmPlugin
not properly replacing power and ground nets in Boolean functionsnetlist_preprocessing
remove_unused_lut_inputs
remove_buffers
, also dynamically by analyzing Boolean function and connected inputsremove_redundant_logic
, i.e., gates of equal type with identical inputsremove_unconnected_gates
and remove_unconnected_nets
simplify_lut_inits
bitorder_propagation
BooleanFunctionDecorator
substitute_power_ground_nets
and substitute_power_ground_pins
BooleanFunctionNetDecorator
get_boolean_variable
and get_boolean_variable_name
get_net_from
get_net_id_from
SubgraphNetlistDecorator
copy_subgraph_netlist
get_subgraph_function
get_subgraph_function_inputs
get_pin_names
, get_input_pins
, get_input_pin_names
, get_output_pins
, and get_output_pin_names
to class Module
BooleanFunction::get_truth_table_as_string
that returns the truth table of a Boolean function as a formatted stringICE40ULTRA
gate librarysolve_fsm
power
and ground
gate types in various gate librariesSave as...
GateType::get_pin_groups
get_pins
returning pins in wrong order if no filter is specified-p
to open existing project-i
import netlist to new projectGatePin
class to keep properties of gate pins stored within gate typesModulePin
class to keep properties of module pins stored within modulesPinGroup
class to collect related pins in a dedicated containerinput
and raw_input
functions for Python scripts to take input from the HAL Python consolecarry
, buffer
, lut
, and mux
to c_carry
, c_buffer
, c_lut
, and c_mux
c_and
, c_or
, ... to better represent combinational logiccarry
and sum
to better annotate pins of gate types with property c_carry
, c_half_adder
, or c_full_adder
Gate::get_init_data
and Gate::set_init_data
for simplified access to the INIT data of, e.g., LUT type gatesclock
GateType
API, please make sure to adjust your code accordingly.Move to module ...
dialog
BooleanFunction
to SMT-LIB.BooleanFunction::Node
data structure to extend functionality to generic ASTs.GateType
class and into a designated GateTypeComponent
std::stringstream
Z
and X
assignments to Verilog and VHDL parserstri
as a synonym for wire
to the Verilog parserstd::stringstream
netlist_utils
get_common_inputs
to get inputs that are common across multiple gatesreplace_gate
to replace a gate with an instance of another gate typeget_gate_chain
and get_complex_gate_chain
to find gates that are arranged in a chainget_shortest_path
to compute the shortest path between two gatesget_next_gates
to get the predecessors or successors of a gate up to a user-specified depthget_partial_netlist
to export parts of a netlist as a netlist instancedataflow_analysis
plugin
is_top_module
to class Module
to determine whether a module is the top moduleget_nets
to class Module
to get all nets that are connected to any of the gates or submodules of a moduleis_gnd_net
and is_vcc_net
to class Net
to determine whether a net is connected to GND or VCCoperator==
and operator!=
to classes Netlist
, Gate
, Net
, Module
, and Endpoint
netlist_serializer
Save As...
option to save .hal
files under a different nameExport ...
menu to export the netlist using any of the registered netlist writersRemove from view
action to context menu for gates and modulesAbout
Fold parent module
option to module context menupg_type
solve_fsm
pluginGateType
GateType::BaseType
to GateTypeProperty
and moved it out of class GateType
has_property
to class GateType
get_base_type
of class GateType
to get_properties
create_gate_type
of class GateLibrary
to support multiple propertiessequential
, power
, ground
, buffer
, mux
, and carry
gate type properties to enum GateTypeProperty
PinType
and PinDirection
from class GateType
into global scopeget_path
to netlist_utils
to retrieve all gates on the predecessor/successor path from a start gate/net to gates of a specified propertyoptimize_constants
of class BooleanFunction
publicly accessiblenetlist_utils::remove_buffers
to take constant 0
and 1
inputs into accountZ
to class BooleanFunction
and added basic support to evaluate
z3_utils
(WIP)get_gate_by_id
and get_gates
of class Netlist
returning only gates contained within one of its modules (causing a GUI crash upon deleting gates from a module)boolean_influence
plugin causing problems on global inputsboolean_influence
that enables calculation of the boolean influence for each FF depending on the predecessing FFsz3_utils
plugin with a z3Wrapper
class, which holds exactly one z3::expr
and the corresponding z3::context
z3_utils
plugin being disabled by default causing linking errorsload_initial_values
and load_initial_values_from_netlist
assigning values to potentially non-existing netscreate_gate_type
to class GateLibrary
to enable gate type creation from Pythonmark_vcc_gate_type
and mark_gnd_gate_type
to class GateLibrary
to enable marking gate types as power or ground connectionsget_gate_type_by_name
and contains_gate_type_by_name
to class GateLibrary
GateType
to enable assigning special-purpose pinsget_gate_library
to class GateType
ram
, dsp
, and io
add_gate_type
function from class GateLibrary
GateTypeSequential
and GateTypeLut
classes and moved their functionality into class GateType
.hgl
) files.hgl
) filespg_pin
) to Liberty parserget_nets_at_pins
to retrieve nets that are connected to a vector of pinsremove_buffers
to remove buffer gates from a netlistremove_unused_lut_endpoints
to remove unused LUT fan-in endpointsrename_luts_according_to_function
to rename LUTs depending on the Boolean function they implementto_z3
to class BooleanFunction
to translate a Boolean function into a z3 expressionsolve_fsm
plugin for FSM verification using z3z3_utils
plugin to provide common z3 functions to all other pluginsadd_boolean_function
of class Gate
assigning wrong functions to LUTsgate_library
of class Netlist
netlist_utils::get_subgraph_function
returning wrong results if input pins without relevance for the Boolean function remained unconnected.hal
file