Skip to content

Coloquinte/volute

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Volute crate Volute documentation Build status

Logic function manipulation using truth tables (LUTs)

The crate implements truth table datastructures, either arbitrary-size truth tables (Lut), or more efficient fixed-size truth tables (Lut2 to Lut12). They provide logical operators and utility functions for analysis, canonization and decomposition. Some support is available for other standard representation, such as Sum-of-Products (Sop).

API and documentation try to follow the same terminology as the C++ library Kitty.

Examples

Create a constant-one Lut with five variables. Check its hexadecimal value.

let lut = Lut::one(5);
assert_eq!(lut.to_string(), "Lut5(ffffffff)");

Create a Lut4 (four variables) which is the logical and of the 1st and 3rd. Check its hexadecimal value.

let lut = Lut4::nth_var(0) & Lut4::nth_var(2);
assert_eq!(lut.to_string(), "Lut4(a0a0)");

Create a random Lut6 (six variables). Display its hexadecimal value.

let lut = Lut6::random();
print!("{}", lut);

Create the parity function on three variables, and check that in can be decomposed as a Xor. Check its value in binary.

let lut = Lut::parity(3);
assert_eq!(lut.top_decomposition(0), DecompositionType::Xor);
assert_eq!(format!("{:b}", lut), "Lut3(10010110)");

About

Implementation of logic function as lookup tables and sum of products

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Languages