Generate I/o file

  • Thread starter sridhartv25@gmail.com
  • Start date
S

sridhartv25@gmail.com

Guest
Hello all,

In my layout window I have pins , using this I want to generate a I/O
file sothat I can import it to the encounter.
I had tried file -> export -> DEF. But when I import this file all the
pins are grouped together at the origin.
Is there any other option.
Cheers,
Sridhar.
 
On 6 fév, 16:52, "sridhart...@gmail.com" <sridhart...@gmail.com>
wrote:
Hello all,

In my layout window I have pins , using this I want to generate a I/O
file sothat I can import it to the encounter.
I had tried file -> export -> DEF. But when I import this file all the
pins are grouped together at the origin.
Is there any other option.
Cheers,
Sridhar.
I wrote the skill script below once to retrieve all the pins/labels in
the layout
and store them in a file. If it may help.

Olivier


; **** procedure obGetLabels( [filePath] )
; **** list in the CIW all the labels and pins from the active layout
view
; **** if a file path is specified, they are also stored in that file
; ****
;
****************************************************************************


procedure( obGetLabels( @optional (filePath ""))
let( ( cv cnt outf )
cnt=0
cv=geGetEditCellView()
printf( "searching layout \"%s\" for labels...\n", geGetEditCellView
()->cellName)
outf=nil
; open file if path defined
when( (filePath!="")
outf=outfile(filePath "w" )
printf( "writing to file %s.\n", filePath)
)
printf( " \n%10s %10s %-8s %s\n", "X", "Y", "layer", "name")
when( (outf!=nil) fprintf( outf "%10s %10s %-8s %s\n", "X", "Y",
"layer", "name") )
drain()

foreach( shape geGetEditCellView()->shapes

; shape is label
when( (shape->objType=="label")
when( ((shape->layerName!="text") && (shape->layerName!
="marker"))
cnt++
printf( "%10.3f %10.3f %-8s %s\n", nthelem(1 shape->xy),
nthelem(2 shape->xy), shape->layerName, shape->theLabel)
when( (outf!=nil) fprintf( outf "%10.3f %10.3f %-8s %s\n", nthelem
(1 shape->xy), nthelem(2 shape->xy), shape->layerName, shape-
theLabel) )
drain()
) ; end when
) ; end when label

; shape is textDisplay
when( (shape->objType=="textDisplay")
when( ((shape->layerName!="text") && (shape->layerName!="marker"))
cnt++
printf( "%10.3f %10.3f %-8s %s\n", nthelem(1 shape->xy),
nthelem(2 shape->xy), shape->layerName, shape->associate->name)
when( (outf!=nil) fprintf( outf "%10.3f %10.3f %-8s %s\n",
nthelem(1 shape->xy), nthelem(2 shape->xy), shape->layerName, shape-
associate->name) )
drain()
) ; end when
) ; end when textDisplay

) ; end foreach
printf(" \n%d labels found.\n", cnt)
when( (outf!=nil)
close(outf)
printf( "output file: %s\n", filePath )
)
drain()
) ; end let
t ; return t
) ; end procedure
 
Thanks Oliver for your script,

The o/p of this script is some thing like

X Y layer name
0.000 110.600 PIN sridhar
83.400 115.300 PIN sridhar0
124.150 10.850 PIN sridhar1

Is this the exact syntax of the i/o file which can be directly
imported to the encounter window or else I need to remove the first
line
X Y layer name.

Generally I use two formats for my I/O files
##########################################################3
(globals
version = 3
total_edge = 6
io_order = counterclockwise
)
(iopin
(edge num=0
(pin name="v5v_en" offset=23.9000 layer=2 width=0.6000 depth=0.6000 )
(pin name="v5v_pok" offset=27.8000 layer=2 width=0.6000
depth=0.6000 )


)
(edge num=1
(pin name="dig_tst_buf_en_n" offset=20.3000 layer=2 width=0.6000
depth=0.6000 )
(pin name="dig_tst_mux_sel[0]" offset=24.5000 layer=2 width=0.6000
depth=0.6000 )
##########################################################

This is one of the format which works on offset.

And the other format is

######################### LEFT Pins
#############################

Offset: 518.950
Pin: clk128k W 2 0.6000 0.6000
Offset: 723.900
Pin: rc_osc_en W 2 0.6000 0.6000
Offset: 737.250
Pin: v5v_en W 2 0.6000 0.6000
######################### RIGHT Pins
#############################
Offset: 518.950
Pin: clk128k S 2 0.6000 0.6000
Offset: 723.900
Pin: rc_osc_en S 2 0.6000 0.6000
Offset: 737.250
Pin: v5v_en S 2 0.6000 0.6000
##########################################################


In both of the scripts calculations is based on offset.

I can see in your script its on x and y coordinates.

Oliver can you please send me the exact syntax of the I/O file which
works on the x and y coordinates rather than
on the offset calculations.

And also what other formats of I/O file does encounter support other
than the above.

Regards,
Sridhar.
 

Welcome to EDABoard.com

Sponsor

Back
Top