Skip to content

Add rules_verilog@0.1.0#7852

Merged
fmeum merged 1 commit into
bazelbuild:mainfrom
MrAMS:rules_verilog
Mar 10, 2026
Merged

Add rules_verilog@0.1.0#7852
fmeum merged 1 commit into
bazelbuild:mainfrom
MrAMS:rules_verilog

Conversation

@MrAMS

@MrAMS MrAMS commented Mar 9, 2026

Copy link
Copy Markdown
Contributor

The primary goal of rules_verilog is to provide only the most foundational Verilog interfaces (e.g., verilog_library). This allows downstream rulesets, such as rules_verilator or rules_vivado, to easily consume them without introducing unnecessary overhead.

This design is intentional and aligns with the Bzlmod's philosophy of high modularity and decoupling. A massive, monolithic, "kitchen-sink" approach like the old rules_hdl is largely an anti-pattern and highly unsuitable in the bzlmod era.

Tip

Q: Why "kitchen-sink" approach like the old rules_hdl is bad in bzlmod era?
A: If a module is a massive monolith, anyone depending on it is forced to download and resolve a massive dependency graph—even if they only need 5% of its functionality. This leads to version conflicts, bloated download times, and slower evaluations. In the Bzlmod era, the best practice is to decouple these into discrete, composable modules so users only pull exactly what they need for their specific hardware pipeline.

@bazel-io

bazel-io commented Mar 9, 2026

Copy link
Copy Markdown
Member

Hello BCR maintainers, modules (rules_verilator) have been updated in this PR.
Please review the changes. You can view a diff against the previous version in the "Generate module diff" check.

@bazel-io bazel-io requested review from a team and fmeum and removed request for a team March 9, 2026 07:26
@bazel-io

bazel-io commented Mar 9, 2026

Copy link
Copy Markdown
Member

Hello BCR maintainers, modules without existing maintainers (rules_verilog) have been updated in this PR.
Please review the changes. You can view a diff against the previous version in the "Generate module diff" check.

@MrAMS

MrAMS commented Mar 10, 2026

Copy link
Copy Markdown
Contributor Author

Hi @fmeum
Could you please review this PR at your convenience, thank you 😃

Comment thread modules/rules_verilog/0.1.0/presubmit.yml Outdated
@MrAMS MrAMS requested a review from fmeum March 10, 2026 05:51
@MrAMS

MrAMS commented Mar 10, 2026

Copy link
Copy Markdown
Contributor Author

@fmeum You may need to start the CI. I do not have that permission.

@fmeum fmeum added the presubmit-auto-run Presubmit jobs will be triggered for new changes automatically without reviewer's approval label Mar 10, 2026
@fmeum fmeum enabled auto-merge (squash) March 10, 2026 10:07
@fmeum fmeum merged commit 0a7aaee into bazelbuild:main Mar 10, 2026
17 checks passed
@MrAMS

MrAMS commented Mar 10, 2026

Copy link
Copy Markdown
Contributor Author

Thank you

@ted-xie

ted-xie commented Mar 13, 2026

Copy link
Copy Markdown
Contributor

Sorry for only chiming in now, but I would have liked to see some more context in this PR, and possibly a different module name. The github issue in rules_verilator doesn't really inform us about:

The name rules_verilog sounds very authoritative and over-promises on the functionality provided. Given the limited scope of the Starlark code, I think this could have stayed as a special "implementation detail"-type rule in rules_verilator.

Perhaps too late now, but there's a blurb in the BCR maintainer doc that would have applied to this PR.

@MrAMS

MrAMS commented Mar 13, 2026

Copy link
Copy Markdown
Contributor Author

@MrAMS

MrAMS commented Mar 14, 2026

Copy link
Copy Markdown
Contributor Author

Why your repository basically only has one rule and a couple of providers

This design is intentional and aligns with the Bzlmod's philosophy of high modularity and decoupling. The primary goal of rules_verilog is to provide only the most foundational Verilog interfaces (e.g., verilog_library). This allows downstream rulesets, such as rules_verilator or rules_vivado, to easily consume them without introducing unnecessary overhead.

I believe that a massive, monolithic, "kitchen-sink" approach like the old rules_hdl is largely an anti-pattern and highly unsuitable in the bzlmod era.

@MrAMS

MrAMS commented Mar 14, 2026

Copy link
Copy Markdown
Contributor Author

How this is different from https://github.com/hdl/bazel_rules_hdl (which from my bystander perspective looks like the more commonly maintained and active repository for RTL design and verification flows)

Since 2023, many community members (myself included) have made numerous attempts to migrate rules_hdl to Bzlmod so it could be published to the BCR (e.g., hdl/bazel_rules_hdl#428, hdl/bazel_rules_hdl#336, google/heir#332, hdl/bazel_rules_hdl#210, hdl/bazel_rules_hdl#405 ). Unfortunately, these efforts have faced significant friction and stalled within the rules_hdl repository.

More importantly, as I mentioned above, the Bzlmod paradigm strongly emphasizes modularity and decoupling. A massive, monolithic project like rules_hdl is simply ill-suited to be packaged as a single BCR module (check The-OpenROAD-Project/OpenROAD#7647 (reply in thread)).

ileitch pushed a commit to ileitch/bazel-central-registry that referenced this pull request Apr 7, 2026
Check
[bazel_rules_verilator/issues/2](hw-bzl/rules_verilator#2)
for more details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

presubmit-auto-run Presubmit jobs will be triggered for new changes automatically without reviewer's approval

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants