good point, thanks a lot Andrew.
↧
Forum Post: RE: gmoverid in dc operating point is not equal to gm/id
↧
Forum Post: removing quotes in skill
Hi, Is there an function available in cadence skill to remove double quotes? I need to provide a = "0:0" as input to a function, which wont take double quotes. Please help. Thanks PK
↧
↧
Forum Post: RE: removing quotes in skill
Hi PK, You can use "evalstring" or "errsetstring" to evaluate the value/expression in the string and then supply it to another function. The latter is safer and allows you to programmatically catch any errors. Hopefully this is what you were looking for? Best regards, Lawrence.
↧
Forum Post: RE: removing quotes in skill
Thank you Lawrence for the quick reply. One more question. I am trying to add a label to my layout using dbCreatelabel function. I was not able to specify the layer purpose using this. I have tried the following, its not working dbCreateLabel(cv "M10.pin" 0:0 "test" "centerCenter" "R0" "stick" 0.5) dbCreateLabel(cv "M10 pin" 0:0 "test" "centerCenter" "R0" "stick" 0.5) dbCreateLabel(cv 202.74 0:0 "test" "centerCenter" "R0" "stick" 0.5) Please help. Thanks PK
↧
Forum Post: RE: Transferring user defined property values between Capture and Allegro PCB Editor
Too bad it needs to be done on a design by design basis... but I can't get it to work there either. My options under design when I've got a .dra open are: But when I've got a .brd "Property": isn't there: Does this mean that my allegro.cfg isn't found?
↧
↧
Forum Post: RE: removing quotes in skill
dbCreateLabel(cv list("M10" "pin") 0:0 "test" "centerCenter" "R0" "stick" 0.5) is what you want. You can specify the layer number and purpose number too (so if that's 202 and 74, it would be list(202 74) ). However, specifying by name is almost certainly a better solution as it isolates you from the details of how the layer numbers and purpose numbers have been assigned for that technology. Regards, Andrew.
↧
Forum Post: Skill to run multiple script (.scr) or multiple skill files
Hi, Is there a way to run several script files as Skill or one skill file to run multiple skill files? If so, how do you do this? Currently, I'm running two skill files as a script file but would prefer to use one skill file to multiple skill files or one skill file to multiple script files. Thanks, Eddie
↧
Forum Post: Skill to run multiple script (.scr) or multiple skill files
Hi, Is there a way to run several script files as Skill or one skill file to run multiple skill files? If so, how do you do this? Currently, I'm running two skill files as a script file but would prefer to use one skill file to run multiple skill files or one skill file to run multiple script files. Thanks, Eddie
↧
Forum Post: RE: Skill to run multiple script (.scr) or multiple skill files
The simple answer is yes. You generally don't run Skill "files" you call functions contained in files. So long as the Skill file is loaded using load or autoload you can run as many functions (or procedures) as you like.
↧
↧
Forum Post: RE: Skill to run multiple script (.scr) or multiple skill files
Hi Dave, Thanks for the quick reply. Got it - call functions - was the correct wording. How do you implement this? For example I have this two skill files that I need to call: ref_des.il textblk.il How do you call the functions contained in these two files? Thanks, Edwin
↧
Forum Post: RE: Skill to run multiple script (.scr) or multiple skill files
Like I said - you don't generally call files. You load them. So, in one Skill file you can have the lines: load("ref_des.il) load("textblk.il") I don't know what your function names are but you would generally then call the functions: ref_des_function() textblk_function()
↧
Forum Post: RE: Skill to run multiple script (.scr) or multiple skill files
Hi Dave, I got the other il to work, but somehow this set_redes.il that I found in the forum doesn't work. Modified the print portion only. The "function" callout comes out 'undefined'. Will you be able to check which function to use? gives this error > E- *Error* eval: undefined function - srd Thanks for the help Code: ; axlCmdRegister("srd" '_set_refdes_from_file ?cmdType "general") procedure( _set_refdes_from_file( mode ) prog( list(l_text refdes t_loc t_rot t_mirror t_justify t_layer l_vis l_old_loc mir rot) l_old_loc=list() case(mode ("save" ;save the current refdes text information to a file printf("Mode:save\n") ; printf("Saving refdes data to file refdes.txt\n") printf("Saving refdes data to file Harbor_Silk_RefDes.rpt. Check your working folder. \n") p_refdes=outfile("./Harbor_Silk_RefDes.rpt") ;open a file to store the data ; p_refdes=outfile("./Harbor_Silk_RefDes.txt") ;open a file to store the data axlClearSelSet() ;clear any selected objects axlSetFindFilter(?enabled '(noall text) ?onButtons '(text)) l_vis=axlVisibleGet() ;Store the current layer visibility axlVisibleDesign(nil) ;Set the visibility as desired. axlVisibleLayer("REF DES/SILKSCREEN_TOP" t ) axlVisibleLayer("REF DES/SILKSCREEN_BOTTOM" t ) axlUIWUpdate(nil) axlAddSelectAll() ;Select all of the visible text l_text=axlGetSelSet() ;Save the selected text in a list axlClearSelSet() foreach(text l_text ;Check each text string parent_type = text->parent->objType text_class = car(parseString(text->layer "/")) if(parent_type == "symbol" && text_class=="REF DES" then ;probably found a refdes. Store the text details refdes=text->text t_loc=text->xy t_rot=text->rotation t_mirror=text->isMirrored t_layer=text->layer t_textblock=text->textBlock t_justify = text->justify ;write the data to a file println(list(refdes t_loc t_layer t_rot t_mirror t_textblock) p_refdes) );endif );end foreach refdes close(p_refdes) ;close the file axlVisibleSet(l_vis) axlUIWUpdate(nil) printf("Harbor_Silk_RefDes.rpt file save completed.Check your Working directory folder\n") );save ("get" ;Read the file and process the text printf("Mode:get\n") l_visible=axlVisibleGet() ;store current visibility settings. axlVisibleDesign(nil) ;turn everything invisible axlVisibleLayer("REF DES/SILKSCREEN_TOP" t ) axlVisibleLayer("REF DES/SILKSCREEN_BOTTOM" t ) p_refdes=infile("./refdes.rpt") while(l_refdes=car(lineread(p_refdes)) refdes=nth(0 l_refdes) loc=nth(1 l_refdes) layer=nth(2 l_refdes) new_rot=nth(3 l_refdes) new_mir=nth(4 l_refdes) new_tblock=nth(5 l_refdes) new_justify=nth(6 l_refdes) l_old_loc = _find_refdes(refdes layer) ;call procedure to find the original text old_xy = nth(1 l_old_loc) ;current coordinates of refdes old_rot = nth(0 l_old_loc)->rotation ;current refdes rotation old_mir = nth(0 l_old_loc)->isMirrored ;current mirror status old_tblock=nth(0 l_old_loc)->textBlock ;current text block used o_component=nth(0 l_old_loc)->parent ;need the parent if creating new text when(old_xy ;if there is an xy then we found the text and can do a transform if(old_tblock==new_tblock then ;if the same text block then do a transform delta_x=xCoord(loc) - xCoord(old_xy) ;calculate the x offset delta_y=yCoord(loc) - yCoord(old_xy) ;calculate the y offset l_delta=list(delta_x delta_y) ;distance to move the text rot=new_rot-old_rot ;calculate the rotation mir=(new_mir && !old_mir)||(!new_mir && old_mir) ;mirror is XOR axlTransformObject(car(l_old_loc) ?move l_delta ?mirror mir ?angle rot) ;move the text else ;if textblocks don't match then create a new refdes. new_orient=make_axlTextOrientation(?textBlock new_tblock, ?rotation new_rot, ?mirrored new_mir, ?justify new_justify ) new_refdes=axlDBCreateText(refdes, loc, new_orient, layer, o_component) if(new_refdes then ;if new refdes successful then delete old one. axlClearSelSet() axlSetFindFilter(?enabled '(noall text) ?onButtons '(text)) axlSingleSelectPoint(old_xy) axlDeleteObject(axlGetSelSet()) axlClearSelSet() );end_if );end_if );end_when );end while close(p_refdes) axlVisibleSet(l_visible) ;restore layer visibility. printf("Process complete.\n") );get (t printf("Invalid command line argument.\n") printf("Command syntax: srd save or srd get \n") return(nil) ) );endcase );endprog );endproc procedure( _find_refdes(sym tlayer) ;procedure to return the dbid and location of the refdes for the symbol prog( list(child l_children o_type o_layer match_loc) l_children = car(axlSelectByName("REFDES" sym))->children foreach(child l_children o_type = child->objType o_layer = child->layer if(o_type=="text" && o_layer==tlayer then ;probably found a refdes match. match_loc=child->xy axlClearSelSet() return(list(child match_loc)) ;return the dbid and location of the text ;if match_loc returns as nil then the text was not found );endif );foreach child );end prog );end proc _find_refdes
↧
Forum Post: RE: Skill to run multiple script (.scr) or multiple skill files
type "srd" in the Allegro console window. Not the Skill window.
↧
↧
Forum Post: RE: Title jumps in schematic titleblock when opened on another computer
Hi, Maybe if I give more details someone might have an idea on how to help. It is very frustrating to have to open the design and spend 20 minutes moving the sheet numbers or other title block properties so that it looks normal, when this was done just the day before... Title block is placed and properties are filled out such that they fit into the titleblock adequately. Sometimes after annotation, sheet numbers need to be adjusted so that they look good. Then, after returning to the design, perhaps after someone else has opened it, the title will have shifted to be only half inside the appropriate box in the titleblock, and the sheet numbers might have shifted to be outside the titleblock completely. After manually shifting them back into position, the entire thing happens again. I do not know if this is a result of the .opj, the design cache on the individual computers, or what. Any tips out there? Jeff
↧
Forum Post: RE: Title jumps in schematic titleblock when opened on another computer
Nevermind...it looks like the different computers were pointing to different symbol libraries
↧
Forum Post: RE: Skill to run multiple script (.scr) or multiple skill files
Thanks Dave, Yes, that works but is there a way create a skill function for it? Reason for it is, I created a Custom menu in Allegro Editor to load the skill file and would like to call the funstions from there. I also created a script file (.scr) to run the two .il files but not sure how to call it via a skill code. Would be good to get your input on this too Dave. Here's my scr file: # Allegro script # file: D:/Design/run ref_des-textBlk report.scr # start time: Wed Nov 01 11:02:26 2017 # Version: 16.6-2015 S100 (v16-6-112HL) Windows 32 version 16.6 setwindow pcb trapsize 9147 ifp report_textblock ifp srd save ifp # stop time: Wed Nov 01 11:02:54 2017 Thanks, Edwin.
↧
Forum Post: Finding the backdrill status with skill
Is there away to get the backdrill status in skill? --Jerry
↧
↧
Forum Post: RE: Finding the backdrill status with skill
Found it, axlBackdrillGet('status) Thanks to my co-worker
↧
Forum Post: RE: Skill to run multiple script (.scr) or multiple skill files
You don't need a script file. Just create a Skill function with the commands and call that from your custom menu command.
↧
Forum Post: RE: Transferring user defined property values between Capture and Allegro PCB Editor
Any way you can post up a board with the symbol and associated netlist? I try this on my system and it works fine. I can display the custom properties added by the netlist just fine.
↧