我正在使用TLM 2.0大约定时的4相协议。我的模块有2个目标套接字和1个启动器套接字。它的工作是将到达目标套接字的请求转发到连接到启动程序套接字的模块。到目前为止,这没有问题,但是在某些时候,响应将到达i_socket并需要发送回目标套接字(来自此套接字)。确定传入响应属于哪个t_socket的最佳方法是什么?
典型的用例是具有多个主机的总线。总线需要知道将响应发送到哪个主机。以前,我已经用宽松的定时协议实现了这种总线,这很容易,因为响应只是返回,而返回将自动返回到正确的主站。
答案 0 :(得分:0)
路由模块将需要跟踪哪个套接字启动了事务。
例如,您可以将其存储在地图中:
std::unordered_map<tlm_generic_payload *, socket_t *> transInitiatorMap;
答案 1 :(得分:0)
推荐的方法是将目标套接字ID的实例特定TLM扩展名附加到通用有效载荷上,以使其到达目标套接字,并使用此方法确定要路由到的目标套接字回来的路。
您可以在下面的网页末尾找到源代码链接,其中提供了一个很好的示例。 https://www.doulos.com/knowhow/systemc/tlm2/at_example/