Viewing workspace modifications

Helix IPLM can compare the state of a workspace against the hierarchy of any version of the top level IPV that was used to load the workspace. File modifications are made using DM level operations, and both file and resource modifications are introduced via updates brought in by Helix IPLM in preparing the workspace data for the next release. As these workspace modifications accrue it becomes more and more valuable to be able to compare the current state of the workspace to fixed server side releases, in order to fully understand all the changes that are being made.

This section shows the various ways you can view workspace modifications in the Helix IPLM platform.

Workspace status overview

There are several methods available to understand the state of a workspace, and different capabilities are available depending on whether the user has direct access to the workspace in addition to access to the Helix IPLM server.

Server-side workspace tracking

Helix IPLM keeps a record of every workspace that it creates, this record is updated when the workspace is updated, and can be used to see the up to date IPV level contents of the workspace along with detailed information on when each IPV in the workspace was updated, the owner of the workspace, etc. The 'pi ws list' command is used to list the server side workspace information. See the Listing Workspaces section for details. Workspaces also support search via the query language, see Querying Workspaces

IPV compare (diff)

The 'pi ip diff' command can either perform a detailed comparison of the differences between an IPV in a workspace and a release of an IPV on the server, or the differences between two server side releases of a given IPV. The diff will compare IPV resource and metadata differences, as well as file version level differences between the two IPVs or between a workspace and an IPV.  

Note:  The file level diff reports the different versions between the two compared objects, but not the file content differences. For file content differences use the applicable DM level command.

Information on using pi ip diff to compare IPVs against each other and against workspaces is detailed in the Comparing IPs in the System section.

Workspace status

The pi workspace status command is used to check the current status of one or more IPVs in the workspace. The table output of 'pi workspace status' can be configured, (see the Client Configuration section) but by default it shows a summary of each requested IP's status in the workspace. For additional details on modified IPVs, the pi ip diff command can be used. 

Note:  For P4 and P4Stream DM types, in verbose update mode, files at IP@HEAD are always reported as up-to-date, unless the STATIC_HEAD caching mode is used. See STATIC_HEAD caching mode administration.

Command line

Helix IPLM actively tracks the status of all the IPs loaded into a workspace. To quickly find out the status of each IP in a workspace, use the 'pi ws st' command:

pi ws st command

