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

// Use most pessimistic X propagation.
merge = xmerge;

// Turn on xprop for dut only.
instance { tb.dut } { xpropOn };

// Modules excluded from xprop instrumentation.
module { ast_ext_clk_if } { xpropOff };
module { ast_supply_if } { xpropOff };
module { chip_if } { xpropOff };
module { clk_rst_if } { xpropOff };
module { i2c_if } { xpropOff };
module { jtag_if } { xpropOff };
module { prim_cdc_rand_delay } { xpropOff };
module { spi_if } { xpropOff };
module { uart_if } { xpropOff };
