copy pin names

D

Dmitriy Shurin

Guest
I am building in layout decoder9->512 , is where any way to copy the pin
names out<0> ,out<1>... out<511> automatically without writing each
name?


--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG
 
Dmitriy Shurin wrote:

I am building in layout decoder9->512 , is where any way to copy the pin
names out<0> ,out<1>... out<511> automatically without writing each
name?
I wrote a pcell to do this for me. It generates a set of shape pins on a
given layer (you'll have to change this in the code yourself) with a
given name and spacing. You can add it to your layout, flatten it whilst
preserving pins and then change the layer and direction according to
your needs.

Improvements, as ever, gratefully received.

Roger

pcDefinePCell(
list(ddGetObj("unott_C35") "pin_generator" "layout")
((Cols float 0.0)
(StepX float 1.0)
(StepY float 1.0)
(Rows float 0.0)
(BusName string "Bus")
(IncOrDec boolean t)
)
let((pcMember pcStretchGroup stretchOffsetX stretchOffsetY Rows
StepY StepX Cols pcLib pcMaster pcInst
pcTerm pcPin pcPinName pcNet pcTermNet
pcNetName pcTermNetName pcMosaicInst tpcParameters pcParamProp
pcStep pcStepX pcStepY pcRepeat pcRepeatX
pcRepeatY pcIndexX pcIndexY pcLayer pcPurpose
pcLabelText pcLabelHeight pcPropText pcParamText pcCoords
pcPathWidth pcPolygonMargin BusIndex IncOrDec BusIndexVal InstCount
InstCountStr
)
(pcLib = (pcCellView~>lib))
(pcParameters = ((pcCellView~>parameters)~>value))
(pcParamProp = car(exists(prop pcParameters
((prop~>name) == "Rows")
)
))
(Rows = (pcParamProp~>value))
if( ((pcParamProp~>valueType) == "boolean")
(Rows = (Rows == "TRUE"))
)
(pcParamProp = car(exists(prop pcParameters
((prop~>name) == "StepX")
)
))
(StepX = (pcParamProp~>value))
if( ((pcParamProp~>valueType) == "boolean")
(StepX = (StepX == "TRUE"))
)
(pcParamProp = car(exists(prop pcParameters
((prop~>name) == "StepY")
)
))
(StepY = (pcParamProp~>value))
if( ((pcParamProp~>valueType) == "boolean")
(StepY = (StepY == "TRUE"))
)
(pcParamProp = car(exists(prop pcParameters
((prop~>name) == "Cols")
)
))
(Cols = (pcParamProp~>value))
if( ((pcParamProp~>valueType) == "boolean")
(Cols = (Cols == "TRUE"))
)
(pcParamProp = car(exists(prop pcParameters
((prop~>name) == "BusName")
)
))
(BusName = (pcParamProp~>value))
if( ((pcParamProp~>valueType) == "boolean")
(BusName = (BusName == "TRUE"))
)
(pcParamProp = car(exists(prop pcParameters
((prop~>name) == "IncOrDec")
)
))
(IncOrDec = (pcParamProp~>value))
if( ((pcParamProp~>valueType) == "boolean")
(IncOrDec = (IncOrDec == "TRUE"))
)
dbReplaceProp(pcCellView "viewSubType" "string" "maskLayoutParamCell")
dbReplaceProp(pcCellView "pin#" "int" 5)
dbReplaceProp(pcCellView "function" "string" "contact")
(pcRepeat = (pcRepeatX = (pcRepeatY = 1.0)))
(pcStep = (pcStepX = (pcStepY = 0.0)))
(pcStep = (pcStepY = car(errset(StepX))))
(pcRepeat = (pcRepeatY = Rows))
(pcStep = (pcStepY = StepY))
(pcIndexX = 0)
(InstCount = 0)
if(IncOrDec == nil
then
(pcStepY = (pcStepY * -1))
)
for( pcIndexY 0 (fix(pcRepeatY) - 1)
nil
(BusIndexVal = pcIndexY)
sprintf(BusIndex "%d" BusIndexVal)
(pcNetName = strcat(BusName "<" BusIndex ">"))
(pcTermNet = dbMakeNet(pcCellView pcNetName nil))
if( !(pcTerm = dbFindTermByName(pcCellView pcNetName))
then
(pcTerm = dbCreateTerm(pcTermNet pcNetName "inputOutput" 0))
)
(pcLayer = 35)
(pcPurpose = "pin")
(pcInst = dbCreateRect(pcCellView
list(pcLayer pcPurpose)
list((0.0:0.0 + (pcIndexY * pcStepY))
(0.5:0.5 + (pcIndexY * pcStepY))
)
))
sprintf(InstCountStr "%d" InstCount)
(InstCount = InstCount + 1)
(pcPin = dbCreatePin(pcTermNet pcInst InstCountStr))
setSGq(pcPin
'("top" "bottom" "left" "right") accessDir
)
if( !(pcTerm~>pins)
then
dbDeleteObject(pcTerm)
if( (!(pcTermNet~>figs) && !(pcTermNet~>instTerms))
then
dbDeleteObject(pcTermNet)
)
) t
)
(pcRepeat = (pcRepeatX = (pcRepeatY = 1.0)))
(pcStep = (pcStepX = (pcStepY = 0.0)))
(pcStep = (pcStepX = car(errset(StepX))))
(pcRepeat = (pcRepeatX = Cols))
(pcStep = (pcStepX = StepX))
(pcIndexY = 0)
if(IncOrDec == nil
then
(pcStepX = (pcStepX * -1))
)
for( pcIndexX 0 (fix(pcRepeatX) - 1)
nil
(BusIndexVal = pcIndexX)
sprintf(BusIndex "%d" BusIndexVal)
(pcNetName = strcat(BusName "<" BusIndex ">"))
(pcTermNet = dbMakeNet(pcCellView pcNetName nil))
if( !(pcTerm = dbFindTermByName(pcCellView pcNetName))
then
(pcTerm = dbCreateTerm(pcTermNet pcNetName "inputOutput" 0))
)
(pcLayer = 35)
(pcPurpose = "pin")
(pcInst = dbCreateRect(pcCellView
list(pcLayer pcPurpose)
list((0.0 + (pcIndexX * pcStepX):0.0)
(0.5 + (pcIndexX * pcStepX):0.5)
)
))
sprintf(InstCountStr "%d" InstCount)
(InstCount = InstCount + 1)
(pcPin = dbCreatePin(pcTermNet pcInst InstCountStr))
setSGq(pcPin
'("top" "bottom" "left" "right") accessDir
)
if( !(pcTerm~>pins)
then
dbDeleteObject(pcTerm)
if( (!(pcTermNet~>figs) && !(pcTermNet~>instTerms))
then
dbDeleteObject(pcTermNet)
)
) t
)
)
)
 
Dmitriy Shurin wrote:
I am building in layout decoder9->512 , is where any way to copy the pin
names out<0> ,out<1>... out<511> automatically without writing each
name?


In the "Create Pin" form you can enter out<0-511>, assign a x or y pitch and
place them all with one click (if its a symbolic pin) or draw the shape for the
first pin and all others will be placed with the pitch.
Ofcourse that means you have to have all the shapes of your signals placed with
that pitch.

Marc
 
Marc Heise wrote:
Dmitriy Shurin wrote:

I am building in layout decoder9->512 , is where any way to copy the pin
names out<0> ,out<1>... out<511> automatically without writing each
name?


In the "Create Pin" form you can enter out<0-511>, assign a x or y pitch
and place them all with one click (if its a symbolic pin) or draw the
shape for the first pin and all others will be placed with the pitch.
Ofcourse that means you have to have all the shapes of your signals
placed with that pitch.

Marc
Sorry, ofcourse it has to be out<0:511>
 
It works only in the schematic composer.
I wish we had this feature in the layout editor too -- I will request a
PCR for this.

regards,
Suresh

Marc Heise wrote:
Marc Heise wrote:

Dmitriy Shurin wrote:

I am building in layout decoder9->512 , is where any way to copy the pin
names out<0> ,out<1>... out<511> automatically without writing each
name?


In the "Create Pin" form you can enter out<0-511>, assign a x or y
pitch and place them all with one click (if its a symbolic pin) or
draw the shape for the first pin and all others will be placed with
the pitch.
Ofcourse that means you have to have all the shapes of your signals
placed with that pitch.

Marc


Sorry, ofcourse it has to be out<0:511
 
Suresh Jeevanandam wrote:

Marc Heise wrote:

Marc Heise wrote:

Dmitriy Shurin wrote:

I am building in layout decoder9->512 , is where any way to copy the
pin
names out<0> ,out<1>... out<511> automatically without writing each
name?


In the "Create Pin" form you can enter out<0-511>, assign a x or y
pitch and place them all with one click (if its a symbolic pin) or
draw the shape for the first pin and all others will be placed with
the pitch.
Ofcourse that means you have to have all the shapes of your signals
placed with that pitch.

Sorry, ofcourse it has to be out<0:511

It works only in the schematic composer.
I wish we had this feature in the layout editor too -- I will request
a PCR for this.
No, Marc is correct and made me look stupid :)