> pi ws st -v
Workspace ID           : d6c5ab5a-bfbe-44df-9da6-c84c48f14974
Directory              : /tmp/workspaces/ws3
IP                     : tutorial.tutorial@6.TRUNK
Default "pi up" Target : tutorial.tutorial@8.TRUNK
Resources    :
┌────────────────────────────┬───────────────────┬───────────────────┬───────────┬───────────────────────┬───────────┬──────────────────────────┐
│ NAME                       │  EXPECTED VERSION │   LOCAL VERSION   │ WS STATUS │     SERVER STATUS     │    MODE   │ CONFLICTS                │
╞════════════════════════════╪═══════════════════╪═══════════════════╪═══════════╪═══════════════════════╪═══════════╪══════════════════════════╡
│ tutorial.tutorial          │      6.TRUNK      │      6.TRUNK      │  Modified │ New version available │   Refer   │                          │
│ ARM.cortex                 │      1.TRUNK      │      1.TRUNK      │     OK    │           OK          │   Refer   │                          │
│ ARM.cortex2                │                   │      8.TRUNK      │     OK    │           OK          │   Refer   │                          │
│ certification.ibm_rqm      │    0.RQM_6_0_5    │    0.RQM_6_0_5    │     OK    │           OK          │   Refer   │                          │
│ tutorial.CADenv            │  GOLD.TRUNK [@3]  │  GOLD.TRUNK [@1]  │     OK    │  New @GOLD available  │   Refer   │                          │
│ tutorial.MS90G             │      1.TRUNK      │      1.TRUNK      │     OK    │           OK          │   Refer   │                          │
│ tutorial.acells_tsmc18     │      1.TRUNK      │      1.TRUNK      │     OK    │           OK          │   Refer   │                          │
│ tutorial.adc               │  HEAD.TRUNK [@1]  │  HEAD.TRUNK [@1]  │     OK    │           OK          │   Refer   │                          │
│ tutorial.aes512            │      1.TRUNK      │      1.TRUNK      │     OK    │           OK          │   Refer   │                          │
│ tutorial.analog_top        │  HEAD.TRUNK [@1]  │  HEAD.TRUNK [@1]  │     OK    │           OK          │   Refer   │                          │
│ tutorial.bist_sram         │      1.TRUNK      │      1.TRUNK      │  Modified │           OK          │   Refer   │                          │
│ tutorial.clk_mux           │      1.TRUNK      │      1.TRUNK      │     OK    │           OK          │   Refer   │                          │
│ tutorial.clkgen            │  HEAD.TRUNK [@1]  │  HEAD.TRUNK [@1]  │     OK    │           OK          │   Refer   │                          │
│ tutorial.cpu               │ LATEST.TRUNK [@2] │ LATEST.TRUNK [@2] │     OK    │           OK          │   Refer   │                          │
│ tutorial.dac               │  HEAD.TRUNK [@0]  │  HEAD.TRUNK [@0]  │     OK    │           OK          │ Container │                          │
│ tutorial.dbuf              │      1.TRUNK      │      1.TRUNK      │  Modified │           OK          │   Refer   │                          │
│ tutorial.digital_top       │      2.TRUNK      │      2.TRUNK      │  Modified │           OK          │   Refer   │                          │
│ tutorial.events_if         │      1.TRUNK      │      1.TRUNK      │  Modified │           OK          │   Refer   │                          │
│ tutorial.flash             │      1.TRUNK      │      1.TRUNK      │  Modified │           OK          │   Refer   │                          │
│ tutorial.flash_if          │      1.TRUNK      │      1.TRUNK      │  Modified │           OK          │   Refer   │                          │
│ tutorial.fusa              │ LATEST.TRUNK [@0] │ LATEST.TRUNK [@0] │     OK    │           OK          │ Container │                          │
│ tutorial.gen_dig           │ LATEST.TRUNK [@3] │ LATEST.TRUNK [@3] │     OK    │           OK          │   Refer   │ tutorial.gen_dig@1.TRUNK │
│ tutorial.interface         │      1.TRUNK      │      1.TRUNK      │  Modified │           OK          │   Refer   │                          │
│ tutorial.intf_ana          │  HEAD.TRUNK [@1]  │  HEAD.TRUNK [@1]  │     OK    │           OK          │   Refer   │                          │
│ tutorial.io5v              │      1.TRUNK      │      1.TRUNK      │     OK    │           OK          │   Refer   │                          │
│ tutorial.io_tsmc18         │      1.TRUNK      │      1.TRUNK      │     OK    │           OK          │   Refer   │                          │
│ tutorial.laysc_tsmc18      │      1.TRUNK      │      1.TRUNK      │     OK    │           OK          │   Refer   │                          │
│ tutorial.padring           │      1.TRUNK      │      6.TRUNK      │  Modified │           OK          │   Local   │                          │
│ tutorial.proj_tech         │      1.TRUNK      │      1.TRUNK      │     OK    │           OK          │   Refer   │                          │
│ tutorial.pwr_mgmt_ana      │  HEAD.TRUNK [@1]  │  HEAD.TRUNK [@1]  │     OK    │           OK          │   Refer   │                          │
│ tutorial.rx_channel        │      1.TRUNK      │      1.TRUNK      │  Modified │           OK          │   Refer   │                          │
│ tutorial.rxtx              │      1.TRUNK      │      1.TRUNK      │  Modified │           OK          │   Refer   │                          │
│ tutorial.stup_ana          │  HEAD.TRUNK [@1]  │  HEAD.TRUNK [@1]  │     OK    │           OK          │   Refer   │                          │
│ tutorial.sys_bus           │      1.TRUNK      │      1.TRUNK      │  Modified │           OK          │   Refer   │                          │
│ tutorial.t0                │      1.TRUNK      │      1.TRUNK      │  Modified │           OK          │   Refer   │                          │
│ tutorial.t1                │      1.TRUNK      │      1.TRUNK      │  Modified │           OK          │   Refer   │                          │
│ tutorial.timers            │      1.TRUNK      │      1.TRUNK      │  Modified │           OK          │   Refer   │                          │
│ tutorial.tool_cert         │ LATEST.TRUNK [@0] │ LATEST.TRUNK [@0] │     OK    │           OK          │ Container │                          │
│ tutorial.trc               │  HEAD.TRUNK [@2]  │  HEAD.TRUNK [@2]  │     OK    │           OK          │   Refer   │                          │
│ tutorial.tutorial_IEC61508 │      1.TRUNK      │      1.TRUNK      │     OK    │           OK          │   Refer   │                          │
│ tutorial.tutorial_ISO26262 │      1.TRUNK      │      1.TRUNK      │     OK    │           OK          │   Refer   │                          │
│ tutorial.verif_config      │      1.TRUNK      │      1.TRUNK      │     OK    │           OK          │   Refer   │                          │
└────────────────────────────┴───────────────────┴───────────────────┴───────────┴───────────────────────┴───────────┴──────────────────────────┘

