# This file specifies default reviewers for new pull requests. This is used as a
# convenience - the OpenTitan project doesn't currently have a formalised notion
# of "code owners".
#
# Note: The default reviewers aren't required to give a review prior to merging.
# You are encouraged to add non-default reviewers where you know someone else
# may have useful insight or has been recently working in the area touched by
# your PR. Anyone is able to contribute to pull request review, and is
# encouraged to do so

# Default Reviewers
# *     @asb

# Order: last matching pattern takes the most precedence.
#   Please refer the link for the detail
#   https://help.github.com/en/articles/about-code-owners

*.cc                @lowRISC/ot-c-cpp-reviewers
*.c                 @lowRISC/ot-c-cpp-reviewers
*.h                 @lowRISC/ot-c-cpp-reviewers
*.rs                @lowRISC/ot-rust-reviewers


# Bazel build rules
*.bzl               @cfrantz @drewmacrae
BUILD               @cfrantz @drewmacrae
/WORKSPACE          @cfrantz @drewmacrae
/.bazelrc           @cfrantz @drewmacrae

# Utils: reggen, topgen, tlgen
util/*.py           @asb
util/*gen/          @msfschaffner @tjaychen
util/uvmdvgen*      @sriyerg
util/regtool.py     @Jacob-Levy
util/reggen/        @Jacob-Levy
util/tlgen.py       @eunchan @msfschaffner @tjaychen
util/tlgen/         @eunchan @msfschaffner @tjaychen
util/topgen.py      @msfschaffner @tjaychen @Jacob-Levy
util/topgen/        @msfschaffner @tjaychen @Jacob-Levy

# RTL related
/hw/ip/aes/             @vogelpi
/hw/ip/alert_handler/   @msfschaffner
/hw/ip/flash_ctrl/      @tjaychen
/hw/ip/kmac/rtl/        @eunchan
/hw/ip/padctrl/         @msfschaffner @tjaychen
/hw/ip/pinmux/          @msfschaffner @tjaychen
/hw/ip/prim*            @tjaychen
/hw/ip/rv_core_ibex/    @tjaychen
/hw/ip/rv_dm/           @vogelpi
/hw/ip/spi_device/rtl/  @eunchan
/hw/ip/tlul/rtl/        @eunchan @tjaychen
# /hw/ip/usb*           # TBD
/hw/top_*/rtl           @tjaychen
/hw/top_*/doc/top_*     @msfschaffner @tjaychen
/hw/top_*/ip/ast        @Jacob-Levy


# DV related common files
dv/                 @lowRISC/ot-dv-reviewers
fpv/                @lowRISC/ot-dv-reviewers
formal/             @lowRISC/ot-dv-reviewers
# lint/             # TBD

# Common docs
/doc/               @asb

# License related files
LICENSE*            @asb
COPYING*            @asb
/util/licence-checker.hjson  @asb

# CI and testing
/ci/                @mcy @milesdai @rswarbrick
/test/              @mcy
azure-pipelines.yml @mcy @milesdai @rswarbrick
