Properties and Property Sets
This training page describes how to add Properties and Property Sets and how to set the value of a new Property on an IP.
Properties and Property Sets
Properties are typed fields that can be used to extend the IP data model beyond the built in fields that all IPs track (name, resources, etc). Property Sets are groups of properties that can be added or removed from IPs. Once a Property is added to an IP via a Property set its value can be set and tracked with the IP.
Properties and Property Sets are created by administrators, Property Sets can be attached to IPs by users with owner permissions, and property values can be set by users with write Permission.
Typical examples of values tracked with Properties include licensing information, process node, IP lifecycle state, product numbers, and business group information. Other examples are power dissipation targets, area estimates, configurable parameters etc.
Detailed information on Properties and Property Sets is available on the Properties page in the User Guide.
Creating a new Property
Let's go through the process of creating a Property and adding it to an IP via a Property Set.
Administrator Status
Only administrators can create and configure Properties and Property Sets. Owners can attach Property Sets to an IP, Write permission is required to set the Property values on the IP.
First we need to create the Property
> pi prop add offset and fill out the resulting template: [PROPERTY] # The name of the property may be any Unicode string and is required. name = offset # The type of the property value may be any one of string, integer, float, # boolean, datetime or choice. The type field is required. value_type = float # The type of object the property may be applied to. Must be either IP or IPV. target_type = IPV # An optional description of the property. description = offset of IP # The Icon is optional. icon = # The units of the property value e.g. W, A, m, J, Ω. To ensure consistency with # other definitions, use the standard symbol for SI units, not the name (e.g. # use "T", not "tesla"). Required for dimensional numerical properties, blank # for dimensionless ones. suffix = # Normally IPV properties do not propagate from version to version. If this # is an IPV property and you would like its value to propagate then set the # following to True. If left unset then it is assumed to be False. propagate_value = True # The default value of the property. default_value = # A space separated list of choices for type=choice is required, prohibited # otherwise. If any choices contain spaces then they must all be quoted, e.g. # choices = "Choice one" "Choice two" "Last Choice"# Lists may be continued on to multiple lines if the continuation lines begin # with a space. choice_values = # Allow selection of multiple values. Applicable to "Choice" type only. Default is "false"multi_choice = Successfully created Property 'offset'.
Now we can list the Properties in the system
> pi prop list ┌──────────────┬────────┬─────────┬───────────┬────────────────┐ │ NAME │ TARGET │ TYPE │ SUFFIX │ DESCRIPTION │ ╞══════════════╪════════╪═════════╪═══════════╪════════════════╡ │ coverage │ IPV │ float │ % │ Coverage │ │ jitter │ IPV │ float │ │ Jitter │ │ loop_bw │ IPV │ float │ Hz │ Loop bandwidth │ │ offset │ IPV │ float │ │ offset of IP │ │ power │ IPV │ float │ mW │ Measured power │ │ regr │ IPV │ integer │ /2000 │ Regressions │ │ settle_time │ IPV │ float │ micro-sec │ Settle time │ │ size │ IPV │ float │ sq-mm │ Measured size │ │ target_power │ IP │ float │ mW │ Target power │ │ target_size │ IP │ float │ sq-mm │ Target size │ └──────────────┴────────┴─────────┴───────────┴────────────────┘ Found 10 matching object(s).
Add a Property to a Property Set
Now that we've created the Property we need to assign it to a Property Set. Lets use the built-in Property Set "global", which is automatically attached to all IPs in Perforce IPLM.
> pi propset edit global [PROPERTY_SET] # The name of the property set may be any Unicode string and is required. name = global # An optional description of the property set. description = Globally applied properties # The Icon is optional. icon = # A space separated list of property names to include in the property set. # The list may be continued on to multiple lines if the continuation lines begin # with a space. IP and IPV Properties can be mixed. properties = target_power power regr target_size coverage size offset Successfully edited Property Set 'global'
We could alternatively have created or edited a custom Property Set using "pi propset create <propset_name>"
Set a Property value
Now we can assign the power Property a value and a chose IPV
> pi ip prop tutorial.t1@1.TRUNK # Properties for IP tutorial.t1 [IP_PROPERTIES] # Target power # Default value: 0.5 # Suffix: mW target_power = # Target size # Default value: 1.0 # Suffix: sq-mm target_size = # Properties for IPV tutorial.t1@1.TRUNK [IPV_PROPERTIES] # offset of IP offset = 1.2 # Measured power # Default value: 1.0 # Suffix: mW power = # Regressions # Default value: 100 # Suffix: /2000 regr = # Coverage # Default value: 22.0 # Suffix: % coverage = # Measured size # Default value: 1.0 # Suffix: sq-mm size = Successfully edited IPV 'tutorial.t1@1.TRUNK
Now we can filter the list of IPVs in the system system using a query
> pi ip list -q 'offset < 1.3' ┌─────────────────────┬────┬─────────────┬────────────┬───────────────────────────────┬─────────────────┐ │ NAME │ DM │ ALIASES │ CREATED BY │ CREATED ON │ VERSION MESSAGE │ ╞═════════════════════╪════╪═════════════╪════════════╪═══════════════════════════════╪═════════════════╡ │ tutorial.t1@1.TRUNK │ P4 │ HEAD LATEST │ admin │ 2020-06-19 10:14:16 -0400 EDT │ hier release │ └─────────────────────┴────┴─────────────┴────────────┴───────────────────────────────┴─────────────────┘ Found 1 matching object(s).
Managing properties on IPLM Web
Properties and property sets can also be added, configured, and deleted from IPLM Web under the Administration pull down (as an admin user):