Quantcast
Channel: Cadence PCB Skill Forum
Viewing all 2132 articles
Browse latest View live

How to color a string using SKill

$
0
0

Hi Dave, all

I have a code to check footprint prints in our library. In my code i will output it into a log file called MCL log file. 

In the code i have pass/fail messages in which for pass messages, i want to color it green & fail message as red.

How do i do that. Below is a portion of the code.Hope anyone can help.

Thanks

JerryWilson

defun( _mcl_start ()

let((errors overallerrors)
overallerrors=0

mcl_log.log=axlDMOpenLog("mcl")

fprintf(mcl_log.log " MCL CHECK LOG ............................... Created:")

Date=(getCurrentTime)
fprintf(mcl_log.log "%s\n\n" Date)

axlDBGetDesignUnits()

fprintf(mcl_log.log "\n-----------------------------CHECK DRAWING PARAMETERS----------------------------\n")


errors=0
let((y m p)
y = axlGetParam('paramDesign)
if(y->units=="millimeters" then
;fprintf(mcl_log.log "\nPASSED :USER UNITS." )

else
errors++
overallerrors++
fprintf(mcl_log.log "\nFAILED :INVALID USER UNITS., %s" y->units)
)
if(y->accuracy==3 then
;fprintf(mcl_log.log "\nPASSED :ACCURACY." )
else
errors++
overallerrors++
fprintf(mcl_log.log "\nFAILED :INVALID ACCURACY., %d" y->accuracy)
)
if(y->height==210 then
;fprintf(mcl_log.log "\nPASSED :DRAWING EXTENT HEIGHT." )
else
errors++
overallerrors++
fprintf(mcl_log.log "\nFAILED :INVALID DRAWING EXTENT HEIIGHT., %f" y->height)
)
if(y->width==297 then
;fprintf(mcl_log.log "\nPASSED :DRAWING EXTENT WIDTH." )
else
errors++
overallerrors++
fprintf(mcl_log.log "\nFAILED :INVALID DRAWING EXTENT WIDTH., %f" y->width)
)
if(y->xy==list(-150 -105) then
;fprintf(mcl_log.log "\nPASSED :DRAWING EXTENT LOWER X AND LOWER Y." )
else
errors++
overallerrors++
fprintf(mcl_log.log "\nFAILED :INVALID DRAWING EXTENT LOWER X AND LOWER Y., %P\n" y->xy)
)
m = axlDesignType(t)
if( or( m=="PACKAGE" m=="SHAPE" m=="FLASH" ) then
;fprintf(mcl_log.log "\nPASSED :SYMBOL TYPE., %s\n" m)
else
errors++
overallerrors++
fprintf(mcl_log.log "\nFAILED :INVALID SYMBOL TYPE., %s\n" m)
)

if(errors==0 then
fprintf(mcl_log.log "\n\t%d ERROR(S) ON DRAWING PARAMETERS SETTINGS.\n", errors)
else
fprintf(mcl_log.log "\n\t%d ERROR(S) ON DRAWING PARAMETERS SETTINGS\n", errors)
)
;fprintf(mcl_log.log "***CHECK DRAWING PARAMETERS-END*****\n\n")
)


Concatenation of double quotes (")

$
0
0

Hi All,

I want to run a shell command shown below

reports "Component Report" nographic write

As we know axlshell doesn't allow double quotes inside so I am trying to concatenate with strcat, however I am facing a problem with the double quotes. I also tried with \”, but unable to build a string as shown above. Does anyone have an idea, how can a double quotes can be concatenated in a string.

Thanks,

Sanjeev

Compare to different netlist

$
0
0

Hi everyone,

I would like to ask some help, I created skill program that will determine if there are swap pins. But the problem is when I try to test two different netlist from two different board its not working. 

I am using netlist from export.

Tools used for developing skill programming

$
0
0

Hi Guys,

Does there any tool which can be used to develop the SKILL programs and shows some syntax error or some colour indication if a function or user define function is used?

Currently I use notepad++ to develop the same, however sometimes its very difficult to find a syntax error.

Thanks,

Sanjeev 

Use xhatch thermal width

$
0
0

Hi everyone,

Can anyone help me how to know if use xhatch thermal width is checked.

Or there is a property attached to shape to know this is checked

Or there is a API for this one. Thanks

.

Accessing color

$
0
0

Hi Dave

I tried to use a code you provided in one of the forum below in 17.2, i'm seeing errors 

E- *Error* defun: too few arguments (at least 3 expected, 2 given) - (DE_setLayerColour (layer colour))
E- *Error* load: error while loading file - "L:/ecad_proj/MCLLIB_ZMY12_172/cjj082_adwlib/codes/col.il" at line 1

Tried reomoving the ")", seeing the error below. Am I missing something. Please Advice.

E- *Error* DE_setLayerColour: too few arguments (2 expected, 0 given) - nil

defun( DE_setLayerColour (layer, colour))
let((colourNo, colours, n, p)
cond(
(numberp(colour), colourNo = colour)
(!colour, nil)
(t
colours = '(
(White 255 255 255)
(LtBlue 014 210 255)
(Rose 255 121 203)
(Green 000 255 106)
(Purple 166 016 255)
(Teal 121 153 196)
(Red 255 000 000)
(Yellow 255 255 000)
(Blue 000 000 255)
(Aqua 055 247 215)
(Gray 179 179 185)
(Olive 116 196 143)
(Orange 252 199 046)
(Pink 255 178 255)
(Beige 172 138 138)
(Navy 002 168 213)
(Violet 176 000 206)
(Gold 234 190 000)
(Silver 217 224 224)
(Rust 242 127 134)
(Lime 014 249 182)
(Brown 161 004 004)
(Mauve 224 141 202)
(Black 000 000 000)
)
n = listnindex(mapcar(lambda((colDef), lowerCase(car(colDef))), colours), lowerCase(colour))
when(n, colourNo = n + 1, axlColorSet(colourNo, cdr(nth(n, colours))))
)
)
when(colourNo, p = axlLayerGet(layer), p ->color = colourNo, axlSetParam(p))
))

Using a script inside a foreach loop.

$
0
0

I am trying to output shape reports for all etch shapes in order to check them for errors.
My foreach loop works for normal skill commands but breaks after the first pass when I use
my script to create a report:

        l_etchShapes = axlDBGetShapes( "ETCH" )
        
        foreach( _testEtchShape l_etchShapes
        
                println(list( "Shape Layer 1 = " _testEtchShape->layer )) ;print for debug
                
                axlClearSelSet()
                axlSingleSelectObject( _testEtchShape )
                axlSetActiveLayer( _testEtchShape->layer )
                axlVisibleDesign( nil )
                axlVisibleLayer( _testEtchShape->layer  t )
                axlSetFindFilter(?enabled list("NOALL" "SHAPES" ) ?onButtons list("ALL"))
            
                        shpInstOut = outfile("./shape_rep.scr")
                                fprintf( shpInstOut "scriptmode +w +i\n" )
                                fprintf( shpInstOut "setwindow pcb\n" )
                                fprintf( shpInstOut "generaledit\n" )
                                fprintf( shpInstOut "shape select\n" )
                                fprintf( shpInstOut "pick grid %L\n",  car( _testEtchShape->bBox ))
                                fprintf( shpInstOut "pop shape report\n" )
                                fprintf( shpInstOut "setwindow text\n" )
                                fprintf( shpInstOut "save\n" )
                                fprintf( shpInstOut "fillin \"temp_shp_report.txt\"\n" )
                                fprintf( shpInstOut "setwindow text\n" )
                                fprintf( shpInstOut "close\n" )
                                fprintf( shpInstOut "done\n" )
                                fprintf( shpInstOut "setwindow pcb\n" )
                                fprintf( shpInstOut "generaledit\n" )
                        close( shpInstOut )
                    axlShell("replay ./shape_rep.scr")
                println(list( "Shape Layer 2 = " _testEtchShape->layer )) ;print for debug
            
            );foreach

Can anyone tell me how to keep the loop from being broken by the script?

Length Matching Through Skill Program

$
0
0

Hi Group,

Is it possible to write some skill program to length match the traces? For example, I am looking for some sort of program which allows user to click on particular trace or traces and then tool add serpentine/bends to match the trace length with the total length property on the net.

Or if skill program is not possible then any other way to automate length matching process in the Cadence Allegro? If I have 1000 nets to match then it takes much time. Any suggestion or thinker? Thanks.


DIE/BGA text in using SKILL

$
0
0

Hi, I'm trying to figure out how to do a few simple things in APD using SKILL.

1) create a new mcm project

2) import a die/BGA text file

