code: def make_place_workspace(images):
      image_set_list = cellprofiler_core.image.ImageSetList()
      image_set = image_set_list.get_image_set(0)
      module = cellprofiler.modules.tile.Tile()
      module.set_module_num(1)
      module.tile_method.value = (
          cellprofiler.modules.tile.T_WITHIN_CYCLES
      )
      module.output_image.value = OUTPUT_IMAGE_NAME
      module.wants_automatic_rows.value = False
      module.wants_automatic_columns.value = True
      module.rows.value = 1
      for i, image in enumerate(images):
          image_name = input_image_name(i)
          if i == 0:
              module.input_image.value = image_name
          else:
              if len(module.additional_images) <= i:
                  module.add_image()
              module.additional_images[
                  i - 1
              ].input_image_name.value = image_name
          image_set.add(
              image_name, cellprofiler_core.image.Image(image)
          )
  
      pipeline = cellprofiler_core.pipeline.Pipeline()
  
      def callback(caller, event):
          assert not isinstance(
              event, cellprofiler_core.pipeline.event.RunException
          )
  
      pipeline.add_listener(callback)
      pipeline.add_module(module)
  
      workspace = cellprofiler_core.workspace.Workspace(
          pipeline,
          module,
          image_set,
          cellprofiler_core.object.ObjectSet(),
          cellprofiler_core.measurement.Measurements(),
          image_set_list,
      )
      return workspace, module
  
imports: import numpy
  import six.moves
  import cellprofiler_core.image
  import cellprofiler_core.measurement
  import cellprofiler.modules.tile
  import cellprofiler_core.object
  import cellprofiler_core.pipeline
  import cellprofiler_core.workspace
  import tests.frontend.modules
label_desc: Use image node_id 15 for calling a global function with example usage: make_place_workspace(images) and returns: workspace,  module