Need help to control PCELL names in GDS stream out?

R

Reotaro Hashemoto

Guest
Hi,

I've layout that contains instances from many PDK pCells.

I need to do two things during PIPO stream out GDS:

1. Preserve the names of pCells to a standard value (e.g.
libName_cellName_count)

2. Control PIPO log such that it has list of: "cell - gds layers" for
each cell.

How can I do that with SKILL?

To export GDS I create my own PIPO keys file, like this: (I think the
solution would be here)
streamOutKeys = list(nil
'userSkillFile ""
'layerTable ""
'convertPin "geometry"
'libVersion "5.0"
'units "micron"
'scale 0.001
'cellMapTable ""
'caseSensitivity "preserve"
'errFile "PIPO.LOG"
'outFile "./testPcellName.gds"
'viewName "layout"
'primaryCell "a"
'libName "testUMC"
'runDir "./"
)

Then run pipo using ipc from within SKILL script.

I'd appreciate any help?

Thanks,
Ahmad
 
Reotaro Hashemoto wrote, on 07/15/09 12:37:
Hi,

I've layout that contains instances from many PDK pCells.

I need to do two things during PIPO stream out GDS:

1. Preserve the names of pCells to a standard value (e.g.
libName_cellName_count)

2. Control PIPO log such that it has list of: "cell - gds layers" for
each cell.

How can I do that with SKILL?

To export GDS I create my own PIPO keys file, like this: (I think the
solution would be here)
streamOutKeys = list(nil
'userSkillFile ""
'layerTable ""
'convertPin "geometry"
'libVersion "5.0"
'units "micron"
'scale 0.001
'cellMapTable ""
'caseSensitivity "preserve"
'errFile "PIPO.LOG"
'outFile "./testPcellName.gds"
'viewName "layout"
'primaryCell "a"
'libName "testUMC"
'runDir "./"
)

Then run pipo using ipc from within SKILL script.

I'd appreciate any help?

Thanks,
Ahmad
Ahmad,

