Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

diva cmd file for get the extracted view of the layout.

Status
Not open for further replies.

merlin_xm

Newbie level 2
Joined
Feb 24, 2006
Messages
2
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,295
cadence diva width drc

:?:where can download the example ( diva cmd file for get the extracted view of the layout)?who can tell me

Added after 32 minutes:

just it is diva rule file,extratedthe the layout
 

Hughes

Advanced Member level 3
Joined
Jun 10, 2003
Messages
715
Helped
113
Reputation
226
Reaction score
25
Trophy points
1,298
Activity points
5,984
geomandnot

There is an example in Cadence document.
 

    merlin_xm

    Points: 2
    Helpful Answer Positive Rating

merlin_xm

Newbie level 2
Joined
Feb 24, 2006
Messages
2
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,295
diva rule example

where ,i can't see ,
 

Hughes

Advanced Member level 3
Joined
Jun 10, 2003
Messages
715
Helped
113
Reputation
226
Reaction score
25
Trophy points
1,298
Activity points
5,984
layout extracted view

Under the "Write Diva Rules" section in "Diva Reference" manual, there is a sample file for diva DRC and extract purpose. Statements enclosured by ivIf(switch("extract?") ... ) statement are for extraction.
 

Hughes

Advanced Member level 3
Joined
Jun 10, 2003
Messages
715
Helped
113
Reputation
226
Reaction score
25
Trophy points
1,298
Activity points
5,984
diva layer area measure extract log file commend

