veryl-std 0.20.3

A modern hardware description language
Documentation
pub package utils {
    function clog2_clipped (
        x  : input u32,
        min: input u32,
    ) -> u32 {
        var result: u32;
        result = $clog2(x);
        return if result >: min ? result : min;
    }
}

#[test(test_utils_clog2_clipped)]
module test_utils_clog2_clipped {
    const A: u32 = utils::clog2_clipped(1, 1);
    const B: u32 = utils::clog2_clipped(2, 1);
    const C: u32 = utils::clog2_clipped(3, 1);
    const D: u32 = utils::clog2_clipped(4, 1);
    const E: u32 = utils::clog2_clipped(5, 1);
    const F: u32 = utils::clog2_clipped(6, 1);
    const G: u32 = utils::clog2_clipped(7, 1);

    initial {
        $assert(A == 1);
        $assert(B == 1);
        $assert(C == 2);
        $assert(D == 2);
        $assert(E == 3);
        $assert(G == 3);
        $assert(G == 3);
        $finish();
    }
}