Skip to content

Commit f2a2c75

Browse files
committed
verilog: analysis: checkers: Add dff-name-style rule
dff-name-style-rule adds support for enforcing naming conventions for registers. It takes two parameters in the form of a comma separated list of suffixes that are allowed for the input and output ports. If a list is empty, it means that no checks will be performed in the respective field. In addition to checking suffixes, the rule also enforces that the base (or prefix) is shared between the input and output of the register. Furthermore, it also allows for numbered identifiers, where the number means the pipeline stage where the signal originates from.
1 parent c9d2bb1 commit f2a2c75

File tree

6 files changed

+785
-0
lines changed

6 files changed

+785
-0
lines changed

verilog/analysis/checkers/BUILD

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ cc_library(
2121
":case-missing-default-rule",
2222
":constraint-name-style-rule",
2323
":create-object-name-match-rule",
24+
":dff-name-style-rule",
2425
":disable-statement-rule",
2526
":endif-comment-rule",
2627
":enum-name-style-rule",
@@ -2182,3 +2183,51 @@ cc_test(
21822183
"@com_google_googletest//:gtest_main",
21832184
],
21842185
)
2186+
2187+
cc_library(
2188+
name = "dff-name-style-rule",
2189+
srcs = ["dff_name_style_rule.cc"],
2190+
hdrs = ["dff_name_style_rule.h"],
2191+
deps = [
2192+
"//common/analysis:lint-rule-status",
2193+
"//common/analysis:syntax-tree-lint-rule",
2194+
"//common/analysis/matcher",
2195+
"//common/analysis/matcher:bound-symbol-manager",
2196+
"//common/analysis/matcher:core-matchers",
2197+
"//common/analysis:syntax-tree-search",
2198+
"//common/text:concrete-syntax-leaf",
2199+
"//common/text:concrete-syntax-tree",
2200+
"//common/text:config-utils",
2201+
"//common/text:symbol",
2202+
"//common/text:syntax-tree-context",
2203+
"//common/text:token-info",
2204+
"//common/text:tree-utils",
2205+
"//verilog/CST:expression",
2206+
"//verilog/CST:statement",
2207+
"//verilog/CST:verilog-matchers",
2208+
"//verilog/CST:verilog-nonterminals",
2209+
"//verilog/analysis:descriptions",
2210+
"//verilog/analysis:lint-rule-registry",
2211+
"//verilog/parser:verilog-token-enum",
2212+
"@com_google_absl//absl/status",
2213+
"@com_google_absl//absl/strings",
2214+
"@com_google_absl//absl/strings:string_view",
2215+
],
2216+
alwayslink = 1,
2217+
)
2218+
2219+
cc_test(
2220+
name = "dff-name-style-rule_test",
2221+
srcs = ["dff_name_style_rule_test.cc"],
2222+
deps = [
2223+
":dff-name-style-rule",
2224+
"//common/analysis:linter-test-utils",
2225+
"//common/analysis:syntax-tree-linter-test-utils",
2226+
"//verilog/analysis:verilog-analyzer",
2227+
"//verilog/parser:verilog-token-enum",
2228+
"@com_google_absl//absl/log:check",
2229+
"@com_google_absl//absl/strings:string_view",
2230+
"@com_google_googletest//:gtest",
2231+
"@com_google_googletest//:gtest_main",
2232+
],
2233+
)

0 commit comments

Comments
 (0)