EDAboard.com | EDAboard.eu | EDAboard.de | EDAboard.co.uk | RTV forum PL | NewsGroups PL

pcell with multiple layouts

elektroda.net NewsGroups Forum Index - Cadence - pcell with multiple layouts

Goto page 1, 2  Next

rick
Guest

Wed Jun 30, 2010 1:31 am   



I have created two versions of pcell (same schematic) that has 2
different layouts which currently in separate skill routines. I
would like to have one cell that has a cyclic button to select the
desired layout. What is the best
way to implement this type of feature? A code example would be
greatly appreciated

Thanks

Rick

rick
Guest

Wed Jun 30, 2010 2:00 am   



On Jun 29, 3:31 pm, rick <ej...@pacbell.net> wrote:
Quote:
I have created two versions of pcell (same schematic)  that has 2
different layouts which currently in separate skill routines.    I
would like to have one cell that has a cyclic button to select the
desired layout.  What is the best
way to implement this type of feature?    A code example would be
greatly appreciated

Thanks

Rick

Ive managed to get the layouts to switch but the CDF's (parameters)
are not switching/updating. One of the
differences is some of the parameters are not editable.

Rick

rick
Guest

Wed Jun 30, 2010 2:15 am   



On Jun 29, 3:31 pm, rick <ej...@pacbell.net> wrote:
Quote:
I have created two versions of pcell (same schematic)  that has 2
different layouts which currently in separate skill routines.    I
would like to have one cell that has a cyclic button to select the
desired layout.  What is the best
way to implement this type of feature?    A code example would be
greatly appreciated

Thanks

Rick

I kinda got it to work but the CDF/parameters are not quite right. If
you enter in values that are ok for layout-1 they are
carried into layout-2 even though they are not editable....they should
revert back to the default values. Example, layout-1
has variable a finger count whereas layout-2 does not, its hard
coded. I guess I need some type of reset routine or something?

Rick

I-F AB
Guest

Wed Jun 30, 2010 11:00 am   



On Jun 30, 7:15 am, rick <ej...@pacbell.net> wrote:
Quote:
On Jun 29, 3:31 pm, rick <ej...@pacbell.net> wrote:

I have created two versions of pcell (same schematic)  that has 2
different layouts which currently in separate skill routines.    I
would like to have one cell that has a cyclic button to select the
desired layout.  What is the best
way to implement this type of feature?    A code example would be
greatly appreciated

Thanks

Rick

I kinda got it to work but the CDF/parameters are not quite right.  If
you enter in values that are ok for layout-1 they are
carried into layout-2 even though they are not editable....they should
revert back to the default values.   Example, layout-1
has variable a finger count whereas layout-2 does not, its hard
coded.  I guess I need some type of reset routine or something?

Rick

Hi Rick,

How about something like below:


pcDefinePCell(
list( ddGetObj("Tech250") "nmos" "layout" )

;;; parameter defaults
( ( lch "0.5u" ) ( wch "0.6u" ) (switchPcell "pcell1" )
( finger "1" ) ( totalch "0.6u" ) ( Gconn "None" )
( SDconn "None" ) ( Bulktie "None" ) ( TapSpa "0.3u" )
( TapRow "1" )
)

if( switchPcell == "pcell1" then
MOS_PCell_1(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
else
MOS_PCell_2(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
)

) ; pcDefinePCell


MOS_PCell_1 & MOS_PCell_2 are 2 procedures where you define layers,
shapes, etc.
'switchPcell' is a CDF parameter (default points to MOS_PCell_1()
procedure) which controls which layout to use.

rick
Guest

Wed Jun 30, 2010 7:28 pm   



On Jun 30, 1:00 am, I-F AB <cop0...@gmail.com> wrote:
Quote:
On Jun 30, 7:15 am, rick <ej...@pacbell.net> wrote:



On Jun 29, 3:31 pm, rick <ej...@pacbell.net> wrote:

I have created two versions of pcell (same schematic)  that has 2
different layouts which currently in separate skill routines.    I
would like to have one cell that has a cyclic button to select the
desired layout.  What is the best
way to implement this type of feature?    A code example would be
greatly appreciated

Thanks

Rick

I kinda got it to work but the CDF/parameters are not quite right.  If
you enter in values that are ok for layout-1 they are
carried into layout-2 even though they are not editable....they should
revert back to the default values.   Example, layout-1
has variable a finger count whereas layout-2 does not, its hard
coded.  I guess I need some type of reset routine or something?

Rick

Hi Rick,

How about something like below:

pcDefinePCell(
 list( ddGetObj("Tech250") "nmos" "layout" )

 ;;; parameter defaults
 ( ( lch     "0.5u"   ) ( wch     "0.6u"   ) (switchPcell  "pcell1" )
   ( finger  "1"      ) ( totalch "0.6u"   ) ( Gconn   "None"   )
   ( SDconn  "None" ) ( Bulktie "None"   ) ( TapSpa  "0.3u"  )
( TapRow  "1"  )
 )

 if(   switchPcell == "pcell1"   then
    MOS_PCell_1(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 else
    MOS_PCell_2(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 )

)  ; pcDefinePCell

MOS_PCell_1 & MOS_PCell_2 are 2 procedures where you define layers,
shapes, etc.
'switchPcell' is a CDF parameter (default points to MOS_PCell_1()
procedure) which controls which layout to use.

I have something very close and the layout does switch but the
property panel does not update with the
correct fields for the new layout after the second switch......like
that makes sense! :^) Restated.....

1) compile the cell, instantiate and query. Everything is correct.
layoutA --> parameters for A

2) switch for layoutB
layoutB --> parameters for B (yay!)

3) switch back to layoutA
layoutA --> parameters for B still :^(

Rick

I-F AB
Guest

Fri Jul 02, 2010 6:59 am   



On Jul 1, 12:28 am, rick <ej...@pacbell.net> wrote:
Quote:
On Jun 30, 1:00 am, I-F AB <cop0...@gmail.com> wrote:



On Jun 30, 7:15 am, rick <ej...@pacbell.net> wrote:

On Jun 29, 3:31 pm, rick <ej...@pacbell.net> wrote:

I have created two versions of pcell (same schematic)  that has 2
different layouts which currently in separate skill routines.    I
would like to have one cell that has a cyclic button to select the
desired layout.  What is the best
way to implement this type of feature?    A code example would be
greatly appreciated

Thanks

Rick

I kinda got it to work but the CDF/parameters are not quite right.  If
you enter in values that are ok for layout-1 they are
carried into layout-2 even though they are not editable....they should
revert back to the default values.   Example, layout-1
has variable a finger count whereas layout-2 does not, its hard
coded.  I guess I need some type of reset routine or something?

Rick

Hi Rick,

How about something like below:

pcDefinePCell(
 list( ddGetObj("Tech250") "nmos" "layout" )

 ;;; parameter defaults
 ( ( lch     "0.5u"   ) ( wch     "0.6u"   ) (switchPcell  "pcell1" )
   ( finger  "1"      ) ( totalch "0.6u"   ) ( Gconn   "None"   )
   ( SDconn  "None" ) ( Bulktie "None"   ) ( TapSpa  "0.3u"  )
( TapRow  "1"  )
 )

 if(   switchPcell == "pcell1"   then
    MOS_PCell_1(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 else
    MOS_PCell_2(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 )

)  ; pcDefinePCell

MOS_PCell_1 & MOS_PCell_2 are 2 procedures where you define layers,
shapes, etc.
'switchPcell' is a CDF parameter (default points to MOS_PCell_1()
procedure) which controls which layout to use.

I have something very close and the layout does switch but the
property panel does not update with the
correct fields for the new layout after the second switch......like
that makes sense!  :^)   Restated.....

1)  compile the cell, instantiate and query.  Everything is correct.
layoutA --> parameters for A

2)   switch for layoutB
layoutB -->  parameters for B  (yay!)

