llvm / llvm/circt

[Synth] Enhance 3-input logic gate

Open
#10,405 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
2.2k
Forks
524
Avg merge
3d 2h
Merged PRs (30d)
46

Description

Look at https://si2.epfl.ch/~demichel/publications/archive/2021/3Input.pdf and introduce a few operations that would be benefitial target of exact synthesis.
```
synth.onehot (n-input)
synth.mux _inv (3-input + per-input inverter)
synth.majority (2*n+1 input, 3, 5,..) Note that this is re-introduction of synth.mig.maj_inv. This time majority operation is not framed as a primary target of homogeneous logic representation.
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Read the linked 3-input logic-gate paper, then inspect the existing synth.mig.maj_inv operation and related exact-synthesis targets. Determine how synth.onehot, synth.mux with per-input inversion, and variable-input synth.majority should be represented; done means these operations are available as exact-synthesis targets for their stated input sizes.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.