// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
//
// xbar_${xbar.name} comportable IP spec generated by `tlgen.py` tool
{ name: "xbar_${xbar.name}"
  clock_primary: ""
  other_clock_list: []
  reset_primary: ""
  other_reset_list: []
  //available_input_list: []

  inter_signal_list: [
    // host
% for node in xbar.hosts:
    { struct: "tl"
      type:   "req_rsp"
      name:   "tl_${node.name.replace('.', '__')}"
      act:    "rsp"
      package: "tlul_pkg"
    }
% endfor
    // device
% for node in xbar.devices:
    { struct: "tl"
      type:   "req_rsp"
      name:   "tl_${node.name.replace('.', '__')}"
      act:    "req"
      package: "tlul_pkg"
    }
% endfor
  ]
}
