• 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. creating a netlist

Stats

  • State Verified Answer
  • Replies 14
  • Answers 1
  • Subscribers 160
  • Views 6436
  • Members are here 0
More Content

creating a netlist

masamasa
masamasa over 1 year ago

hello

 

is there an easy way to create a netlist in the format that can be imported in the board design?

 

regards

masa

  • Sign in to reply
  • Cancel
Parents
  • DavidJHutchins
    0 DavidJHutchins over 1 year ago

    In Allegro the File>Export>Netlist w/Properties... will generate ASCII netlist.txt, which is in the Allegro native 'Telesis' format

    You can edit the netlist file & import it back into Allegro using the File>Import>Logic/Netlist... 'Other' tab

    The netlist format is documented in 'Allegro® User Guide: Transferring Logic Design Data' chapter 'Creating, Comparing, and Updating Databases'

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

    thank u for ur response, david.

     

    i do understand the netlist format but it takes a half day to create a netlist from the netlist our customers send us.

     

    our customers usually send us a netlist like the one we get on a symbol pin report as shown below.

     

    from this symbol pin report, is there a skill or some easy method to create a netlist in the format that can be imported in the board design?

     

    regards

    masa

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

    Are you working on a board or a package? The screenshot looks like a typical CSV netlist that you can import into a package design through APD+ and the file - import - netlist text in wizard. The format is similar to a CSV file for a die, package, or other component. 

    Since many package designs are still done without a front end schematic for the logic, this is a popular format. For a board design, a schematic is almost always available, which is why the format isn’t utilized in that flow. 

    if you’re bringing the netlist into a board design, the schematic tool you’re using in the front end may support reading this format. Where is it coming from out of your customer? Do they have other netlist formats available?

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

    thank u for ur response, tyler.

     

    i am working on apd and do not use schematic 

     

    please let me try the netlist in wizard

    it looks like the netlist in wizard takes txt files.

     

    regards

    masa

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

     masamasa 

    it seem you same my work , do not use schematic and package only.

    Let's talk together if you're having trouble

    HoangKhoi.

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

    Try opening the customer netlist file in Excel.

    Then, manipulate the cells and save the spread sheet as a text file.

    The final (text) format would look something like this:

    VSS ; BGA.A3

    VSS ; BGA.A4

    I use Excel to convert a customer's placement file from English to Metric. 

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

    The symbol pin report you showed appears to be created from within Allegro/APD, which is now HTML based so it's almost impossible to parse ( Thanks Cadance... )

    Import the file into Excel as a comma separated file & then save as a csv file ( which is similar to the report -v spn file format )

    Below is an example of running the skill code I wrote this morning to read the csv file to assign the nets:

    skill load "csv_net_import.ils"
    variable csv_net_import redefined
    Autosave time limits are: 5 to 300 minutes
    t
    skill csv_net_import
    Loaded existing device file 'C:\Temp\devices.dml'
    Finished loading SigNoise device libraries
    640 lines read, 563 net assignments made
    t

    The skill code is shown below:

    procedure(csv_net_import()
    let((FileName inport DataLine DataList RefDes PinTxt NetTxt Cmp Pin Net Status LineCnt Assigned)
    (LineCnt = 0)
    (Assigned = 0)
    (FileName = axlDMFileBrowse( nil nil ?optFilters " files(*.csv)|*.csv|"))
    if(( stringp(FileName) && (isFile(FileName) == t)) then
    (inport = infile(FileName))
    (axlClearSelSet)
    while(gets(DataLine inport)
    (LineCnt++)
    (DataList=parseString(DataLine ",\n\r"))
    (RefDes = car(DataList))
    (PinTxt = cadr(DataList))
    ;(Net = cadr(Reverse(DataList)))
    (NetTxt = nth(7 DataList))
    when(RefDes && PinTxt && NetTxt
    (Cmp = car(axlSelectByName("COMPONENT" RefDes)))
    when(Cmp
    (Pin = car(axlSelectByName("PIN" (strcat RefDes "." PinTxt))))
    when(Pin
    (Net = axlDBCreateNet(NetTxt))
    (Status = axlDBAssignNet(Pin Net nil t))
    when(Status
    (Assigned++)
    )
    )
    )
    )
    (axlClearSelSet)
    )
    close(inport)
    drain()
    axlMsgPut("%d lines read, %d net assignments made" LineCnt Assigned)
    else
    axlMsgPut("No valid file selected")
    )
    )
    )

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
Reply
  • DavidJHutchins
    0 DavidJHutchins over 1 year ago in reply to avant

    The symbol pin report you showed appears to be created from within Allegro/APD, which is now HTML based so it's almost impossible to parse ( Thanks Cadance... )

    Import the file into Excel as a comma separated file & then save as a csv file ( which is similar to the report -v spn file format )

    Below is an example of running the skill code I wrote this morning to read the csv file to assign the nets:

    skill load "csv_net_import.ils"
    variable csv_net_import redefined
    Autosave time limits are: 5 to 300 minutes
    t
    skill csv_net_import
    Loaded existing device file 'C:\Temp\devices.dml'
    Finished loading SigNoise device libraries
    640 lines read, 563 net assignments made
    t

    The skill code is shown below:

    procedure(csv_net_import()
    let((FileName inport DataLine DataList RefDes PinTxt NetTxt Cmp Pin Net Status LineCnt Assigned)
    (LineCnt = 0)
    (Assigned = 0)
    (FileName = axlDMFileBrowse( nil nil ?optFilters " files(*.csv)|*.csv|"))
    if(( stringp(FileName) && (isFile(FileName) == t)) then
    (inport = infile(FileName))
    (axlClearSelSet)
    while(gets(DataLine inport)
    (LineCnt++)
    (DataList=parseString(DataLine ",\n\r"))
    (RefDes = car(DataList))
    (PinTxt = cadr(DataList))
    ;(Net = cadr(Reverse(DataList)))
    (NetTxt = nth(7 DataList))
    when(RefDes && PinTxt && NetTxt
    (Cmp = car(axlSelectByName("COMPONENT" RefDes)))
    when(Cmp
    (Pin = car(axlSelectByName("PIN" (strcat RefDes "." PinTxt))))
    when(Pin
    (Net = axlDBCreateNet(NetTxt))
    (Status = axlDBAssignNet(Pin Net nil t))
    when(Status
    (Assigned++)
    )
    )
    )
    )
    (axlClearSelSet)
    )
    close(inport)
    drain()
    axlMsgPut("%d lines read, %d net assignments made" LineCnt Assigned)
    else
    axlMsgPut("No valid file selected")
    )
    )
    )

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
Children
  • masamasa
    0 masamasa over 1 year ago in reply to DavidJHutchins

    thank u for ur skill code, david.

     

    i have tried this and got this message.  is it automatically assign the net to the pin without importing the netlist?

     

    the command line says 34387 lines read, 34386 net assignments made.

    the total pin count is 34387 on the symbols and on the csv files as well.

     

    after excuting the skill code, the symbol pin report has 34387 pins.

     

    i wonder why 1 pin is missing for the net assignment.

     

    i reduced the net count to 4 and excuted the code and still one net less than the line count in the result on the command line. 

     

     

    it took me about an hour to excute this code for the 34387 pins..  if this works, it would be a great time saver compared with spending a half day to create a netlist from scratch.

     

    regards

    masa

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • DavidJHutchins
    +1 DavidJHutchins over 1 year ago in reply to masamasa

    If you run the code & cancel out of the file browser you will get the message "No valid file selected"

    If your input file has any lines where the Refdes, Pin_number or Net_name are empty, that line will be reported as an error and skipped

    I added some error reporting to the skill code, latest version included below:

    procedure(csv_net_import()
    let((FileName inport DataLine DataList RefDes PinTxt NetTxt Cmp Pin Net Status LineCnt Assigned ErrorCnt)
    (LineCnt = 0)
    (ErrorCnt = 0)
    (Assigned = 0)
    (FileName = axlDMFileBrowse( nil nil ?optFilters " files(*.csv)|*.csv|"))
    if(( stringp(FileName) && (isFile(FileName) == t)) then
    (inport = infile(FileName))
    (axlClearSelSet)
    while(gets(DataLine inport)
    (LineCnt++)
    (DataList=parseString(DataLine ",\n\r"))
    (RefDes = car(DataList))
    (PinTxt = cadr(DataList))
    ;(Net = cadr(Reverse(DataList)))
    (NetTxt = nth(7 DataList))
    ;axlMsgPut(" RefDes %s PinTxt %s NetTxt %s" RefDes PinTxt NetTxt)
    ;when(plusp(strlen(RefDes)) && plusp(strlen(PinTxt)) && plusp(strlen(NetTxt))
    if( RefDes && PinTxt && NetTxt then
    (Cmp = car(axlSelectByName("COMPONENT" RefDes)))
    when(Cmp
    (Pin = car(axlSelectByName("PIN" (strcat RefDes "." PinTxt))))
    when(Pin
    (Net = axlDBCreateNet(NetTxt))
    (Status = axlDBAssignNet(Pin Net nil t))
    if(Status then
    (Assigned++)
    else
    axlMsgPut("Error: line # %d generated no connectivity: %s" LineCnt DataLine)
    (ErrorCnt++)
    )
    )
    )
    else
    axlMsgPut("Error: line # %d has formatting issues: %s" LineCnt DataLine)
    (ErrorCnt++)
    )
    (axlClearSelSet)
    )
    close(inport)
    drain()
    axlMsgPut("%d lines read, %d net assignments made, %d errors found" LineCnt Assigned ErrorCnt)
    else
    axlMsgPut("No valid file selected")
    )
    )
    )

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Reject Answer
    • Cancel
  • masamasa
    0 masamasa over 1 year ago in reply to DavidJHutchins

    thank u david for creating the skill code.

     

    i am sorry for delaying my response as we had a week long holiday in japan.

     

     i was able to import all 4 nets by using the skill code

      

     

    the first row was missing so i added the first row and it works now.

     

    regards

    masa

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

    I duplicated your design data  to test the skill code:


    C:\Temp>
    C:\Temp>cat test.csv
    BGA,A3,BGA,BGA,BGA_PAD,27000,-29000,VSS
    BGA,A4,BGA,BGA,BGA_PAD,26000,-29000,VSS
    DIE,30469,DIE_NEW,DIE_NEW,FC_PAD,23315,-14115,NC
    DIE,30470,DIE_NEW,DIE_NEW,FC_PAD,23315,-14315,NC

    C:\Temp>wc test.csv
      4   4 182 test.csv

    C:\Temp>

    I did not have any issues loading the netlist...

    C:\Temp>tail allegro.jrl
    \t (00:20:45) Autosave successful
    \w (00:20:45) Autosave time limits are: 5 to 300 minutes
    \i (00:20:59) skill csv_net_import
    \i (00:21:03) fillin "test.csv"
    \t (00:21:03) 4 lines read, 4 net assignments made, 0 errors found
       (00:21:03) t
    \i (00:22:42) save
    \i (00:22:42) generaledit
    \i (00:22:47) exit
    \t (00:22:47)     Journal end - Mon Aug 19 09:27:29 2024

    C:\Temp>

    Are you using the latest skill code I posted 10 days ago?

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

    thank u for ur response, david.  i really appreviate it.

     

    yes i used ur latest skill code posted 10 days ago.

     

    with the first tow, i get this.

    this works fine as all 4 nets r imported.

     

    but without the first row, i get this.

    one last net is not imported.

     

    this is weird.  maybe it is because i use apd so the format may be slightly different. 

     

    regards

    masa

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify 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