News & Updates

Version 2.25.06.10 released.

12 June 2025

Download new release with awesome features and bug fix.

Version 2.25.03.15 released.

15 March 2025

Download new release with better HDL export and bug fix.

Version 2.25.01.10 released.

10 January 2025

Download new release.

Version 2.24.12.19 released.

21 December 2024

Download new release with many new features.

Version 2.24.06.30 released.

29 June 2024

Download new release with better HDL export.

Version 2.24.05.25 released.

29 May 2024

Download new release with HDL export and other new features.

Version 2.24.02.27 released.

29 February 2024

Download new release with more speed, new Python and better look.

Version 2.23.04.28 released.

28 April 2023

Download new release with more speed.

Version 2.23.02.02 released.

3 February 2023

Download new release with more speed and less bugs.

Version 2.22.07.22 released.

23 July 2022

Download new release with new features and Croatian language support.

Version 2.22.03.30 released.

30 March 2022

Download new release.

Version 2.22.01.03 released.

5 January 2022

Download new release with button keyboard shortcuts.

Version 2.21.01.10 released.

14 January 2021

Download new release with fixes in Swedish translation and new Python.

Truth Table

You can generate a truth table for your subcircuit if it has input and output pins and doesn’t include memory elements like flip-flops or RAM. In other words, your circuit must behave like a pure function.

Learn more about pure functions: Pure Function (Wikipedia)

Learn more about truth tables: Truth Table (Wikipedia)

To create a truth table, go to the menu: Circuit/Truth Table.

Truth table of simple AND circuit

The dialog will show a table with columns labeled by the input and output pin names. Each row shows a combination of input values and the corresponding output.

Here’s another example using a full adder:

Truth table of full adder

The number of rows in a truth table equals 2 raised to the total number of input bits. For example, with 3 one-bit inputs, the table will have 23 = 8 rows. Adding more input bits increases the size of the table quickly. However, the dialog will only show up to 4096 rows for usability.

Filtering Rows

You can use a filter expression to display only certain rows. Filters use pin names and logical conditions. For example, for an AND gate, the filter q = x & y checks that output q matches the expected result.

There’s a checkbox to invert the filter. When checked, only the rows that don’t match the condition will appear. This is useful for debugging.

At the bottom of the dialog, you’ll see two numbers: total rows and the number currently displayed.

Expression Syntax

To use pin names in expressions:

You can write numbers in different formats:

Use _ or ' in numbers for readability, e.g., 0b1010_0001.

Operations in Expressions

There are two types of operations:

Examples:

Some supported operators:

PriorityOperatorDescription
1(E)Parentheses
1-E, ~E, !ENegation, Bitwise NOT, Logical NOT
2<<, >>Bitwise Shifts
3&Bitwise AND
4|, ^Bitwise OR, XOR
5*, /, %Multiply, Divide, Modulus
6+, -Add, Subtract
7=, ==, !=, <>, <, <=, >, >=Comparisons
8&&Logical AND
9||Logical OR

For example, if you're checking only the sum bit s of a full adder, you may need to mask the carry:

s = (inC + a + b) & 1

Using Functions

You can define reusable functions like this:

function_name(arg1, arg2, ...) : expression

Example: Check if a number is even:

is_even(n) : (n & 1) = 0

Use it in an expression like:

is_even(a + b) && is_even(c)

Another example using a multiplexer:

case(n, e) : (N = n) * e

case(0, X0) + case(1, X1) + case(2, X2) + case(3, X3) = Q

Make sure function names and their parameters don’t match any circuit pin names.

It is also possible to define a function without parameters. In such case just specify function name, colon, and expression for this function To call it just type its name. For example:

B:(b ^ (Nb * 0xF)) a + B = q && c + B = q

Where: B:(b ^ (Nb * 0xF)) is function definition and a + B = q && c + B = q is use of function B.