3)   switch back to layoutA
layoutA -->   parameters for B still   :^(

Rick

I believe the problem now is how your parameters interact.
By the way, are you using CDF parameters?
Better take a look at how to use them.

The CDF parameter 'switchPcell' can hide CDF parameter "TapSpa" from
the form in this example :

cdfCreateParam( cdfId
?name "TapSpa"
?prompt "Tap Extension"
?units "lengthMetric"
?defValue "300.0n"
?type "string"
?display " equal(cdfgData->switchPcell->value
\"pcell1\") "
?callback "MOS_PCell_1( 'TapSpaR )"
?parseAsNumber "yes"
?parseAsCEL "yes"
)



Best regards,
I-FAB

rick
Guest

Fri Jul 02, 2010 5:12 pm   



On Jul 1, 8:59 pm, I-F AB <cop0...@gmail.com> wrote:
Quote:
On Jul 1, 12:28 am, rick <ej...@pacbell.net> wrote:



On Jun 30, 1:00 am, I-F AB <cop0...@gmail.com> wrote:

On Jun 30, 7:15 am, rick <ej...@pacbell.net> wrote:

On Jun 29, 3:31 pm, rick <ej...@pacbell.net> wrote:

I have created two versions of pcell (same schematic)  that has 2
different layouts which currently in separate skill routines.    I
would like to have one cell that has a cyclic button to select the
desired layout.  What is the best
way to implement this type of feature?    A code example would be
greatly appreciated

Thanks

Rick

I kinda got it to work but the CDF/parameters are not quite right.  If
you enter in values that are ok for layout-1 they are
carried into layout-2 even though they are not editable....they should
revert back to the default values.   Example, layout-1
has variable a finger count whereas layout-2 does not, its hard
coded.  I guess I need some type of reset routine or something?

Rick

Hi Rick,

How about something like below:

pcDefinePCell(
 list( ddGetObj("Tech250") "nmos" "layout" )

 ;;; parameter defaults
 ( ( lch     "0.5u"   ) ( wch     "0.6u"   ) (switchPcell  "pcell1" )
   ( finger  "1"      ) ( totalch "0.6u"   ) ( Gconn   "None"   )
   ( SDconn  "None" ) ( Bulktie "None"   ) ( TapSpa  "0.3u"  )
( TapRow  "1"  )
 )

 if(   switchPcell == "pcell1"   then
    MOS_PCell_1(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 else
    MOS_PCell_2(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 )

)  ; pcDefinePCell

MOS_PCell_1 & MOS_PCell_2 are 2 procedures where you define layers,
shapes, etc.
'switchPcell' is a CDF parameter (default points to MOS_PCell_1()
procedure) which controls which layout to use.

I have something very close and the layout does switch but the
property panel does not update with the
correct fields for the new layout after the second switch......like
that makes sense!  :^)   Restated.....

1)  compile the cell, instantiate and query.  Everything is correct..
layoutA --> parameters for A

2)   switch for layoutB
layoutB -->  parameters for B  (yay!)

