# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
#
# This is a list of files to be passed to Verible formatter
# by calling verible-format.sh

hw/dv/sv/alert_esc_agent/alert_esc_base_monitor.sv
hw/dv/sv/alert_esc_agent/alert_esc_probe_if.sv
hw/dv/sv/cip_lib/seq_lib/cip_seq_list.sv
hw/dv/sv/csrng_agent/csrng_agent_pkg.sv
hw/dv/sv/csrng_agent/seq_lib/csrng_host_seq.sv
hw/dv/sv/csrng_agent/seq_lib/csrng_seq_list.sv
hw/dv/sv/dv_base_reg/dv_base_reg_map.sv
hw/dv/sv/dv_lib/dv_lib_pkg.sv
hw/dv/sv/dv_utils/dv_test_status_pkg.sv
hw/dv/sv/dv_utils/dv_vif_wrap.sv
hw/dv/sv/jtag_agent/jtag_agent_cfg.sv
hw/dv/sv/jtag_agent/jtag_agent_cov.sv
hw/dv/sv/jtag_agent/seq_lib/jtag_seq_list.sv
hw/dv/sv/jtag_riscv_agent/jtag_riscv_agent_cov.sv
hw/dv/sv/jtag_riscv_agent/seq_lib/jtag_riscv_seq_list.sv
hw/dv/sv/kmac_app_agent/kmac_app_agent_cov.sv
hw/dv/sv/kmac_app_agent/kmac_app_host_driver.sv
hw/dv/sv/kmac_app_agent/seq_lib/kmac_app_seq_list.sv
hw/dv/sv/mem_bkdr_util/mem_bkdr_util_pkg.sv
hw/dv/sv/mem_model/mem_model_pkg.sv
hw/dv/sv/pattgen_agent/pattgen_agent_cov.sv
hw/dv/sv/pattgen_agent/pattgen_driver.sv
hw/dv/sv/pattgen_agent/pattgen_if.sv
hw/dv/sv/push_pull_agent/push_pull_agent_pkg.sv
hw/dv/sv/push_pull_agent/seq_lib/push_pull_seq_list.sv
hw/dv/sv/pwm_agent/pwm_agent_cov.sv
hw/dv/sv/pwm_agent/pwm_if.sv
hw/dv/sv/rng_agent/rng_agent_cov.sv
hw/dv/sv/rng_agent/rng_if.sv
hw/dv/sv/rng_agent/rng_item.sv
hw/dv/sv/rng_agent/seq_lib/rng_seq_list.sv
hw/dv/sv/sim_sram/sim_sram_if.sv
hw/dv/sv/tl_agent/dv/env/seq_lib/tl_agent_vseq_list.sv
hw/dv/sv/tl_agent/dv/tests/tl_agent_test_pkg.sv
hw/dv/sv/tl_agent/seq_lib/tl_seq_list.sv
hw/dv/sv/uart_agent/seq_lib/uart_seq_list.sv
hw/dv/sv/usb20_agent/seq_lib/usb20_seq_list.sv
hw/dv/sv/usb20_agent/usb20_agent.sv
hw/dv/sv/usb20_agent/usb20_agent_cfg.sv
hw/dv/sv/usb20_agent/usb20_agent_cov.sv
hw/dv/sv/usb20_agent/usb20_device_driver.sv
hw/dv/sv/usb20_agent/usb20_host_driver.sv
hw/dv/sv/usb20_agent/usb20_if.sv
hw/dv/sv/usb20_agent/usb20_item.sv
hw/ip/adc_ctrl/dv/env/adc_ctrl_env_cfg.sv
hw/ip/adc_ctrl/dv/env/adc_ctrl_env_cov.sv
hw/ip/adc_ctrl/dv/env/adc_ctrl_env_pkg.sv
hw/ip/adc_ctrl/dv/env/adc_ctrl_virtual_sequencer.sv
hw/ip/adc_ctrl/dv/env/seq_lib/adc_ctrl_base_vseq.sv
hw/ip/adc_ctrl/dv/env/seq_lib/adc_ctrl_smoke_vseq.sv
hw/ip/adc_ctrl/dv/env/seq_lib/adc_ctrl_vseq_list.sv
hw/ip/adc_ctrl/dv/tb.sv
hw/ip/adc_ctrl/dv/tests/adc_ctrl_base_test.sv
hw/ip/adc_ctrl/dv/tests/adc_ctrl_test_pkg.sv
hw/ip/adc_ctrl/rtl/adc_ctrl.sv
hw/ip/aes/dv/env/seq_lib/aes_vseq_list.sv
hw/ip/aes/dv/tests/aes_clear_test.sv
hw/ip/aes/dv/tests/aes_test_pkg.sv
hw/ip/aon_timer/dv/env/aon_timer_env_pkg.sv
hw/ip/aon_timer/dv/env/seq_lib/aon_timer_smoke_vseq.sv
hw/ip/aon_timer/dv/env/seq_lib/aon_timer_vseq_list.sv
hw/ip/aon_timer/dv/tests/aon_timer_test_pkg.sv
hw/ip/clkmgr/dv/env/seq_lib/clkmgr_peri_vseq.sv
hw/ip/clkmgr/dv/env/seq_lib/clkmgr_trans_vseq.sv
hw/ip/clkmgr/dv/env/seq_lib/clkmgr_vseq_list.sv
hw/ip/clkmgr/dv/tests/clkmgr_test_pkg.sv
hw/ip/csrng/dv/tests/csrng_cmds_test.sv
hw/ip/csrng/dv/tests/csrng_smoke_test.sv
hw/ip/edn/dv/env/seq_lib/edn_vseq_list.sv
hw/ip/edn/dv/tests/edn_smoke_test.sv
hw/ip/edn/dv/tests/edn_test_pkg.sv
hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_common_vseq.sv
hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_smoke_vseq.sv
hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_vseq_list.sv
hw/ip/flash_ctrl/dv/tests/flash_ctrl_test_pkg.sv
hw/ip/gpio/dv/env/gpio_env.sv
hw/ip/gpio/dv/env/gpio_env_cfg.sv
hw/ip/gpio/dv/env/seq_lib/gpio_intr_rand_pgm_vseq.sv
hw/ip/gpio/dv/env/seq_lib/gpio_vseq_list.sv
hw/ip/gpio/dv/tb/tb.sv
hw/ip/gpio/dv/tests/gpio_base_test.sv
hw/ip/gpio/dv/tests/gpio_test_pkg.sv
hw/ip/hmac/dv/env/seq_lib/hmac_burst_wr_vseq.sv
hw/ip/hmac/dv/env/seq_lib/hmac_error_vseq.sv
hw/ip/hmac/dv/env/seq_lib/hmac_test_vectors_hmac_vseq.sv
hw/ip/hmac/dv/env/seq_lib/hmac_vseq_list.sv
hw/ip/hmac/dv/tests/hmac_test_pkg.sv
hw/ip/kmac/dv/env/seq_lib/kmac_burst_write_vseq.sv
hw/ip/kmac/dv/env/seq_lib/kmac_test_vectors_kmac_xof_vseq.sv
hw/ip/kmac/dv/env/seq_lib/kmac_vseq_list.sv
hw/ip/kmac/dv/tests/kmac_test_pkg.sv
hw/ip/lc_ctrl/dv/env/seq_lib/lc_ctrl_errors_vseq.sv
hw/ip/lc_ctrl/dv/env/seq_lib/lc_ctrl_vseq_list.sv
hw/ip/lc_ctrl/dv/tests/lc_ctrl_test_pkg.sv
hw/ip/otbn/dv/uvm/env/seq_lib/otbn_reset_vseq.sv
hw/ip/otbn/dv/uvm/env/seq_lib/otbn_vseq_list.sv
hw/ip/otbn/dv/uvm/tests/otbn_test_pkg.sv
hw/ip/otbn/dv/verilator/otbn_mock_edn.sv
hw/ip/pattgen/dv/cov/pattgen_cov_bind.sv
hw/ip/pattgen/dv/env/seq_lib/pattgen_error_vseq.sv
hw/ip/pattgen/dv/env/seq_lib/pattgen_smoke_vseq.sv
hw/ip/pattgen/dv/env/seq_lib/pattgen_vseq_list.sv
hw/ip/pattgen/dv/tests/pattgen_test_pkg.sv
hw/ip/pinmux/rtl/pinmux_jtag_breakout.sv
hw/ip/pinmux/rtl/pinmux_jtag_buf.sv
hw/ip/prim/fpv/tb/prim_fifo_sync_bind_fpv.sv
hw/ip/prim/rtl/prim_assert_dummy_macros.svh
hw/ip/prim/rtl/prim_assert_standard_macros.svh
hw/ip/prim/rtl/prim_assert_yosys_macros.svh
hw/ip/prim/rtl/prim_clock_gating_sync.sv
hw/ip/prim/rtl/prim_otp_pkg.sv
hw/ip/prim/rtl/prim_secded_22_16_enc.sv
hw/ip/prim/rtl/prim_secded_28_22_enc.sv
hw/ip/prim/rtl/prim_secded_39_32_enc.sv
hw/ip/prim/rtl/prim_secded_64_57_enc.sv
hw/ip/prim/rtl/prim_secded_72_64_enc.sv
hw/ip/prim/rtl/prim_secded_hamming_22_16_enc.sv
hw/ip/prim/rtl/prim_secded_hamming_39_32_enc.sv
hw/ip/prim/rtl/prim_secded_hamming_72_64_enc.sv
hw/ip/prim/rtl/prim_util_pkg.sv
hw/ip/prim_generic/rtl/prim_generic_buf.sv
hw/ip/prim_generic/rtl/prim_generic_flop.sv
hw/ip/prim_generic/rtl/prim_generic_flop_2sync.sv
hw/ip/prim_generic/rtl/prim_generic_flop_en.sv
hw/ip/prim_generic/rtl/prim_generic_xor2.sv
hw/ip/prim_xilinx/rtl/prim_xilinx_buf.sv
hw/ip/prim_xilinx/rtl/prim_xilinx_clock_buf.sv
hw/ip/prim_xilinx/rtl/prim_xilinx_clock_gating.sv
hw/ip/prim_xilinx/rtl/prim_xilinx_clock_mux2.sv
hw/ip/prim_xilinx/rtl/prim_xilinx_flop.sv
hw/ip/prim_xilinx/rtl/prim_xilinx_flop_en.sv
hw/ip/prim_xilinx/rtl/prim_xilinx_pad_attr.sv
hw/ip/prim_xilinx/rtl/prim_xilinx_xor2.sv
hw/ip/pwm/dv/env/pwm_env_cov.sv
hw/ip/pwm/dv/env/pwm_env_pkg.sv
hw/ip/pwm/dv/env/pwm_virtual_sequencer.sv
hw/ip/pwm/dv/env/seq_lib/pwm_base_vseq.sv
hw/ip/pwm/dv/env/seq_lib/pwm_smoke_vseq.sv
hw/ip/pwm/dv/env/seq_lib/pwm_vseq_list.sv
hw/ip/pwm/dv/tests/pwm_base_test.sv
hw/ip/pwm/dv/tests/pwm_test_pkg.sv
hw/ip/pwrmgr/dv/env/pwrmgr_env_pkg.sv
hw/ip/pwrmgr/dv/env/seq_lib/pwrmgr_vseq_list.sv
hw/ip/pwrmgr/dv/tests/pwrmgr_test_pkg.sv
hw/ip/rom_ctrl/dv/cov/rom_ctrl_cov_bind.sv
hw/ip/rom_ctrl/dv/env/rom_ctrl_if.sv
hw/ip/rom_ctrl/dv/env/seq_lib/rom_ctrl_vseq_list.sv
hw/ip/rom_ctrl/dv/tests/rom_ctrl_test_pkg.sv
hw/ip/rstmgr/rtl/rstmgr_crash_info.sv
hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_access_during_key_req_vseq.sv
hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_vseq_list.sv
hw/ip/sram_ctrl/dv/env/sram_ctrl_exec_if.sv
hw/ip/sram_ctrl/dv/env/sram_ctrl_lc_if.sv
hw/ip/sram_ctrl/dv/tests/sram_ctrl_test_pkg.sv
hw/ip/tlul/generic_dv/env/seq_lib/xbar_random_vseq.sv
hw/ip/tlul/generic_dv/env/seq_lib/xbar_seq_err_item.sv
hw/ip/tlul/generic_dv/env/seq_lib/xbar_smoke_vseq.sv
hw/ip/tlul/generic_dv/env/seq_lib/xbar_unmapped_addr_vseq.sv
hw/ip/tlul/generic_dv/env/seq_lib/xbar_vseq_list.sv
hw/ip/tlul/generic_dv/tb/xbar_macros.svh
hw/ip/tlul/generic_dv/tests/xbar_error_test.sv
hw/ip/tlul/generic_dv/tests/xbar_test_pkg.sv
hw/ip/usbdev/dv/env/seq_lib/usbdev_smoke_vseq.sv
hw/ip/usbdev/dv/env/seq_lib/usbdev_vseq_list.sv
hw/ip/usbdev/dv/env/usbdev_virtual_sequencer.sv
hw/ip/usbdev/dv/tests/usbdev_base_test.sv
hw/ip/usbdev/dv/tests/usbdev_test_pkg.sv
hw/ip/usbdev/rtl/usbdev_pkg.sv
hw/ip/usbuart/rtl/rising_edge_detector.sv
