quaigh

Logic circuit analysis and optimization

https://github.com/coloquinte/quaigh

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    1 of 3 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.8%) to scientific vocabulary

Keywords

atpg equivalence-checking logic-optimization
Last synced: 10 months ago · JSON representation

Repository

Logic circuit analysis and optimization

Basic Info
  • Host: GitHub
  • Owner: Coloquinte
  • License: apache-2.0
  • Language: Rust
  • Default Branch: main
  • Homepage: https://docs.rs/quaigh/
  • Size: 345 KB
Statistics
  • Stars: 43
  • Watchers: 3
  • Forks: 3
  • Open Issues: 0
  • Releases: 0
Topics
atpg equivalence-checking logic-optimization
Created about 3 years ago · Last pushed 11 months ago
Metadata Files
Readme License Citation

README.md

Quaigh crate Quaigh documentation Build status

Quaigh

Logic simplification and analysis tools

This crate provides tools for logic optimization, synthesis, technology mapping and analysis. Our goal is to provide an easy-to-use library, and improve its quality over time to match industrial tools.

Usage and features

Quaigh provides a command line tool, that can be installed using Cargo: cargo install quaigh.

To show available commands: bash quaigh help

The atpg command performs automatic test pattern generation, to create test vectors for a design. bash quaigh atpg mydesign.bench -o atpg.test

The check-equivalence command performs bounded equivalence checking to confirm that a design's functionality is preserved after transformations. bash quaigh equiv mydesign.bench optimized.bench

The optimize command performs logic optimization. At the moment, logic optimization is far from state of the art: for production designs, you should generally stick to the tools included in Yosys. bash quaigh opt mydesign.bench -o optimized.bench

Quaigh supports a subset of the Blif file format, as well as the simple Bench file format used by ISCAS benchmarks. Benchmarks can be downloaded here. More features will be added over time, such as technology mapping, operator optimization, ... The complete documentation is available on docs.rs.

Development

The main datastructure, Network, is a typical Gate-Inverter-Graph representation of a logic circuit. Inverters are implicit, occupying just one bit in Signal. It supports many kinds of logic, and all can coexist in the same circuit: * Complex gates such as Xor, Mux and Maj3 are all first class citizens; * Flip-flops with enable and reset are represented directly.

In most logic optimization libraries (ABC, Mockturtle, ...), there are many different ways to represent logic, with separate datastructures: AIG, MIG, LUT, ... Depending on the circuit, one view or the other might be preferable. Taking advantage of them all may require splitting the circuit, making most operations much more complex. More generic netlists, like Yosys RTLIL, will allow all kind of logic gates in a single datastructure. Since they do not restrict the functions represented, they are difficult to work with directly for logic optimization.

Quaigh aims in-between. All algorithms share the same netlist representation, Network, but there are some limitations to make it easy to optimize: * all gates have a single output, representing a single binary value, * the gates are kept in topological order (a gate has an index higher than its inputs), * names and design hierarchy are not represented.

For example, here is a full adder circuit: rust let mut net = Network::new(); let i0 = net.add_input(); let i1 = net.add_input(); let i2 = net.add_input(); let carry = net.add(Gate::maj(i0, i1, i2)); let out = net.add(Gate::xor3(i0, i1, i2)); net.add_output(carry); net.add_output(out);

Apart from the core datastructure, Quaigh has algorithms for logic optimization, simulation (including fault simulation) and test pattern generation. For optimization and equivalence checking, Quaigh relies on other packages as much as possible: * Kissat (using rustsat) as a Sat solver, * Highs (using good_lp) as an optimization solver.

Owner

  • Name: Gabriel Gouvine
  • Login: Coloquinte
  • Kind: user
  • Location: Edinburgh
  • Company: AMD

GitHub Events

Total
  • Watch event: 11
  • Delete event: 1
  • Issue comment event: 3
  • Push event: 10
  • Pull request event: 2
  • Fork event: 1
  • Create event: 2
Last Year
  • Watch event: 11
  • Delete event: 1
  • Issue comment event: 3
  • Push event: 10
  • Pull request event: 2
  • Fork event: 1
  • Create event: 2

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 230
  • Total Committers: 3
  • Avg Commits per committer: 76.667
  • Development Distribution Score (DDS): 0.026
Past Year
  • Commits: 10
  • Committers: 3
  • Avg Commits per committer: 3.333
  • Development Distribution Score (DDS): 0.6
Top Committers
Name Email Commits
Gabriel Gouvine g****t@m****g 224
cailue c****e@b****n 3
Mohamed Gaber d****n@e****m 3
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: about 1 year ago

All Time
  • Total issues: 0
  • Total pull requests: 4
  • Average time to close issues: N/A
  • Average time to close pull requests: 8 days
  • Total issue authors: 0
  • Total pull request authors: 3
  • Average comments per issue: 0
  • Average comments per pull request: 2.5
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 3
  • Average time to close issues: N/A
  • Average time to close pull requests: 11 days
  • Issue authors: 0
  • Pull request authors: 2
  • Average comments per issue: 0
  • Average comments per pull request: 3.33
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
  • donn (5)
  • Coloquinte (2)
  • ClSlaid (2)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • cargo 7,082 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 6
  • Total maintainers: 1
crates.io: quaigh

Logic optimization library

  • Versions: 6
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 7,082 Total
Rankings
Dependent repos count: 30.7%
Dependent packages count: 36.1%
Forks count: 40.6%
Average: 52.3%
Stargazers count: 56.0%
Downloads: 98.4%
Maintainers (1)
Last synced: 11 months ago

Dependencies

.github/workflows/build.yml actions
  • actions-rs/cargo v1 composite
  • actions-rs/toolchain v1 composite
  • actions/checkout v4 composite
Cargo.toml cargo
.github/workflows/benchmarks.yml actions
  • actions-rs/cargo v1 composite
  • actions-rs/toolchain v1 composite
  • actions/checkout v4 composite