Workspace configuration
This section describes how to configure Helix IPLM workspaces, including the paths that IPs should be populated in the workspace, cache configuration, unix group, as well as what links and files to generate in the workspace. Workspaces are configured in Project properties and using settings in the piclient.conf file.
Workspace configuration overview
There are two main sources for settings to configure Helix IPLM workspaces:
Source | Description |
---|---|
Project properties | Project properties are set on IPVs and configure IPs and how they are built in the workspace, including workspace (unix) permissions, and placement in the workspace |
$MDX_CONFIG_DIR/piclient.conf file | The piclient.conf file configures the generation and inclusion of accessory files, for instance linking in external files, and creating cds.lib (Cadence library mapping) files based on workspace contents. |
Project properties
Project properties configure how IPs are built in the workspace. They are set server-side on the IP object, via Editing IPs either from IPLM Web, PiCLI, or the API. A summary of project property configuration options are listed in the following table:
Project Property Types | Definition |
---|---|
--path |
Sets the relative location (path) of IPs in the workspace |
--mode |
Sets whether the IP is populated in PiCache or in the local workspace |
--resolve |
Sets Manual resolution of conflicts in the IP Hierarchy |
--unix-group |
The unix group to apply to the IP when it is loaded disk |
Project property syntax (command line)
Project properties are set in the IP template from the command line. The IP template is accessed via the pi ip edit <LIB>.<IP>
command. Project property settings on an IP apply to the IP itself and the resources of that IP.
The overall syntax of a project property statement must conform to:
-
A single IP identifier <ip ident> per line of the template (under the ‘project_props’ section)
-
Up to one each of the project property types (path, mode, resolve, unix_group) per line
-
The --resolve project property can only appear with the wildcard “*” IP identifier
project_props = <ip ident> [--path <path>] [--mode local|refer|both] [--resolve <IPV>] [--unix_group <group><ip ident2> [--path <path>] [--mode local|refer|both] [--resolve <IPV>] [--unix_group <group>
Project property priority and ordering
Project properties can be set on any IP in an IP Hierarchy. In any given IP Hierarchy only the Project properties on the top IP in the hierarchy and those on the leaf nodes of the hierarchy can have an effect. Project properties on IPs in middle levels of hierarchy (that have both a parent and a resource IP) will be ignored. In the event of conflict between the top level IP’s project properties, and the leaf level Project properties, the Top level Project properties are used.
When multiple <ip ident> statements apply to a single IP, if there were settings for both ‘mylib.’ (all IPs in the mylib library) and a setting for ‘mylib.myip’ whichever setting was latest in the list of Project properties would take effect. For this reason more specific Project properties should be placed later in the list of Project properties.
Wildcards in project properties
Wildcards can be used in the <ip ident> section of a project property line. Some examples using the --path
setting are shown here:
Expression | Meaning |
---|---|
|
Any IP with a name starting with ‘my’ in the mylib library is placed in a directory called digital/<ip> |
|
Any IP in any library starting with ‘my’ is placed in a directory called digital/this/<ip> |
|
Place all IPs named ‘myip’ from any library into the digital directory, and under directories named <lib.ip> |
|
Any IP with a name starting with ‘m’ and ending with ‘ip’ in any library starting with ‘my’ and ending with ‘ib’ is placed in a directory digtial/<ip> |
Resolving Hierarchy conflicts with Project properties
Ideally, IP Hierarchies are created without conflicting lines or versions in the tree. Sometimes this isn’t possible in the short term, as when including an already manufactured design into a new hierarchy. The older design might have a dependency on an older IPV than the newer hierarchy does.
Helix IPLM supports maintaining conflicting IP versions in the IP Hierarchy but when the IP gets loaded into a workspace, these conflicts must get resolved. Without the --resolve project property Helix IPLM will auto resolve conflicts on workspace load, choosing an aliased version if available, and if not the highest release number involved in the conflict.
--resolve expression | Meaning |
---|---|
* --resolve mylib.myip@5 tutorial.anotherip@8 |
When conflicts exist between IPVs mylib.myip@5 or tutorial.anotherip@8, choose the specified versions to resolve them |
Note: If necessary, the --resolve
Project property can be used to override the default on a temporary basis (the end goal should always be to remove conflicts where possible) by choosing which IPVs to win any conflict. The --resolve
property can only be used with the “*” value in the <ip_ident> field.
Project properties supports per IP or Library (applied to all IPs in the Library) selection of the automatic conflict resolution method to use in resolving conflicts. The syntax is:
project_props = * --auto-resolve alphanumeric|version
Details on the operation of automatic conflict resolution can be found on the IP Hierarchy page.
Setting up the workspace
Setting the IP paths in the workspace
The --path project property is used to define the IP path in the workspace. By default in the absence of a --path setting the IP directory will be placed at the root of the workspace and be named <LIBRARY>.<IP>.
The path definition can include the variables $LIB and $IP which will be resolved to the IP and Library names of the IP. Note that it is in most cases necessary to use the $IP variable when using <ip ident> specifications that can match multiple IPs, so that the IPs are placed in separate directories in the workspace. Helix IPLM won’t place a new IP into an already existing IP directory.
--path expression | Definition |
---|---|
* --path some/dir/$IP |
All IPs in the hierarchy will be placed in /some/dir/<IP NAME> directory, where each IP has its own directory name |
mylib.myip --path anothername |
The mylib.myip IP is populated in an IP folder called ‘anothername’ at the root of the workspace. |
Setting the IP Cache Mode in the Workspace
Helix IPLM has an IP Cache which is a central disk area (usually on NFS) that has IP versions populated on disk with read only permissions. IPs can be either pre-populated in the cache or populated on demand when requested by the first workspace that needs that version. The primary benefits of the Cache are:
-
Subsequent requests for a particular IPV (after the first one) load very quickly, taking just the time needed to populate a link to the central cache
-
Because cached IPs are read-only to the user workspace there is no possibility of accidental local edits. This makes cache based tapeouts or other high stakes releases preferred to local workspace based releases.
-
Linking to the cache reduces overall disk usage
The --mode project property can be used to limit the IP to being populated either in the PiCache or in the local workspace. Without setting --mode the IP will by default be loaded from the cache, but can be switched to local if required. Unless there is a specific use model that is needed on particular IPs the --mode setting is not usually necessary.
--mode expression | Definition |
---|---|
mylib.myip --mode local |
The mylib.myip IP can not be populated in the cache, only locally in the workspace |
mylib.myip --mode refer |
The mylib.myip IP can not be populated in the local workspace, only in refer mode in the cache. |
< no --mode entry > |
All IPs will be loaded in refer mode in the cache, but can be switched into local mode as needed. |
Workspace permissions
Once populated, on disk IP data is protected by the unix level permissions set the workspace. Helix IPLM can set unix permissions with the group specified by the --unix-group project property.
--unix-group expression | Meaning |
---|---|
* --unix-group project1 |
Set group ownership of all IP directories to ‘project1’ group |
mylib.myip --unix-group secure |
Set group ownership of mylib.myip directory to ‘secure’ group |
The --unix-group project property applies to both IPVs in the local workspace, and in the PiCache. Note it is also possible to set ACLs in Picache via the PiCache pre-build hook setting. For local mode IPVs the user must belong to the unix_group specified in the project property.
Workspace configuration in IPLM Web
Workspace Configuration works similarly to the CLI on the IPLM Web interface.
-
Select Edit IP to edit the IP from the IP page.
-
On the Project properties tab, set the scope of the project property (identical to the <ip ident> on the CLI) and configure the project properties for that mode.
-
Once complete, click Add and the project property will be saved in the form. The project properties for that mode can be edited by clicking on the configured item, or additional entries can be configured and saved as well.
- Once complete, click Save on the top of the form to make a new release of the IP with the new project properties settings. Then click Create.
Workspace configuration from piclient.conf
Helix IPLM provides a number of file level Workspace configuration options from the piclient.conf file. Full details concerning settings in the piclient.conf file are discussed in the Client Configuration section. The location of the piclient.conf file is configured using the $MDX_CONFIG_DIR environment variable.
An overview of the settings described below can be found from the output of the 'pi settings' command:
> pi settings You are logged in as 'admin'. MDX_CONFIG_DIR Env var /usr/share/mdx/config MDX_MAX_LIST_RECORDS_LIMIT Unset MDX_PI_ASCII Config False MDX_PI_COMPRESS Default False MDX_PI_SERVER Env var http://methodicsiplm:8080 MDX_PI_TIME_FORMAT Config %Y-%m-%d %H:%M:%S %z %Z MDX_PROJECT Unset MDX_WORKSPACE_MANAGER Config PWM MDX_PWM_CDSLIB_DIR Unset MDX_PWM_CLIENT_FORMAT Default ws:{user}:{lib_ip}:{wsid} MDX_PWM_DEFINE_CDSLIB Config .:cds/* MDX_PWM_INCLUDE_CDSLIB Config cds.lib MDX_PWM_P4_SYNC_BATCHSIZE Default 2000 MDX_PWM_POST_REFERENCE_CDSLIB Config /mdx/tools/cds/IC617/share/cdssetup/dfII/cds.lib MDX_PWM_PRE_REFERENCE_CDSLIB Unset MDX_PWM_TEMPLATE_CLIENT Unset MDX_PWM_UNDEFINE_CDSLIB Unset MDX_PWM_WORKSPACE_CDSLIB Unset MDX_PWM_WORK_LINK Config $VSC_INSTALL_DIR/config/cadence/dot_cdsinit:cds_run/.cdsinit,$VSC_INSTALL_DIR/config/cadence/cdsLibMgr.il:cds_run/cdsLibMgr.il,cds.lib:cds_run/cds.lib MDX_PICACHE_BIC_DIR Unset MDX_PICACHE_COMPRESSION Unset MDX_PICACHE_DATA_WAIT_TIME Default 10 MDX_PICACHE_SERVER Env var picache:5000 PiCache Server configuration: Root /picache-root Server Version 1.8.3 Site minneapolis
Perforce client configuration
If there are Perforce IPs in the workspace, Helix IPLM configures a Perforce client spec to define the mapping between the Perforce repository and the workspace.
Option | Default | Environment variable | Description |
---|---|---|---|
client_format | ws:{user}:{lib_ip}:{wsid}
|
MDX_PWM_CLIENT_FORMAT
|
Defines a constructor used to build P4 client names for new Workspaces, the {wsid} field must be included to guarantee unique p4 client names |
template_client | None | MDX_PWM_TEMPLATE_CLIENT
|
Defines an existing P4 client name defined on the HelixCore server to be used as a template when IPLM creates new p4 clients in workspaces that contain p4 type IPVs |
The ”MDX_PWM_TEMPLATE_CLIENT” setting defines a template p4 client that IPLM uses to configure the Options field of the new p4 clients it creates when it builds workspaces with p4 type IPs. The template client name defined in the variable is the name of an existing p4 client defined on the Helix Core server. IPLM leverages the “-t template” flag on the p4 client command to read the Options field from the template client . See “p4 help client” for more information.
Note: Any content in the template client’s “View” field will be discarded by IPLM.
A typical use for the MDX_PWM_TEMPLATE_CLIENT setting is to configure the p4 client to be “unlocked” rather than the IPLM default “locked” setting.
File linking configuration
Option | Description |
---|---|
work_link |
Defines links to be created in the Workspace. Comma separated string of link definitions. Format: source[:target[:option]] source: Full path to a directory or file to create the link to (doesn't have to exist) target:Relative path in the Workspace where the link is to be created. option: Control how the link is created, currently only 'force' is supported, replace the link if it already exists. |
Example work_link setting
work_link = $CENTRAL_CAD/project/environment.bash:setup.bash,$VSC_INSTALL_DIR/config/cadence/dot_cdsinit:cds_run/.cdsinit,$VSC_INSTALL_DIR/config/cadence/cdsLibMgr.il:cds_run/cdsLibMgr.il
Cadence cds.lib Setup
The Cadence cds.lib file maps the Cadence library location on disk for the Virtuoso Analog/Mixed Signal design application. If Helix IPLM IPs contain Cadence data the cds.lib file needed by Virtuoso can be automatically generated and kept up to date as the workspace is loaded, updated, and refreshed. If no cdslib related variables are defined, no cds.lib file will be generated. By default Helix IPLM's PWM workspace manager will use a two level approach to cds.lib management.
- cds.lib file - the top level file is created when the workspace is first created an is not subsequently modified by Helix IPLM. The cds.lib file INCLUDEs the second level workspace_cds.liib file.
- workspace_cds.lib file - the second level cds.lib file that gets generated/updated automatically during update commands as necessary
cds.lib setup options
Option | Environment Variable | Description |
---|---|---|
cdslib_dir | MDX_PWM_CDSLIB_DIR |
A relative path to the workspace location of the cds.lib and workspace_cds.lib files - by default these are created at the workspace top-level Example: cdslib_dir = cds_run |
include_cdslib | MDX_PWM_INCLUDE_CDSLIB |
A colon separated list of relative paths inside the IP to look for files to be included in the workspace_cds.lib file. In some cases (eg PDKs) a cds.lib file is included as part of the IP managed data. This variable can be used to include these static cds.lib files. Example: include_cdslib = cadence/cds.lib:cadence/*_cds.lib Include the '<IP_DIR>/cadence/cds.lib' file, and the '<IP_DIR>/cadence/*_cds.lib' files |
define_cdsliib | MDX_PWM_DEFINE_CDSLIB |
A colon-separated list of relative paths inside the IP to look for Cadence libraries to be included in workspace_cds.lib. Directories containing a cdsinfo.tag file are recognized as a Cadence library. Each matching cdsinfo.tag file will result in a DEFINE line in the workspace_cds.lib file Example: define_cdslib = cadence/*:cds/*:. Looks for cdsinfo.tag files in the '<IP_DIR>/cadence' directory, '<IP_DIR>/cds' directory, and in the root level <IP_DIR> directory. |
pre_reference_cdslib | MDX_PWM_PRE_REFERENCE_CDSLIB |
A colon-separated list of cds.lib files. Each entry will result in an INCLUDE line in workspace_cds.lib *before* any local DEFINE or INCLUDE lines. Example: pre_reference_cdslib = /projects/$MDX_PROJECT/cds/reference.libs:/pdks/vendorx/pdk1/cds.lib Includes the specified cds.lib files BEFORE any other workspace_cds.lib statements |
post_reference_cdslib | MDX_PWM_POST_REFERENCE_CDSLIB |
A colon-separated list of cds.lib files. Each entry will result in an INCLUDE line in workspace_cds.lib *after* any local DEFINE or INCLUDE lines. Example: post_reference_cdslib = /mdx/tools/cds/IC617/share/cdssetup/dfII/cds.lib Includes the specified cds.lib files AFTER any other workspace_cds.lib statements |
workspace_cdslib | MDX_PWM_WORKSPACE_CDSLIB |
Changes the default name of the dynamically-generated Workspace cdslib file. Setting this to cds.lib results in a single, dynamically-generated cds.lib file in the Workspace. Example: workspace_cdslib = my_cds.lib |
undefine_cdslib | MDX_PWM_UNDEFINE_CDSLIB |
If set, precede each DEFINE line in the generated cds.lib file with an UNDEFINE of the library Example: undefine_cdslib = True |