113521Sgabeblack@google.com/*****************************************************************************
213521Sgabeblack@google.com
313521Sgabeblack@google.com  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
413521Sgabeblack@google.com  more contributor license agreements.  See the NOTICE file distributed
513521Sgabeblack@google.com  with this work for additional information regarding copyright ownership.
613521Sgabeblack@google.com  Accellera licenses this file to you under the Apache License, Version 2.0
713521Sgabeblack@google.com  (the "License"); you may not use this file except in compliance with the
813521Sgabeblack@google.com  License.  You may obtain a copy of the License at
913521Sgabeblack@google.com
1013521Sgabeblack@google.com    http://www.apache.org/licenses/LICENSE-2.0
1113521Sgabeblack@google.com
1213521Sgabeblack@google.com  Unless required by applicable law or agreed to in writing, software
1313521Sgabeblack@google.com  distributed under the License is distributed on an "AS IS" BASIS,
1413521Sgabeblack@google.com  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
1513521Sgabeblack@google.com  implied.  See the License for the specific language governing
1613521Sgabeblack@google.com  permissions and limitations under the License.
1713521Sgabeblack@google.com
1813521Sgabeblack@google.com *****************************************************************************/
1913521Sgabeblack@google.com
2013521Sgabeblack@google.com#ifndef __TLM_CORE_1_REQ_RSP_INTERFACES_MASTER_SLAVE_IFS_HH__
2113521Sgabeblack@google.com#define __TLM_CORE_1_REQ_RSP_INTERFACES_MASTER_SLAVE_IFS_HH__
2213521Sgabeblack@google.com
2313586Sgabeblack@google.com#include "core_ifs.hh"
2413521Sgabeblack@google.com
2513521Sgabeblack@google.comnamespace tlm
2613521Sgabeblack@google.com{
2713521Sgabeblack@google.com
2813521Sgabeblack@google.com//
2913521Sgabeblack@google.com// req/rsp combined interfaces
3013521Sgabeblack@google.com//
3113521Sgabeblack@google.com
3213521Sgabeblack@google.com// Blocking.
3313521Sgabeblack@google.comtemplate <typename REQ, typename RSP>
3413521Sgabeblack@google.comclass tlm_blocking_master_if :
3513521Sgabeblack@google.com    public virtual tlm_blocking_put_if<REQ>,
3613521Sgabeblack@google.com    public virtual tlm_blocking_get_peek_if<RSP>
3713521Sgabeblack@google.com{};
3813521Sgabeblack@google.com
3913521Sgabeblack@google.comtemplate <typename REQ, typename RSP>
4013521Sgabeblack@google.comclass tlm_blocking_slave_if :
4113521Sgabeblack@google.com    public virtual tlm_blocking_put_if<RSP>,
4213521Sgabeblack@google.com    public virtual tlm_blocking_get_peek_if<REQ>
4313521Sgabeblack@google.com{};
4413521Sgabeblack@google.com
4513521Sgabeblack@google.com// Nonblocking.
4613521Sgabeblack@google.comtemplate <typename REQ, typename RSP>
4713521Sgabeblack@google.comclass tlm_nonblocking_master_if :
4813521Sgabeblack@google.com    public virtual tlm_nonblocking_put_if<REQ>,
4913521Sgabeblack@google.com    public virtual tlm_nonblocking_get_peek_if<RSP>
5013521Sgabeblack@google.com{};
5113521Sgabeblack@google.com
5213521Sgabeblack@google.comtemplate <typename REQ, typename RSP>
5313521Sgabeblack@google.comclass tlm_nonblocking_slave_if :
5413521Sgabeblack@google.com    public virtual tlm_nonblocking_put_if<RSP>,
5513521Sgabeblack@google.com    public virtual tlm_nonblocking_get_peek_if<REQ>
5613521Sgabeblack@google.com{};
5713521Sgabeblack@google.com
5813521Sgabeblack@google.com// Combined.
5913521Sgabeblack@google.comtemplate <typename REQ, typename RSP>
6013521Sgabeblack@google.comclass tlm_master_if : public virtual tlm_put_if<REQ>,
6113521Sgabeblack@google.com    public virtual tlm_get_peek_if<RSP> ,
6213521Sgabeblack@google.com    public virtual tlm_blocking_master_if<REQ, RSP>,
6313521Sgabeblack@google.com    public virtual tlm_nonblocking_master_if<REQ, RSP>
6413521Sgabeblack@google.com{};
6513521Sgabeblack@google.com
6613521Sgabeblack@google.comtemplate <typename REQ, typename RSP>
6713521Sgabeblack@google.comclass tlm_slave_if : public virtual tlm_put_if<RSP>,
6813521Sgabeblack@google.com    public virtual tlm_get_peek_if<REQ>,
6913521Sgabeblack@google.com    public virtual tlm_blocking_slave_if<REQ, RSP>,
7013521Sgabeblack@google.com    public virtual tlm_nonblocking_slave_if<REQ, RSP>
7113521Sgabeblack@google.com{};
7213521Sgabeblack@google.com
7313521Sgabeblack@google.com} // namespace tlm
7413521Sgabeblack@google.com
7513521Sgabeblack@google.com#endif /* __TLM_CORE_1_REQ_RSP_INTERFACES_MASTER_SLAVE_IFS_HH__ */
76