code: def _parse_target_string(attr_str, targets, pool_name):
      if attr_str is None:
          raise TVMCException(
              f'No target specified for Workspace Pool "{pool_name}"'
          )
  
      target_name = [re.split(",", attr_str)]
      matched_targets = [
          target
          for target in targets
          if any(
              target.kind.name in target_string_match
              for target_string_match in target_name[0]
          )
      ]
      if not matched_targets:
          raise TVMCException(
              f'Workspace Pool "{pool_name}" using undefined Target "{target_name}"'
          )
      return matched_targets
  
file_path: tvm/python/tvm/driver/tvmc/workspace_pools.py
imports: import logging
  import re
  from tvm.driver.tvmc import TVMCException
  from tvm.target import Target
  from tvm.ir.memory_pools import PoolInfoProperties, WorkspaceMemoryPools, WorkspacePoolInfo
label_desc: Use image node_id 3 for calling a global function with example usage: _parse_target_string(attr_str, targets, pool_name) and returns: matched_targets