| // Copyright lowRISC contributors. |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| // SPDX-License-Identifier: Apache-2.0 |
| // |
| // ------------------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------------------// |
| // PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED WITH THE FOLLOWING COMMAND: |
| // |
| // util/design/gen-mubi.py |
| // |
| // Decoder for multibit control signals with additional input buffers. |
| |
| `include "prim_assert.sv" |
| |
| module prim_mubi${n_bits}_dec |
| import prim_mubi_pkg::*; |
| #( |
| parameter bit TestTrue = 1, |
| parameter bit TestStrict = 1 |
| ) ( |
| input mubi${n_bits}_t mubi_i, |
| output logic mubi_dec_o |
| ); |
| |
| logic [MuBi${n_bits}Width-1:0] mubi, mubi_out; |
| assign mubi = MuBi${n_bits}Width'(mubi_i); |
| |
| // The buffer cells have a don't touch constraint on them |
| // such that synthesis tools won't collapse them |
| for (genvar k = 0; k < MuBi${n_bits}Width; k++) begin : gen_bits |
| prim_buf u_prim_buf ( |
| .in_i ( mubi[k] ), |
| .out_o ( mubi_out[k] ) |
| ); |
| end |
| |
| if (TestTrue && TestStrict) begin : gen_test_true_strict |
| assign mubi_dec_o = mubi${n_bits}_test_true_strict(mubi${n_bits}_t'(mubi_out)); |
| end else if (TestTrue && !TestStrict) begin : gen_test_true_loose |
| assign mubi_dec_o = mubi${n_bits}_test_true_loose(mubi${n_bits}_t'(mubi_out)); |
| end else if (!TestTrue && TestStrict) begin : gen_test_false_strict |
| assign mubi_dec_o = mubi${n_bits}_test_false_strict(mubi${n_bits}_t'(mubi_out)); |
| end else if (!TestTrue && !TestStrict) begin : gen_test_false_loose |
| assign mubi_dec_o = mubi${n_bits}_test_false_loose(mubi${n_bits}_t'(mubi_out)); |
| end else begin : gen_unknown_config |
| `ASSERT_INIT(UnknownConfig_A, 0) |
| end |
| |
| endmodule : prim_mubi${n_bits}_dec |