The naming can be done with a user-defined SKILL function - poParamCellNameMap -
search for that in the documentation (it's in transref/transref.pdf).

I don't think you can output the GDS layers per cell though. Neither the
"comprehensive log" or "hierarchy" options do that.

Regards,

Andrew.
 
Hello Andrew,

Thanks for the hint.

I've checked the manual but I am not sure if I understood it
correctly.

What I did for test is:

1. Created a SKILL file named "test.il" with the following contents:

procedure( poParamCellNameMap( name ID )
prog( (newName)
sprintf(newName "ABC_%s_%s_XYZ" name ID)
return( newName)
); prog
); proc

2. Modified the stream out keys file to have this line:
streamOutKeys = list(nil
......
'userSkillFile "test.il"
)

3. Run PIPO from shell: pipo strmout strmOutKeys

I got the same results for cell names although I had no errors in the
log!

What wrong did I made?

Thanks and best regards,
Ahmad

On Jul 15, 8:17 pm, Andrew Beckett <andr...@DcEaLdEeTnEcTe.HcIoSm>
wrote:
Reotaro Hashemoto wrote, on 07/15/09 12:37:



Hi,

I've layout that contains instances from many PDK pCells.

I need to do two things during PIPO stream out GDS:

1. Preserve the names of pCells to a standard value (e.g.
libName_cellName_count)

2. Control PIPO log such that it has list of: "cell - gds layers" for
each cell.

How can I do that with SKILL?

To export GDS I create my own PIPO keys file, like this: (I think the
solution would be here)
streamOutKeys = list(nil
        'userSkillFile             ""
        'layerTable                ""
        'convertPin                "geometry"
        'libVersion                "5.0"
        'units                     "micron"
        'scale                     0.001
        'cellMapTable              ""
        'caseSensitivity           "preserve"
        'errFile                   "PIPO.LOG"
        'outFile                   "./testPcellName.gds"
        'viewName                  "layout"
        'primaryCell               "a"
        'libName                   "testUMC"
        'runDir                    "./"
)

Then run pipo using ipc from within SKILL script.

I'd appreciate any help?

Thanks,
Ahmad

Ahmad,

The naming can be done with a user-defined SKILL function - poParamCellNameMap -
search for that in the documentation (it's in transref/transref.pdf).

I don't think you can output the GDS layers per cell though. Neither the
"comprehensive log" or "hierarchy" options do that.

Regards,

Andrew.
 
Ahmad wrote, on 07/17/09 18:03:
Hi Andrew,

I'm still having the same problem, could you please help?

Thanks,
Ahmad


On Jul 15, 10:38 pm, Ahmad <ahmad.abdulgh...@gmail.com> wrote:
Hello Andrew,

Thanks for the hint.

I've checked the manual but I am not sure if I understood it
correctly.

What I did for test is:

1. Created a SKILL file named "test.il" with the following contents:

procedure( poParamCellNameMap( name ID )
prog( (newName)
sprintf(newName "ABC_%s_%s_XYZ" name ID)
return( newName)
); prog
); proc

2. Modified the stream out keys file to have this line:
streamOutKeys = list(nil
......
'userSkillFile "test.il"
)

3. Run PIPO from shell: pipo strmout strmOutKeys

I got the same results for cell names although I had no errors in the
log!

What wrong did I made?

Thanks and best regards,
Ahmad

On Jul 15, 8:17 pm, Andrew Beckett <andr...@DcEaLdEeTnEcTe.HcIoSm
wrote:

Reotaro Hashemoto wrote, on 07/15/09 12:37:
Hi,
I've layout that contains instances from many PDK pCells.
I need to do two things during PIPO stream out GDS:
1. Preserve the names of pCells to a standard value (e.g.
libName_cellName_count)
2. Control PIPO log such that it has list of: "cell - gds layers" for
each cell.
How can I do that with SKILL?
To export GDS I create my own PIPO keys file, like this: (I think the
solution would be here)
streamOutKeys = list(nil
'userSkillFile ""
'layerTable ""
'convertPin "geometry"
'libVersion "5.0"
'units "micron"
'scale 0.001
'cellMapTable ""
'caseSensitivity "preserve"
'errFile "PIPO.LOG"
'outFile "./testPcellName.gds"
'viewName "layout"
'primaryCell "a"
'libName "testUMC"
'runDir "./"
)
Then run pipo using ipc from within SKILL script.
I'd appreciate any help?
Thanks,
Ahmad
Ahmad,
The naming can be done with a user-defined SKILL function - poParamCellNameMap -
search for that in the documentation (it's in transref/transref.pdf).
I don't think you can output the GDS layers per cell though. Neither the
"comprehensive log" or "hierarchy" options do that.
Regards,
Andrew.
Sure. Been a bit busy the last couple of days. I'll take a look, possibly Monday.

Regards,

Andrew.
 
Hi Andrew,

I'm still having the same problem, could you please help?

Thanks,
Ahmad


On Jul 15, 10:38 pm, Ahmad <ahmad.abdulgh...@gmail.com> wrote:
Hello Andrew,

Thanks for the hint.

I've checked the manual but I am not sure if I understood it
correctly.

What I did for test is:

1. Created a SKILL file named "test.il" with the following contents:

 procedure( poParamCellNameMap( name ID )
        prog( (newName)
                sprintf(newName "ABC_%s_%s_XYZ" name ID)
                return( newName)
        ); prog
); proc

2. Modified the stream out keys file to have this line:
 streamOutKeys = list(nil
                ......
                'userSkillFile             "test.il"
)

3. Run PIPO from shell: pipo strmout strmOutKeys

I got the same results for cell names although I had no errors in the
log!

What wrong did I made?

Thanks and best regards,
Ahmad

On Jul 15, 8:17 pm, Andrew Beckett <andr...@DcEaLdEeTnEcTe.HcIoSm
wrote:

Reotaro Hashemoto wrote, on 07/15/09 12:37:

Hi,

I've layout that contains instances from many PDK pCells.

I need to do two things during PIPO stream out GDS:

1. Preserve the names of pCells to a standard value (e.g.
libName_cellName_count)

2. Control PIPO log such that it has list of: "cell - gds layers" for
each cell.

How can I do that with SKILL?

To export GDS I create my own PIPO keys file, like this: (I think the
solution would be here)
streamOutKeys = list(nil
        'userSkillFile             ""
        'layerTable                ""
        'convertPin                "geometry"
        'libVersion                "5.0"
        'units                     "micron"
        'scale                     0.001
        'cellMapTable              ""
        'caseSensitivity           "preserve"
        'errFile                   "PIPO.LOG"
        'outFile                   "./testPcellName.gds"
        'viewName                  "layout"
        'primaryCell               "a"
        'libName                   "testUMC"
        'runDir                    "./"
)

Then run pipo using ipc from within SKILL script.

I'd appreciate any help?

Thanks,
Ahmad

Ahmad,

The naming can be done with a user-defined SKILL function - poParamCellNameMap -
search for that in the documentation (it's in transref/transref.pdf).

I don't think you can output the GDS layers per cell though. Neither the
"comprehensive log" or "hierarchy" options do that.

Regards,

Andrew.
 
Andrew Beckett wrote, on 07/17/09 18:52:
Ahmad wrote, on 07/17/09 18:03:

What I did for test is:

1. Created a SKILL file named "test.il" with the following contents:

procedure( poParamCellNameMap( name ID )
prog( (newName)
sprintf(newName "ABC_%s_%s_XYZ" name ID)
return( newName)
); prog
); proc

2. Modified the stream out keys file to have this line:
streamOutKeys = list(nil
......
'userSkillFile "test.il"
)

3. Run PIPO from shell: pipo strmout strmOutKeys

I got the same results for cell names although I had no errors in the
log!

What wrong did I made?
Hi Ahmad,

I don't really know what you did, because I tried this, and it worked
(admittedly I did it from the GUI, but the streamOutKeys in the log file was the
same as yours). I tried your code too, and the PIPO.log showed the names all
being mapped.

Here's the code I used to do what you originally requested:

countTable=makeTable('countTable 0)
subMasterTable=makeTable('subMasterTable nil)
procedure(poParamCellNameMap(name id)
let((libCell count name)
;--------------------------------------------------------------------
; First check if this submaster has already been mapped, and
; retrieve the name if it has
;--------------------------------------------------------------------
if(name=subMasterTable[id] then
name
;--------------------------------------------------------------------
; Otherwise create the new name
;--------------------------------------------------------------------
else
libCell=list(id~>libName id~>cellName)
count=countTable[libCell]+1
countTable[libCell]=count
sprintf(name "%s_%s_%d" id~>libName id~>cellName count)
subMasterTable[id]=name
)
)
)

Regards,

Andrew.
 

Welcome to EDABoard.com

Sponsor

Back
Top