3)   switch back to layoutA
layoutA -->   parameters for B still   :^(

Rick

I believe the problem now is how your parameters interact.
By the way, are you using CDF parameters?
Better take a look at how to use them.

The CDF parameter 'switchPcell' can hide CDF parameter "TapSpa" from
the form in this example :

    cdfCreateParam( cdfId
        ?name           "TapSpa"
        ?prompt         "Tap Extension"
        ?units            "lengthMetric"
        ?defValue       "300.0n"
        ?type              "string"
        ?display          " equal(cdfgData->switchPcell->value
\"pcell1\") "
        ?callback       "MOS_PCell_1( 'TapSpaR )"
        ?parseAsNumber  "yes"
        ?parseAsCEL     "yes"
    )

Best regards,
I-FAB

Just to confirm, use the CDF equation to select whether a parameter is
visible...is that correct?
One other issue, I need to reset one of the parameters back to the
default value. Would the
same methodology work?

Thanks

I-F AB
Guest

Mon Jul 05, 2010 5:23 am   



On Jul 2, 10:12 pm, rick <ej...@pacbell.net> wrote:
Quote:
On Jul 1, 8:59 pm, I-F AB <cop0...@gmail.com> wrote:



On Jul 1, 12:28 am, rick <ej...@pacbell.net> wrote:

On Jun 30, 1:00 am, I-F AB <cop0...@gmail.com> wrote:

On Jun 30, 7:15 am, rick <ej...@pacbell.net> wrote:

On Jun 29, 3:31 pm, rick <ej...@pacbell.net> wrote:

I have created two versions of pcell (same schematic)  that has 2
different layouts which currently in separate skill routines.    I
would like to have one cell that has a cyclic button to select the
desired layout.  What is the best
way to implement this type of feature?    A code example would be
greatly appreciated

Thanks

Rick

I kinda got it to work but the CDF/parameters are not quite right..  If
you enter in values that are ok for layout-1 they are
carried into layout-2 even though they are not editable....they should
revert back to the default values.   Example, layout-1
has variable a finger count whereas layout-2 does not, its hard
coded.  I guess I need some type of reset routine or something?

Rick

Hi Rick,

How about something like below:

pcDefinePCell(
 list( ddGetObj("Tech250") "nmos" "layout" )

 ;;; parameter defaults
 ( ( lch     "0.5u"   ) ( wch     "0.6u"   ) (switchPcell  "pcell1" )
   ( finger  "1"      ) ( totalch "0.6u"   ) ( Gconn   "None"   )
   ( SDconn  "None" ) ( Bulktie "None"   ) ( TapSpa  "0.3u"  )
( TapRow  "1"  )
 )

 if(   switchPcell == "pcell1"   then
    MOS_PCell_1(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 else
    MOS_PCell_2(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 )

)  ; pcDefinePCell

MOS_PCell_1 & MOS_PCell_2 are 2 procedures where you define layers,
shapes, etc.
'switchPcell' is a CDF parameter (default points to MOS_PCell_1()
procedure) which controls which layout to use.

I have something very close and the layout does switch but the
property panel does not update with the
correct fields for the new layout after the second switch......like
that makes sense!  :^)   Restated.....

1)  compile the cell, instantiate and query.  Everything is correct.
layoutA --> parameters for A

2)   switch for layoutB
layoutB -->  parameters for B  (yay!)

