IP Versions (Releases)

Helix IPLM captures the state of IP data in a release called an IP Version (IPV). An IPV can capture design files, resources, and metadata, including project properties. This page discusses what is captured in an IPV, what fields generate an IPV when modified, and how to inspect IPVs.

Helix IPLM IPVs

Helix IPLM captures the state of the file contents of each IP as well as the releases of each of the IPs resources when an IPV is created. Changing some of the fields in an IP will result in a new IPV being created, while changing other fields will not create a new IPV. The behavior of each field is shown below.

What is captured in an IPV?

New IPVs are generated by changing these fields on an IP:

IP component IP fields Description
Design files contents
  • These are the managed files under an IP's repo_path
  • The release contents are captured in the IPV's contents field
  • The format of the contents field is different for different IP types (P4 file list, SVN repo version, git SHA number, etc)
resources / private resources

resources

private_resources

  • These are the child IPs or resources of the released IP
  • IP resources (and the resources of the resources) form the IP's CIPB or IP Hierarchy

Project Properties

(workspace configuration)

project_properties
  • Project properties configure how the IP Hierarchy is loaded into a workspace
Repo Path repo_path
  • This is the location of the IP's design files
  • The value of the repo_path field changes with every release for Filesystem IPs, but rarely or never for DM type IPs

New IPVs are not generated by changing these fields on an IP:

IP component Description
name
  • The name of the IP can be changed without creating a new IPV
  • IPs are tracked by UUID in Helix IPLM, the name is just another field
  • Renaming an IP does have some considerations, see the IP Management section for more information.
dm_type
  • The dm_type can only be changed from CONT type to P4 or P4Stream type
  • No other conversions are supported
host
  • The host field configures multi-server support for Perforce, see the Perforce FAQ for more information.
description
  • The IP description field can be modified as needed
icon (ip/line/ipv)
  • Icons can be modified as needed. see the IP Management section for more information
client side hooks
  • See more at Hooks
line
  • The line name can be changed, with the exception of the TRUNK line
  • Every IP must have the default TRUNK line, even if it isn't used
  • Similar considerations apply when renaming an IP, see the IP Lines (Branches) section for more information
version_message
  • The IPV version message can be modified without triggering another IPV
properties
  • note properties (extensions to the IP data model) and project_properties (workspace configuration) are different 
  • See Properties and Property Sets for more information
attributes/widgets
  • Attributes and their graphical counterparts, widgets, can be added or removed from IPs without generating an IPV
  • See the Attributes and Widgets for more information.
labels
  • See the Labels section for more information on labels

IPV contents and IP type

Every IP type can capture resources as part of an IPV. All but Container types capture File contents in the IP contents field. The format of the IP contents will vary depending on the IP's underlying DM system.

IP Type File Contents IP Resource Versions
Perforce

Either: 



Every IP type captures resources

P4Stream
  • File list including file name and file version number at the time of release - P4Stream IP releases also capture the changelist that defines the P4 Stream spec at the time of release.

Note:  P4Stream IPs do not support changelist releases of the file contents.

Subversion Repository Version number
git SHA number
Filesystem Path to the release's files on a shared disk (stored in repo_path)
Container None - Containers don't capture file contents

However a given DM captures releases, the concept is the same. In Helix IPLM, an IPV is a fixed record of the state of the design at the time of release. Once captured, IPVs can be viewed on IPLM Web or PiCLI and provide a record of the design that can be used for further development, traceability, verification, IP delivery, and any number of other uses.

The first IPV when an IP is created is release 0. The @0 release does not have file contents, see the Adding Data to New IPs section for more information on adding file content to IPVs.

P4 IPVs - Filelist versus Changelist releases

There are two kinds of IPV release for a p4 IP, a filelist release and a changelist based release.

In a filelist release, the full list of files is captured in the release. Filelist releases are created from workspace contents using the ‘pi release’ command in the workspace, or from a provided filelist using the “pi release –from-filelist” command (See Special release mechanisms).

In a changelist based release, only the p4 changelist (a number) is captured in the IPLM release contents. A changelist based release can be created either using the Public API or using the 'pi release -revision' command on the CLI. For more information, see Special release mechanisms.

