// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
  licence:
    '''
    Copyright lowRISC contributors.
    Licensed under the Apache License, Version 2.0, see LICENSE for details.
    SPDX-License-Identifier: Apache-2.0
    ''',
  exclude_paths: [
    # Exclude anything in vendored directories
    '*/vendor/*/*',
    'util/lowrisc_misc-linters/*',

    ## Hardware Exclusions

    # DV Vendored test vectors
    'hw/dv/sv/test_vectors',
    # Vendored CRC model
    'hw/dv/dpi/usbdpi/usb_crc.c',
    # Vendored HMAC model
    'hw/ip/hmac/dv/cryptoc_dpi/*',
    # PRINCE C++ reference model from Sebastien Riou
    'hw/ip/prim/dv/prim_prince/crypto_dpi_prince/prince_ref.h',
    # PRESENT C reference model from Thomas Siebert
    'hw/ip/prim/dv/prim_present/crypto_dpi_present/boxes.inc'
    'hw/ip/prim/dv/prim_present/crypto_dpi_present/comline.inc'
    'hw/ip/prim/dv/prim_present/crypto_dpi_present/present.inc'
    'hw/ip/prim/dv/prim_present/crypto_dpi_present/verbose.inc'
    # PRESENT Python reference model
    'util/design/lib/Present.py',
    # Vendored FPGA information
    'hw/top_earlgrey/data/*.xdc',
    'util/fpga/bram_load.mmi',
    # Manually checked, files contain additional copyright header lines
    'hw/ip/usb_fs_nb_pe/rtl/*',
    'hw/ip/usbdev/rtl/usbdev_iomux.sv',
    'hw/ip/usbuart/rtl/usb_serial_*_ep.sv',

    ## Software Exclusions

    # Coremark Vendored Files
    'sw/device/benchmarks/coremark/top_earlgrey/*',

    ## Other Exclusions

    # Other Licences,
    'util/wavegen/LICENSE.wavedrom',
    # Site Assets
    'site/**/assets/scss/**',
    'site/landing/static/js/tiny-slider.js',
    'util/opentitan-pgm-fpga/vivado_pgm.tcl',
    # Code taken from Chromium, so covered by the BSD licence
    'sw/otbn/crypto/modexp.s',
    'sw/otbn/crypto/p256.s',
    'sw/otbn/crypto/rsa_verify.s',
    'sw/otbn/crypto/rsa_verify_3072.s',
    # Mersenne Twister PRNG
    'sw/device/sca/lib/prng.c',
    # Alma testbench files
    'hw/ip/aes/pre_sca/alma/cpp/testbench.h',
    'hw/ip/aes/pre_sca/alma/cpp/verilator_tb_aes_sbox.cpp',
    'hw/ip/aes/pre_sca/alma/cpp/verilator_tb_aes_sub_bytes.cpp',
  ],
}
