Jump to content

Abstraction definition : modeling bidirectional TLM ports


Recommended Posts

Hi Experts

I am modeling an abstraction definition for some protocol whcih has bidirectional TLM ports.

Form the standard, I found I can use initiative as "both" for bidirectional ports but I have either onMaster and onSlave. There is nothing line inout(both in and out)

Is it a limitation in the standard or there is a way to model such bidirectional TLM ports.

 

 

Thanks

RahulJn

Link to post
Share on other sites
  • 3 weeks later...

Hello RahuIJn.

 

In IP-XACT there are wire ports and transactional ports. The element direction with values in, out, inout, and phantom is used for wire ports. The element initiative with values provides, requires, both, and phantom is used for transactional ports. A transactional port has initiative provides if the transactional port provides (implements) a service (method) that can be called by another port. A transactional port has initiative requires if the transactional ports requires (calls) a service (method) that is implemented by another port. Initiative both means that the transactional port implements and calls methods.

 

If your bidirectional port is a standard TLM2 socket then you do not need to model this as a bidirectional port. We have the following style for that (for a target socket):

 

        <spirit:busInterface>
            <spirit:name>RegisterIF</spirit:name>
            <spirit:busType spirit:version="2011-1.0" spirit:name="TLM2GP" spirit:library="ieee1666" spirit:vendor="accellera.org"/>
            <spirit:abstractionType spirit:version="2011-1.0" spirit:name="TLM2GP_tlm" spirit:library="ieee1666" spirit:vendor="accellera.org"/>
            <spirit:slave>
                <spirit:memoryMapRef spirit:memoryMapRef="RegisterMap"/>
            </spirit:slave>
            <spirit:portMaps>
                <spirit:portMap>
                    <spirit:logicalPort>
                        <spirit:name>TLMSOCKET</spirit:name>
                    </spirit:logicalPort>
                    <spirit:physicalPort>
                        <spirit:name>socket</spirit:name>
                    </spirit:physicalPort>
                </spirit:portMap>
            </spirit:portMaps>
        </spirit:busInterface>

 

            <spirit:port>
                <spirit:name>socket</spirit:name>
                <spirit:transactional>
                    <spirit:transTypeDef>
                        <spirit:typeName>tlm::tlm_target_socket<32></spirit:typeName>
                        <spirit:typeDefinition>tlm.h</spirit:typeDefinition>
                    </spirit:transTypeDef>
                    <spirit:service>
                        <spirit:initiative>provides</spirit:initiative>
                        <spirit:serviceTypeDefs>
                            <spirit:serviceTypeDef>
                                <spirit:typeName spirit:implicit="true">tlm_fw_transport_if</spirit:typeName>
                            </spirit:serviceTypeDef>
                        </spirit:serviceTypeDefs>
                    </spirit:service>
                </spirit:transactional>
                <spirit:access/>
            </spirit:port>

 

An initiator socket is similar with initiative requires.

 

Best regards,

Erwin

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...