# 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

*.c                 @moidx
*.h                 @moidx

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


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


# DV related common files
dv/                 @sriyerg @weicaiyang
fpv/                @cindychip
formal/             @cindychip
# lint/             # TBD

# SW related
sw/**/*.c           @ot-c-cpp-reviewers
sw/**/*.cc          @ot-c-cpp-reviewers
sw/**/*.h           @ot-c-cpp-reviewers
sw/**/*.rs          @ot-rust-reviewers

# Common docs
/doc/               @asb

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

# CI and testing
/ci/                @mcy @imphil
/test/              @mcy @imphil
azure_pipelines.yml @mcy @imphil