In my defense, I needed to pcell to do this anyway as I needed seperate
pin labels.

Cheers,

Roger
 
Suresh Jeevanandam wrote:
It works only in the schematic composer.
I wish we had this feature in the layout editor too -- I will request a
PCR for this.

regards,
Suresh

Marc Heise wrote:

Marc Heise wrote:

Dmitriy Shurin wrote:

I am building in layout decoder9->512 , is where any way to copy the
pin
names out<0> ,out<1>... out<511> automatically without writing each
name?


In the "Create Pin" form you can enter out<0-511>, assign a x or y
pitch and place them all with one click (if its a symbolic pin) or
draw the shape for the first pin and all others will be placed with
the pitch.
Ofcourse that means you have to have all the shapes of your signals
placed with that pitch.

Marc



Sorry, ofcourse it has to be out<0:511
Did you actually test it? This is working since some years for the Layout too
when creating Pins.

Marc
 
Roger Light wrote:
Suresh Jeevanandam wrote:

Marc Heise wrote:

Marc Heise wrote:

Dmitriy Shurin wrote:

I am building in layout decoder9->512 , is where any way to copy
the pin
names out<0> ,out<1>... out<511> automatically without writing each
name?


In the "Create Pin" form you can enter out<0-511>, assign a x or y
pitch and place them all with one click (if its a symbolic pin) or
draw the shape for the first pin and all others will be placed with
the pitch.
Ofcourse that means you have to have all the shapes of your signals
placed with that pitch.


