cell libraries and place and route

Jason, do you know if this function works on busses and or signals in
busses? I have been looking for something like this forever, but
when I tried too write it myyself, I always got stuck on busses
because the net is data<7:0> etc....



thanx

David
 
Hi Badel,
I am also trying to do something similar in skill. But in my case the
instTerm is already connected to an existing net. So, when I call
dbCreateInstTerm() I get a warning saying
*WARNING* : Shorted nets - net101

Could you please tell us how to modify the existing connectivity through
skill.

Thanks in advance,
Regards,
Suresh

foreach( instTerm instId~>instTerms
net = instTerm~>net
termName = instTerm~>name
term = dbFindTermByName( instId~>master termName )
dbCreateInstTerm( net instId2 term )
)
 
don't you have access to sourcelink? you'll find all the manuals there.
You can also access the doc directly without using cdsdoc. As a matter
of fact, it's usually located in a doc/ subdirectory under the root of the
installation tree of the software. You just have to decipher the abbreviated names,
the one you're looking for is mdlref. you will find both html and pdf versions
in this place.

stéphane


vedank@yahoo.com wrote:
Hi,

Can somebody tell me where I can find some sort of user guide for
Spectre MDL? There is some problem with cdsdoc on our server.

Vedank
 
i think i you use CDF then you have to give your pcell parameters
the same name as existing cdf parameters. this creates the "link".

stéphane
 
foreach( wnd setof(x hiGetWindowList() hiGetAppType(x)=="Show File") hiCloseWindow(wnd) )

stéphane
 
If you want some visible only in the layout, put this in the 'display'
expression for the cdf parameter :
deGetEditCellView()->cellViewType == "maskLayout"

stéphane

Gerd wrote:
I have a cell with a symbol view (with customized Base CDF)
and a layout view. The layout view is actually a Pcell, created
graphically.
Now it seems that the layout Pcell parameters are not visible in the
Parameter-section when instantiating it. All visible parameters are
those of
the Base CDF instead... Is there a way to separate these within a
single cell?

Gerd
 
Gerd wrote:
When i include

?display "deGetEditCellView()->cellViewType != \"maskLayout\""