3)   switch back to layoutA
layoutA -->   parameters for B still   :^(

Rick

I believe the problem now is how your parameters interact.
By the way, are you using CDF parameters?
Better take a look at how to use them.

The CDF parameter 'switchPcell' can hide CDF parameter "TapSpa" from
the form in this example :

    cdfCreateParam( cdfId
        ?name           "TapSpa"
        ?prompt         "Tap Extension"
        ?units            "lengthMetric"
        ?defValue       "300.0n"
        ?type              "string"
        ?display          " equal(cdfgData->switchPcell->value
\"pcell1\") "
        ?callback       "MOS_PCell_1( 'TapSpaR )"
        ?parseAsNumber  "yes"
        ?parseAsCEL     "yes"
    )

Best regards,
I-FAB

Just to confirm, use the CDF equation to select whether a parameter is
visible...is that correct?
One other issue, I need to reset one of the parameters back to the
default value.   Would the
same methodology work?

Thanks

Hi,

Yes, the command equal() controls visibility of the parameter form,
use editable() command if needed.
To reset parameters back to default, maybe you would need to specify
in a callback
(here would be the callback trigger when changing the 'switchPcell'
parameter) i.e. using something like :

;;;callback procedure
.......
cdfgData->Param1_MOS_PCell_1->value = cdfgData->Param1_MOS_PCell_1-
Quote:
defValue
cdfgData->Param2_MOS_PCell_1->value = cdfgData->Param2_MOS_PCell_1-
defValue
cdfgData->Param3_MOS_PCell_1->value = cdfgData->Param3_MOS_PCell_1-
defValue
.......


There might be a better/simpler way to do this but this is what I
have.

Best regards,
I-FAB

rick
Guest

Tue Jul 06, 2010 5:57 pm   



On Jul 4, 7:23 pm, I-F AB <cop0...@gmail.com> wrote:
Quote:
On Jul 2, 10:12 pm, rick <ej...@pacbell.net> wrote:



On Jul 1, 8:59 pm, I-F AB <cop0...@gmail.com> wrote:

On Jul 1, 12:28 am, rick <ej...@pacbell.net> wrote:

On Jun 30, 1:00 am, I-F AB <cop0...@gmail.com> wrote:

On Jun 30, 7:15 am, rick <ej...@pacbell.net> wrote:

On Jun 29, 3:31 pm, rick <ej...@pacbell.net> wrote:

I have created two versions of pcell (same schematic)  that has 2
different layouts which currently in separate skill routines.    I
would like to have one cell that has a cyclic button to select the
desired layout.  What is the best
way to implement this type of feature?    A code example would be
greatly appreciated

Thanks

Rick

I kinda got it to work but the CDF/parameters are not quite right.  If
you enter in values that are ok for layout-1 they are
carried into layout-2 even though they are not editable....they should
revert back to the default values.   Example, layout-1
has variable a finger count whereas layout-2 does not, its hard
coded.  I guess I need some type of reset routine or something?

Rick

Hi Rick,

How about something like below:

pcDefinePCell(
 list( ddGetObj("Tech250") "nmos" "layout" )

 ;;; parameter defaults
 ( ( lch     "0.5u"   ) ( wch     "0.6u"   ) (switchPcell  "pcell1" )
   ( finger  "1"      ) ( totalch "0.6u"   ) ( Gconn   "None"   )
   ( SDconn  "None" ) ( Bulktie "None"   ) ( TapSpa  "0..3u"  )
( TapRow  "1"  )
 )

 if(   switchPcell == "pcell1"   then
    MOS_PCell_1(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 else
    MOS_PCell_2(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 )

)  ; pcDefinePCell

MOS_PCell_1 & MOS_PCell_2 are 2 procedures where you define layers,
shapes, etc.
'switchPcell' is a CDF parameter (default points to MOS_PCell_1()
procedure) which controls which layout to use.

I have something very close and the layout does switch but the
property panel does not update with the
correct fields for the new layout after the second switch......like
that makes sense!  :^)   Restated.....

1)  compile the cell, instantiate and query.  Everything is correct.
layoutA --> parameters for A

2)   switch for layoutB
layoutB -->  parameters for B  (yay!)

3)   switch back to layoutA
layoutA -->   parameters for B still   :^(

Rick

I believe the problem now is how your parameters interact.
By the way, are you using CDF parameters?
Better take a look at how to use them.

The CDF parameter 'switchPcell' can hide CDF parameter "TapSpa" from
the form in this example :

    cdfCreateParam( cdfId
        ?name           "TapSpa"
        ?prompt         "Tap Extension"
        ?units            "lengthMetric"
        ?defValue       "300.0n"
        ?type              "string"
        ?display          " equal(cdfgData->switchPcell->value
\"pcell1\") "
        ?callback       "MOS_PCell_1( 'TapSpaR )"
        ?parseAsNumber  "yes"
        ?parseAsCEL     "yes"
    )

Best regards,
I-FAB

Just to confirm, use the CDF equation to select whether a parameter is
visible...is that correct?
One other issue, I need to reset one of the parameters back to the
default value.   Would the
same methodology work?

Thanks

Hi,

Yes, the command equal() controls visibility of the parameter form,
use editable() command if needed.
To reset parameters back to default, maybe you would need to specify
in a callback
(here would be the callback trigger when changing the 'switchPcell'
parameter) i.e. using something like :

;;;callback procedure
......
cdfgData->Param1_MOS_PCell_1->value   =   cdfgData->Param1_MOS_PCell_1->defValue

cdfgData->Param2_MOS_PCell_1->value   =   cdfgData->Param2_MOS_PCell_1->defValue

cdfgData->Param3_MOS_PCell_1->value   =   cdfgData->Param3_MOS_PCell_1->defValue

......

There might be a better/simpler way to do this but this is what I
have.

Best regards,
I-FAB

Can you please provide an example this, I am syntax-tically
challenged! :^)

Thanks

Rick

rick
Guest

Wed Jul 07, 2010 2:14 am   



On Jul 6, 7:57 am, rick <ej...@pacbell.net> wrote:
Quote:
On Jul 4, 7:23 pm, I-F AB <cop0...@gmail.com> wrote:



On Jul 2, 10:12 pm, rick <ej...@pacbell.net> wrote:

On Jul 1, 8:59 pm, I-F AB <cop0...@gmail.com> wrote:

On Jul 1, 12:28 am, rick <ej...@pacbell.net> wrote:

On Jun 30, 1:00 am, I-F AB <cop0...@gmail.com> wrote:

On Jun 30, 7:15 am, rick <ej...@pacbell.net> wrote:

On Jun 29, 3:31 pm, rick <ej...@pacbell.net> wrote:

I have created two versions of pcell (same schematic)  that has 2
different layouts which currently in separate skill routines.    I
would like to have one cell that has a cyclic button to select the
desired layout.  What is the best
way to implement this type of feature?    A code example would be
greatly appreciated

Thanks

Rick

I kinda got it to work but the CDF/parameters are not quite right.  If
you enter in values that are ok for layout-1 they are
carried into layout-2 even though they are not editable....they should
revert back to the default values.   Example, layout-1
has variable a finger count whereas layout-2 does not, its hard
coded.  I guess I need some type of reset routine or something?

Rick

Hi Rick,

How about something like below:

pcDefinePCell(
 list( ddGetObj("Tech250") "nmos" "layout" )

 ;;; parameter defaults
 ( ( lch     "0.5u"   ) ( wch     "0.6u"   ) (switchPcell  "pcell1" )
   ( finger  "1"      ) ( totalch "0.6u"   ) ( Gconn   "None"   )
   ( SDconn  "None" ) ( Bulktie "None"   ) ( TapSpa  "0.3u"  )
( TapRow  "1"  )
 )

 if(   switchPcell == "pcell1"   then
    MOS_PCell_1(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 else
    MOS_PCell_2(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 )

)  ; pcDefinePCell

MOS_PCell_1 & MOS_PCell_2 are 2 procedures where you define layers,
shapes, etc.
'switchPcell' is a CDF parameter (default points to MOS_PCell_1()
procedure) which controls which layout to use.

I have something very close and the layout does switch but the
property panel does not update with the
correct fields for the new layout after the second switch......like
that makes sense!  :^)   Restated.....

1)  compile the cell, instantiate and query.  Everything is correct.
layoutA --> parameters for A

2)   switch for layoutB
layoutB -->  parameters for B  (yay!)

3)   switch back to layoutA
layoutA -->   parameters for B still   :^(

Rick

I believe the problem now is how your parameters interact.
By the way, are you using CDF parameters?
Better take a look at how to use them.

The CDF parameter 'switchPcell' can hide CDF parameter "TapSpa" from
the form in this example :

    cdfCreateParam( cdfId
        ?name           "TapSpa"
        ?prompt         "Tap Extension"
        ?units            "lengthMetric"
        ?defValue       "300.0n"
        ?type              "string"
        ?display          " equal(cdfgData->switchPcell->value
\"pcell1\") "
        ?callback       "MOS_PCell_1( 'TapSpaR )"
        ?parseAsNumber  "yes"
        ?parseAsCEL     "yes"
    )

Best regards,
I-FAB

Just to confirm, use the CDF equation to select whether a parameter is
visible...is that correct?
One other issue, I need to reset one of the parameters back to the
default value.   Would the
same methodology work?

Thanks

Hi,

Yes, the command equal() controls visibility of the parameter form,
use editable() command if needed.
To reset parameters back to default, maybe you would need to specify
in a callback
(here would be the callback trigger when changing the 'switchPcell'
parameter) i.e. using something like :

;;;callback procedure
......
cdfgData->Param1_MOS_PCell_1->value   =   cdfgData->Param1_MOS_PCell_1->defValue

cdfgData->Param2_MOS_PCell_1->value   =   cdfgData->Param2_MOS_PCell_1->defValue

cdfgData->Param3_MOS_PCell_1->value   =   cdfgData->Param3_MOS_PCell_1->defValue

......

There might be a better/simpler way to do this but this is what I
have.

Best regards,
I-FAB

Can you please provide an example this, I am syntax-tically
challenged!   :^)

Thanks

Rick

Ive tried many different combinations and result is the same, the
layout changes but the
property form does not unless I change another parameter, then it
syncs up. Could any
of the other CDF's cause this like dontSave or storeDefaults? The
write in the manual
is overly helpful. Basically this variables determine if the
parameter is saved...but saved
where?

Rick

I-F AB
Guest

Wed Jul 07, 2010 6:59 am   



On Jul 7, 7:14 am, rick <ej...@pacbell.net> wrote:
Quote:
On Jul 6, 7:57 am, rick <ej...@pacbell.net> wrote:



On Jul 4, 7:23 pm, I-F AB <cop0...@gmail.com> wrote:

On Jul 2, 10:12 pm, rick <ej...@pacbell.net> wrote:

On Jul 1, 8:59 pm, I-F AB <cop0...@gmail.com> wrote:

On Jul 1, 12:28 am, rick <ej...@pacbell.net> wrote:

On Jun 30, 1:00 am, I-F AB <cop0...@gmail.com> wrote:

On Jun 30, 7:15 am, rick <ej...@pacbell.net> wrote:

On Jun 29, 3:31 pm, rick <ej...@pacbell.net> wrote:

I have created two versions of pcell (same schematic)  that has 2
different layouts which currently in separate skill routines.    I
would like to have one cell that has a cyclic button to select the
desired layout.  What is the best
way to implement this type of feature?    A code example would be
greatly appreciated

Thanks

Rick

I kinda got it to work but the CDF/parameters are not quite right.  If
you enter in values that are ok for layout-1 they are
carried into layout-2 even though they are not editable....they should
revert back to the default values.   Example, layout-1
has variable a finger count whereas layout-2 does not, its hard
coded.  I guess I need some type of reset routine or something?

Rick

Hi Rick,

How about something like below:

pcDefinePCell(
 list( ddGetObj("Tech250") "nmos" "layout" )

 ;;; parameter defaults
 ( ( lch     "0.5u"   ) ( wch     "0.6u"   ) (switchPcell  "pcell1" )
   ( finger  "1"      ) ( totalch "0.6u"   ) ( Gconn   "None"   )
   ( SDconn  "None" ) ( Bulktie "None"   ) ( TapSpa  "0.3u"  )
( TapRow  "1"  )
 )

 if(   switchPcell == "pcell1"   then
    MOS_PCell_1(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 else
    MOS_PCell_2(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 )

)  ; pcDefinePCell

MOS_PCell_1 & MOS_PCell_2 are 2 procedures where you define layers,
shapes, etc.
'switchPcell' is a CDF parameter (default points to MOS_PCell_1()
procedure) which controls which layout to use.

I have something very close and the layout does switch but the
property panel does not update with the
correct fields for the new layout after the second switch......like
that makes sense!  :^)   Restated.....

1)  compile the cell, instantiate and query.  Everything is correct.
layoutA --> parameters for A

