Skip to content

Commit 00a69b3

Browse files
authored
Run Verilator via aspects (#1)
1 parent 176c971 commit 00a69b3

File tree

17 files changed

+373
-192
lines changed

17 files changed

+373
-192
lines changed

MODULE.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module(
88
bazel_dep(name = "bazel_skylib", version = "1.8.2")
99
bazel_dep(name = "platforms", version = "1.0.0")
1010
bazel_dep(name = "rules_cc", version = "0.2.4")
11-
bazel_dep(name = "verilator", version = "5.036")
11+
bazel_dep(name = "verilator", version = "5.036.bcr.1")
1212

1313
register_toolchains(
1414
"//verilator/toolchain",

MODULE.bazel.lock

Lines changed: 13 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

WORKSPACE.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
workspace(name = "rules_verilog")

verilator/defs.bzl

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1-
"""Verilator rules.
1+
"""# Verilator rules.
22
3-
This module provides rules and aspects for working with Verilator,
4-
a fast Verilog/SystemVerilog simulator and linter.
3+
Bazel rules for [Verilator](https://verilator.org/guide/latest/index.html)
54
6-
Main rules:
7-
- verilator_cc_library: Compiles Verilog to a C++ library
8-
- verilator_lint_test: Creates a test that lints Verilog code
9-
- verilator_toolchain: Defines a Verilator toolchain
5+
## Setup
106
11-
Aspects:
12-
- verilator_lint_aspect: Lints Verilog code transitively
7+
```python
8+
bazel_dep(name = "rules_verilog", version = "{version}")
9+
10+
register_toolchain(
11+
# Define a custom toolchain or use the `rules_verilog` provided toolchain.
12+
"@rules_verilog//verilator/toolchain",
13+
)
14+
```
1315
"""
1416

1517
load(
Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +0,0 @@
1-
load("@rules_cc//cc:cc_test.bzl", "cc_test")
2-
load("//verilator:verilator_cc_library.bzl", "verilator_cc_library")
3-
load("//verilog:verilog_library.bzl", "verilog_library")
4-
5-
# Basic register building block
6-
verilog_library(
7-
name = "d_register",
8-
srcs = [
9-
"d_register.sv",
10-
],
11-
)
12-
13-
# Shift register (depends on d_register)
14-
verilog_library(
15-
name = "shift_register",
16-
srcs = [
17-
"shift_register.sv",
18-
],
19-
deps = [
20-
":d_register",
21-
],
22-
)
23-
24-
# Serial-to-parallel converter (depends on shift_register, which transitively depends on d_register)
25-
verilog_library(
26-
name = "serial_to_parallel",
27-
srcs = [
28-
"serial_to_parallel.sv",
29-
],
30-
deps = [
31-
":shift_register",
32-
],
33-
)
34-
35-
verilator_cc_library(
36-
name = "serial_to_parallel_verilator",
37-
module = ":serial_to_parallel",
38-
)
39-
40-
cc_test(
41-
name = "serial_to_parallel_test",
42-
srcs = [
43-
"serial_to_parallel_test.cc",
44-
],
45-
deps = [
46-
":serial_to_parallel_verilator",
47-
],
48-
)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
load("//verilog:verilog_library.bzl", "verilog_library")
2+
3+
verilog_library(
4+
name = "d_register",
5+
srcs = [
6+
"d_register.sv",
7+
],
8+
visibility = ["//verilator/private/tests/library_transitive_deps:__subpackages__"],
9+
)

verilator/private/tests/library_transitive_deps/d_register.sv renamed to verilator/private/tests/library_transitive_deps/d_register/d_register.sv

File renamed without changes.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
load("@rules_cc//cc:cc_test.bzl", "cc_test")
2+
load("//verilator:verilator_cc_library.bzl", "verilator_cc_library")
3+
load("//verilog:verilog_library.bzl", "verilog_library")
4+
5+
# Serial-to-parallel converter (depends on shift_register, which transitively depends on d_register)
6+
verilog_library(
7+
name = "serial_to_parallel",
8+
srcs = [
9+
"serial_to_parallel.sv",
10+
],
11+
deps = [
12+
"//verilator/private/tests/library_transitive_deps/shift_register",
13+
],
14+
)
15+
16+
verilator_cc_library(
17+
name = "serial_to_parallel_verilator",
18+
module = ":serial_to_parallel",
19+
)
20+
21+
cc_test(
22+
name = "serial_to_parallel_test",
23+
srcs = [
24+
"serial_to_parallel_test.cc",
25+
],
26+
deps = [
27+
":serial_to_parallel_verilator",
28+
],
29+
)

verilator/private/tests/library_transitive_deps/serial_to_parallel.sv renamed to verilator/private/tests/library_transitive_deps/serial_to_parallel/serial_to_parallel.sv

File renamed without changes.

verilator/private/tests/library_transitive_deps/serial_to_parallel_test.cc renamed to verilator/private/tests/library_transitive_deps/serial_to_parallel/serial_to_parallel_test.cc

File renamed without changes.

0 commit comments

Comments
 (0)