def METHOD_NAME(matrix1, matrix2, verbosity, silent, check_comments, check_attributes, ignore_valuetables, frames):
    """
        canmatrix.cli.compare [options] matrix1 matrix2
        matrixX can be any of *.dbc|*.dbf|*.kcd|*.arxml|*.xls(x)|*.sym
    """
    import canmatrix.log
    root_logger = canmatrix.log.setup_logger()
    if silent:
        # Only print ERROR messages (ignore import warnings)
        verbosity = -1
    canmatrix.log.set_log_level(root_logger, verbosity)
    # import only after setting log level, to also disable warning messages in silent mode.
    import canmatrix.formats  # due this import we need the import alias for log module
    logger.info("Importing " + matrix1 + " ... ")
    db1 = canmatrix.formats.loadp_flat(matrix1)
    logger.info("%d Frames found" % (db1.frames.__len__()))
    logger.info("Importing " + matrix2 + " ... ")
    db2 = canmatrix.formats.loadp_flat(matrix2)
    logger.info("%d Frames found" % (db2.frames.__len__()))
    ignore = {}  # type: typing.Dict[str, typing.Union[str, bool]]
    if not check_comments:
        ignore["comment"] = "*"
    if not check_attributes:
        ignore["ATTRIBUTE"] = "*"
    if ignore_valuetables:
        ignore["VALUETABLES"] = True
    if frames:
        only_in_matrix1 = [
            frame.name
            for frame in db1.frames
            if db2.frame_by_name(frame.name) is None
        ]
        only_in_matrix2 = [
            frame.name
            for frame in db2.frames
            if db1.frame_by_name(frame.name) is None
        ]
        print("Frames only in " + matrix1 + ": " + " ".join(only_in_matrix1))
        print("Frames only in " + matrix2 + ": " + " ".join(only_in_matrix2))
    else:
        # ignore["ATTRIBUTE"] = "*"
        # ignore["DEFINE"] = "*"
        obj = canmatrix.compare.compare_db(db1, db2, ignore)
        canmatrix.compare.dump_result(obj)
    return 0