Here is the example from Cadence's document:
Code:
drcExtractRules(

/* The first section contains the geomOr statements that associate symbols with the physical layers to create derived layers. You can use these symbols in the rest of the rule set. You must put the geomOr statements before any switches so they are executed regardless of which switch you use at run time.

 */

bkgnd = geomBkgnd()
 poly = geomOr( "poly" )
 active = geomOr( "active" )
 gate = geomOr( "gate" )
 contact = geomOr( "contact" )
 metal1 = geomOr( "metal1" )
 via = geomOr( "via" )
 metal2 = geomOr( "metal2" )

/*

DRC RULES FOR PWELL CMOS
The first ivIf switch is the drc? switch. If you use this switch, 
the DRC part of the file automatically executes during a DRC run.

*/

ivIf( switch( "drc?" ) then

/*

 * POLY RULES

 */

 drc( poly width < 3 "Poly width < 3.0 " ) 
 drc( poly sep < 3 "Poly to Poly spacing < 3.0" ) 
 drc( poly notch < 3 "Poly to Poly spacing < 3.0" ) 
 drc( poly active sep < 2 "Field Poly to Active spacing < 
    	 2.0" ) 

/* The next three lines define the gate area and its edges.

 */

gate = geomAnd( poly active ) 
gatew = geomGetEdge( gate inside poly ) 
gatel = geomGetEdge( gate coincident poly ) 

/* The next two commands check the gate extension onto the field and the source/ drain enclosure of the gate. */

 */

drc( poly gatew enc < 3 opposite "Poly gate overlap onto field < 3.0" ) 
drc( active gatel enc < 3 opposite "Source/Drain enclosure of gate < 3.0" ) 

/*

 * CONTACT RULES

/* The saveDerived statements output bad contact geometries to the error layer. The first command outputs parts of the contacts that are not covered by the poly or active shapes; the second command outputs parts of the contacts that are not covered by metal.

*/

saveDerived( geomAndNot( contact geomOr( active poly ) ) 
"Contact not inside Active or Poly" ) 
 saveDerived( geomAndNot( contact metal1 ) 
"Contacts not covered by Metal1" ) 
 drc( contact width < 3 "Contact width < 3.0" ) 
 drc( contact sep < 3 "Contact to Contact spacing < 3.0" ) 
 drc( poly contact enc < 2 "Contact inside Poly < 2.0" ) 
 drc( metal1 contact enc < 2 "Contact inside Metal1 < 2.0" ) 
 drc( active contact enc < 2 "Contact inside Active < 2.0" )

/*

 * METAL1 RULES

 */

 drc( metal1 width < 3 "Metal1 width < 3.0" ) 
 drc( metal1 sep < 4 "Metal1 to Metal1 spacing < 4.0" ) 
 drc( metal1 notch < 4 "Metal1 to Metal1 spacing < 4.0" )

/*

 * VIA RULES
 drc( via width < 3 "Via width < 3.0" ) 
 drc( via sep < 3 "Via to Via spacing < 3.0" ) 
 drc( via contact sep < 3 "Via to Contact spacing < 3.0" ) 

/* This saveDerived statement outputs vias that overlap onto contacts.

 */

saveDerived( geomOverlap( via contact ) "Via not allowed over contacts" ) 
 drc( via poly sep < 2 "Via to Poly spacing < 2.0" ) 

/* This saveDerived statement outputs vias that overlap onto poly. 

 */ 

saveDerived( geomOverlap( via poly ) "Via not allowed over Poly" ) 
 drc( metal1 via enc < 2 "Via inside Metal1 < 2.0" ) 
 drc( metal2 via enc < 2 "Via inside Metal2 < 2.0" ) 

/* The next two saveDerived statements output the parts of vias that are not covered by metal1 or metal2. */

 */

saveDerived( geomAndNot( via metal1 ) "Via not inside 
Metal1" ) 
saveDerived( geomAndNot( via metal2 ) "Via not inside 
Metal2" )

/*

 * METAL2 RULES

 */

 drc( metal2 width < 5 "Metal2 width < 5.0" ) 
 drc( metal2 sep < 5 "Metal2 to Metal2 spacing < 5.0" ) 
 drc( metal2 notch < 5 "Metal2 to Metal2 spacing < 5.0" )
 )

/*

 * EXTRACT RULES FOR PWELL CMOS

/* The second ivIf switch is the extract? switch. If you use this switch, the extraction part of the file automatically executes during an extract run.

 */

ivIf( switch( "extract?" ) then

/* The first section of the extraction part of the rules contains the geomOr statements that change the physical layers used only for extraction to symbols that you can use in the rest of the extraction rule set.
    You must precede special characters used in layer names with a backslash, so layer "p+" is renamed "p\+" and layer "n+" is renamed "n\+". 

 */

well = geomOr( "well" )
    ngate = geomOr( "ngate" )
    pgate = geomOr( "pgate" )
    psd = geomOr( "psd" )
    p\+ = geomOr( "p+" )
    nsd = geomOr( "nsd" )
    n\+ = geomOr( "n+" ) 

/* This section contains boolean functions such as geomAnd and geomAndNot that create new layers for device recognition and define interconnections between layers.

 */

 nwell = geomAndNot( bkgnd well ) 
 pdiff = geomAnd( active p\+ )
 ndiff = geomAnd( active n\+ )
 pgate = geomAnd( poly pdiff ) 
 ngate = geomAnd( poly ndiff ) 
 psd = geomAndNot( pdiff poly ) 
 nsd = geomAndNot( ndiff poly )
 ptap = geomAnd( well psd ) 
 ntap = geomAnd( nwell nsd )
 ptie = geomOr( ptap )
 ntie = geomOr( ntap )

/* The geomConnect statement defines the connections between the layers and establishes the network to be extracted.

 */

 geomConnect(
 via( via metal1 metal2 )
 via( contact psd nsd poly metal1 )
 via( ntie nsd ntap )
 via( ptie psd ptap )
 )

/* The geomStamp statement transfers connectivity information from one layer to another. The following example transfers the well tie connectivity to the well itself. This prevents the well from acting as a connection layer forming soft connects.

 */

 nwell = geomStamp( nwell ntap error )
 well = geomStamp( well ptap error )

/* The extractDevice statements define the devices used in the circuit.

 */

 extractDevice( pgate (poly "G")(psd "S" "D") (nwell "B")
 "pfet ivpcell" )
 extractDevice( ngate (poly "G") (nsd "S" "D") (well "B")
 "nfet ivpcell" ) 

/* The measureParameter commands extract device parameters. These parameters can then be checked when you run an LVS.
    Use the coefficient 0.5 to measure the gate width and gate length parameters because the measureParameter command measures the length of all edges defined in the rule and you only want the length of one edge. For example, to measure the length of a gate, measure the length of the gate edges that are inside and not coincident with poly. Two edges satisfy that requirement. If you do not multiply by 0.5, you are counting the gate length twice. 

 */

 pgateWidth = measureParameter( length ( pgate coincident poly ) 0.5 )
 pgateLength = measureParameter( length ( pgate inside poly ) 0.5 )

/* Add the parameters to the devices by using the saveParameter command. The parameter names must be the same as the names that are used in the LVS rules.

 */

 saveParameter( pgateWidth "w" )
 saveParameter( pgateLength "l" )
 ngateWidth = measureParameter( length ( ngate coincident poly ) 0.5 )
 ngateLength = measureParameter( length ( ngate inside poly ) 0.5 )
 saveParameter( ngateWidth "w" )
 saveParameter( ngateLength "l" )

/* The saveInterconnect command writes layers to the extracted cellview. Save the layers defined in the geomConnect command so that you can cross-probe your nets after running LVS.

 */

 saveInterconnect( nsd psd poly contact metal1 via metal2 )

/* The saveRecognition command creates the device recognition polygons in the extracted cellview. It is used in conjunction with the Model view name ivpcell in the extractDevice or extractMOS command.

 */

 saveRecognition( ngate "ngate" ) 
 saveRecognition( pgate "pgate" ) 
 )
)
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top