Alternative view for the spectre switches

Guest
Hi,

in spectre there is an entity switch which can be used to change input
sources between simulations. It is a very practical thing as one can
set position depending on what simulation (ac dc tran etc.) The symbol
itself is ok enough, but I have a serious problem that the throw is
always in the same position. I guess it is the position 1. When I
debug a simulation I insert loads of sources and use the switch to
switch among them, now is there a way to attach different alternative
views to the switch so that one will show it open and one will show it
closed or in whatever position actually fits the "position" property.
It doesn't nescesary need to be a connection between the symbol and
the property, just the possibility to change the graphical outline of
the symbol in order to have a quick visual understanding of the
connection. This is useful when viewing other things than the
parameter annotation.

--
Svenn
 
Hi Svenn,

One possibility is to build your own switch component, based on those
in analogLib. I'd create two views of the symbol, one with the switch
drawn as open, and one as closed.

Then you can create a pcell for the main symbol, as I've done in the
past for 3/4 terminal mosfets. The code below demonstrates
doing precisely that - and you could easily adapt this to the switch
example. In the code below, I have two symbols, with view
symbol1 and symbol2. I started from the pmos in analogLib, copied
the symbol view to symbol1, and then copied the pmos4/symbol
to pmos/symbol2. I added a parameter called "Type" which
had values "3" or "4" (as a cyclic), and then the pcell took
care of the rest.

Don't have time right now to put together a full example of the
switch, but hopefully you can fathom it out from this?

Regards,

Andrew.

pcDefinePCell(
; target cellView
list(ddGetObj("sympcells") "pmos" "symbol" "schematicSymbol")

; formal parameters
(
(Type "3")
)

; code itself
let((instId master)
viewName=
case(Type
("3" "symbol1")
("4" "symbol2")
(t "symbol1")
)
master=dbOpenCellViewByType("sympcells" "pmos" viewName)
instId=dbCreateInst(pcCellView master "" 0:0 "R0")
; Copy the instance box - this vanishes during the flatten
foreach(shape
car(exists(lpp master~>lpps lpp~>layerName=="instance"))~>shapes
dbCopyFig(shape pcCellView)
)
; flatten the instance, preserving the pins
dbFlattenInst(instId 1 t t)
)
)


On 7 Oct 2003 04:58:59 -0700, svenn.are@bjerkem.de wrote:

Hi,

in spectre there is an entity switch which can be used to change input
sources between simulations. It is a very practical thing as one can
set position depending on what simulation (ac dc tran etc.) The symbol
itself is ok enough, but I have a serious problem that the throw is
always in the same position. I guess it is the position 1. When I
debug a simulation I insert loads of sources and use the switch to
switch among them, now is there a way to attach different alternative
views to the switch so that one will show it open and one will show it
closed or in whatever position actually fits the "position" property.
It doesn't nescesary need to be a connection between the symbol and
the property, just the possibility to change the graphical outline of
the symbol in order to have a quick visual understanding of the
connection. This is useful when viewing other things than the
parameter annotation.
--
Andrew Beckett
Senior Technical Leader
Custom IC Solutions
Cadence Design Systems Ltd
 
Andrew Beckett <andrewb@DELETETHISBITcadence.com> wrote in message news:<lv2jovsbnt211eoh24t44poag1o86t9s6g@4ax.com>...
....
pcDefinePCell(
somehow I get only the message that pcDefinePCell function is not
defined. I have found that there is a pcell.cxt and guess that I have
to load an environment. And I fear that this is either the skill
development package or the layout package to which I do not have a
lisence. Comment?

--
Svenn
 
Hi Svenn,

It doesn't require the SKILL development package, or indeed any license. You
do however need to run one of the executables with layout capability to
get this context to auto-load. So if you run layout, layoutPlus, msfb or icfb
it should work. The pcDefinePCell is only needed at the time you build your
new component; once defined, it should work fine in icde, icds, icms etc.

Regards,

Andrew.

On 14 Oct 2003 04:38:40 -0700, svenn.are@bjerkem.de wrote:

Andrew Beckett <andrewb@DELETETHISBITcadence.com> wrote in message news:<lv2jovsbnt211eoh24t44poag1o86t9s6g@4ax.com>...
...
pcDefinePCell(

somehow I get only the message that pcDefinePCell function is not
defined. I have found that there is a pcell.cxt and guess that I have
to load an environment. And I fear that this is either the skill
development package or the layout package to which I do not have a
lisence. Comment?
--
Andrew Beckett
Senior Technical Leader
Custom IC Solutions
Cadence Design Systems Ltd
 
Andrew Beckett <andrewb@DELETETHISBITcadence.com> wrote in message news:<jonpovo95qur69jbifnedr21ajl6lmp8ra@4ax.com>...
Hi Svenn,

It doesn't require the SKILL development package, or indeed any license. You
do however need to run one of the executables with layout capability to
get this context to auto-load. So if you run layout, layoutPlus, msfb or icfb
it should work. The pcDefinePCell is only needed at the time you build your
new component; once defined, it should work fine in icde, icds, icms etc.
of course, you are right. I spent some time looking for the way the
executables load their contexts after I posted my question, and after
a search on 'context' in the manual, the skill comand 'loadContext'
came to my eyes.

loadContext "/opt/cds/ic500/tools.sun4v/dfII/etc/context/pCellGen.cxt"
callInitProc "pCellGen"
load "switch.il"

and all that complained was a call to 'le*whatever*' but the pcell
functionallity that you described works as you described. I attach my
switch.il in order to give fellow unskilled programmers something to
chew on.

In your description you attached a 'Type' label that can (in my code)
be set to 0 or 1 in order to describe the position of the switch. Now,
the simulation switches in analogLib already have the parameter
position available, so I thought, why not just replace 'Type' with
'position', needless to say, it works.
It is a pure joy to edit the symbol position in the object data and
watch how the switch moves when pushing the 'apply' button.

I am already dreaming of the mux symbol that turns itself due to the
select input value.

As usual I have lispified my code to give a brain teaser. (Although I
have to admit that some of the 'instant look' understanding of the ~>
operator is inevitable lost with all those 'get' statements.)

As usual comments are most welcome.

'switch.il'

(pcDefinePCell
; target cellView
(list (ddGetObj "sympcells") "switch" "symbol" "schematicSymbol")

; formal parameters
((position "0"))

; code itself
(let (instId master)
(setq viewName
(case position
("0" "symbol0")
("1" "symbol1")
(t "symbol1")))
(setq master (dbOpenCellViewByType "sympcells" "switch" viewName))
(setq instId (dbCreateInst pcCellView master "" 0:0 "R0"))

; Copy the instance box - this vanishes during the flatten
(foreach shape
(get (car (exists lpp (get master lpps) (equal (get lpp
layerName) "instance")) shapes)
(dbCopyFig shape pcCellView))
; flatten the instance, preserving the pins
(dbFlattenInst instId 1 t t))))
 

Welcome to EDABoard.com

Sponsor

Back
Top