2)   switch for layoutB
layoutB -->  parameters for B  (yay!)

3)   switch back to layoutA
layoutA -->   parameters for B still   :^(

Rick

I believe the problem now is how your parameters interact.
By the way, are you using CDF parameters?
Better take a look at how to use them.

The CDF parameter 'switchPcell' can hide CDF parameter "TapSpa" from
the form in this example :

    cdfCreateParam( cdfId
        ?name           "TapSpa"
        ?prompt         "Tap Extension"
        ?units            "lengthMetric"
        ?defValue       "300.0n"
        ?type              "string"
        ?display          " equal(cdfgData->switchPcell->value
\"pcell1\") "
        ?callback       "MOS_PCell_1( 'TapSpaR )"
        ?parseAsNumber  "yes"
        ?parseAsCEL     "yes"
    )

Best regards,
I-FAB

Just to confirm, use the CDF equation to select whether a parameter is
visible...is that correct?
One other issue, I need to reset one of the parameters back to the
default value.   Would the
same methodology work?

Thanks

Hi,

Yes, the command equal() controls visibility of the parameter form,
use editable() command if needed.
To reset parameters back to default, maybe you would need to specify
in a callback
(here would be the callback trigger when changing the 'switchPcell'
parameter) i.e. using something like :

;;;callback procedure
......
cdfgData->Param1_MOS_PCell_1->value   =   cdfgData->Param1_MOS_PCell_1->defValue

cdfgData->Param2_MOS_PCell_1->value   =   cdfgData->Param2_MOS_PCell_1->defValue

cdfgData->Param3_MOS_PCell_1->value   =   cdfgData->Param3_MOS_PCell_1->defValue

......

There might be a better/simpler way to do this but this is what I
have.

Best regards,
I-FAB

Can you please provide an example this, I am syntax-tically
challenged!   :^)

Thanks

Rick

Ive tried many different combinations and result is the same, the
layout changes but the
property form does not unless I change another parameter, then it
syncs up.   Could any
of the other CDF's cause this like dontSave or storeDefaults?   The
write in the manual
is overly helpful.   Basically this variables determine if the
parameter is saved...but saved
where?

Rick

Hi,

Could you give an example how you load your CDF parameters?
The CDF parameters is saved to the mos cell you are creating.
You can edit/add from the CIW menu if you don't want to use the
cdfCreateParam() function.
Just open the menu Tools > Edit > CDF in CIW & remember to set CDF
Type as "Base".
If there are Warnings/Errors, it should provide some clues if the CDF
parameters are loaded succesfully or not.

Best regards,
I-FAB

rick
Guest

Wed Jul 07, 2010 8:33 am   



On Jul 6, 8:59 pm, I-F AB <cop0...@gmail.com> wrote:
Quote:
On Jul 7, 7:14 am, rick <ej...@pacbell.net> wrote:





On Jul 6, 7:57 am, rick <ej...@pacbell.net> wrote:

On Jul 4, 7:23 pm, I-F AB <cop0...@gmail.com> wrote:

On Jul 2, 10:12 pm, rick <ej...@pacbell.net> wrote:

On Jul 1, 8:59 pm, I-F AB <cop0...@gmail.com> wrote:

On Jul 1, 12:28 am, rick <ej...@pacbell.net> wrote:

On Jun 30, 1:00 am, I-F AB <cop0...@gmail.com> wrote:

On Jun 30, 7:15 am, rick <ej...@pacbell.net> wrote:

On Jun 29, 3:31 pm, rick <ej...@pacbell.net> wrote:

I have created two versions of pcell (same schematic)  that has 2
different layouts which currently in separate skill routines.    I
would like to have one cell that has a cyclic button to select the
desired layout.  What is the best
way to implement this type of feature?    A code example would be
greatly appreciated

Thanks

Rick

I kinda got it to work but the CDF/parameters are not quite right.  If
you enter in values that are ok for layout-1 they are
carried into layout-2 even though they are not editable.....they should
revert back to the default values.   Example, layout-1
has variable a finger count whereas layout-2 does not, its hard
coded.  I guess I need some type of reset routine or something?

Rick

Hi Rick,

How about something like below:

pcDefinePCell(
 list( ddGetObj("Tech250") "nmos" "layout" )

 ;;; parameter defaults
 ( ( lch     "0.5u"   ) ( wch     "0.6u"   ) (switchPcell  "pcell1" )
   ( finger  "1"      ) ( totalch "0.6u"   ) ( Gconn   "None"   )
   ( SDconn  "None" ) ( Bulktie "None"   ) ( TapSpa  "0.3u"  )
( TapRow  "1"  )
 )

 if(   switchPcell == "pcell1"   then
    MOS_PCell_1(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 else
    MOS_PCell_2(lch wch "nmos" finger Gconn SDconn Bulktie TapSpa
TapRow)
 )

)  ; pcDefinePCell

MOS_PCell_1 & MOS_PCell_2 are 2 procedures where you define layers,
shapes, etc.
'switchPcell' is a CDF parameter (default points to MOS_PCell_1()
procedure) which controls which layout to use.

I have something very close and the layout does switch but the
property panel does not update with the
correct fields for the new layout after the second switch.......like
that makes sense!  :^)   Restated.....

1)  compile the cell, instantiate and query.  Everything is correct.
layoutA --> parameters for A