To display the full filelist of a changelist based release in IPLM Web, the filelist associated with the changelist is retrieved from the p4 data management system. To display filelist contents of a changelist release in the Contents tab, the helper application PiForce is required. PiForce uses the changelist and repo_path to get the file list out of the Helix Core database and returns it to IPLM Web.

Server Side IPVs and Workspace IPVs

IPVs can be generated either from a workspace or without a workspace, purely on the server.

IP Field Modified in Workspace Modified in Server Side
Resources YES - resources in workspace are modified via Helix IPLM updates YES - resources can be modified via edit command/piweb/API
File Contents YES - DM commands and Percpient updates can modify file content YES - file content can be modified with 'from filelist' or 'from revision' releases
Project Properties YES – Project Properties can be changed using the ‘pi workspace edit’ command. YES - modified via edit command, IPLM Web, or API
Repo Path NO YES - modified via edit command, IPLM Web, or API

Workspace IPVs

Workspaces are loaded on disk based on an IPV. Loading an IP that has resources into a workspace will load both the IP itself and any resource IPs that are a part of the release. This provides a known state from which to continue development. In the workspace, resources can be moved to different versions than those specified by the IPV by using updates, and new design content can be generated at the DM level, either in the user's workspace, or via updates that bring in file modifications created by other users.

While design modifications are underway, Helix IPLM can be called on to perform workspace status checks and IP diffs to compare the current state of the workspace with Helix IPLM IPVs. See Viewing Workspace Modifications and Comparing IPs in the System.

Once a workspace is ready to be captured in a new Helix IPLM IPV the 'pi release' command can be used to capture the workspace state and publish it to the Helix IPLM server.

Both file content changes and resource changes are captured in the new IPV. The repo_path field and project_properties fields can only be modified via a server side release.

Changes may be spread across many different IPVs in the workspace, and to capture all changes up through the top-level, a hierarchical release can be performed.

Detailed information on making releases from workspace can be found at Making workspace releases.

Server side releases 

On the CLI, server side releases are created through the 'pi ip edit' command, which can be used to modify resources, the repo_path, and Project Properties. See Editing IPs for more information.

Filelist content of IPVs can be modified by using the pi release --from-filelist command and  pi release --revision command on the CLI. See Special Release Mechanisms for more information.

On IPLM Web, any field except the Design Files can be modified.

Viewing IPVs from IPLM Web

The IPVs of an IP Line are found on the Details page. You can see the properties set on the IP Version, IP Line, or IP, grouped by property set. See Properties for more information.

The IPV dashboard tab  contains data widgets that have been applied to the IPV. See Widgets for more information.

The Resources tab  shows the IP Hierarchy of the IPV, and each IPV resource and its parent/child relationship is displayed on the tree. The tree can be collapsed and expanded as needed, and clicking on one of the IPVs takes you to its IP or IPV page. See IP Hierarchy for more information.

The Usage tab  shows where the IPV is used across the Helix IPLM platform. It starts from the bottom of the IP Hierarchy and looks up to the top level IPVs in the trees that use the IPV. Tracking IP usage is a key traceability function, enabling issue tracking, license auditing, and similar functions. See Tracing IP Usage on the Server for more information.

The Contents tab  displays the file list that is captured in a Perforce IPV (other DM systems capture the design state differently). Each file is captured with its corresponding DM level version number. To enable contents display for P4 IP changelist based releases, the helper application PiForce must be enabled.

PiForce also enables download and display of individual files from the contents list. When enabled, the show/hide icon and download icon appear next to the files in the contents filelist. See PiForce administration for more information on configuring PiForce.

Viewing a Release from PiCLI

The pi ip list command is used to view information about IPs and IPVs on the command line. Full details on the 'pi ip list' command can be found on the Listing IPs in the Catalog page.

To see the all the available IPVs of an IP on a particular line use the line name along with the --all (-a for short) flag:

