def METHOD_NAME(workspace_dir, board, microtvm_debug, use_fvp, serial_number):
    """Test use of the AOT executor with microTVM."""
    build_config = {"debug": microtvm_debug}
    shape = (10,)
    dtype = "int8"
    print("test_relay: construct relay program\n")
    # Construct Relay program.
    relay_mod = tvm.relay.fromtext(
        """
      #[version = "0.0.5"]
      def @main(%a : Tensor[(1, 2), uint8], %b : Tensor[(1, 2), uint8]) {
          %0 = %a + %b;
          %0
      }"""
    )
    runtime = Runtime("crt", {"system-lib": True})
    executor = Executor("aot")
    target = tvm.micro.testing.get_target("zephyr", board)
    with tvm.transform.PassContext(opt_level=3, config={"tir.disable_vectorize": True}):
        mod = tvm.relay.build(relay_mod, target=target, runtime=runtime, executor=executor)
    def do_test():
        aot_executor = tvm.runtime.executor.aot_executor.AotModule(session.create_aot_executor())
        assert aot_executor.get_input_index("a") == 0
        assert aot_executor.get_input_index("b") == 1
        assert aot_executor.get_num_inputs() == 2
        assert aot_executor.get_num_outputs() == 1
        A_np = np.array([[2, 3]], dtype="uint8")
        B_np = np.array([[4, 7]], dtype="uint8")
        A_data = aot_executor.get_input("a").copyfrom(A_np)
        B_data = aot_executor.get_input("b").copyfrom(B_np)
        aot_executor.run()
        out = aot_executor.get_output(0)
        assert (out.numpy() == np.array([6, 10])).all()
        B_np_new = np.array([[5, 8]])
        aot_executor.set_input("b", B_np_new)
        assert (B_data.numpy() == B_np_new).all()
    with _make_session(workspace_dir, board, mod, build_config, use_fvp, serial_number) as session:
        do_test()