llvm / llvm/circt

[SV] Remove duplication of non-"wire-equivalent"/"free" operations in PrettifyVerilog

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

Description

https://github.com/llvm/circt/blob/2594d38300a40c1ce718e56359b9885468fc35c4/lib/Dialect/SV/Transforms/PrettifyVerilog.cpp#L93

This function duplicates operations and is run on unary operations which create logic. We can't rely on SV synthesis tools to de-duplicate the logic introduced here. Only operations which get synthesized to wires ("free" or "wire-equivalent") are candidates for duplication.

Contributor guide

No contributing guide indexed for this repository

Research direction

Open lib/Dialect/SV/Transforms/PrettifyVerilog.cpp at line 93 and inspect the operation-duplication function and its handling of unary operations. Confirm that only operations synthesized to wires, including “free” or “wire-equivalent” operations, remain duplication candidates; logic-producing operations should no longer be duplicated.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers
Issue type
Refactor
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.