Sorry, ofcourse it has to be out<0:511


It works only in the schematic composer.
I wish we had this feature in the layout editor too -- I will request
a PCR for this.

No, Marc is correct and made me look stupid :)

In my defense, I needed to pcell to do this anyway as I needed seperate
pin labels.

Cheers,

Roger
It wasnt my intention to make you look stupid. ;)
What you mean with seperate pin labels? You can control the layer of the labels
independent from the pin layer from the same Create->Pin menu.

Regards,
Marc
 
Marc Heise wrote:
Roger Light wrote:

No, Marc is correct and made me look stupid :)

In my defense, I needed to pcell to do this anyway as I needed
seperate pin labels.

It wasnt my intention to make you look stupid. ;)
What you mean with seperate pin labels? You can control the layer of the
labels independent from the pin layer from the same Create->Pin menu.
The design kit we use demands normal pins for diva but label "pins" for
Assura. Assura didn't recognise the labels attached to the diva pins
even if they were on the correct layer so I had to create the
seperately. Most vexing.

Cheers,

Roger
 
I did not test it properly. It works now :)

Thanks,
Suresh

Marc Heise wrote:
Suresh Jeevanandam wrote:


It works only in the schematic composer.
I wish we had this feature in the layout editor too -- I will request
a PCR for this.

regards,
Suresh

Marc Heise wrote:

Marc Heise wrote:

Dmitriy Shurin wrote:

I am building in layout decoder9->512 , is where any way to copy
the pin
names out<0> ,out<1>... out<511> automatically without writing each
name?


In the "Create Pin" form you can enter out<0-511>, assign a x or y
pitch and place them all with one click (if its a symbolic pin) or
draw the shape for the first pin and all others will be placed with
the pitch.
Ofcourse that means you have to have all the shapes of your signals
placed with that pitch.

Marc




Sorry, ofcourse it has to be out<0:511


Did you actually test it? This is working since some years for the
Layout too when creating Pins.

Marc
 
Assura didn't recognise the labels attached to the diva pins
even if they were on the correct layer so I had to create the
seperately. Most vexing.
that's because they were not labels but 'text displays'.

stéphane
 

Welcome to EDABoard.com

Sponsor

Back
Top