Status summary fields

The following status summary fields are displayed at the top of every workspace status report.

Status summary field Description
Workspace ID The IPLM database UUID for the workspace. This UUID can be used to uniquely identify the workspace, and it can be used as an input to the ‘pi ws delete’ command.
Directory The filesystem location of the workspace. Workspaces can be moved with the ‘pi ws move’ command.
IP The top level IPV currently loaded in the workspace.
Default “pi up” target If no target is supplied to the “pi up” command this is the IPV that IPLM will update the top level IPV in the workspace to.
Resources A summary table showing the state of the resources in the workspace. See following sections for details.

Resources report overview

This command can list one or more of the IPs in the workspace, their current release and, in the 'WS STATUS' column, either that an IPV matches the server (Expected Version) state, displays with an 'OK' status, or that it does not match the server state, in which case it is shown with a 'Modified' status. 'OK' IPs are those that are exactly on the 'EXPECTED VERSION' release, with no file or resource modifications, 'Modified' IPs are those that have some file or resource modifications versus their release. Detailed information on each column is shown below.

EXPECTED VERSION column

The EXPECTED VERSION shows the IP Version in the pristine server side release hierarchy of the top level IPV loaded into the workspace. This column is the reference against which changes in the workspace can be evaluated. The EXPECTED_VERSION column only changes as a result of:

  1. Loading a top level IPV into a new workspace via 'pi ip load'
  2. Running a 'pi update' on the top level IP in an existing workspace
  3. Making a 'pi release' of the top level IP in the workspace
  4. An alias referenced by the top level IP Hierarchy is applied to a later version of an IP than what is currently in the workspace. See Hierarchy and Aliases. 

In the example above the EXPECTED VERSION column is populated by the resource versions that were loaded (or updated) into the workspace by tutorial.tutorial@6.TRUNK. The EXPECTED VERSION column contains identical IPVs to the IP Hierarchy of tutorial.tutorial@6.TRUNK, with the exception of the case where there are IP version conflicts in the hierarchy. In this case tutorial.tutorial@6.TRUNK has both gen_dig@1 and gen_dig@3 are in different branches of its hierarchy. These conflicts are resolved when the IP Hierarchy is loaded in the workspace, see the Workspace Configuration section for details on conflict resolution.

If new versions of the top level IP (tutorial.tutorial@7.TRUNK or later in the above case) become available on the Helix IPLM server, this will NOT be indicated in the EXPECTED VERSION column, instead the SERVER STATUS column will show there is a new version available with the message 'New version available'. The EXPECTED VERSION column always reflects the IP Versions last loaded or updated in the workspace based on the top level IP's resource hierarchy. 

EXPECTED VERSION and moving aliases

If the top level IP Hierarchy has IPVs that are referenced via Aliases (ie tutorial.CADenv@GOLD.TRUNK above) these are resolved at the time of workspace load or update to the latest version of the IP Line that has that alias applied.

If subsequently the same alias is applied to an even later version of an IP on the Line the latest version with that Alias will have changed, and the EXPECTED VERSION column entry for that IP will change to reflect that. In the case above the CADenv@GOLD alias resolved to CADenv@GOLD.TRUNK [@1] when the workspace was first loaded, but since the GOLD alias was later applied to CADenv@3, the EXPECTED VERSION now shows CADenv@GOLD [ @3 ]. Additionally the SERVER STATUS column indicates a new @GOLD IPV is available. A pi update on CADenv would bring in the later @GOLD version. See Updating the workspace for more details.

