Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
layout editor.pdf
Скачиваний:
180
Добавлен:
05.06.2015
Размер:
3.04 Mб
Скачать

Virtuoso XL Layout Editor User Guide

Setting Up Device Abutment for Virtuoso XL Layout Editor

6.If the cells can be abutted (the abutment connection condition is 1 or 2), the cells are abutted to the reference edges and the pins are aligned perpendicular to the direction of abutment.

If the cells cannot be abutted (the abutment connection condition is 3), they remain in their original configuration.

Sample Parameterized Cells Set Up for Abutment

Example 1

The generic example below shows what each of the different parts does.

----------------------------------------------------------------

;Function: abutFunction(iA iB pA pB pASide connection event @optional (group nil))

;Inputs: group - the abutment group that these two cells belong to.

;_______________________________________________________________

;

 

 

;

iA

= Instance Id of cell that will move during abutment

;

_______________________________________________________________

;

 

 

;

iB

= Instance Id of cell being abutted to

;

_______________________________________________________________

;

 

 

;

pA

= Overlapping Pin Fig of iA

;

_______________________________________________________________

;

 

 

;

pB

= Overlapping Pin Fig of iB

;

_______________________________________________________________

;

 

 

;

pASide

= Abutting pin access direction

;_______________________________________________________________

;connection = an integer value of 1 or 2 that indicates:

;

;1. pins are connected to the same net and do not

;connect to any other pin.

;

;2. pins are connected to the same net and the net

December 2002

121

Product Version 5.0

Virtuoso XL Layout Editor User Guide

Setting Up Device Abutment for Virtuoso XL Layout Editor

;connects to other pins

;_______________________________________________________________

;

event

= integer that represents abutment event:

;

;1. compute abutment offset

;2. pcell parameter adjustment for abutment

;3. pcell parameter adjustment for unabutment

;_______________________________________________________________

;

group

= abutment group pointer available to events 2 and 3

;_______________________________________________________________

;Outputs: depends

;

; Side effects:

;

procedure( abutFunction(iA iB pA pB pASide connection event @optional (group nil))

prog((result)

case(event

(1 ; Compute offset

result = getAbutmentOffset(iA iB pA pB pASide connection)

)

(2 ; Adjust pcell parameters

result = setAbutmentParams(iA iB pA pB pASide connection group)

)

(3 ; Adjust pcell parameters back to default resetAbutmentParams(group iA iB) result = t

)

(t ; Anything else return a nil result = nil

)

)

return(result)

)

)

December 2002

122

Product Version 5.0

Virtuoso XL Layout Editor User Guide

Setting Up Device Abutment for Virtuoso XL Layout Editor

Example 2

This example shows how to add abutment properties to pins in an inverter pcell.

.; *** the following 4 pins

are on metal1 and are on ***

 

;

***

the power and ground rails. This

will allow

***

;

***

abutment to other

standard cells

 

***

obj = leftVddPin~>dbId

dbReplaceProp(obj "abutAccessDir" "list" list("left")) dbReplaceProp(obj "abutClass" "string" "stdcell") dbReplaceProp(obj "abutFunction" "string" "stdCellFunc")

;*** the following property is a technique for passing ***

;*** information to the user defined function. In this ***

;*** case the minimum cell height is dependent on many ***

;*** factors including design rules and is originally ***

;*** calculated in the pcell code. This avoids ***

;*** duplicating calculations in the user-defined ***

;*** function ****

dbReplaceProp(obj "minCellHeight" "float" minH)

obj = rightVddPin~>dbId

dbReplaceProp(obj "abutAccessDir" "list" list("right")) dbReplaceProp(obj "abutClass" "string" "stdcell") dbReplaceProp(obj "abutFunction" "string" "stdCellFunc") dbReplaceProp(obj "minCellHeight" "float" minH)

obj = leftGndPin~>dbId

dbReplaceProp(obj "abutAccessDir" "list" list("left")) dbReplaceProp(obj "abutClass" "string" "stdcell") dbReplaceProp(obj "abutFunction" "string" "stdCellFunc") dbReplaceProp(obj "minCellHeight" "float" minH)

obj = rightGndPin~>dbId

dbReplaceProp(obj "abutAccessDir" "list" list("right")) dbReplaceProp(obj "abutClass" "string" "stdcell") dbReplaceProp(obj "abutFunction" "string" "stdCellFunc") dbReplaceProp(obj "minCellHeight" "float" minH)

;*** The following 4 pins are the diffusion pins ***

;*** of the individual MOS devices in the inverter ***

;*** this will allow abutment of other individual ***

December 2002

123

Product Version 5.0

Virtuoso XL Layout Editor User Guide

Setting Up Device Abutment for Virtuoso XL Layout Editor

; *** MOS devices to the inverter ***

obj = POutPin~>dbId

dbReplaceProp(obj "abutAccessDir" "list" list("right")) dbReplaceProp(obj "abutClass" "string" "ptran") dbReplaceProp(obj "abutFunction" "string" "mosAbutFunc") dbReplaceProp(obj "contactParam" "string" "POutCnts") dbReplaceProp(obj "w" "float" pw)

; *** these spacing properties are used if abutment fails dbReplaceProp(obj "vxlInstSpacingDir" "list" list("right")) dbReplaceProp(obj "vxlInstSpacingRule" "float" .35 )

obj = NOutPin~>dbId

dbReplaceProp(obj "abutAccessDir" "list" list("right")) dbReplaceProp(obj "abutClass" "string" "ntran") dbReplaceProp(obj "abutFunction" "string" "mosAbutFunc") dbReplaceProp(obj "contactParam" "string" "NOutCnts") dbReplaceProp(obj "w" "float" nw)

dbReplaceProp(obj "vxlInstSpacingDir" "list" list("right")) dbReplaceProp(obj "vxlInstSpacingRule" "float" .35 )

obj = PPwrPin~>dbId

dbReplaceProp(obj "abutAccessDir" "list" list("left")) dbReplaceProp(obj "abutClass" "string" "ptran") dbReplaceProp(obj "abutFunction" "string" "mosAbutFunc") dbReplaceProp(obj "contactParam" "string" "PPwrCnts") dbReplaceProp(obj "w" "float" pw)

dbReplaceProp(obj "vxlInstSpacingDir" "list" list("left")) dbReplaceProp(obj "vxlInstSpacingRule" "float" .35 )

obj = NPwrPin~>dbId

dbReplaceProp(obj "abutAccessDir" "list" list("left")) dbReplaceProp(obj "abutClass" "string" "ntran") dbReplaceProp(obj "abutFunction" "string" "mosAbutFunc") dbReplaceProp(obj "contactParam" "string" "NPwrCnts") dbReplaceProp(obj "w" "float" nw)

dbReplaceProp(obj "vxlInstSpacingDir" "list" list("left")) dbReplaceProp(obj "vxlInstSpacingRule" "float" .35 )

December 2002

124

Product Version 5.0

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]