Jump to content
Bhargav

Design IPXACT-adHocConnections-InternalPortReferences-left and right attributes

Recommended Posts

Previous versions of IPXACT has attributes, 'left' and 'right'  inside internalPortReference element of adHocConnection in design IPXACT as shown in the following 4 lines of xml.

  1. <spirit:adHocConnection>
  2. <spirit:name>....</spirit:name>
  3. <spirit:internalPortReference spirit:ComponentRef = "..."         spirit:PortRef=".."          spirit:left="..."          spirit:right="...."/>
  4. </spirit:adHocConnection>

These attributes basically say that which vector range of port from one component is mapped to another (I assume)

However, the same IPXACT with latest schema, while validation gives schema error stating, attribute right/left is not allowed. Even the latest xsd files available with accellera doesn't define these attributes.There must be some means how currently, these multibit adHocConnections are mapped between two components inside an IPXACT-design. What could be the solution for this?

 

example_capture.PNG

Share this post


Link to post
Share on other sites

Hi Bhargav,

In the 1685-2014 version, component wire ports can be multidimensional, i.e., it can have muliple arrays and multiple vectors. For this reason, a portReference must support multiple dimensions as well. This is done using the partSelect element. The partSelect element can contain a single range with left and right to support a single vector as before. Or it can contain can indices plus a range. The indices indicate which dimension the range applies to. If the indices contain more than one index then the first indices apply to the arrays and the last indices apply to the vectors.

Best regards,
Erwin

portRef.PNG.ef95a28e1f3dc5874c0a1e1dc8d8df02.PNG

port.PNG

portRef.PNG

Share this post


Link to post
Share on other sites

Hi Erwin,

Thanks for that. I tried the above mentioned solution and its working.

I have a question regarding connectivity of multidimensional port range.

I tried to implement multidimensional ports like below attached image in my xml:

It is giving this error while validation: "Element range is not expected".

Must be because, range element max bound is only one. If that is the case, how to implement the following case:

I have a port A from component1 like this: A[2:0][2:0] and port B of component2: B[5:3][6:4] and are supposed to be connected. Now, how will I regenerate this in IPXACT? If I am using, "indices" element, with two indexes, each for each dimension, still I will be able to give range definition only once. I mean, I can give connectivity information for only one dimension of A and B. What about the range information for the second dimension?

image.png.cdce894586c9d845f1f380b249f02e89.png

Best regards,

Bhargav Kandru.

Share this post


Link to post
Share on other sites

Hi Bhargav,

In case of your example connecting A[2:0][2:0] to B[5:3][6:4] there is no need to describe the partSelect. If there is no partSelect then automatically the full range is connected. If you want to create connections different from A[x][y] -> B[x+3][y+4], let's say A[x[[y] -> B[y+3][x+4], then you can use two adhoc connections:

	<ipxact:adHocConnections>
		<ipxact:adHocConnection>
			<ipxact:name>adhoc1</ipxact:name>
			<ipxact:portReferences>
				<ipxact:internalPortReference componentRef="cA" portRef="A">
					<ipxact:partSelect>
						<ipxact:indices>
							<ipxact:index>0</ipxact:index>
						</ipxact:indices>
						<ipxact:range>
							<ipxact:left>2</ipxact:left>
							<ipxact:right>0</ipxact:right>
						</ipxact:range>
					</ipxact:partSelect>
				</ipxact:internalPortReference>
				<ipxact:internalPortReference componentRef="cB" portRef="B">
					<ipxact:partSelect>
						<ipxact:indices>
							<ipxact:index>1</ipxact:index>
						</ipxact:indices>
						<ipxact:range>
							<ipxact:left>6</ipxact:left>
							<ipxact:right>4</ipxact:right>
						</ipxact:range>
					</ipxact:partSelect>
				</ipxact:internalPortReference>
			</ipxact:portReferences>
		</ipxact:adHocConnection>
		<ipxact:adHocConnection>
			<ipxact:name>adhoc2</ipxact:name>
			<ipxact:portReferences>
				<ipxact:internalPortReference componentRef="cA" portRef="A">
					<ipxact:partSelect>
						<ipxact:indices>
							<ipxact:index>1</ipxact:index>
						</ipxact:indices>
						<ipxact:range>
							<ipxact:left>2</ipxact:left>
							<ipxact:right>0</ipxact:right>
						</ipxact:range>
					</ipxact:partSelect>
				</ipxact:internalPortReference>
				<ipxact:internalPortReference componentRef="cB" portRef="B">
					<ipxact:partSelect>
						<ipxact:indices>
							<ipxact:index>0</ipxact:index>
						</ipxact:indices>
						<ipxact:range>
							<ipxact:left>5</ipxact:left>
							<ipxact:right>3</ipxact:right>
						</ipxact:range>
					</ipxact:partSelect>
				</ipxact:internalPortReference>
			</ipxact:portReferences>
		</ipxact:adHocConnection>
	</ipxact:adHocConnections>

Best regards,
Erwin

Share this post


Link to post
Share on other sites

That was very useful for me Erwin. Thank You.

Will there be any significance, if I connect two unequal length ports under adHocConnection. Suppose, port A[3:0], connected to port B[7:0]. Just as below:

<ipxact:adHocConnection>

<ipxact:name>adhoc1</ipxact:name>

<ipxact:portReferences>

<ipxact:internalPortReference componentRef="cA" portRef="A">

<ipxact:partSelect>

<ipxact:range> <ipxact:left>3</ipxact:left> <ipxact:right>0</ipxact:right>

</ipxact:range> 

</ipxact:partSelect>

</ipxact:internalPortReference> 

<ipxact:internalPortReference componentRef="cB" portRef="B">

<ipxact:partSelect>

<ipxact:range> <ipxact:left>7</ipxact:left> <ipxact:right>0</ipxact:right>

</ipxact:range>

</ipxact:partSelect>

</ipxact:internalPortReference>

</ipxact:portReferences> 

</ipxact:adHocConnection>

 

In this case, what is the IPXACT exactly stating? A[3:0] connected to B[7:4], with B[3:0] left unconnected or the other way? or this IPXACT description is entirely invalid as incorrect length vectors are tied up?

 

Best Regards,

Bhargav K

Share this post


Link to post
Share on other sites

Hi Bhargav,

This is not allowed by SCR 6.25 on page 203 of the IEEE std. 1685-2014: "All ports referenced in an ad hoc connection shall reference the same number of bits. If no range is specified for a nonscalar port, then the full range from the port definition is presumed."

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

×