blob: b62e2ec1ea546855f134c9f0fb76ced51e7b25ae [file] [log] [blame]
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
#
# waiver file for ast
waive -rules IFDEF_CODE -location {ast.sv} \
-msg {Assignment to 'ast2pad_t0_ao' contained within `else block at ast.sv} \
-comment {This ifdef statement is used for analog simulations and is OK.}
waive -rules IFDEF_CODE -location {ast.sv} \
-msg {Assignment to 'unused_analog_sigs' contained within `ifndef 'ANALOGSIM' block at} \
-comment {This ifdef statement is used for assigning "unused" signals and is OK.}
waive -rules IFDEF_CODE -location {ast.sv} \
-regexp {Assignment to 'clk_(sys|usb|aon|io)_ext' contained within `ifdef 'AST_BYPASS_CLK' block at} \
-comment {This ifdef statement is fine as it is part of the FPGA/Verilator clock bypass mechanism.}
waive -rules IFDEF_CODE -location {aon_osc.sv io_osc.sv sys_osc.sv usb_osc.sv} \
-regexp {Assignment to '(sys|usb|aon|io)_clk_dly' contained within `else block at} \
-comment {This ifdef statement is fine as it is part of the FPGA/Verilator clock bypass mechanism.}
waive -rules IFDEF_CODE -location {aon_osc.sv io_osc.sv sys_osc.sv usb_osc.sv} \
-regexp {Assignment to 'en_osc_re' contained within `else block at} \
-comment {This ifdef statement is fine as it is part of the FPGA/Verilator clock bypass mechanism.}
waive -rules CLOCK_EDGE -location {aon_osc.sv io_osc.sv sys_osc.sv usb_osc.sv} \
-msg {Falling edge of clock 'clk' used here, should use rising edge} \
-comment {This negedge trigger is done on purpose.}
waive -rules CLOCK_DRIVER -location {ast.sv} \
-regexp {'clk_src_(aon|io|sys)' is driven by instance 'u_ast_clks_byp' of module 'ast_clks_byp', and used as a clock 'clk_i' at} \
-comment {This is clock generation logic, hence it needs to drive this clock signal.}
waive -rules CLOCK_DRIVER -location {ast.sv} \
-regexp {'clk_src_(aon|io|sys)' in module 'ast_clks_byp' by port} \
-comment {This is clock generation logic, hence it needs to drive this clock signal.}
waive -rules CLOCK_DRIVER -location {ast.sv} \
-msg {'clk_o' driven in module 'gfr_clk_mux2' at} \
-comment {This is clock generation logic, hence it needs to drive this clock signal.}
waive -rules CLOCK_DRIVER -location {ast_clks_byp.sv} \
-regexp {'clk_src_(aon|io)_o' is driven by instance 'u_clk_src_(aon|io)_sel' of module 'gfr_clk_mux2', and used as a clock 'clk_i' at} \
-comment {This is clock generation logic, hence it needs to drive this clock signal.}
waive -rules CLOCK_DRIVER -location {ast_clks_byp.sv} \
-regexp {'clk_ext_scn' is driven here, and used as a clock 'clk_i' at} \
-comment {This is clock generation logic, hence it needs to drive this clock signal.}
waive -rules CLOCK_MUX -location {ast_clks_byp.sv} \
-regexp {Clock '(clk_ext_scn|clk_src_ext_usb|clk_ext_aon)' is driven by a multiplexer here, used as a clock} \
-comment {This is clock generation logic, hence it needs to drive this clock signal.}
waive -rules CLOCK_USE -location {gfr_clk_mux2.sv} \
-regexp {('clk_ext'|'clk_osc') is used for some other purpose, and as clock ('clk_ext_i'|'clk_osc_i') at gfr_clk_mux2.sv} \
-comment {This message pops up due to a clock OR operation.}
waive -rules CLOCK_USE -location {ast.sv} \
-regexp {'clk_ast_tlul_i' is connected to 'ast_dft' port 'clk_i', and used as a clock 'clk_i' at prim_lfsr} \
-comment {This is a valid clock signal and the LFSR runs on the bus clock here.}
waive -rules CLOCK_USE -location {ast.sv} \
-regexp {'clk_aon' is connected to 'rglts_pdm_3p3v' port 'clk_src_aon_h_i', and used as a clock} \
-comment {This is a valid clock signal and the connection is ok here.}
waive -rules INV_CLOCK -location {ast.sv rglts_pdm_3p3v.sv} \
-regexp {'(clk_aon|clk_src_aon_h_i)' is inverted, used as clock} \
-comment {These clocks are inverted.}
waive -rules RESET_DRIVER -location {aon_clk.sv io_clk.sv sys_clk.sv usb_clk.sv} \
-msg {'rst_val_n' is driven here, and used as an asynchronous reset} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {aon_clk.sv io_clk.sv sys_clk.sv usb_clk.sv} \
-regexp {'(aon|io|sys|usb)_clk_en' is driven here, and used as an asynchronous reset} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {rng.sv} \
-msg {'rst_n' is driven here, and used as an asynchronous reset at rng.sv} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {ast.sv} \
-regexp {('vcaon_pok_h'|'por_rst_n'|'vcmain_pok_por') is driven here, and used as an asynchronous reset} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {ast.sv} \
-msg {'clk_io_osc_val' is driven by instance 'u_io_clk' of module 'io_clk', and used as an asynchronous reset 'rst_clk_osc_n' at ast_dft.sv} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {ast.sv} \
-msg {'clk_src_io_val_o' driven in module 'io_clk' by port 'u_val_sync.q_o[0]' at io_clk.sv} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {ast.sv dev_entropy.sv ast_clks_byp.sv} \
-regexp {'q_o[0]' driven in module 'prim_flop_2sync' by port .* at prim_flop_2sync.sv} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {ast.sv} \
-msg {'vcmain_pok_por_sys' is driven by instance 'u_rst_sys_dasrt' of module 'prim_flop_2sync', and used as an asynchronous reset 'rst_dev_ni' at dev_entropy.sv} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {dev_entropy.sv} \
-msg {'rst_es_dev_nd' is driven by instance 'u_rst_es_n_da' of module 'prim_flop_2sync', and used as an asynchronous reset 'rst_es_dev_n'} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {dev_entropy.sv} \
-msg {'rst_es_dev_nd' is driven by instance 'u_rst_es_n_da' of module 'prim_flop_2sync', and used as an asynchronous reset 'rst_es_dev_n'} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {dev_entropy.sv} \
-msg {'rst_es_dev_da_n' is driven by instance 'u_rst_es_n_da' of module 'prim_flop_2sync', and used as an asynchronous reset 'rst_es_dev_n' at} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {dev_entropy.sv} \
-msg {'rst_es_dev_in_n' is driven here, and used as an asynchronous reset 'rst_ni' at} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {ast_pulse_sync.sv} \
-regexp {'(rst_src_n|rst_dst_n)' is driven here, and used as an asynchronous reset at} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {ast_clks_byp.sv} \
-regexp {'rst_aon_n_(ioda|exda)' is driven by instance 'u_rst_aon_n_(ioda|exda)_sync' of module} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {ast.sv} \
-regexp {'(vcc_pok|rst_poks_n|rst_poks_por_n|vcaon_pok_por_lat)' is driven here, and used as an asynchronous reset} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {ast.sv} \
-msg {'vcmain_pok_por_sys' is driven by instance 'u_rst_sys_dasrt' of module} \
-comment {This is reset generation logic, hence it needs to drive this reset signal.}
waive -rules RESET_DRIVER -location {rglts_pdm_3p3v.sv} \
-regexp {'(vcc_pok_rst_h_n|vcc_pok_set_h|vcc_pok_str_h.*)' is driven here, and used as an asynchronous reset} \
-comment {This is reset generation logic, hence reset muxes are allowed.}
waive -rules RESET_MUX -location {aon_clk.sv io_clk.sv sys_clk.sv usb_clk.sv} \
-msg {Asynchronous reset 'rst_val_n' is driven by a multiplexer here, used as a reset} \
-comment {This is reset generation logic, hence reset muxes are allowed.}
waive -rules RESET_MUX -location {ast.sv} \
-regexp {Asynchronous reset '(rst_poks_n|rst_poks_por_n|vcmain_pok_por|rst_src_sys_n|vcaon_pok_por)' is driven by a multiplexer here, used as a reset} \
-comment {This is reset generation logic, hence reset muxes are allowed.}
waive -rules RESET_MUX -location {rng.sv} \
-msg {Asynchronous reset 'rst_n' is driven by a multiplexer here, used as a reset at rng.sv} \
-comment {This is reset generation logic, hence reset muxes are allowed.}
waive -rules RESET_MUX -location {ast_clks_byp.sv} \
-regexp {Asynchronous reset '(rst_aon_n|rst_aon_exda_n|rst_aon_ioda_n)' is driven by a multiplexer here, used as a reset} \
-comment {This is reset generation logic, hence reset muxes are allowed.}
waive -rules RESET_MUX -location {ast_pulse_sync.sv} \
-regexp {Asynchronous reset '(rst_src_n|rst_dst_n)' is driven by a multiplexer here, used as a reset} \
-comment {This is reset generation logic, hence reset muxes are allowed.}
waive -rules RESET_MUX -location {rglts_pdm_3p3v.sv} \
-msg {Asynchronous reset 'vcc_pok_rst_h_n' is driven by a multiplexer here, used as a reset} \
-comment {This is reset generation logic, hence reset muxes are allowed.}
waive -rules RESET_USE -location {ast.sv} \
-regexp {('vcore_pok_h_i'|'vcaon_pok') is used for some other purpose, and as asynchronous reset} \
-comment {This is reset / clock generation logic, hence special reset usage is allowed.}
waive -rules RESET_USE -location {ast.sv} \
-msg {'vcmain_pok_por' is connected to 'rglts_pdm_3p3v' port 'vcmain_pok_por_h_i', and used as an asynchronous reset or set} \
-comment {This is reset / clock generation logic, hence special reset usage is allowed.}
waive -rules RESET_USE -location {ast.sv} \
-msg {'vcaon_pok_por' is connected to 'rglts_pdm_3p3v' port 'vcaon_pok_por_h_i', and used as an asynchronous reset or set} \
-comment {This is reset / clock generation logic, hence special reset usage is allowed.}
waive -rules RESET_USE -location {ast.sv} \
-regexp {'(vcc_pok|vcmain_pok_por)' is used for some other purpose, and as asynchronous reset} \
-comment {This is reset / clock generation logic, hence special reset usage is allowed.}
waive -rules RESET_USE -location {ast.sv} \
-regexp {'rst_(usb|aon|io|sys)_clk_n' is connected to '(usb|aon|io|sys)_clk' port 'rst_(usb|aon|io|sys)_clk_ni', and used as an asynchronous reset or set ('rst_ni'|'vcore_pok_h_i'|'rst_clk_byp_n')} \
-comment {This is reset / clock generation logic, hence special reset usage is allowed.}
waive -rules RESET_USE -location {io_osc.sv sys_osc.sv usb_osc.sv aon_osc.sv} \
-msg {'vcore_pok_h_i' is used for some other purpose, and as asynchronous reset at} \
-comment {This is reset / clock generation logic, hence special reset usage is allowed.}
waive -rules RESET_USE -location {ast_dft.sv} \
-msg {'clk_io_osc_val_i' is used for some other purpose, and as asynchronous reset 'rst_clk_osc_n' at ast_dft.sv} \
-comment {This is reset / clock generation logic, hence special reset usage is allowed.}
waive -rules RESET_USE -location {ast.sv} \
-msg {'rst_ast_tlul_ni' is connected to 'ast_dft' port 'rst_ni', and used as an asynchronous reset or set 'rst_n' at rng} \
-comment {This is a valid reset connection.}
waive -rules RESET_USE -location {ast.sv} \
-regexp {('rst_sys_clk_n'|'rst_usb_clk_n') is connected to ('sys_clk'|'usb_clk') port ('rst_sys_clk_ni'|'rst_usb_clk_ni'), and used as an asynchronous reset or set} \
-comment {This is a valid reset connection.}
waive -rules RESET_USE -location {aon_clk.sv io_clk.sv sys_clk.sv usb_clk.sv} \
-regexp {'(aon|io|sys|usb)_clk_en' is connected to '(aon|io|sys|usb)_osc' port '(aon|io|sys|usb)_en_i', and used as an asynchronous reset or set} \
-comment {This is reset / clock generation logic, hence special reset usage is allowed.}
waive -rules TRI_DRIVER -location {ast.sv} \
-regexp {'ast2pad_(t0|t1)_ao' is driven by a tristate driver} \
-comment {This part models a tristate driver.}
waive -rules TERMINAL_STATE -location {rglts_pdm_3p3v.sv} \
-msg {Terminal state 'RGLS_BROUT' is detected. State register 'rgls_sm' is not assigned to another state.} \
-comment {The brownout state is terminal.}
waive -rules Z_USE -location {ast.sv} \
-msg {Constant with 'Z literal value '1'bz' encountered} \
-comment {This part models a tristate driver.}
waive -rules MULTI_RESET -location {rglts_pdm_3p3v.sv} \
-msg {Found 2 asynchronous resets for this block: 'vcc_pok_rst_h_n', 'vcc_pok_set_h'} \
-comment {This code is only a model and hence this is allowed.}