pi ip list Command
> pi ip list tutorial.tutorial@.TRUNK -a
┌───────────────────────────┬────┬───────────────────────────┬────────────┬───────────────────────────────┬──────────────────┐
│ NAME                      │ DM │ ALIASES                   │ CREATED BY │ CREATED ON                    │ VERSION MESSAGE  │
╞═══════════════════════════╪════╪═══════════════════════════╪════════════╪═══════════════════════════════╪══════════════════╡
│ tutorial.tutorial@6.TRUNK │ P4 │ GOLD HEAD ISO26262 LATEST │ admin      │ 2020-01-27 07:19:25 -0800 PST │ adding fusa ip   │
│ tutorial.tutorial@5.TRUNK │ P4 │                           │ admin      │ 2020-01-27 06:53:17 -0800 PST │ tutorial release │
│ tutorial.tutorial@4.TRUNK │ P4 │ GOLD                      │ admin      │ 2020-01-27 06:53:17 -0800 PST │ tutorial release │
│ tutorial.tutorial@3.TRUNK │ P4 │                           │ admin      │ 2020-01-27 06:53:16 -0800 PST │ tutorial release │
│ tutorial.tutorial@2.TRUNK │ P4 │ GOLD                      │ admin      │ 2020-01-27 06:53:15 -0800 PST │ tutorial release │
│ tutorial.tutorial@1.TRUNK │ P4 │ GOLD                      │ admin      │ 2020-01-27 06:52:50 -0800 PST │ tutorial release │
│ tutorial.tutorial@0.TRUNK │ P4 │                           │ admin      │ 2020-01-27 06:52:44 -0800 PST │ Initial version  │
└───────────────────────────┴────┴───────────────────────────┴────────────┴───────────────────────────────┴──────────────────┘
Found 7 matching object(s).

To get more details on a particular IPV use the --verbose flag (-v for short):

--verbose Flag
> pi ip list -v tutorial.tutorial@6.TRUNK
IP Version tutorial.tutorial@6.TRUNK:
    Description               - Helix IPLM tutorial project
    DM type                   - Perforce (P4)
    Host                      -
    Repo Path                 - //mdx_test/tutorial/tutorial/TRUNK
    Resources                 - ARM.cortex@1.TRUNK
                                tutorial.CADenv@GOLD.TRUNK [@1]
                                tutorial.analog_top@HEAD.TRUNK [@1]
                                tutorial.digital_top@2.TRUNK
                                tutorial.fusa@LATEST.TRUNK [@0]
                                tutorial.padring@1.TRUNK
                                tutorial.verif_config@1.TRUNK
    Current Aliases           - GOLD HEAD ISO26262 LATEST
    Historic Aliases          -
    Version Message           - adding fusa ip

    IP created on             - 2020-01-27 06:52:44 -0800 PST by admin
    Line created on           - 2020-01-27 06:52:44 -0800 PST by admin
    IP Version created on     - 2020-01-27 07:19:25 -0800 PST by admin

  Project Properties:
    *                         - --mode both --path blocks/$IP

  Labels:
    ISO26262_compliant
    jama

  Property Sets:
    basic:
      IP Properties:
        auth_required         - N
        external_ip           - N
        internal_ipid         - INTERN6578W
        ip_lifecycle          - owned
        license_agreement     - INTERNAL
        license_class         - B
        license_expire        - 2025-01-31 04:00:00 -0800 PST (*)
        license_start         - 2018-06-15 05:00:00 -0700 PDT (*)
        owner                 - BU356
        process_name          - MS90G
        process_node          - 90
        vendor_id             - INTERNAL
        vendor_ipid           - INTERNAL
    compliance_rel:
      IP Version Properties:
        BlockSize_rel         - 0.34 mm2
        CMRR_rel              - 112.0 dB
        INL_rel               - 20.0 ppm
        NIR_rel               - 490.0 nVRMS
        PSRR_rel              - 101.0 dB
        PowerHigh_rel         - 1.6 mW
        PowerNominal_rel      - 1.4 mW
        Vio_rel               - 6.0 uV
    compliance_targets:
      IP Properties:
        BlockSize_target      - 0.34 mm2
        CMRR_target           - 112.0 dB
        INL_target            - 20.0 ppm
        NIR_target            - 490.0 nVRMS
        PSRR_target           - 101.0 dB
        PowerHigh_target      - 1.6 mW
        PowerNominal_target   - 1.4 mW
        Vio_target            - 6.0 uV
    design_latest:
      IP Properties:
        BlockSize_latest      - 0.32 mm2
        CMRR_latest           - 107.0 dB
        INL_latest            - 18.5 ppm
        NIR_latest            - 463.0 nVRMS
        PSRR_latest           - 110.0 dB
        PowerHigh_latest      - 1.55 mW
        PowerNominal_latest   - 1.35 mW
        Vio_latest            - 3.5 uV
    design_release:
      IP Version Properties:
        BlockSize_verif       - 0.32 mm2
        CMRR_verif            - 107.0 dB
        INL_verif             - 18.5 ppm
        NIR_verif             - 463.0 nVRMS
        PSRR_verif            - 110.0 dB
        PowerHigh_verif       - 1.55 mW
        PowerNominal_verif    - 1.35 mW
        Vio_verif             - 3.5 uV
    global:
      IP Properties:
        target_power          - 50.0 mW
        target_size           - 35.0 sq-mm
      IP Version Properties:
        coverage              - 22.0 % (*)
        power                 - 1.0 mW (*)
        regr                  - 100 /2000 (*)
        size                  - 1.0 sq-mm (*)
    jama:
      IP Properties:
        compliance_cond       - SOC-SPV-13
        compliance_specs      - SOC-SPV-14
        jama_object           - SOC-STY-16
        jama_project          - SoCSouthBridge
        jama_url              - 7wbq.jamacloud.com
        review_version        - 1
    rel_conds:
      IP Version Properties:
        Supply_rel            - 1.2 V
        TempHi_rel            - 125.0 C
        TempLow_rel           - -55.0 C
        fclk_rel              - 1.2 MHz
    target_conds:
      IP Properties:
        Supply_target         - 1.2 V
        TempHi_target         - 125.0 C
        TempLow_target        - -55.0 C
        fclk_target           - 1.2 MHz

  Permissions on IP:
    Owner                     - u:ada u:alan u:george
    Write Permissions         - g:tutorial u:ada u:alan u:george
    Read Permissions          - g:analog g:tutorial u:ada u:alan u:george

  Permissions on Line TRUNK:
    Owner                     - u:ada u:alan u:george
    Write Permissions         - g:tutorial u:ada u:alan u:george
    Read Permissions          - g:analog g:tutorial u:ada u:alan u:george

  Hooks:
    Post-Release              - /var/tmp/ISO26262_release_hook.py $LIB $IP $VER $LINE

