def METHOD_NAME(argv):
    asic = None
    try:
        opts, args = getopt.getopt(
            argv, "hsa:p:", ["asic=", "skip-setup", "bcmsim-path="]
        )
    except getopt.GetoptError:
        print("brcmsim -a <th3|th4|th4_b0|th5> <-s> <-p path_of_bcmsim>")
        sys.exit(2)
    skip_setup = False
    bcmsim_path = BCM_BASE_DIR
    for opt, arg in opts:
        if opt == "-h":
            print(
                "brcmsim --asic <th3|th4|th4_b0|th5> <--skip-setup> <--bcmsim-path path_of_bcmsim>"
            )
            sys.exit()
        elif opt in ("-a", "--asic"):
            asic = arg
        elif opt in ("-s", "--skip-setup"):
            skip_setup = True
        elif opt in ("-p", "--bcmsim-path"):
            bcmsim_path = arg
    if asic is None or asic not in ["th3", "th4", "th4_b0", "th5"]:
        print("missing asic type, please specify -a <th3|th4|th4_b0|th5>")
        sys.exit()
    if skip_setup or setup(asic, bcmsim_path):
        p1 = launchBcmSimFramework(bcmsim_path)
        # sleep 30s to wait for bcmsim framework fully up
        time.sleep(30)
        p2 = launchBcmSimLoader(asic, bcmsim_path)
        exitCode = p2.wait()
        logger.info(f"launchBcmSimLoader exited with code {exitCode}")
    logger.info("Done with BCM SIM")