Tracing IP usage on the server
Helix IPLM manages IP CIPBs through their lifecycles via IP Hierarchies. These hierarchical associations between IPs provide traceability both from the top down through the release hierarchy and from the bottom up through IP usage tracking. IP Hierarchy Management from the top down is discussed on the IP Hierarchy page. This page discusses tracing IP usage from the bottom up on the server.Tracing IP usage
Tracing where IPs are used across project hierarchies allows tracking IPs that may have bugs or licensing requirements associated with them in every project in which they are used.
For the purposes of IP usage reporting "Top Level" or "Project" IPs are defined as IPs that don't have any parents (are not used as resources by any IPVs in Helix IPLM). Each Top Level IPV hierarchy that contains the queried IPV in its hierarchy will be reported as a separate sparse tree output, and (on the CLI and IP page on IPLM Web) summarized in the lower top level IP summary section.
More details concerning the tracing of IP, IPV, and Line usage in workspaces via the 'pi ws list --contains' command is listed in the Listing Workspaces section.
Copying IPs in Helix IPLM maintains a record of which IPV a new IP or IP Line was copied from, see Copying IPs and IP Lines (Branches) for more information on copying IPs in Helix IPLM.
IP usage tracking on IPLM Web
IP Hierarchies can be built by including IPVs as resources on ther IPs. Clicking on the usage tab of the IPV page shows where that IPV is referenced as a resource by other top level IPs (IPs that are not themselves referenced as a resource). IPLM Web reports usage on both the IP and IPV pages, where the IP pages report the Top Level IPV usage across all IPVs.
IP usage
On the IP page, the Parents tab shows the IP usage, the immediate parent that uses the IP, and a summary of the IPV usage.
IPV usage
On the IPV page, the Usage tab shows a detailed view of every version on the Line that is in use.
Command line
Tracking the usage of an IP or IPV on the command line is accomplished with the 'pi ip usage' command.
pi ip usage Command
> pi ip usage -h Usage: pi ip usage [-h] [--format {tree,dot,json}] [--top] ipv Description: Report on IPV usage by other IPVs. Positional arguments: ipv Identifier of the IPV Optional arguments: --format {tree,dot,json} Return the results in the specified format. --top Return the consolidated list of IPs that use the IPV. -h, --help Show this help message and exit Examples: # Display all IPV using lib1.ip1. pi ip usage lib1.ip1
The following output shows the usage of a popular standard cell Library IP that is used in several projects.
Note: The display shows a pruned tree of each of the hierarchies that this specific version of the IP is used in. Only the relevant sections of the tree are shown all the way to the top of the hierarchy. The display also summarizes the list of top level IPVs at the end for a quick summary of all the 'projects' that use this IPV.
> pi ip usage StandardCells_TSMC_coco.CS-DTI-TS28N-GS-SCPWR@5.TRUNK coco.SOC_TOP@10.TRUNK └─ coco.Graphics@6.TRUNK ├─ coco.GPU@6.TRUNK │ └─ StandardCells_TSMC_coco.CS-DTI-TS28N-GS-SCPWR@5.TRUNK └─ coco.VideoMemoryController@6.TRUNK └─ StandardCells_TSMC_coco.CS-DTI-TS28N-GS-SCPWR@5.TRUNK The IP StandardCells_TSMC_coco.CS-DTI-TS28N-GS-SCPWR is used in 1 top level IP(s): coco.SOC_TOP
To omit the sparse tree output and return only the summary display, use the option 'pi ip usage --top'.
Note that by omitting the Version and Line information in the following command, we are tracking usage for all variants of the standard cell Library on all lines that may be present.
> pi ip usage StandardCells_TSMC_coco.CS-DTI-TS28N-GS-SCPWR Shelley_P4.SOC@5.TRUNK └─ Shelley_P4.PeripheralSubsystem@5.TRUNK └─ Shelley_P4.USB@4.TRUNK └─ StandardCells_TSMC_coco.CS-DTI-TS28N-GS-SCPWR@1.revA0 coco.SOC_TOP@10.TRUNK └─ coco.Graphics@6.TRUNK ├─ coco.GPU@6.TRUNK │ └─ StandardCells_TSMC_coco.CS-DTI-TS28N-GS-SCPWR@5.TRUNK └─ coco.VideoMemoryController@6.TRUNK └─ StandardCells_TSMC_coco.CS-DTI-TS28N-GS-SCPWR@5.TRUNK The IP StandardCells_TSMC_coco.CS-DTI-TS28N-GS-SCPWR is used in 2 top level IP(s): Shelley_P4.SOC coco.SOC_TOP
Usage can be generated for IPVs at any level
> pi ip usage coco.GPU coco.SOC_TOP@10.TRUNK └─ coco.Graphics@6.TRUNK └─ coco.GPU@6.TRUNK The IP coco.GPU is used in 1 top level IP(s): coco.SOC_TOP
Usage of an IP @HEAD, @LATEST or at a specific ALIAS (in this case @GOLD) can also be generated by specifying it in the usage command as appropriate, for example: "pi ip usage lib.ip@HEAD.TRUNK". Usage of IPVs specified at a fixed release produces different output than outputs of the same IPV at an alias, even if that alias is present within the fixed release. Specifying the alias tracks usage of that alias specifically, independent of the underlying fixed release.
[tau deb8:ws_tSbWeXnTVZJH] pi ip usage Memories_UMC_coco.ABI-U-L090G_Multiport_RAM@GOLD.TRUNK coco.SOC_TOP@11.TRUNK └─ coco.MainMemory@7.TRUNK └─ Memories_UMC_coco.ABI-U-L090G_Multiport_RAM@GOLD.TRUNK The Alias Memories_UMC_coco.ABI-U-L090G_Multiport_RAM@GOLD.TRUNK is used in 1 top level IP(s): coco.SOC_TOP
Permissions and usage
If a user doesn't have permissions to an IP at any point in the sparse IP Hierarchy for a top level "project" IP, a warning is generated and that sparse tree/top level summary usage will not be listed in the usage output.
Top level IP reporting and intermediate aliases
If an intermediate level IPV included in the usage sparse hierarchy is included at an aliased version, the corresponding fixed version of the top level IP won't be reported as a top level IP/sparse hierarchy in the output.
> pi ip usage tutorial.padring@.TRUNK tutorial.tapeout_03@34.TRUNK └─ tutorial.tutorial@GOLD.TRUNK [@6] └─ tutorial.padring@1.TRUNK tutorial.tutorial@5.TRUNK └─ tutorial.padring@1.TRUNK tutorial.tutorial@4.TRUNK └─ tutorial.padring@1.TRUNK tutorial.tutorial@3.TRUNK └─ tutorial.padring@1.TRUNK tutorial.tutorial@2.TRUNK └─ tutorial.padring@1.TRUNK tutorial.tutorial@1.TRUNK └─ tutorial.padring@1.TRUNK tutorial.tutorial@0.TRUNK └─ tutorial.padring@0.TRUNK The Line 'tutorial.padring@.TRUNK' is used in 2 top level IP(s): tutorial.test tutorial.tutorial
In the above case the latest release of the tutorial.tutorial IP is @6. Because tutorial@6 is included @HEAD by the tutorial.tapeout_03@34.TRUNK IPV, there is no top level IPV output display for tutorial.tutorial@6.TRUNK. Releases @0 to @5 are not included as resources by any other higher level IPV so they appear as separate top level IPV sparse trees. The point to be aware of here is that an intermediate IPV@(ALIAS | LATEST | HEAD ) counts as usage for the fixed release that corresponds to that alias, and a separate top level tree for the fixed release will not be displayed.