Found 1 matching object(s).

View the Contents of a Release - pi ip ls --contents

To show the contents field (which can be quite large for big IPs with many files) use the --contents flag:

--contents Flag
> pi ip list --contents tutorial.tutorial@6.TRUNK
IP Version tutorial.tutorial@6.TRUNK:
    Description               - Helix IPLM tutorial project
    DM type                   - Perforce (P4)
    Host                      -
    Repo Path                 - //mdx_test/tutorial/tutorial/TRUNK
    Resources                 - ARM.cortex@1.TRUNK
                                tutorial.CADenv@GOLD.TRUNK [@1]
                                tutorial.analog_top@HEAD.TRUNK [@1]
                                tutorial.digital_top@2.TRUNK
                                tutorial.fusa@LATEST.TRUNK [@0]
                                tutorial.padring@1.TRUNK
                                tutorial.verif_config@1.TRUNK
    Current Aliases           - GOLD HEAD ISO26262 LATEST
    Historic Aliases          -
    Version Message           - adding fusa ip

    IP created on             - 2020-01-27 06:52:44 -0800 PST by admin
    Line created on           - 2020-01-27 06:52:44 -0800 PST by admin
    IP Version created on     - 2020-01-27 07:19:25 -0800 PST by admin

  Project Properties:
    *                         - --mode both --path blocks/$IP

  Labels:
    ISO26262_compliant
    jama

  Property Sets:
    basic:
      IP Properties:
        auth_required         - N
        external_ip           - N
        internal_ipid         - INTERN6578W
        ip_lifecycle          - owned
        license_agreement     - INTERNAL
        license_class         - B
        license_expire        - 2025-01-31 04:00:00 -0800 PST (*)
        license_start         - 2018-06-15 05:00:00 -0700 PDT (*)
        owner                 - BU356
        process_name          - MS90G
        process_node          - 90
        vendor_id             - INTERNAL
        vendor_ipid           - INTERNAL
    compliance_rel:
      IP Version Properties:
        BlockSize_rel         - 0.34 mm2
        CMRR_rel              - 112.0 dB
        INL_rel               - 20.0 ppm
        NIR_rel               - 490.0 nVRMS
        PSRR_rel              - 101.0 dB
        PowerHigh_rel         - 1.6 mW
        PowerNominal_rel      - 1.4 mW
        Vio_rel               - 6.0 uV
    compliance_targets:
      IP Properties:
        BlockSize_target      - 0.34 mm2
        CMRR_target           - 112.0 dB
        INL_target            - 20.0 ppm
        NIR_target            - 490.0 nVRMS
        PSRR_target           - 101.0 dB
        PowerHigh_target      - 1.6 mW
        PowerNominal_target   - 1.4 mW
        Vio_target            - 6.0 uV
    design_latest:
      IP Properties:
        BlockSize_latest      - 0.32 mm2
        CMRR_latest           - 107.0 dB
        INL_latest            - 18.5 ppm
        NIR_latest            - 463.0 nVRMS
        PSRR_latest           - 110.0 dB
        PowerHigh_latest      - 1.55 mW
        PowerNominal_latest   - 1.35 mW
        Vio_latest            - 3.5 uV
    design_release:
      IP Version Properties:
        BlockSize_verif       - 0.32 mm2
        CMRR_verif            - 107.0 dB
        INL_verif             - 18.5 ppm
        NIR_verif             - 463.0 nVRMS
        PSRR_verif            - 110.0 dB
        PowerHigh_verif       - 1.55 mW
        PowerNominal_verif    - 1.35 mW
        Vio_verif             - 3.5 uV
    global:
      IP Properties:
        target_power          - 50.0 mW
        target_size           - 35.0 sq-mm
      IP Version Properties:
        coverage              - 22.0 % (*)
        power                 - 1.0 mW (*)
        regr                  - 100 /2000 (*)
        size                  - 1.0 sq-mm (*)
    jama:
      IP Properties:
        compliance_cond       - SOC-SPV-13
        compliance_specs      - SOC-SPV-14
        jama_object           - SOC-STY-16
        jama_project          - SoCSouthBridge
        jama_url              - 7wbq.jamacloud.com
        review_version        - 1
    rel_conds:
      IP Version Properties:
        Supply_rel            - 1.2 V
        TempHi_rel            - 125.0 C
        TempLow_rel           - -55.0 C
        fclk_rel              - 1.2 MHz
    target_conds:
      IP Properties:
        Supply_target         - 1.2 V
        TempHi_target         - 125.0 C
        TempLow_target        - -55.0 C
        fclk_target           - 1.2 MHz

  Permissions on IP:
    Owner                     - u:ada u:alan u:george
    Write Permissions         - g:tutorial u:ada u:alan u:george
    Read Permissions          - g:analog g:tutorial u:ada u:alan u:george

  Permissions on Line TRUNK:
    Owner                     - u:ada u:alan u:george
    Write Permissions         - g:tutorial u:ada u:alan u:george
    Read Permissions          - g:analog g:tutorial u:ada u:alan u:george

  Hooks:
    Post-Release              - /var/tmp/ISO26262_release_hook.py $LIB $IP $VER $LINE

  Contents:
    Files
      common.def#1
      docs/dita/topics/pict.png#1
      docs/dita/topics/tutorial_details.dita#1
      docs/dita/topics/tutorial_intro.md#1
      docs/dita/tutorial_datasheet.dita#1
      docs/dita/tutorial_datasheet.ditamap#1
      docs/dita/tutorial_refman.dita#1
      docs/dita/tutorial_refman.ditamap#1
      docs/hw_design/blg_checklist.xlsx#1
      docs/hw_verify/blg_bug.xlsx#1
      hw_code/code/mt48lc32m16a2.v#1
      hw_code/code/test.v#1
      hw_code/filelist/blg.f#1
      hw_code/report/blg.rpt#1
      hw_code/report/statlinecount#1
      hw_code/test/test.v#1
      sw_code/driver/blg_driver.7z#1
      sw_code/test/blg_driver_test.7z#1
      tutorial.pmq#1
      tutorial_doc.pmq#1

Found 1 matching object(s).

View the Release Hierarchy - `pi pi tree`

The hierarchy of the IPV can be displayed via the 'pi ip tree' command:

pi ip tree Command
> pi ip tree tutorial.padring@1
tutorial.padring@1.TRUNK
├─ tutorial.MS90G@1.TRUNK
├─ tutorial.io5v@1.TRUNK
└─ tutorial.io_tsmc18@1.TRUNK