• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Blogs
  2. System, PCB, & Package Design
  3. What's Good About Directive Locking?
Jerry GenPart
Jerry GenPart

Community Member

Blog Activity
Options
  • Subscribe by email
  • More
  • Cancel
CDNS - RequestDemo

Try Cadence Software for your next design!

Free Trials
CPM Directive Control
DEHDL
Directive Lockhing
PCB design
SPB16.01

What's Good About Directive Locking?

29 Oct 2008 • 5 minute read

Do you wish you could lock specific aspects of a DEHDL design content? Do you need to standardize on color used for parts, wires, text, etc. in a design? Do you wish designers would maintain a standard grid?

Well - all this (and more!) can be accomplished through the project .cpm file directive locking capabilities available since the SPB16.0 release. I'm writing about this since there are still some customers I interact with each week who are unaware of this powerful capability. Below is a summary of the capabilities.

The CPM Directive Control feature provides increased control over configuring project settings. This feature provides a mechanism by which administrators or users can control the access and modification permissions on project directive settings.

There are two features of new directive controls:

Directive Locking: Forced locking of cpm directive values from an administrative level.

User Level Directive Value Control: Allowing user level directive control that spans across multiple projects, but only at the user level (similar to Allegro Editor's $HOME/pcbenv/env file).

 

Directive Locking:

There are some site level project directive settings enforced by an organization on all the users. Such settings are predetermined and not to be modified by any user. An example might be the ppt option set or the property to be used for page naming. The site administrator can enforce these settings by locking the directive in the site.cpm file. The locked directive value overrides the same directive in the project.cpm. Directive value locking allows consistent use of CPM settings across the entire site.

Directive Locking highlights:

  • Locked directive values can be controlled by the site Administrator in the site.cpm file. However, directives may be locked at any  .cpm level.
  • Site.cpm locked directive values win over project.cpm directive values.
  • Allows administrator to mandate directive values in all projects across the site.
  • Values can be locked in any level of the .cpm files: CDSROOT, CDS_SITE or <project>.cpm.

User-Level Directive Value Control:

There are some other directive values which need not be consistent across the site, but are specific to the user and project independent (and hence should not be made a part of the <project>.cpm or site.cpm file). Some examples of such directive values could be the printer to be used for plotting or the default text editor. These directive values are specific to the user and can reside in a cpm file stored in the user’s $HOME area. The site administrator controls which directives can be set in the user’s $HOME directory. Directive values set in the $HOME CPM will override all other non-locked values set in all other cpm files. These user level directives are stored in the $HOME/cdssetup/projmgr/user.cpm file.

User-Level Directive Value Control highlights:

  • User can define directives which are specific to them.
  • User directives override all non-locked directive values.
  • User directives are stored in the $HOME/cdssetup/projmgr/user.cpm file.
  • Administrator controls which directives are user directives.

 

CPM Precedence (who wins?):

The CPM directive control has lead to some changes in the cpm file structure. The flow now supports 4 levels of project settings:

  • cds.cpm - $CDSROOT/share/cdssetup/projmgr)
  • site.cpm - ($CDS_SITE/cdssetup/projmgr)
  • <project>.cpm - located in the project directory
  • user.cpm - located in the user’s home directory ($HOME/cdssetup/projmgr)


The standard precedence (no locking) for accessing directives is (top has precedence):

  • user.cpm
  • project.cpm
  • site.cpm
  • cds.cpm

This means that a directive set in the user.cpm file will take precedence over the project, site.cpm or cds.cpm files cpm. Only the directives being changed should be included in the user, project or site cpm files.


Directive locking precedence is as follows (top has precedence):

  • cds.cpm
  • site.cpm
  • project.cpm
  • user.cpm

This means that a directive locked in the cds.cpm file will lock that directive value at the site, project and user cpm levels. Generally, directives will be locked at the site.cpm level by an administrator. The default value for locking is NOT locked.

 

Directive Locking and User Directive syntax:

New CPM directives have been added to control directive locking and for defining user directives. These new directives are added to the cpm file. Generally, these directives will be added to the site.cpm file by the site administrator.

The new directive syntax is as follows:

START_<SECTION_NAME>_CONTROL_SETTINGS
<DIRECTIVE_NAME> LOCK | ALLOW_USER_CPM
…
END_<SECTION_NAME>_CONTROL_SETTINGS
In this example, DIRECTIVE_NAME is the name of the directive to be locked. The value for that directive should also be defined in that same cpm file. ALLOW_USER_CPM will allow that property to be used in the user.cpm file.

Example:

START_CONCEPTHDL_CONTROL_SETTINGS
PINNUMBER_SIZE ALLOW_USER_CPM
WIRE_COLOR LOCK
END_CONCEPTHDL_CONTROL_SETTINGS

In this example, the WIRE_COLOR directive value will be locked and that the PINNUMBER_SIZE directive will be allowed to be added at the user level in the user.cpm file.


Directive Locking additional information:

  • The directive is locked at the current level, .cpm file.
  • The directive value is read from this level or the level above.
  • The value of the directive at any level below this is ignored.
  • Directive locking default value: Directive NOT set implies that the directive value is NOT locked at this level.

User-Level Directive additional information:

  • Default Value: The ALLOW_USER_CPM directive NOT set implies that the directive value can NOT be set in user.cpm file.
 

The following list shows the winning order of the locked directive, winning from top to bottom:

user.cpm
  • If directive entry exist in the file
  • If directive is allowed to be set in the file
  • If directive is not locked in <project>.cpm, site.cpm or cds.cpm files<project>.cpm
  • If directive not present / not allowed in user.cpm file
  • If directive entry exist in the file
  • If directive is not locked in site.cpm and cds.cpm files
site.cpm
  • If directive not present / not allowed in user.cpm file
  • If directive not present in <project>.cpm
  • If directive entry exist in the file
  • If directive is not locked in the cds.cpm file
cds.cpm
  • If directive not present / not allowed in user.cpm file
  • If directive not present in <project>.cpm & site.cpm files
  • If directive entry exist in the file

 I'm curious how many companies are taking advantage of this capability. Please let me know.

Jerry GenPart


CDNS - RequestDemo

Have a question? Need more information?

Contact Us

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information