blob: 45edd9ce9846496a82bd2e123ebe02f4620219bd [file] [log] [blame]
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
#
# Verix CDC waiver file
# TODO: need to add more common waivers here. We may have to break this into
# multiple files.
#
# set_rule_status -rule { S_CONF_ENV } -status { Waived } -expression { } \
# -comment {}
# set_rule_status -rule { S_CONF_ENV } -status { Waived } -all_rule_data \
# -comment {}
# Assumes modules defined in run-cdc.tcl
if {[info exists modules] == 0} {
error "modules variable does not exist!" 99
}
foreach mod $modules {
if {[file exists $CDC_WAIVER_DIR/cdc_waivers.$mod.tcl]} {
source $CDC_WAIVER_DIR/cdc_waivers.$mod.tcl
}
}
# Common Waivers
# Muxed PAD output
# For IO PADs, Clock does not matter.
set_rule_status -rule {W_DATA W_MASYNC} -status {Waived} \
-expression {(ReceivingFlop =~ "IO*")} \
-comment {Direct output without flop}
# Driving from PAD to gpio/ uart/ i2c
set_rule_status -rule {W_MASYNC} -status {Waived} \
-expression {(Driver=~"IO*") && \
(ReceivingFlop=~"*u_gpio.gen_filter*prim_flop_2sync*")} \
-comment {Other than PADS, other signals are static}
set_rule_status -rule {W_MASYNC} -status {Waived} \
-expression {(Driver=~"IO*") && (ReceivingFlop=~"*u_uart*.*u_sync_1*")} \
-comment {Other than PADS, other signals are static}
set_rule_status -rule {W_CNTL} -status {Waived} \
-expression {(Signal=~"IO*") && (ReceivingFlop=~"*u_i2c*.*.u_sync_1*")} \
-comment {PAD driving to I2C. PADs are not clock bounded}
set_rule_status -rule {W_GLITCH} -status {Waived} \
-expression {(GlitchInput=~"IO*") && \
(GlitchOutput=~"*u_sync_1*")} \
-comment {Waive PADs input goes into synchronizer}
# PADs attribute to multiple IPs
# Assume the attributes are not used when IPs are active
set_rule_status -rule {W_FANOUT} -status {Waived} \
-expression {(Driver =~ "*u_pinmux_aon.dio_pad_attr_q*")} \
-comment {ATTR static signal propagates into USB_CLK, AON_CLK. But no Reconvergence issue}
# SPI Device PADS output
set_rule_status -rule {W_DATA} -status {Waived} -expression \
{(MultiClockDomains =~ "*::SPI_DEV_CLK,SPI_DEV_PASSTHRU_CLK") && \
(ReceivingFlop =~ "SPI_DEV_*")} -comment {Direct output without flop}
set_rule_status -rule {W_MASYNC} -status {Waived} -expression \
{(MultiClockDomains =~ "*::SPI_DEV_CLK,SPI_DEV_PASSTHRU_CLK") && \
(ReceivingFlop =~ "SPI_DEV_*")} -comment {Direct output without flop}
set_rule_status -rule {W_DATA} -status {Waived} -expression \
{(MultiClockDomains =~ "*::SPI_HOST_CLK,SPI_HOST_PASSTHRU_CLK") && \
(ReceivingFlop =~ "SPI_HOST_*")} -comment {Direct output without flop}
set_rule_status -rule {W_MASYNC} -status {Waived} -expression \
{(MultiClockDomains =~ "*::SPI_HOST_CLK,SPI_HOST_PASSTHRU_CLK") && \
(ReceivingFlop =~ "SPI_HOST_*")} -comment {Direct output without flop}
## ASYNC FIFO Gray Pointer
set_rule_status -rule {W_CNTL} -status {Waived} \
-expression {(Signal=~"*ptr_gray_q*") && (ReceivingFlop =~ "*.u_sync_1*")} \
-comment {Gray Pointer sync}
## Waive pinmux attr: static
set_rule_status -rule {W_MASYNC} -status {Waived} \
-expression {(Driver=~"*u_pinmux_aon.dio_pad_attr_*")} \
-comment {PAD Attributes are static signals.}
# JTAG en
set_rule_status -rule {W_ASYNC_RST_FLOPS} -status {Waived} \
-expression {(DrivingSignal=~"*.u_pinmux_strap_sampling.tap_strap_q*")} \
-comment {Tester should ensure no jtag transactions when tap_strap is sampled}
set_rule_status -rule {W_CNTL} -status {Waived} \
-expression {(Signal=~"*u_pinmux_aon.dio_pad_attr_*")} \
-comment {PAD Attributes are static signals.}
set_rule_status -rule {W_DATA} -status {Waived} \
-expression {(Signal=~"*u_pinmux_aon.dio_pad_attr_*")} \
-comment {PAD Attributes are static signals.}
set_rule_status -rule {S_GENCLK} -status {Waived} \
-expression {(ClockTreeSignal=~"u_ast.u_ast_clks_byp.*") && (DrivenFlop =~ "u_ast.u_ast_clks_byp.*")} \
-comment {ast clks are assumed to be checked by the partner as standalone.}