EXPECTED VERSION possible values

Value
Comments
IPV The IPV derived from the conflict resolved IP Hierarchy of the top level IPV loaded into the workspace.

Blank

The IPV was brought into the workspace as a result of directly updating a resource IPV in the workspace. The new version of the resource IP had a new resource of its own, which is not in the hierarchy of the top level IPV originally loaded into the workspace.

LOCAL VERSION column

The LOCAL VERSION of each IPV shows the current IP Version in the workspace. The LOCAL VERSION can change either directly or indirectly (via resource relationships) as a result of a 'pi update' on a resource IP, or as a result of a 'pi update' on the top level IP.

The LOCAL VERSION column can be compared to the reference EXPECTED VERSION column to see IPs that have been moved from their expected version via a 'pi update' or to see IP@ALIAS entries that may have newer aliased versions available. See tutorial.CADenv above.

LOCAL VERSION possible values

Status
Comments
IPV The IPV currently in the workspace.
Blank The IPV was removed from the workspace as a result of directly updating a resource IPV in the workspace. The new version of the resource IP was missing the resource in its updated hierarchy.

WS STATUS column

The WS STATUS column gives information about the status of the given IPV in the workspace. This column reports whether the IPV has been modified (in terms of either resources or files ) versus its server side release definition, whether there is a DM error in accessing the IP, whether the IPV is Missing or Invalid on disk, or whether an update is needed to an @HEAD IP.

WS STATUS possible values

Status
Comments
OK No Modifications. IPV on disk matches its server side release. File list on disk matches IPV release contents (no changed versions or modified files), and Resources of the IPV are a the same versions in the workspace as in the server side IPV Hierarchy.
Missing IPV's top level directory is not present in the workspace. It may have been manually deleted or moved. If the IP is in refer mode the link to the cache cannot be accessed for some reason (permissions issues in most cases)
Modified One or more of the IP's files have been modified, either moved to a different version in the DM system, locally modified (edited) and/or one or more of the IPV's resources are not at the version specified in the EXPECTED VERSION column.
Invalid Target In Refer mode, specifies the IPV's link is pointing to something other than the IPV in the cache. If the IP is a Filesystem type, this indicates the link is pointing to the wrong location in the file system (vs. the path in the repo_path of the IP).
DM Error The Helix IPLM client can't access the IPV's DM (for instance P4 settings are wrong or P4 Server is down in the case of a P4 IP)
Update Needed For IPs loaded @HEAD the Update Needed status indicates new file versions are available in the DM system. These can be populated with a 'pi up IP@HEAD'
Update Needed, Modified A combination of the 'Updated Needed' and 'Modified' states. Applies only to @HEAD IPs, indicates new file versions are available, and there local files open for edit/delete or Resources of the @HEAD IP are changed from the EXPECTED VERSION
Removed For all IPVs, this specifies that the IPV has been removed from the workspace using workspace edit.
An IPV that is removed as a result of a workspace edit should be displayed in the workspace status message. An IPV is considered 'removed' if it was deleted from a workspace IP's resource list with workspace edit and no other workspace IPV has it as a resource.
Added For all IPVs, this specifies that the IPV has been added to the workspace using workspace edit.
Any IPV that is added as a result of a workspace edit should be displayed in the workspace status message. An IPV is considered 'added' if it is not a resource of an unmodified IPV in the workspace.

SERVER STATUS column

The SERVER STATUS column reports status on the server versus what is currently in the workspace.

SERVER STATUS possible values

Status
Comments
OK

Default status, implies:

  • For the Top IPV, no new versions are available (IPV is at latest release)
  • For a resource IPV at a fixed release, server status is always OK
  • For a resource IPV@HEAD there are no newer @LATEST releases (@HEAD resources are given by resources of @LATEST IPV)
  • For a resource IPV@LATEST there are no newer releases available
  • For a resource IPV@ALIAS there are no newer releases with @ALIAS applied