2)   switch for layoutB
layoutB -->  parameters for B  (yay!)

3)   switch back to layoutA
layoutA -->   parameters for B still   :^(

Rick

I believe the problem now is how your parameters interact.
By the way, are you using CDF parameters?
Better take a look at how to use them.

The CDF parameter 'switchPcell' can hide CDF parameter "TapSpa" from
the form in this example :

    cdfCreateParam( cdfId
        ?name           "TapSpa"
        ?prompt         "Tap Extension"
        ?units            "lengthMetric"
        ?defValue       "300.0n"
        ?type              "string"
        ?display          " equal(cdfgData->switchPcell->value
\"pcell1\") "
        ?callback       "MOS_PCell_1( 'TapSpaR )"
        ?parseAsNumber  "yes"
        ?parseAsCEL     "yes"
    )

Best regards,
I-FAB

Just to confirm, use the CDF equation to select whether a parameter is
visible...is that correct?
One other issue, I need to reset one of the parameters back to the
default value.   Would the
same methodology work?

Thanks

Hi,

Yes, the command equal() controls visibility of the parameter form,
use editable() command if needed.
To reset parameters back to default, maybe you would need to specify
in a callback
(here would be the callback trigger when changing the 'switchPcell'
parameter) i.e. using something like :

;;;callback procedure
......
cdfgData->Param1_MOS_PCell_1->value   =   cdfgData->Param1_MOS_PCell_1->defValue

cdfgData->Param2_MOS_PCell_1->value   =   cdfgData->Param2_MOS_PCell_1->defValue

cdfgData->Param3_MOS_PCell_1->value   =   cdfgData->Param3_MOS_PCell_1->defValue

......

There might be a better/simpler way to do this but this is what I
have.

Best regards,
I-FAB

Can you please provide an example this, I am syntax-tically
challenged!   :^)

Thanks

Rick

Ive tried many different combinations and result is the same, the
layout changes but the
property form does not unless I change another parameter, then it
syncs up.   Could any
of the other CDF's cause this like dontSave or storeDefaults?   The
write in the manual
is overly helpful.   Basically this variables determine if the
parameter is saved...but saved
where?

Rick

Hi,

Could you give an example how you load your CDF parameters?
The CDF parameters is saved to the mos cell you are creating.
You can edit/add from the CIW menu if you don't want to use the
cdfCreateParam() function.
Just open the menu Tools > Edit > CDF in CIW & remember to set CDF
Type as "Base".
If there are Warnings/Errors, it should provide some clues if the CDF
parameters are loaded succesfully or not.

Best regards,
I-FAB- Hide quoted text -

- Show quoted text -

The CDF's are created in the code with cdfCreateParam() function. The
cell compiles clean, no errors and everything works.
The only problem is that the property form. The cell has 2 layout
options that are selectable with a parameter switch. Once
you select the second layout, the layout will change and the
parameters will also update. Select the original layout and the
form is now out of sync as some of the parameters are different.
Change any of the parameters and it is back in sync.

1) compile the cell, instantiate and query. Everything is correct.
layoutA --> parameters for A

2) switch for layoutB
layoutB --> parameters for B (yay!)