(because i don't want the CDF parameters in the layout view), no
parameters at all are available.
....

?display "deGetViewType() == \"maskLayout\""

or

?display "deGetViewType() != \"maskLayout\""

works here
 
I have a .db file generated during synthesis. However, I need the
timing information in .tlf format for the APR. Does anyone know how I
can extract timing information out of a DB file? Thanks.
Umm...why are you posting this in a cadence group?

Synopsys's Primetime tool can write out timing-models *.lib format.
Read the *.db into primetime, then export it using the
"extract_timing_model" command (I haven't done this in a while, so
I forget the exact name of the command.)

Once you have a *.lib file, you can use Cadence's syn2tlf utility to
convert .lib into .tlf
 
Hi,
here is my guess:

modelPath = "/home/models.scs"
modelPath_list = list( modelPath "nom")

; Start of an Analog Design Environment session
sessionId = sevStartSession( ?lib libName ?cell cellName ?view
viewName)

; Get databaseIDs
o_sessionId = sevEnvironment( sessionId )
o_formatterId = asiCreateFormatter( o_sessionId )
o_netlisterId = nlGetNetlister( o_formatterId )
netlistPath = nlGetNetlistDir( o_netlisterId )

println( netlistPath )

asiNetlist( o_sessionId )
nlNetlist( o_netlisterId )

; Creation of input.scs
simulator( 'spectre )
design( strcat( netlistPath "/netlist" ) )
modelFile( modelPath_list )
saveOption()
save( 'alli )
saveOption( 'subcktprobelvl 6 'save "all" 'currents "all" )
option( 'maxwarns 500 )
saveOption()
analysis( 'tran ?start 0 ?stop 40n )
input_scsPath = createNetlist()

printf("\n input.scs createed \n")
printf("\n input_scsPath : %s \n" input_scsPath)

greetins,
hikom
 
is it possible to write a script (in skill?) which will start the
spectre netlister?
I would like to have a script which starts the netlister instead of
going through the menus.
Funny, i was thinking of doing such a thing also...
I'm joining a script which i quickly did at the bottom of this post.
I didn't test it toroughly, though. feel free to post comment/corrections/improvements.
Feel free to code a gui also :)

Is it possible to force the execution of a skill script inside Cadence
from the linux/unix command prompt? This would allow an external
program to take 'control' over Cadence. Can this be done? When can I
find more information on this?
One way i can see i using ipcSkillProcess() to start an external process.
when launched this way, file handles 3 and 4 of the newly created process
are open for SKILL communication, that is, the process can send SKILL command
to port 3 and get the output from port 4.

in this way however, the execution is triggered from inside cadence. to do the opposite
one has to run a "daemon" SKILL script which opens a socket, waits for commands and executes them.
this has been discussed previously, and Andrew even posted the code to do it. see
http://groups.google.ch/groups?selm=i1jjev0lir8bhn4tf7nid1uuqakm5p1q2i%404ax.com&rnum=3

stéphane
-

this is the spectre netlist code:
----------------------------------------------------------------------
procedure(
SSNetlistSpectre(
;; parameters
lib ; library name
cell ; cell name
view ; view name
@key
( output nil ) ; file name for output netlist
( models nil ) ; override list of model files
( definitions nil ) ; override list of definition files
( includes nil ) ; override list of include files
( includePath nil ) ; override include file path
( stimuli nil ) ; override list of stimulus files
( options nil ) ; list of options to set ex: '("temp" 27 )
( switchViewList nil ) ; override switch view list ex: '( "spectre schematic cmos_sch ahdl" )
( stopViewList nil ) ; override stop view list ex: '( "spectre" "ahdl" )
( analyses nil ) ; list of analyses / options ex: '( dc ?saveOppoint t )
( variables nil ) ; list of design variables ex: '( "vdd" 1.8 "vin" "vdd/2" )
)

let( (fileName fileIn fileOut str)

simulator( 'spectre )

;; open design
when( !design( lib cell view )
printf("Couldn't open design")
return(nil)
) ; when

;; setup model files
when( models
apply( 'modelFile models )
) ; when

;; setup definition files
when( definitions
apply( 'definitionFile definitions )
) ; when

;; setup include files
when( includes
apply( 'definitionFile includes )
) ; when
when( includePath
apply( 'path includePath )
) ; when

;; setup stimulus files
when( includes
apply( 'stimulusFile stimuli )
) ; when

;; setup switch/stop view lists
when( switchViewList
envSetVal( "spectre.envOpts" "switchViewList" "string" switchViewList )
) ; when
when( stopViewList
envSetVal( "spectre.envOpts" "stopViewList" "string" stopViewList )
) ; when

;; setup options
when( options
apply( 'option options )
) ; when

;; setup analyses
foreach( analyse analyses
apply( 'analysis analyse )
) ; foreach

;; setup design variables, or try to get them from the cell
if( variables
then
apply( 'desVar variables )
else
apply( 'desVar apply( 'nconc dbFindProp( ddGetObj(lib cell) "designVarList" )~>value) )
) ; when

;; create netlist
when( fileName=createNetlist( ?display nil )
if( output
then
;; copy netlist to specified file
fileIn = infile( fileName )
fileOut = outfile( output )
while( gets( str fileIn ) fprintf( fileOut "%s" str ) )
close( fileIn )
close( fileOut )
view( output )
else
view(fileName)
) ; if
) ; when


fileName
) ; let
) ; procedure
----------------------------------------------------------------------
 
Hi,

Here is the answer. I asked the similar question last week.

Ron is defined as Vds/Ids. So if you look at the op point, Vds/Ids is
exactly the Ron value shown in the list.

The short channel effect resistance is 1/gds for each transistor. The
short channel effect is defined as 1/r0=d(Ids)/d(Vds)


Kuan


On Tue, 12 Apr 2005, nus_lin wrote:

dear guys,

how to calculate the output resistance based on the saved op point? i
found that in spectre, the "ron" shown in the table of op point did
not equal to gain/gm. it is so weired. how is this ron defined in
bsim3v3 model?
 
On 12 Apr 2005 02:34:31 -0700, flash79@gmx.de (Flash) wrote:

Dear All,

the Waveform Tool draws curves as dashed lines as standard (the first
entries in the awvPen-list). This is bad for printing and it is very
uncomfortable to change them one by one to a solid linestyle
(awvPen51 - awvPen58, awvPen9 and awvPen10).
I know there is the possibility to select more than one curve in the
Curve/Edit...-Menu by holding SHIFT-key but all selected curves get
the same color. That is not good also.

So:
Is there a function like the existing "awvSetWaveformDisplayStatus()"
(toggles a curve on or off) that alters the linestyle of all curves
(in one subwindow) from dashed to solid?
Is it possible to access the curve's data like the Calculator does?
I don't think this can be done using public SKILL functions.

Regards,

Andrew.
 
Sorry -- I am guessing here ... but ...

In Diva PRE, when you create parasitic metal, labels are lost on metal
lines.
You can however label lines where they connect to other layers.

(i.e. put your label ontop of a VIA to Metal5 ... )

The problem the tool has is that the Metal is now a distributed resistor
between connections.
Your label ends up somewhere in the middle of the resistor.

I think you can translate this idea to Calibre PEX

-- Good luck
-G

"Nikolaos Kasparidis" <redhavoc@yahoo.co.uk> wrote in message
news:4e44ab2a.0504130411.12ffef00@posting.google.com...
I am using Calibre PEX for parasitics extraction in Cadence Custom IC,
and I need to further process the netlist that is generated by
xCalibre. My major problem is that all the net names are converted to
numbers and this numbering system is used to identify names. I need to
keep some specific names on some nets.

I have the impression that I can use labels drawn on a specific layer
on the layout. Then in the calibre rule file add a statement like the
followng:

LAYER textL 510
LAYER MAP 230 DATATYPE 0 510
LAYER MAP 230 DATATYPE >= 0 230
TEXT LAYER textL
ATTACH textL Metal5 MASK

where 230 is the layer number of the layer which I use to draw the
label ('text), and datatype 0 is the purpose used ('drawing')

I have put some labels on Metal5 layer, but it seems that I have
missed something important. Could someone please enlightenme on what
is wrong?
 
On 13 Apr 2005 15:24:41 -0700, "whisker" <whiskerville83-google@yahoo.com>
wrote:

I am wanting to find an automatic method to annotate the owner of a
schematic in the schematic's title block. The general method of
ilInst~>cellView~>lib~>owner gives me the ownership of the library NOT
the cell. I have used geQuerySelSet() and I do not see a way to get
the cell's owner. Am I missing something? I did try creating an
ILLabel in the title block symbol that used
ddGetObjOwner(dbGetCellViewDdId(geGetEditCellView())) and this seemed
to work, but I wondered if this was a kludged method. Any help would
be greatly appreciated. Thanks.
ilInst~>cellView~>view~>owner if you want the cellView owner
ilInst~>cellView~>cell~>owner if you want the cell owner

your method would also be OK if you did:

ddGetObjOwner(dbGetCellViewDdId(ilInst~>cellView))

That's essentially a procedural interface way of doing my first suggestion.
It's the same, really.

Andrew.
 
I have exactly the same problem in my environment
(Debian Linux, icfb 5.0.33. Windows with lots of
buttons such as the property window is slow when used
remotely from MSWindows client. The solution I found is to
use TightVNC instead of XWindow.

"kentauta" <777@kiu.biglobe.ne.jp> wrote in message
news:1113488578.209169.306630@z14g2000cwz.googlegroups.com...
Hi Dylan,

Thank you for your suggestion. I tried -no24 and -use8, but I did not
see
any difference.
 
On 14 Apr 2005 15:33:01 -0700, "whisker" <whiskerville83-google@yahoo.com>
wrote:

Thanks, Andrew, I didn't realize that all the database information for
the cellview was accessible in that fashion.

On a related topic, are properties stored in the property bag able to
be displayed via an ilInst label as well?

whisker
Yes.

ilInst~>cellView~>cell~>propName

Or if you write a SKILL function, you can explicitly open the bag,
get the value, close the bag, and return the property value.

You can do whatever you like in an ILLabel.

Regards,

Andrew.
 
kentauta wrote:
According to a network monitoring software, a lot of packets are
trasfered between the X-server software and the Linux server running
Cadence while the property window is being closed. I do not have
such a problem at all when I run Cadence locally on the Linux server
probably because those packets are internally transferred very
quickly. In addition, I have not had this kind of problem with
SunOS-based Cadence.
Linux is... different. With the direction that X.org is taking X11, I
would expect remote X to become a non-option in a couple years.
Basically, they're trying to put a lot of stuff in the X layer (better
font services, antialiasing, vectored graphics, message busses), but
this means the client has to interrogate the server far more often.

The X11 protocol was designed in an era when CPUs were ~20 MHz, networks
bandwidth was ~10 Mbit/sec and latency was < 10 msec, and graphics
resources were tight. It made a lot of sense for the client program to
interrogate the X server -- preserving CPU and graphics resources were
very important.

Today, CPU, graphics, and network bandwidth have all increased 100x --
but the speed of light has not kept up. Interrogations between the
client and server are now (relatively) 100x more expensive.

As Zhiheng noted, VNC generally fares better. After the initial
connection is set up, the client and server generally don't interrogate
each other. The server just pushes screen updates as fast as it can to
your client, and your client sends keystrokes and mouse movements back
when appropriate.

The downside is that VNC doesn't know anything about fonts, characters,
lines, rectangles, etc. -- everything is just a bitmap to it (hence why
its protocol is called the Remote Framebuffer protocol). Large updates
(like repainting a schematic) eat up a fair chunk of bandwidth even
though relatively little data is being transferred.

I have some side/personal projects in mind on how to improve this, but
at the rate I'm going on those, I should be getting to them in 10-15
years. <sigh>

--
David Cuthbert dacut at cadence dot com
Cadence Design Systems +1 (412) 599-1820
 
beware that if you start something with ipcSkillProcess(), when you
close cadence, you kill the process that you have previously started.
Stefano

S. Badel wrote:
is it possible to write a script (in skill?) which will start the
spectre netlister?
I would like to have a script which starts the netlister instead of
going through the menus.


Funny, i was thinking of doing such a thing also...
I'm joining a script which i quickly did at the bottom of this post.
I didn't test it toroughly, though. feel free to post
comment/corrections/improvements.
Feel free to code a gui also :)

Is it possible to force the execution of a skill script inside Cadence
from the linux/unix command prompt? This would allow an external
program to take 'control' over Cadence. Can this be done? When can I
find more information on this?


One way i can see i using ipcSkillProcess() to start an external process.
when launched this way, file handles 3 and 4 of the newly created process
are open for SKILL communication, that is, the process can send SKILL
command
to port 3 and get the output from port 4.

in this way however, the execution is triggered from inside cadence. to
do the opposite
one has to run a "daemon" SKILL script which opens a socket, waits for
commands and executes them.
this has been discussed previously, and Andrew even posted the code to
do it. see
http://groups.google.ch/groups?selm=i1jjev0lir8bhn4tf7nid1uuqakm5p1q2i%404ax.com&rnum=3


stéphane
-

this is the spectre netlist code:
----------------------------------------------------------------------
procedure(
SSNetlistSpectre(
;; parameters
lib ; library name
cell ; cell name
view ; view name
@key
( output nil ) ; file name for output netlist
( models nil ) ; override list of model files
( definitions nil ) ; override list of definition files
( includes nil ) ; override list of include files
( includePath nil ) ; override include file path
( stimuli nil ) ; override list of stimulus files
( options nil ) ; list of options to set ex: '("temp" 27 )
( switchViewList nil ) ; override switch view list ex: '(
"spectre schematic cmos_sch ahdl" )
( stopViewList nil ) ; override stop view list ex: '(
"spectre" "ahdl" )
( analyses nil ) ; list of analyses / options ex: '( dc
?saveOppoint t )
( variables nil ) ; list of design variables ex: '( "vdd"
1.8 "vin" "vdd/2" )
)

let( (fileName fileIn fileOut str)

simulator( 'spectre )

;; open design
when( !design( lib cell view )
printf("Couldn't open design")
return(nil)
) ; when

;; setup model files
when( models
apply( 'modelFile models )
) ; when

;; setup definition files
when( definitions
apply( 'definitionFile definitions )
) ; when

;; setup include files
when( includes
apply( 'definitionFile includes )
) ; when
when( includePath
apply( 'path includePath )
) ; when

;; setup stimulus files
when( includes
apply( 'stimulusFile stimuli )
) ; when

;; setup switch/stop view lists
when( switchViewList
envSetVal( "spectre.envOpts" "switchViewList" "string" switchViewList )
) ; when
when( stopViewList
envSetVal( "spectre.envOpts" "stopViewList" "string" stopViewList )
) ; when

;; setup options
when( options
apply( 'option options )
) ; when

;; setup analyses
foreach( analyse analyses
apply( 'analysis analyse )
) ; foreach

;; setup design variables, or try to get them from the cell
if( variables
then
apply( 'desVar variables )
else
apply( 'desVar apply( 'nconc dbFindProp( ddGetObj(lib cell)
"designVarList" )~>value) )
) ; when

;; create netlist
when( fileName=createNetlist( ?display nil )
if( output
then
;; copy netlist to specified file
fileIn = infile( fileName )
fileOut = outfile( output )
while( gets( str fileIn ) fprintf( fileOut "%s" str ) )
close( fileIn )
close( fileOut )
view( output )
else
view(fileName)
) ; if
) ; when


fileName
) ; let
) ; procedure
----------------------------------------------------------------------
 
Is this not simpler to define a plotter device , rather than try to dynamically
tweak the packets of the display device ?

Flash wrote:
Dear All,

the Waveform Tool draws curves as dashed lines as standard (the first
entries in the awvPen-list). This is bad for printing and it is very
uncomfortable to change them one by one to a solid linestyle
(awvPen51 - awvPen58, awvPen9 and awvPen10).
I know there is the possibility to select more than one curve in the
Curve/Edit...-Menu by holding SHIFT-key but all selected curves get
the same color. That is not good also.

So:
Is there a function like the existing "awvSetWaveformDisplayStatus()"
(toggles a curve on or off) that alters the linestyle of all curves
(in one subwindow) from dashed to solid?
Is it possible to access the curve's data like the Calculator does?
 
On Mon, 18 Apr 2005 15:37:48 -0700, BigDog wrote:

Make sure you have the "parseAsCEL/parseAsNumber" set properly in the
CDF at each level the parameter is being passed. iPar/pPar are CEL
expressions.
BTW: int is an undocumented internal cadence function. Use fix instead
 

Welcome to EDABoard.com

Sponsor

Back
Top