def METHOD_NAME(node, params):
    """Evaluates the pyverilog node @node"""
    if isinstance(node, pyverilog.vparser.ast.IntConst):
        return int_const_str_to_int(node.value)
    if isinstance(node, pyverilog.vparser.ast.Rvalue):
        return METHOD_NAME(node.var, params)
    if isinstance(node,
                  (pyverilog.vparser.ast.Minus, pyverilog.vparser.ast.Uminus)):
        l = METHOD_NAME(node.left, params)
        r = METHOD_NAME(node.right, params)
        return l - r
    if isinstance(node, pyverilog.vparser.ast.Plus):
        l = METHOD_NAME(node.left, params)
        r = METHOD_NAME(node.right, params)
        return l + r
    if isinstance(node, pyverilog.vparser.ast.Divide):
        l = METHOD_NAME(node.left, params)
        r = METHOD_NAME(node.right, params)
        return l // r  # floor division
    if isinstance(node, pyverilog.vparser.ast.Times):
        l = METHOD_NAME(node.left, params)
        r = METHOD_NAME(node.right, params)
        return l * r  # floor division
    if isinstance(node, pyverilog.vparser.ast.Identifier):
        return params[node.name]
    if isinstance(node, pyverilog.vparser.ast.SystemCall):
        syscall = node.syscall
        if syscall == "clog2":
            operand = METHOD_NAME(node.children()[0], params)
            return clog2(operand)
        raise PyverilogImportError(
            f"Unsupported verilog system call: {syscall}")
    raise PyverilogImportError(f"Unsupported expression: {type(node)}")