New @ALIAS Available
  • For Resources in the workspace @ALIAS indicates a newer release with ALIAS is available
  • For Resources in the workspace @HEAD indicates @HEAD has a newer release than the one in the workspace (resources may have changed with the new @LATEST release)
  • For Resources in the workspace @LATEST indicates a newer release is available.
New Resources Available For the Top IPV in the workspace, indicates one or more IPVs in the tree are referenced by ALIAS, and new IPV releases are available for those ALIASes
New Version Available For the Top IPV in the workspace, indicates there is a new IPV release available on the server.

MODE column

Indicates the IP Mode relative to the IP Cache. 

Tip:  Container IPs have no mode. This is because they do not contain any files, so there is no concept of local/refer in this case.

MODE possible values

Status
Comments
Local

IP is populated locally in the workspace. If permissions permit the IP can be modified at the file level. 'pi ip refer' command can be used to move it to IPLM Cache.

Refer IP is populated in refer mode, it is located in the IPLM Cache directory in read only mode. 'pi ip local' command can be used to move it
Container IP is a container type, has no DM files associated with it, and isn't present on disk

CONFLICTS column

The CONFLICTS column shows which IPVs have conflicts versus the top level server side IP Hierarchy. An IP Hierarchy can have multiple versions of the same IP on the server, however when it is loaded into the workspace these conflicts must be resolved. The CONFLICTS column indicates which IPVs were not chosen in the conflict resolution process.

Checking status on PiCLI

Details on the 'pi workspace status' command are shown below.

pi ws status Command
> pi ws st -h
Usage: pi workspace status [-h] [--wsdir WSDIR] [--format {json,skill,table}]
                           [--ignore-files] [--verbose] [--model MODEL]
                           [identifier [identifier ...]]

Description: Show the status of a Workspace.

Positional arguments:
  identifier            Only show information for the specified IPs.

Optional arguments:
  --format {json,skill,table}, -f {json,skill,table}
                        Specify output format.
  --ignore-files        Only compare resources versions.
  --model MODEL         Use the specified report model (table report only)
  --verbose, -v         List all IP in the Workspace and their status.
  --wsdir WSDIR, -ws WSDIR
                        The Workspace directory. If not specified, the current
                        directory should be a Workspace directory.
  -h, --help            Show this help message and exit

Detailed information on the arguments to pi workspace status:

Command Option Description
--format json Provide a json string showing the workspace status
--format skill Provide a SKILL (Cadence scripting language) output string showing the workspace status
--format table Display the default table output format showing workspace status
--ignore-files Won't check file status. This argument will speed up the command significantly for larger IPVs as it removes the need to access the filesystem.
 --model Show a custom --format table output display. See Client Configuration for details.
--verbose Show all IPV results. By default if an IPV has an OK status it will be trimmed from the output.
--wsdir Use a specific workspace path for the workspace status. Else workspace status is run versus the current workspace

Workspace status customization options

It is possible to customize the default table output display of 'pi ws st'. Details on this are shown on the Client Configuration page. The following non-default fields are available.

Optional Display Field Description
last_updater The last user to update the IPV in the workspace
last_update_timestamp The timestamp of the last update to the IPV in the workspace
dm_type

The Data Management type of the Resource

path

The relative location of the Resource in the Workspace

latest

The latest version of the resource on the Server

latest_message

The release message of the latest release on the Server

current_message

The release message of the current Resource in the workspace

dm_type

The Data Management type of the Resource

path

The relative location of the Resource in the Workspace

latest

The latest version of the resource on the Server

latest_message

The release message of the latest release on the Server

current_message

The release message of the current Resource in the workspace

JSON output fields

The following additional fields are available via the 'pi ws st --format json' output display (beyond the standard table fields).

Note:  For scripting it is advisable to use the Helix IPLM API rather than the --json format option from PiCLI.


JSON output Field Description
CurrentMsg The release message of the IPV in the workspace
Last Update Timestamp The timestamp of the last update to the IPV in the workspace
Last Updater The last user to update the IPV in the workspace
Latest Msg The release message of the latest release of the IP (not necessarily the version in the workspace)
Version->latest The latest release of the IP (not necessarily the version in the workspace
Workspace ID The UUID of the workspace (Helix IPLM tracks all objects by UUID rather than name)