• 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. Community Forums
  2. Allegro X PCB Editor
  3. Ghost NETCLASS property on nets in PCB editor - cannot be...

Stats

  • State Suggested Answer
  • Replies 4
  • Answers 2
  • Subscribers 160
  • Views 1916
  • Members are here 0
More Content

Ghost NETCLASS property on nets in PCB editor - cannot be found anywhere in constraints manager

AleksMK
AleksMK over 1 year ago

Hi all!

Technical background: OrCAD PCB Designer Professional 17.2 with service patch S082 [28.03.2022].

I have the following problem on my hand. I have a project in which some nets in OrCAD Capture CIS had a NET_PHYSICAL_TYPE property attached with the value "HPWR_NETS". While importing the netlist in OrCAD PCB Designer, the corresponding physical net class "HPWR_NETS_PH" was created, and these nets were added to it. This net class had a different physical constraint set applied to, as required by the design. So far so good. After some time, the PCB design was transferred to another colleague of mine, where we noticed that there were no more constraints applied on the required nets. In this time, note, that several times the netlist via Capture was updated, and imported in OrCAD PCB.

We investigated what was going on and I have come to a very weird conclusion. The physical netclass "HPWR_NETS_PH" was no longer there, although the property "HPWR_NETS" was still correctly set in NET_PHYSICAL_TYPE (and configured to be transferred to the netlist from Capture). After a lot of digging, I found out that there is a property called "NETCLASS" with value "HPWR_NETS_PH" where as this should be attached to the property "PHYSICAL NETCLASS" - also something that I discovered while debugging this issue.

It seems that this property "NETCLASS" was somehow created, which is causing the nets not to be associated with a physical netclass set. If I manually change the value of NET_PHYSICAL_TYPE from "HPWR_NETS" to "HPWR_NETS_NEW" in the Capture netlist file pstxnet.dat, and import it again in by board, I get a new property, named correctly, "PHYSICAL NETCLASS" with the correct value "HPWR_NETS_NEW_PH" and I get the correct physical constraint netclass in the constraint manager to which I can attach my desired constraint set. BUT, the ghost "NETCLASS" property, with the old value of "HPWR_NETS_PH" is still there! This "NETCLASS" property I can not find anywhere in the constraint manager!

Before this manual change in the netlist (sample net of the required NET_PHYSICAL_TYPE ones):

CNS SHOW Snippet:


Net property snippet:

After the manual change in the netlist (sample net of the required NET_PHYSICAL_TYPE ones):

CNS SHOW Snippet:

Net property snippet:

Any idea how this might have happened? Where is this "NETCLASS" property listed, as it is not in the constraints manager? And finally, how can I delete the "NETCLASS" property?

Kind regards,
Aleks

  • Sign in to reply
  • Cancel
  • jc teyssier
    0 jc teyssier over 1 year ago

    Sounds something i already encounter.

    If you have a "NET_PHYSICAL_TYPE", say "GND"

    and a "NET_SPACING _TYPE" with he same name (GND in this example) then they are "merged" into  "CLASS".

    Does someone create a NET_SPACING_TYPE named HPWR_NETS ?

    May  t be related but have a look in this direction

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • AleksMK
    0 AleksMK over 1 year ago in reply to jc teyssier

    Hi,

    Thanks for the suggestion! I took a look at the pstxnet.dat netlist file just now. Unfortunately there is no NET_SPACING_TYPE property defined on any of the nets. The only property attached to a select few is the NET_PHYSICAL_TYPE property.

    Cheer!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • John T
    0 John T over 1 year ago

    Hi Aleks, the suffix _PH for Physical netclass is made to handle the possibility of a SPACING netclass having the same name as a PHYSICAL netclass. This helps to differentiate the two netclasses. This tagging takes place in the PCB Editor. When we back-annotate, the naming with suffix is pushed to Design Entry CIS. The change is seen in the design.swp file ;

    .Section2 UpdateProperties Nets UppercaseCombined
    "{Net Name}" "NET_PHYSICAL_TYPE"
    "N00237" "TRY1_PH"
    .End

    In order to delete a netclass using SKILL, please save the following SKILL code to your design directory using a text editor. Rename the text file containing this code to the filename "Delete_Net_Class.il"

    1. To load this SKILL file, open Allegro PCB Editor and at the command prompt, type skill load "Delete_Net_Class.il" and press Enter.
    2. Run the SKILL function, by typing the net_cls_delete command at the command prompt and pressing Enter. 

    It will pop up a window. Enter the Net class to be deleted in CAPITAL letters and click on OK:

    Caution - this code is provided as is. Extreme caution should be taken when manipulating elements such as nets or netclasses from any design. 

    SKILL code:

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • John T
    0 John T over 1 year ago in reply to John T

    /*******************************************************************
    * DISCLAIMER: The following code is provided for Cadence customers *
    * to use at their own risk. The code may require modification to *
    * satisfy the requirements of any user. The code and any *
    * modifications to the code may not be compatible with current or *
    * future versions of Cadence products. *
    * THE CODE IS PROVIDED "AS IS" AND WITH NO WARRANTIES, INCLUDING *
    * WITHOUT LIMITATION ANY EXPRESS WARRANTIES OR IMPLIED WARRANTIES *
    * OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. *
    ********************************************************************
    *****************************************************************************************************************************************************************************************
    * Author: Balumuru Vinay Kumar - Cadence Design Systems *
    * *
    * The provided skill code delete the predefined Net_Class at the board created either manually or inhertied from Schematic through netlist import *
    * *
    * To run the skill command follow the suggested steps below: *
    * *
    * - Invoke Allegro PCB Editor and open attached sample board ( Net_class_del.brd), in which the Net Class exists (eg: sample) *
    * - In the command window enter the following command to load the skill file :- Command> skill load "Delete_Net_Class.il" *
    * - In the command window, to run the function type 'Net_Class_Delete' command as follows:- Command> Net_Cls_Delete *
    * - This will display an UI window, enter the required Net_Class name to be deleted in all CAPITALs and click on OK *
    * - Note: Please enter the the correct Net_Class to be deleted in all Capitals with no spaces *
    *****************************************************************************************************************************************************************************************/


    axlCmdRegister("Net_Cls_Delete" 'Net_Class_Delete)

    procedure(Net_Class_Delete()
    let( (DB_Design Net_cls_DB_ID Temp Net_cls_to_del Var)

    DB_Design = axlDBGetDesign()
    Net_cls_DB_ID=DB_Design->netclass
    Net_cls_to_del= axlUIPrompt("Enter the correct Net_Class to be deleted in all Capitals with no spaces\n") ; Getting the Net class name to be deleted
    if(Net_cls_to_del == nil then
    printf("Please enter the required Net_class to delete\n")
    else
    foreach(Temp Net_cls_DB_ID

    if(Net_cls_to_del == Temp->name then ; comparing given Net class with all Net classes in the design.
    printf("test pass\n")
    axlNetClassDelete(Temp) ; if Netclass matches then using axlNetClassDelete() to delete the Net class
    Var =1))
    if(Var ==1 then
    printf("The Netclass: '%s' is deleted\n" Net_cls_to_del)
    else
    printf("The entered Net_class : '%s' is not defined in the board\n" Net_cls_to_del))
    );end_if
    ); end local variable scope
    ); end_Net_Class_Delete

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
Cadence Guidelines

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

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

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