Jump to content
Sign in to follow this  
rahuljn

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×