// 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 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/code-snippets/modexp.s',
    'sw/otbn/code-snippets/p256.s',
    'sw/otbn/code-snippets/rsa_verify.s',
    'sw/otbn/code-snippets/rsa_verify_3072.s',
    # Mersenne Twister PRNG
    'sw/device/sca/lib/prng.c',
  ],
}
