Function Call

Function can be call by function_name(argument). System function of SystemVerilog like $clog2 can be used too.

package PackageA {
    function FunctionA (
        a: input logic,
        b: input logic,
    ) {}
}

module ModuleA {
    let _a: logic = PackageA::FunctionA(1, 1);
    let _b: logic = $clog2(1);
}

Named Argument

If a function has many arguments, function call with named arguments is useful. Named arguments can’t be used with positional arguments at the same time.

module ModuleA {
    function FunctionA (
        a: input logic,
        b: input logic,
        c: input logic,
        d: input logic,
    ) {}

    let _a: logic = FunctionA(
        a: 1,
        b: 1,
        c: 1,
        d: 1,
    );

    // Mixing positional and named arguments is Error
    //let _a: logic = FunctionA(
    //    1,
    //    2,
    //    a: 1,
    //    b: 1,
    //);
}