// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0

// Enables coverage on the entire DUT. Limits the port only toggle coverage to
// the DUT IOs.

+tree tb.dut
-module pins_if     // DV construct.
-module clk_rst_if  // DV construct.
-moduletree prim_alert_sender  // prim_alert_sender is verified in FPV.
-moduletree prim_prince // prim_prince is verified in a separate DV environment.
-moduletree prim_lfsr // prim_lfsr is verified in FPV.

begin tgl
  -tree tb
  +tree tb.dut 1
  +module prim_alert_sender
  +module prim_prince
  +module prim_lfsr
end

begin assert
  // These three assertions in prim_lc_sync check when `lc_ctrl_pkg::lc_tx_e` input is neither `On`
  // or `Off`, it is interrupted to the correct `On` or `Off` after one clock cycle. This behavior
  // is implemented outside of IP level design thus these assertions are not covered in IP level
  // testbenchs.
  // TODO: check these assertions in top-level or FPV.
  -assert PrimLcSyncCheckTransients_A
  -assert PrimLcSyncCheckTransients0_A
  -assert PrimLcSyncCheckTransients1_A
end
