Table of Contents
Previous Chapter
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
port is not the OID of a Port
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
port is not the OID of a Port.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
owner (input) The OID of the new owning PortBundle.
position (input) The desired location of the port within its new owner PortBundle. If position is less than 0 or greater than or equal to the number of members in the list of Ports owned by owner, the new Port is appended as the last member of the list. Otherwise, it is inserted at the specified position in the list (0 is the first member).
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating memory for this parameter.
CFIDR_INVALID_OBJECTTYPE:
port is not the OID of a Port.
CFIDR_UNUSABLE_PORTBUNDLE_OID:
owner is not a usable OID.
CFIDR_INVALID_PORTBUNDLE_TYPE:
owner is not the OID of a PortBundle
CFIDR_NAME_IN_USE:
the name of the Port matches the name of a Port already owned by the PortBundle.
CFIDR_MEMBER_RECURSION:
the owner and port OIDs refer to the same object.
CFI_READ_ONLY:
the containing View has not been opened for update.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
The name of the Port must be unique with respect to all other Ports owned by the owner PortBundle.
It is not permitted to add a Port as a member of itself.
The port may already be a member of the specified owner PortBundle. In this case only the position is changed (if it is different from the previous Position). Do not return the code CFIDR_NAME_IN_USE in this case.
If port is a member of a NetlistView, it will be removed from the list of members of that NetlistView. All remaining members of that list will be moved down one position.
The Port is added to the list of Ports owned by owner at position. If position = 0, the new Port will be added as the first member of the list. If position is less than 0 or greater than or equal to the number of members in the list, the new Port is appended to the end of the list. Otherwise, the Port is inserted at the specified position (0 based). The position of all members whose positions were greater than or equal to position, will have their position incremented by 1.
For example, presume a View has Port members:
View Ports = {A, B, C0, 1, 2}
and PortBundle B has members:
B's Port members = {b1, b2, b3}
Setting the owner of Port C0 to position 1 of B results in:
View ports = {A, B, 1, 2}
B's port members = {b1, C0, b2, b3}.
Position specifies the position of the Port *AFTER* the function executes, even in the case where Owner specifies the current owner of Port.
If the Port is connected to a Net, then an implicit detach of the parent bundles will result if that was the last such connection, and an implicit attach of the new parent bundles will result if it is the first such connection.
See the discussion, "NetBundle Connection to Port[Inst]Bundle is a Derived Relationship" on page 4-35, for additional implications.
position (input) The desired location of the port within the NetlistView. If position is less than 0 or greater than or equal to the number of members in the list of Ports owned by owner, the new Port is appended as the last member of the list. Otherwise, it is inserted at the specified position in the list (0 is the first member).
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating memory for this parameter.
CFIDR_INVALID_OBJECTTYPE:
port is not the OID of a Port (PortBundle, PortBus, or PortScalar).
CFIDR_NAME_IN_USE:
the name of the Port matches the name of a Port already owned by the NetlistView.
CFIDR_READ_ONLY:
the containing View has not been opened for update.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
The Port may be owned by a NetlistView. In this case only the Position will be changed (if the specified position is different than the current Position). Do not return the code CFIDR_NAME_IN_USE in this case.
If port is owned by a PortBundle the ultimate owning NetlistView is determined by getting the Owner of the PortBundle. If Owner is a PortBundle then Owner of that PortBundle is obtained. This is repeated until an Owner of type NetlistView is returned.
The positions of all Ports within its previous Owner that are greater than or equal to the port's original Position will be decremented by one.
The Port is then inserted in the list of Ports of the NetlistView at position. If position = 0, the new Port will be added as the first member of the list. If position is less than 0 or greater than or equal to the number of members in the list, the new Port is appended to the end of the list. Otherwise, the Port is inserted at the specified position (0 based). The position of all members whose positions were greater than or equal to position, will have their position incremented by 1.
For example, presume a View has Port members:
View Ports = {A, B, C0, 1, 2}
and PortBundle B has members:
B's Port members = {b1, b2, b3}
Setting the owner of Port b2 to position -1 of the NetlistView results in:
View ports = {A, B, C0, 1, 2, b2}
B's port members = {b1, b3}.
Position specifies the position of the Port *AFTER* the function executes, even in the case where Owner specifies the current owner of Port.
If the Port is connected to a Net, then an implicit detach of the parent bundles will result if that was the last such connection.
See the discussion, "NetBundle Connection to Port[Inst]Bundle is a Derived Relationship" on page 4-35, for additional implications.
name (input) The string representing the name of the PortBundle being created.
position (input) The integer specifying the position of the PortBundle in the list of Ports owned by owner. A position value less than 0 or greater than or equal to the number of ports indicates the new PortBundle is put at end of the list. Any other value, including 0, indicates the actual position in the list.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
owner is not the OID of a PortBundle.
CFIDR_READ_ONLY:
the containing View has not been opened for update.
CFIDR_INVALID_NAME:
the name parameter is not a valid string or is not a legal name.
CFIDR_NAME_IN_USE:
the name parameter specifies a name already in use in the same name scope but not for a PortBundle.
CFIDR_OBJECT_ALREADY_EXISTS:
a PortBundle with the same name already exists for this owner.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
A Port named name that is owned by the same PortBundle as specified by owner cannot already exist.
The PortBundle is created and added to the list of Ports owned by the PortBundle specified by owner at the position specified by position. If position = 0, the new PortBundle will be added as the first member of the list. If position is less than 0 or greater than or equal to the number of members in the list, the new PortBundle is appended to the end of the list. Otherwise, the PortBundle is inserted at the specified position (0 based). The position of all Ports whose positions were greater than or equal to position, will have their position incremented by 1. For example, presume the owner initially has Ports:
A, B, C0, 1, 2.
Adding a new member X at position 1 results in:
A, X, B, C0, 1, 2
Note that B had position 1 before and has position 2 after X is created.
Adding X at position 0 causes X to be at the beginning of the list:
X, A, B, C0, 1, 2
Adding X at an invalid position such as -1 (or any value greater than 4) causes creation of the new member at the end of the list:
A, B, C0, 1, 2, X
name (input) The string representing the name of the PortBus being created.
position (input) The integer specifying the position of the PortBus in the list of Ports owned by owner. A position value less than 0 or greater than or equal to the number of ports indicates the new PortBus is put at end of the list. Any other value, including 0, indicates the actual position in the list.
start (input) The Int32 defining the index of position 0 in the bus.
step (input) The Int32 defining the difference in indexes of positions n and n+1 in the bus. This number must be non-zero.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
owner is not the OID of a PortBundle.
CFIDR_READ_ONLY:
the containing View has not been opened for update.
CFIDR_INVALID_NAME:
the name parameter is not a valid string or is not a legal name.
CFIDR_NAME_IN_USE:
the name parameter specifies a name already in use in the same name scope but not for a PortBus.
CFIDR_OBJECT_ALREADY_EXISTS:
a PortBus with the same name already exists.
CFIDR_INVALID_VALUE
Step is 0.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
A Port (PortScalar, PortBundle, or PortBus) with the given name cannot already exist in the PortBundle specified by owner.
The PortBus created by this function can later be changed to have a different PortBundle as its owner using the cfidrPortSetOwnerPortBundle() function or to have a View as its owner using the cfidrPortBundleSetOwnerView() function.
The Start and Step attributes may be changed later by use of the cfidrPortBusSetStart() and cfidrPortBusSetStep() functions.
name (input) The string representing the name of the PortScalar.
position (input) The integer specifying the position of the PortScalar in the list of Ports owned by owner. A position value less than 0 or greater than or equal to the number of ports indicates the new Port is put at end of the list. Any other value, including 0, indicates the actual position in the list.
direction (input) The Direction attribute to assign to the created PortScalar.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
owner is not the OID of a PortBundle.
CFIDR_READ_ONLY:
the containing View has not been opened for update.
CFIDR_INVALID_NAME:
the name parameter is not a valid string or is not a legal name.
CFIDR_NAME_IN_USE:
the name parameter specifies a name already in use in the same name scope but not for a PortScalar.
CFIDR_OBJECT_ALREADY_EXISTS:
a PortScalar with the same name already exists for owner.
CFIDR_INVALID_DIRECTION:
direction is not a legal PortDirection.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
A Port (Scalar, Bundle, or Bus) with the given name cannot already be owned by the PortBundle specified by owner. However, a Port with the same name may exist indirectly in the View or in another PortBundle. This is allowed since the scope of Port names is the owning View or the owning PortBundle.
The PortScalar is created and added to the list of Ports owned by the NetlistView specified by owner at the position specified by position. If position = 0, the new PortScalar will be added as the first member of the list. If position is less than 0 or greater than or equal to the number of members in the list, the new PortScalar is appended to the end of the list. Otherwise, the PortScalar is inserted at the specified position (0 based). The position of all Ports whose positions were greater than or equal to position, will have their position incremented by 1. For example, presume a View has Ports:
A, B, C0, 1, 2.
Adding a new member X at position 1 results in:
A, X, B, C0, 1, 2
Note that B had position 1 before and has position 2 after X is created.
Adding X at position 0 causes X to be at the beginning of the list:
X, A, B, C0, 1, 2
Adding X at an invalid position such as -1 (or any value greater than 4) causes creation of the new member at the end of the list:
A, B, C0, 1, 2, X
name (input) The name of the Port.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating memory for this parameter.
CFIDR_INVALID_OBJECTTYPE:
portBundle is not the OID of a PortBundle.
CFIDR_INVALID_NAME:
the name parameter is not a valid string or is not a legal name.
CFIDR_OBJECT_NOT_FOUND:
no Port with the specified name exists.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
position (input) The position of the returned Port in the PortBundle. A value of 0 will return the Port at the first position. A value one less than the size of the bundle will return the Port at the last position. A value greater than or equal to the size of the bundle or any negative value will cause an error.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portBundle is not the OID of a PortBundle.
CFIDR_INVALID_POSITION:
the position parameter is not in the range 0 to one less than the size of the bundle.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portBundle is not the OID of a PortBundle.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
If no objects are currently present in the NetBundles relationship, an error is not returned but the first call to cfidrIterNextNetBundle() returns a Null OID.
mode (input) The mode that determines which Ports are returned. The current valid values are CFIDR_ITER_SCALARS, CFIDR_ITER_BUNDLES, CFIDR_ITER_TOP, and CFIDR_ITER_ALL. See the Pre-Conditions below for more detail on how these modes behave.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portBundle is not the OID of a PortBundle.
CFIDR_INVALID_ITERMODE:
mode is not a valid IterMode.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
This function can also be used for PortBusses since they are a subtype of PortBundle.
(1) the value of the mode parameter and
(2) the Position of that Port in its Owner's Ports relationship and (other than for mode =CFIDR_ITER_TOP) any intervening levels of PortBundles.
If no objects are currently present in the Ports relationship under the specified mode, an error is not returned but the first call to cfidrIterNextPort() returns a Null OID.
The Ports that are included when iterating over the cfidrPortsIdT iterator returned from this function depends on the mode argument specified.
mode=CFIDR_ITER_TOP
Returns all those Ports (PortBundles, PortBusses, or PortScalars) which are directly owned by the PortBundle.
mode=CFIDR_ITER_SCALARS
Returns the PortScalars directly owned by portBundle and recursively owned by PortBundles owned by portBundle. No PortBundles are output with this mode, only PortScalars. The order is based on a depth-first recursion.
mode=CFIDR_ITER_BUNDLES
Returns all the PortBundles (including PortBusses) owned directly by portBundle and recursively by those PortBundles (and PortBusses). No PortScalars are output. The order is determined by depth-first recursion.
mode=CFIDR_ITER_ALL
Returns all the Ports (PortBundles, PortBusses, or PortScalars) directly or indirectly owned by portBundle. This mode combines the PortScalars returned when mode=CFIDR_ITER_SCALARS with the PortBundles returned when mode=CFIDR_ITER_BUNDLES.
For all values of mode except mode=CFIDR_ITER_TOP, note that the Port Name scoping rules state that Port Names need only be unique within the Ports of their Owner, which is either the View or a PortBundle. Thus, a Port may exist in the View while others with the same name exist in different PortBundles. Thus, in the Ports returned via these modes, the same name may appear more than once even though they are different Ports and have different OIDs. The function cfidrObjectIsSame() must be used in this case to determine if two Ports with the same name are actually the same object.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portBundle is not the OID of a PortBundle.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portBus is not the OID of a PortBus.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portBus is not the OID of a PortBus.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
start (input) The 32 bit integer number for the first (leftmost) index of the bus.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portBus is not the OID of a PortBus.
CFIDR_READ_ONLY:
the containing View has not been opened for update.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
step (input) The 32 bit integer number for the step. This number must be non-zero.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portBus is not the OID of a PortBus.
CFIDR_INVALID_VALUE:
step is zero.
CFIDR_READ_ONLY:
the containing View has not been opened for update.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
On error the function returns CFIDR_UNDEFINED_PORTDIRECTION.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portScalar is not the OID of a PortScalar.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portScalar is not the OID of a PortScalar
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
CFIDR_INVALID_OBJECTTYPE:
portInstBundle is not the OID of a PortInstBundle.
CFIDR_INVALID_NAME:
the describerName parameter is not a valid string or is not a legal name.
CFIDR_OBJECT_NOT_FOUND:
no PortInst with the specified describerName exists.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portInstBundle is not the OID of a PortInstBundle.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
If no objects are currently present in the NetBundles relationship, an error is not returned but the first call to cfidrIterNextNetBundle() returns a Null OID.
mode (input) The mode that determines which PortInsts are returned. The current valid values are CFIDR_ITER_SCALARS, CFIDR_ITER_BUNDLES, CFIDR_ITER_TOP, and CFIDR_ITER_ALL. See the Pre-Conditions below for more detail on how these modes behave.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portInstBundle is not the OID of an PortInstBundle.
CFIDR_INVALID_ITERMODE:
mode is not a valid IterMode.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
mode=CFIDR_ITER_TOP
Returns only those PortInsts (PortInstBundles, PortInstBusses, or PortInstScalars) which are owned directly by the PortInstBundle.
mode=CFIDR_ITER_SCALARS
Returns all the PortInstScalars owned directly or indirectly by the PortInstBundle. No PortInstBundles are output with this mode.
mode=CFIDR_ITER_BUNDLES
Returns all the PortInstBundles owned directly or indirectly by the PortInstBundle. No PortInstScalars are output with this mode.
mode=CFIDR_ITER_ALL
Returns all the PortInsts (PortInstBundles, PortInstBusses or PortInstScalars) owned directly or indirectly by the PortInstBundle. This is the union of all the PortInsts returned by the CFIDR_ITER_SCALARS and CFIDR_ITER_BUNDLES modes.
Depth first recursion is used for all modes except CFIDR_ITER_TOP.
If no objects are currently present in the PortInsts relationship, an error is not returned but the first call to cfidrIterNextPortInst() returns a Null OID.
The PortInst name scoping rules (inherited from the Port name scoping rules) state that PortInst names are only unique within their immediate owner (either an Inst or a PortInstBundle). Thus, two PortInsts with the same name may exist and be completely different objects. Thus, PortInsts returned via any mode except CFIDR_ITER_TOP may have the same name but in fact be different objects. The cfidrObjectIsSame() function can be used to determine if any two of these PortInsts are the same.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portInstBundle is not the OID of a PortInstBundle.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portInstBus is not the OID of a PortInstBus.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portInstBus is not the OID of a PortInstBus.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
If portInst is a PortInstBundle or Bus, checking is performed on all PortInsts owned either directly or indirectly by the PortInst (as returned by cfidrPortInstBundleGetPortInsts with mode ITER_ALL).
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portInst is not the OID of a PortInst.
CFIDR_DESCRIBER_VIEW_NOT_FOUND:
could not find or access the Describer View for the Instance on which portInst resides.
CFIDR_DESCRIBER_PORT_NOT_FOUND:
there is no Port corresponding to portInst on the Describer View.
CFIDR_PORT_MEMBERS_DIFFER:
portInst is a bundle and the members differ from the members of the corresponding Describer PortBundle OR the corresponding Describer is a PortScalar. This error is also returned if the PortInst is a PortInstScalar, but the corresponding Describer is a PortBundle. This error is also returned if the owner of the describer of a PortInst is not the same object as the describer of the owner of that PortInst.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portInst is not the OID of a PortInst.
CFIDR_DESCRIBER_VIEW_NOT_FOUND:
could not find or access the Describer View for the Inst on which portInst resides.
CFIDR_DESCRIBER_PORT_NOT_FOUND:
there is no Port corresponding to portInst on the Describer View either because the Describer port does not exist or because it is inconsistent with the PortInst due to scalar versus bundle of differing bundle membership. The function cfidrPortInstCheckDescriber() can be used for more information if this error occurs.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portInst is not the OID of a PortInst.
CFIDR_DESCRIBER_VIEW_NOT_FOUND:
could not find or access the Describer View for the Inst on which portInst resides.
CFIDR_DESCRIBER_PORT_NOT_FOUND:
there is no Port corresponding to portInst on the Describer View.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portInst is not the OID of a PortInst.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
On error the function returns CFIDR_UNDEFINED_PORTDIRECTION.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portInstScalar is not the OID of a PortInstScalar.
CFIDR_DESCRIBER_VIEW_NOT_FOUND:
could not find or access the Describer View for the Inst on which portInstScalar resides.
CFIDR_DESCRIBER_PORT_NOT_FOUND:
there is no PortScalar corresponding to portInstScalar on the Describer View.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
portInstScalar is not the OID of a PortInstScalar
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
prop is not the OID of a Boolean-valued Property.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
prop is not the OID of a Float32-valued Property.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
prop is not the OID of a Int32-valued Property.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
prop is not the OID of a Property.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
prop is not the OID of a String-valued Property.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
prop is not the OID of a Property.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
value (input) The desired Boolean value for the Value attribute of prop.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
prop is not the OID of a Property.
CFIDR_READ_ONLY:
the containing object (Lib or View) has not been opened for update.
CFIDR_INVALID_VALUE:
value is not a valid Boolean value.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
If the Property's Value attribute was other than a Boolean, the setting still takes place and the ValueType is changed to CFIDR_BOOLEAN.
value (input) The 32-bit floating point number to set the Value attribute to.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
prop is not the OID of a Property.
CFIDR_READ_ONLY:
the containing object (Lib or View) has not been opened for update.
CFIDR_INVALID_VALUE:
value is not a valid Float32 value.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
If the Property's Value attribute was other than a Float32, the setting still takes place and the ValueType is changed to CFIDR_FLOAT32.
value (input) The 32-bit integer number to set the Value attribute to.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
prop is not the OID of a Property.
CFIDR_READ_ONLY:
the containing object (Lib or View) has not been opened for update.
CFIDR_INVALID_VALUE:
value is not a valid Int32 value.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
If the Property's Value attribute was other than a Int32, the setting still takes place and the ValueType is changed to CFIDR_INT32.
value (input) The string to set the Value attribute to. The caller is responsible for managing the memory of this string.
CFIDR_INVALID_OBJECTTYPE:
prop is not the OID of a Property.
CFIDR_READ_ONLY:
the containing object (Lib or View) has not been opened for update.
CFIDR_INVALID_VALUE:
value is not a valid String.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
encapsulatedView is not the OID of a EncapsulatedView.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
describer (input) The OID of the NetlistView describing the Inst being created.
name (input) The string representing the Name of the Inst to create.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
owner is not the OID of a NetlistView.
CFIDR_READ_ONLY:
the View has not been opened for update.
CFIDR_UNUSABLE_DESCRIBER_OID:
describer is not a usable OID.
CFIDR_INVALID_DESCRIBER_TYPE:
describer is not the OID of a NetlistView.
CFIDR_DESCRIBER_RECURSION:
describer is the same NetlistView object as owner or recursively contains an Instance of owner.
CFIDR_INVALID_NAME:
the name parameter is not a valid string or is not a legal name.
CFIDR_OBJECT_ALREADY_EXISTS:
an Inst with the Name name already exists.
CFIDR_INTRA_CELL_INSTANTIATION:
The owner of describer is the same object as the owner of owner.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
The name argument must conform to the character set rules for name strings.
An Inst with the given name cannot already exist in the NetlistView specified by owner.
name (input) The string representing the Name of the NetBundle being created.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
owner is not the OID of a NetlistView.
CFIDR_READ_ONLY:
the owner View has notbeen opened for update.
CFIDR_INVALID_NAME:
the name parameter is not a valid string or is not a legal name.
CFIDR_NAME_IN_USE:
the name parameter specifies a name already in use in the same name scope but not for a NetBundle.
CFIDR_OBJECT_ALREADY_EXISTS:
a NetBundle with the same name already exists.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
A Net (NetScalar, NetBundle, or NetBus) with the given name cannot already exist in the NetlistView specified by owner.
The NetBundle created by this function can later be inserted into one or more NetBundle(s).
name (input) The string representing the name of the NetBundle being created.
start (input) The Int32 defining the index of position 0 in the bus.
step (input) The Int32 defining the difference in indexes of positions n and n+1 in the bus. This number must be non-zero.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
owner is not the OID of a NetlistView.
CFIDR_READ_ONLY:
the owner View has not been opened for update.
CFIDR_INVALID_NAME:
the name parameter is not a valid string or is not a legal name.
CFIDR_NAME_IN_USE:
the name parameter specifies a name already in use in the same name scope but not for a NetBus.
CFIDR_OBJECT_ALREADY_EXISTS:
a NetBus with the same name already exists.
CFIDR_INVALID_VALUE
Step is 0.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
A Net (NetScalar, NetBundle, or NetBus) with the given name cannot already exist in the NetlistView specified by owner.
The NetBus created by this function can later be inserted into one or more NetBundle(s).
The Start and Step attributes may be changed later by use of the cfidrNetBusSetStart() and cfidrNetBusSetStep() functions.
name (input) The string representing the name of the NetScalar.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
owner is not the OID of a NetlistView.
CFIDR_READ_ONLY:
the owner View has not been opened for update.
CFIDR_INVALID_NAME:
the name parameter is not a valid string or is not a legal name.
CFIDR_NAME_IN_USE:
the name parameter specifies a name already in use in the same name scope but not for a NetScalar.
CFIDR_OBJECT_ALREADY_EXISTS:
a NetScalar with the same name already exists.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
A Net (NetScalar, NetBundle, or NetBus) with the given name cannot already be owned by the NetlistView specified by owner.
The IsGlobal attribute is initially set to CFIDR_FALSE. Use the function cfidrNetScalarSetIsGlobal() to change it.
name (input) The string representing the name of the PortBundle being created.
position (input) The integer specifying the position of the PortBundle in the list of Ports owned by owner. A position value less than 0 or greater than or equal to the number of ports indicates the new PortBundle is put at end of the list. Any other value, including 0, indicates the actual position in the list.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
owner is not the OID of a NetlistView.
CFIDR_READ_ONLY:
the owner View has not been opened for update.
CFIDR_INVALID_NAME:
the name parameter is not a valid string or is not a legal name.
CFIDR_NAME_IN_USE:
the name parameter specifies a name already in use in the same name scope but not for a PortBundle.
CFIDR_OBJECT_ALREADY_EXISTS:
a PortBundle with the same name already exists for this owner.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
A Port named name that is owned by the same NetlistView as specified by owner cannot already exist.
The PortBundle is created and added to the list of Ports owned by the NetlistView specified by owner at the position specified by position. If position = 0, the new PortBundle will be added as the first member of the list. If position is less than 0 or greater than or equal to the number of members in the list, the new PortBundle is appended to the end of the list. Otherwise, the PortBundle is inserted at the specified position (0 based). The position of all Ports whose positions were greater than or equal to position, will have their position incremented by 1. For example, presume a NetlistView initially has Ports:
A, B, C0, 1, 2.
Adding a new member X at position 1 results in:
A, X, B, C0, 1, 2
Note that B had position 1 before and has position 2 after X is created.
Adding X at position 0 causes X to be at the beginning of the list:
X, A, B, C0, 1, 2
Adding X at an invalid position such as -1 (or any value greater than 4) causes creation of the new member at the end of the list:
A, B, C0, 1, 2, X
name (input) The string representing the name of the PortBus being created.
position (input) The integer specifying the position of the PortBus in the list of Ports owned by owner. A position value less than 0 or greater than or equal to the number of ports indicates the new PortBus is put at end of the list. Any other value, including 0, indicates the actual position in the list.
start (input) The Int32 defining the index of position 0 in the bus.
step (input) The Int32 defining the difference in indexes of positions n and n+1 in the bus. This number must be non-zero.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
owner is not the OID of a NetlistView.
CFIDR_READ_ONLY:
the owner View has not been opened for update.
CFIDR_INVALID_NAME:
the name parameter is not a valid string or is not a legal name.
CFIDR_NAME_IN_USE:
the name parameter specifies a name already in use in the same name scope but not for a PortBus.
CFIDR_OBJECT_ALREADY_EXISTS:
a PortBus with the same name already exists.
CFIDR_INVALID_VALUE
Step is 0.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
A Port (PortScalar, PortBundle, or PortBus) with the given name cannot already exist in the NetlistView specified by owner.
The PortBus created by this function can later be changed to have a PortBundle as its owner using cfidrPortBundleSetOwnerPortBundle().
The Start and Step attributes may be changed later by use of the cfidrPortBusSetStart() and cfidrPortBusSetStep() functions.
name (input) The string representing the name of the PortScalar.
position (input) The integer specifying the position of the PortScalar in the list of Ports owned by owner. A position value less than 0 or greater than or equal to the number of ports indicates the new Port is put at end of the list. Any other value, including 0, indicates the actual position in the list.
direction (input) The Direction attribute to assign to the created PortScalar.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
owner is not the OID of a NetlistView.
CFIDR_READ_ONLY:
the owner View has not been opened for update.
CFIDR_INVALID_NAME:
the name parameter is not a valid string or is not a legal name.
CFIDR_NAME_IN_USE:
the name parameter specifies a name already in use in the same name scope but not for a PortScalar.
CFIDR_OBJECT_ALREADY_EXISTS:
a PortScalar with the same name already exists for owner.
CFIDR_INVALID_DIRECTION:
direction is not a legal PortDirection.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
A Port (PortScalar, PortBundle, or PortBus) with the given name cannot already be owned by the NetlistView specified by owner. However, a Port with the same name may exist in a PortBundle. This is allowed since the scope of Port names is the owning NetlistView or the owning PortBundle.
The owner of the PortScalar created by this function can be later be changed to a PortBundle provided no other member of that PortBundle has the same name.
Adding a new member X at position 1 results in:
A, X, B, C0, 1, 2
Note that B had position 1 before and has position 2 after X is created.
Adding X at position 0 causes X to be at the beginning of the list:
X, A, B, C0, 1, 2
Adding X at an invalid position such as -1 (or any value greater than 4) causes creation of the new member at the end of the list:
A, B, C0, 1, 2, X
name (input) The name of the Inst.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating memory for this parameter.
CFIDR_INVALID_OBJECTTYPE:
netlistView is not the OID of a NetlistView.
CFIDR_INVALID_NAME:
the name parameter is not a valid string or is not a legal name.
CFIDR_OBJECT_NOT_FOUND:
no Inst with the specified name exists.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
name (input) The name of the Net.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating memory for this parameter.
CFIDR_INVALID_OBJECTTYPE:
netlistView is not the OID of a NetlistView.
CFIDR_INVALID_NAME:
the name parameter is not a valid string or is not a legal name.
CFIDR_OBJECT_NOT_FOUND:
no Net with the specified name exists.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
name (input) The name of the Port.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating memory for this parameter.
CFIDR_INVALID_OBJECTTYPE:
netlistView is not the OID of a NetlistView.
CFIDR_INVALID_NAME:
the name parameter is not a valid string or is not a legal name.
CFIDR_OBJECT_NOT_FOUND:
no Port with the specified name exists.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
netlistView is not the OID of a NetlistView.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
If no objects are currently present in the Insts relationship, an error is not returned but the first call to cfidrIterNextInst() returns a Null OID.
mode (input) The mode that determines which Nets are returned. The current valid values are CFIDR_ITER_SCALARS, CFIDR_ITER_BUNDLES, CFIDR_ITER_TOP, and CFIDR_ITER_ALL. See the Pre-Conditions below for more detail on how these modes behave.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
view is not the OID of a NetlistView.
CFIDR_INVALID_ITERMODE:
mode is not a valid IterMode.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
mode=CFIDR_ITER_TOP
Returns all those Nets (NetBundles, NetBusses, or NetScalars) which are not contained in a NetBundle.
mode=CFIDR_ITER_SCALARS
Returns all the NetScalars owned by the NetlistView, regardless of whether they are contained in a NetBundle or not. No NetBundles are output with this mode, only NetScalars. This mode lets the application effectively see the View as a scalar netlist.
mode=CFIDR_ITER_BUNDLES
Returns all the NetBundles owned by the NetlistView. No NetScalars are output.
mode=CFIDR_ITER_ALL
Returns all the Nets (NetBundles, NetBusses, or NetScalars) owned by the NetlistView. This mode differs from CFIDR_ITER_TOP in that NetScalars contained in a Bundle are also returned. This mode is a combination of the SCALARS and BUNDLES modes.
If no objects are currently present in the Nets relationship, an error is not returned but the first call to cfidrIterNextNet() returns a Null OID.
mode (input) The mode that determines which Ports are returned. The current valid values are CFIDR_ITER_SCALARS, CFIDR_ITER_BUNDLES, CFIDR_ITER_TOP, and CFIDR_ITER_ALL. See the Pre-Conditions below for more detail on how these modes behave.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
view is not the OID of a NetlistView.
CFIDR_INVALID_ITERMODE:
mode is not a valid IterMode.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
Ports in a View each have a unique position in the list of Ports owned by the NetlistView. The positions in this list are numbered from 0 for the "leftmost" or first position monotonically increasing by 1 up to one less than the size of the list. The order in which the Ports are returned is by increasing position starting with 0. Note that the Position of a given Port at a given time is determined by the various operations that have been performed on this list including:
(1) the position specified when a Port is created in a View,
(2) the position specified when a Port's owner is changed to the View, and
(3) the appearance (from inside PortBundles) and disappearance (into PortBundles) of Ports at or to the "left" of the position of the given Port.
The Ports returned depends on the mode argument specified.
mode=CFIDR_ITER_TOP
Returns all those Ports (PortBundles, PortBusses, or PortScalars) which are owned directly by view (i.e., not owned by a PortBundle).
mode=CFIDR_ITER_SCALARS
Returns all the PortScalars in view, regardless of whether they are contained in a PortBundle or not. No PortBundles are output with this mode.
mode=CFIDR_ITER_BUNDLES
Returns all the PortBundles owned directly or indirectly by view. No PortScalars are output with this mode.
mode=CFIDR_ITER_ALL
Returns all the Ports (PortBundles, PortBusses, or PortScalars) directly or recursively in view. This mode differs from CFIDR_ITER_TOP in that Ports contained indirectly in PortBundles are also returned.
The order for all modes except CFIDR_ITER_TOP is determined by depth-first recursion.
The Port name scoping rules state that Port names need only be unique within their owner (either the View or a PortBundle). Thus, in any mode except CFIDR_ITER_TOP two Ports with the same name may be returned that are completely different objects. The function cfidrObjectIsSame() can be used to determine if any two ports are the same.
If no objects are currently present in the Ports relationship, an error is not returned but the first call to cfidrIterNextPort() returns a Null OID.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
view is not the OID of a View.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
view is not the OID of a View.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBJECTTYPE:
view is not the OID of a View.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
It is neither required nor precluded that whatever encapsulated information referenced by the EncapsulatedView be purged since this can be system dependent.
The effect of purging a NetlistView is to also purge the entire object hierarchy owned by that NetlistView.
Policy: The purge operation removes any changes made to the View since the last save or open. The View then becomes unavailable and its OID becomes unusable. Opening the View again assigns the View an OID and makes it available for updating.
An example implementation that provides this behavior would make an in-memory copy of the view when it was opened. Any changes to the view, or to any of its contained objects, would be made to the in-memory copy of the view. The effect of a "purge" is to delete the in-memory copy of the view, leaving the on-disk persistent view data unchanged.
Policy: Similar to open, purge also recursively walks the ownership hierarchy of Objects rooted by the specified View and purges all the Objects in this hierarchy. Unlike open, purge continues walking the ownership hierarchy when it encounters an Object which can be purged individually. Thus, purge behaves similarly to save in this respect.
Rationale: Consider the information model and take into account the policy that only Libraries and Views can be purged. Purging a View removes the View's Objects (Nets, Ports, Insts, and Props). Purging a Lib not only purges the Lib and Cells, it also purges all the Views as well.
Rationale: When opening a Lib, opening all the Views automatically is probably undesirable in most situations. However, when purging a Lib, it does not make sense to only purge the Lib and Cells and not the Views.
Policy: Purging a NetlistView "A" (and its owned Ports) that is referenced in another NetlistView "B" via the Describer relationship of an Inst (and of its PortInsts) only breaks the Describer relationships from the Inst (to "A") and the PortInsts. The Inst and PortInsts are not themselves purged nor is NetlistView "B".
error (output) A pointer to the error returned if this function fails. The caller is responsible for allocating the memory used by this parameter.
CFIDR_INVALID_OBECTTYPE:
view is not the OID of a View.
CFIDR_INTERNAL_SYSTEM_ERROR:
some other error occurred.
CFIDR_NO_ERROR:
no error occurred.
The Lib must also be saved such that the Cell with this View is saved. Depending on the implementation this may already be true and thus no further Lib save is needed. However, if this is a newly-created View since the last save of the Lib with the Cell containing this view, a partial save will be necessary to ensure that the Cell reference to this view is now persistent.
Other newly created but not yet saved Views are not included in the saved Lib until they are explicitly saved. However those Views still appear in "memory" unless the Cell containing them is purged.
Once a View is saved, it is known and available for opening across session boundaries until deleted via cfidrObjectDestroy().
Saving does not invalidate OIDs referring to the saved View.