3) switch back to layoutA
layoutA --> parameters for B still :^(

I need a force re-load of the form or something.

I-F AB
Guest

Thu Jul 08, 2010 6:46 am   



Hi,

Just need to backtrace a bit:
Quote:
Just to confirm, use the CDF equation to select whether a parameter is
visible...is that correct?

That is what I meant in the example:
cdfCreateParam( cdfId
?name "switchPcell"
?prompt "Pcell switch"
?defValue "layoutA"
?choices '("layoutA" "layoutB")
?type "cyclic"
?callback "MOS_CB( 'switchPC )"
?display "t"
)
cdfCreateParam( cdfId
?name "Width_layoutA"
......
?display " equal(cdfgData->switchPcell->value \"layoutA\") "
......
)
cdfCreateParam( cdfId
?name "Width_layoutB"
......
?display " equal(cdfgData->switchPcell->value \"layoutB\") "
......
)

So, the parameter "TapSpa_layoutA" will be on display only if
'switchPcell' parameter is selected as "layoutA" & hence similarly for
"layoutB".
No reloading of the form, just control when the parameters are
displayed.
But it means you have to have separate 'Width' parameters for each
cell configuration.

I'm not sure if you can do something like:
cdfCreateParam( cdfId
?name "Width"
?prompt if( cdfgData->switchPcell->value == "layoutA"
then "Width for configuration layoutA"
else "Width for configuration layoutB" )
...... if( .... then ... else ...)
?display "t"
......
)
But I think this is possible too.

Quote:
One other issue, I need to reset one of the
parameters back to the default value.
Would the same methodology work?

From the code above, there is a callback procedure being invoked:
MOS_CB( 'switchPC )
Set defaults for any parameter you want whenever the 'switchPcell'
parameter to switch is thrown.
I can't see any of your code so I don't know where the problem is.

Best regards,
I-FAB

rick
Guest

Thu Jul 08, 2010 7:36 am   



On Jul 7, 8:46 pm, I-F AB <cop0...@gmail.com> wrote:
Quote:
Hi,

Just need to backtrace a bit:

Just to confirm, use the CDF equation to select whether a parameter is
visible...is that correct?

That is what I meant in the example:
  cdfCreateParam( cdfId
    ?name           "switchPcell"
    ?prompt         "Pcell switch"
    ?defValue       "layoutA"
    ?choices        '("layoutA" "layoutB")
    ?type             "cyclic"
    ?callback       "MOS_CB( 'switchPC )"
    ?display        "t"
  )
  cdfCreateParam( cdfId
    ?name           "Width_layoutA"
     ......
     ?display   " equal(cdfgData->switchPcell->value \"layoutA\") "
     ......
  )
  cdfCreateParam( cdfId
    ?name           "Width_layoutB"
     ......
     ?display   " equal(cdfgData->switchPcell->value \"layoutB\") "
     ......
  )

So, the parameter  "TapSpa_layoutA" will be on display only if
'switchPcell' parameter is selected as "layoutA" & hence similarly for
"layoutB".
No reloading of the form, just control when the parameters are
displayed.
But it means you have to have separate 'Width' parameters for each
cell configuration.

I'm not sure if you can do something like:
  cdfCreateParam( cdfId
    ?name       "Width"
    ?prompt     if(  cdfgData->switchPcell->value == "layoutA"
                     then    "Width for configuration layoutA"
                     else    "Width for configuration layoutB" )
     ......          if( .... then ... else ...)
     ?display   "t"
     ......
  )
But I think this is possible too.

One other issue, I need to reset one of the
parameters back to the default value.
Would the same methodology work?

From the code above, there is a callback procedure being invoked:
MOS_CB( 'switchPC )
Set defaults for any parameter you want whenever the 'switchPcell'
parameter to switch is thrown.
I can't see any of your code so I don't know where the problem is.

Best regards,
I-FAB


I dont see my last post so let me recap. The original problem was
that I had the CDF's in the
pcell code so it was stepping on itself. the form mostly updates
except for the fields that need
to be reset to defaults. I am hardcoding it in the routine call but
would prefer to set it with a callback
but cant get that to work. There is a solution on sourcelink that I
used a model/guide but it has no
effect.

Rick

Andrew Beckett
Guest

Fri Jul 09, 2010 7:01 pm   



rick wrote, on 07/08/10 05:36:
Quote:
On Jul 7, 8:46 pm, I-F AB<cop0...@gmail.com> wrote:
Hi,

Just need to backtrace a bit:

Just to confirm, use the CDF equation to select whether a parameter is
visible...is that correct?

That is what I meant in the example:
cdfCreateParam( cdfId
?name "switchPcell"
?prompt "Pcell switch"
?defValue "layoutA"
?choices '("layoutA" "layoutB")
?type "cyclic"
?callback "MOS_CB( 'switchPC )"
?display "t"
)
cdfCreateParam( cdfId
?name "Width_layoutA"
......
?display " equal(cdfgData->switchPcell->value \"layoutA\") "
......
)
cdfCreateParam( cdfId
?name "Width_layoutB"
......
?display " equal(cdfgData->switchPcell->value \"layoutB\") "
......
)

So, the parameter "TapSpa_layoutA" will be on display only if
'switchPcell' parameter is selected as "layoutA"& hence similarly for
"layoutB".
No reloading of the form, just control when the parameters are
displayed.
But it means you have to have separate 'Width' parameters for each
cell configuration.

I'm not sure if you can do something like:
cdfCreateParam( cdfId
?name "Width"
?prompt if( cdfgData->switchPcell->value == "layoutA"
then "Width for configuration layoutA"
else "Width for configuration layoutB" )
...... if( .... then ... else ...)
?display "t"
......
)
But I think this is possible too.

One other issue, I need to reset one of the
parameters back to the default value.
Would the same methodology work?

From the code above, there is a callback procedure being invoked:
MOS_CB( 'switchPC )
Set defaults for any parameter you want whenever the 'switchPcell'
parameter to switch is thrown.
I can't see any of your code so I don't know where the problem is.

Best regards,
I-FAB


I dont see my last post so let me recap. The original problem was
that I had the CDF's in the
pcell code so it was stepping on itself. the form mostly updates
except for the fields that need
to be reset to defaults. I am hardcoding it in the routine call but
would prefer to set it with a callback
but cant get that to work. There is a solution on sourcelink that I
used a model/guide but it has no
effect.

Rick

Rick,

Just got to catching up with comp.cad.cadence after some days of being too busy
to look at it.

The fundamental problem is that everyone is running blind here - we cannot know
what you're actually doing because you're not giving enough details.

It all sounds rather dubious to me, and dangerous. Pcells should not interfere
with CDF parameters (although they can read pcells). Also, you should read my
solution "The Dangers of CDF callbacks" just to make sure you know what you're
getting yourself into.

You reference a solution on sourcelink but don't say what it is.

Please help us to help you - withholding information is not going to get you an
answer, and tests the patience of those who want to help...

Regards,

Andrew.

Goto page 1, 2  Next

elektroda.net NewsGroups Forum Index - Cadence - pcell with multiple layouts

Arabic versionBulgarian versionCatalan versionCzech versionDanish versionGerman versionGreek versionEnglish versionSpanish versionFinnish versionFrench versionHindi versionCroatian versionIndonesian versionItalian versionHebrew versionJapanese versionKorean versionLithuanian versionLatvian versionDutch versionNorwegian versionPolish versionPortuguese versionRomanian versionRussian versionSlovak versionSlovenian versionSerbian versionSwedish versionTagalog versionUkrainian versionVietnamese versionChinese version
RTV map EDAboard.com map News map EDAboard.eu map EDAboard.de map EDAboard.co.uk map Opony