3) create some shapes, vias, etc.

I can find information in the manual about how to 1) (I think) and 3), but not 2). Any hints?

Thanks!

display net names from SKILL

$
0
0

Hello,

I am looking to control, from a SKILL script/form,  the "Display Net Names Functionality" as given in the Setup>Design Parameters checkboxes:

In the documentation I found 

axlDBDisplayControl('displayNetNames, t/nil)

But obviously it doesn't control the three checkboxes since it is only one parameter.

Anyone know how to do this?

Thanks

Documentation Location

$
0
0

How does one search the documentation for specific functions?

For example, where is the documentation for ipcWait() ?

TCL script

$
0
0

Hi Group. I am working on TCL script (software PowerDC) and stuck on below command

sigrity::move net {} {A1} // classify A1 as signalNets

If I want to move all nets as signalNets then what should I do.

Any help/suggestions appreciated,

Setting all parameters in Allegro Xsection via Skill

$
0
0


Hi Group,

There is a command (axlGetXSection) to retrieve all Allegro cross section parameters including thickness, lossTangent, dielectricConst etc.
I want to change all parameters through skill command but could not find any syntax like axlSetXSection. There is only command shown below but it works only on few parameters and there is no field for lossTangent, dielectricConst etc. I checked skill documentation couple of times & seems to be below is the only syntax. Should I assume that there is no support in skill language to set all parameters in the Allegro cross section?


axlLayerCreateCrossSection(
t_Prev_layerName
t_layerType
t_materialType
[t_subclassName]
[t_planeType]
)

Modify dynamic shape parameters using SKILL

$
0
0

Hi, I'm trying to modify the shape parameters (thermal relief, void controls, etc.) using SKILL. I can access the object but I don't see any properties or parameters to modify (prop is nil). Any ideas of where those properties hide in the database? Here is what I can see in the SKILL command line, id is the dbid of the shape

id~>??
(prop nil priority -7 dynamicGroup
dbid:0x2aee03f17098 taper nil shapeAuto
(dbid:0x2aee0ca2f500 dbid:0x2aee0ca2f470 dbid:0x2aee0ca2f3e0 dbid:0x2aee0ca2f350 dbid:0x2aee0ca2f2c0
dbid:0x2aee0ca2f230
)
region nil bBox
((-19600.0 -19300.0)
(19300.0 19300.0)
) readOnly
t voids nil net dbid:0x2aedbf2396d8
objType "shape" segments
(dbid:0x2aee0c14ef10 dbid:0x2aee0c14ee38 dbid:0x2aee0c14eb40 dbid:0x2aee0c14e958) nSegs
4 fillet nil fill t
connect nil cavity nil branch
nil fillOOD nil shapeBoundary nil
shapeIsBoundary t isRect nil layer
"BOUNDARY/L1" symbolEtch nil parent nil
isHole nil parentGroups nil
)

Delete all pins in Package

$
0
0

Hi,

I am trying to automate some operations and I need to delete all pins and all elements on Silkscreen_top/Silscreen_bottom in Package editor.

Could you please help me how to achieve it in skill ?

Thanks in advance.


Text added to pins does not get added to autosilk layer

$
0
0

Hi, I have written a script that adds the net names on pins to the Package Geometry silkscreen layers.
However, when the Allegro (v16.6) silkcreen command is run, the text is not transferred to the autosilk layer. Other text on this layer is ok.
I am using the following command to add the text:

axlDBCreateText( sprintf( nil "%s" symPinNet ) , symPinPosn , textOrientTop , "PACKAGE GEOMETRY/SILKSCREEN_TOP" , symbPin )

The text adds successfully on the board and is attached to a pin with a rubber band.
Is there something I should do to make this text transferable?

Thanks,

Skill to run multiple script (.scr) or multiple skill files

$
0
0

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

Skill to run multiple script (.scr) or multiple skill files

$
0
0

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

Finding the backdrill status with skill

$
0
0

Is there away to get the backdrill status in skill?

--Jerry

Looking for the backdrill "ANTI"/"CLEARANCE" using skill

$
0
0

Hi all,

I am looking for away to get the backdrill clearance size, or keepout size using skill.

I tried axlDBGetPad(pad_odbid 'backdrillclearance "ANTI") and it gives "flash" as the backdrill clearance. Same goes for if I use "KEEPOUT"

Any ideas??

Skill > bd3 = axlDBGetPad(pin1 'backdrillClearance "ANTI")
pad:00000000783F85C0
Skill > bd3->??
(readOnly t objType "pad" figure
    (_axlPath@0x5d1ab1d0) name nil corners nil
    radius 0.0 sides 0 inside
    0.0 bBox
    ((-21.1 -21.1)
    (21.1 21.1)
    ) parent dbid:00000000568876E8
    offset
    (0.0 0.0) type "ANTI" layer
    backdrillClearance flash "" figureName "CIRCLE"
)

Viewing all 2132 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>