-
Notifications
You must be signed in to change notification settings - Fork 78
Logic Evaluator
The logic evaluator is aimed to help the understanding of netlists or part of the netlists where only combinatorical logic is involved. The focus of the tool is to provide a user friendly handle to test the logic with various input combinations and to visualize the results. It will also try to detect module- or gate pingroups at input or output.
The plugin is not part of the current master yet. It is available through branch feature/logic_evaluator
. For on-demand compilation a gcc
compiler is required in search path.
The logic evaluator can be launched from the graphical view context menu (right click) after having selected the gates to be analyzed. The selected combinatoric gates and combinatoric gates comprised by selected modules will be considered as subnet. The output signals of this subnet will be generated by evaluating the boolean functions on given input.
Gates must not carry the ff, latch, or ram property in order to qualify for evaluation. For all other gates it is the responsibility of the user to make sure the logic is well defined by having a valid boolean function assigned to each relevant output in associated gate library.
The logic evaluator can also be launched from the GUI Plugin Manager page by clicking on the GUI extension of the logic evaluator plugin. If no gates are selected a tree view will open to the select the gates to be evaluated.
Since the Logic Evaluator acts as a modeless dialog the user can continue to work with HAL while the Logic Evaluator widget is open. Obviously it is not advised to delete nets or gates which are part of the evaluation. However, while running the Logic Evaluator does not care about modules as they get only accessed at launch time.
It is safe to run multiple Logic Evaluators at the same time.
- By default all input signals are set to zero indicated by blue checkbox. Click a box to toggle the input.
- Input groups have an additional spinbox. Enter a hex value into the spinbox or use small buttons to increase or decrease the value.
- Menu Options
- A checkbox controls whether evaluation is done by compiled bitcode or by running
BooleanLogic::eval()
for each output pin (see below). - A checkbox controls whether the results of the evaluation are indicated by grouping colors in the graphical netlist view.
- A checkbox controls whether evaluation is done by compiled bitcode or by running
- Menu Relaunch launches a tree view to select gates for another evaluator widget to be launched.
At this point of time we have no experience concerning the performance when evaluating large netlists. When run in compiled mode the tool will try to create a sequential Ansi-C code, compile this code and load the bitcode as a temporary shared library. The tool will be set into pure evaluation mode where all output pins gets evaluated using the HAL function BooleanLogic::eval()
if
- Compilation was omitted when launching the tool
- The ckeckbox "Run compiled logic" gets unchecked
- Compilation or loading of shared library failed
By checking "Show in graphic view" the states of all evaluated nets are shown by grouping colors. That works best if all selections have been cleared.