code: def read_vivado_report(hls_dir, full_report=False):
      if not os.path.exists(hls_dir):
          print(f"Path {hls_dir} does not exist. Exiting.")
          return
  
      prj_dir = None
      top_func_name = None
  
      if os.path.isfile(hls_dir + "/project.tcl"):
          prj_dir, top_func_name = _parse_project_script(hls_dir)
  
      if prj_dir is None or top_func_name is None:
          print("Unable to read project data. Exiting.")
          return
  
      sln_dir = hls_dir + "/" + prj_dir
      if not os.path.exists(sln_dir):
          print(
              f'Project {prj_dir} does not exist. Rerun "hls4ml build -p {hls_dir}".'
          )
          return
  
      solutions = _find_solutions(sln_dir)
      print(f"Found {len(solutions)} solution(s) in {sln_dir}.")
  
      for sln in solutions:
          print(f'Reports for solution "{sln}":\n')
          _find_reports(sln_dir + "/" + sln, top_func_name, full_report)
  
imports: import os
  import re
  import sys
  import xml.etree.ElementTree
label_desc: Use image node_id 1 for calling a global function with example usage: read_vivado_report(hls_dir, full_report) without return types