cell libraries and place and route

Also be careful about paths. Centerlines need to be 2 times the grid or the
edges
end up off grid.

-- Gerry @ www.ictooling.com

"Bernd Fischer" <""bernd.fischer\"@xignal-A%&HY%$v#&G=.de"> wrote in message
news:3ej81rF38bvqU1@individual.net...
Hi,

f_grid = techGetMfgGridResolution( techGetTechFile( ddGetObj(
t_libName ) ) )

where 't_libName' is your technology library name;

returns the mfgGridResolution value form your tech library technology file
which should probably be the right manufacturing gird.

Use the value to calculate your power grid.

Bernd

wrote:
Hi everyone,
I wrote some skill code to generate a custom power-grid. The grid
appears fine but when I run DRC on it, it gives me errors stating "Edge
not on grid". I think that it may be because the dimensions I compute
in the skill code are not multiples of the manufactuing grid
resoultion. Is there any simple way to fix these errors?

Any comments would be appreciated.

Saby.
 
There are many many ways to do this. On could imagine, for example, have a function generate a file
containing the stimuli and verilog-a for a specified number of bits.

i will assume, for simplicity, there is always two input ports named A and B, and
one output port named Y. this is easily adapted.

note, this code is only for demonstrating. i didn't use it or test it.

hope this will help
good luck

stéphane

NB: instead of this, one could imagine generating a new schematic on-the-fly, for example.
or, have a perl script generate the whole netlist, then run spectre from command-line.
or, ...


;;
;; this procedure generates a file with instance statements for sources driving the bus
;; netName<1:netSize>. sources are vpwlf with the file being netName_bitX.pwl
;;

procedure( _KVGenStimuli( netName netSize fileName )
let( (fh)
fh = outfile( fileName )
for( i 1 netSize
fprintf( fh "V%s%d (%s<%d> 0) vsource type=pwl file=%s_bit%d.pwl\n" netName i netName i netName i )
) ; for
close(fh)
) ; let
) ; procedure

;;
;; this one generate a file with an instance statement for a block with given name,
;; and connects it to the given bus netName<1:netSize>
;;

procedure( _KVGenMeasure( model netName netSize fileName )
let( (fh)
fh = outfile( fileName )
fprintf( fh "meas block_%d_bits ( " netSize )
for( i 1 netSize
fprintf( fh "%s<%d> " netName i )
) ; for
fprintf( fh ")\n" )
close(fh)
) ; let
) ; procedure

;;
;; this procedure simulates the given lib/cell/view
;;

procedure( KVSimulate( lib cell view )

let( ( cv portA portB portY sizeA sizeB sizeY )
; open the cellview
unless( cv = dbOpenCellViewByType( lib cell view nil "r" nil )
error("Cannot open cellview")
) ; unless

; locate the A port
unless( portA=car(exists( x cv~>terminals rexMatchp( "A<[0-9]+:[0-9]+>" x~>name ) ))
error("Port A not found")
) ; unless
sizeA = portA~>numBits

; locate the B port
unless( portB=car(exists( x cv~>terminals rexMatchp( "B<[0-9]+:[0-9]+>" x~>name ) ))
error("Port B not found")
) ; unless
sizeB = portB~>numBits

; locate the Y port
unless( portY=car(exists( x cv~>terminals rexMatchp( "Y<[0-9]+:[0-9]+>" x~>name ) ))
error("Port Y not found")
) ; unless
sizeY = portY~>numBits

dbClose(cv)

; generate stimuli for port A (sizeA bits)
_KVGenStimuli( "A" sizeA "/tmp/KVstimuli_A.scs" )

; generate stimuli for port B (sizeB bits)
_KVGenStimuli( "B" sizeB "/tmp/KVstimuli_B.scs" )

; generate verilog-A block for port Y (sizeY bits)
_KVGenMeasure( "mymodel" "Y" sizeY "/tmp/KVmeasure_Y.scs" )

;; netlist and run
simulator('spectre)

;; open design
when( !design( lib cell view )
error("Couldn't open design for simulation")
) ; when

;; add stimulus files
;; the measurement file is not exactly a stimulus, well... should work
stimulusFile( "/tmp/KVstimuli_A.scs" "/tmp/KVstimuli_B.scs" "/tmp/KVmeasure_Y.scs" ?xlate t )

;; configure model files, includes etc...
;;

;; configure simulation
analysis( 'tran ?stop 10u )

;; run
run()

;; etc... etc...

;; delete the temporary files
deleteFile("/tmp/KVstimuli_A.scs")
deleteFile("/tmp/KVstimuli_B.scs")
deleteFile("/tmp/KVmeasure_Y.scs")
) ; let
) ; procedure
 
On a similar note ...

does anyone have a set of C ( or C++ or some classLibrary ) of functions
to read/write GDSII. (version 6 or 5 or ... )

At my last job a co-worker had created a compliant GDSII reader/writer
in C. This was very useful in many of our custom tools. As time went on,
our company evolved into using comercial tools and this was only used
when the commercial tools had problems ( i.e. hidden 2Gig limit or
internal cell size limits, strange illegal cell names ... ) and custom
debugging
was needed.

-- Gerry @ www.ictooling.com

(still remembering the "good-old-days" when you had to write your own tools
and GDSI was the latest fad ... )



<hsphuah@usa.com> wrote in message
news:1115949649.973041.18850@o13g2000cwo.googlegroups.com...
Thank you for the information. We know CIF/GDSII conversion tools are
available in the market. Unfortunately, some of them cannot integrate
into our design flow environment. In my company, we use many EDA tools
from different vendors. All EDA tools have been customized to suit our
design flow environment here.

In my layout automation team, we have only 3 engineers customized
layout automation tools. To make the matter worse, all of us have
different education and working experience. None of us knows have solid
understand about GDSII and CIF formats. My project leader thought it
was easy to implement it. I only knew the difficulty after I read
through the CNF slides yesterday. :(

Anyway, I am really appreciated all your helps. I had learned a lot
from the GDSII and it is good for me to understand how software
developers handle shapes, graphics and etc in binary files. :)
 
But you would not want to upset the people you "tape-out" to!
( who ships MAG-TAPE now? )
The Fab's can be picky about the data you send.

You also need to be aware of any glitches in sending the data to the mask
inspection people.
(normally not seen by non-fab people)

- Gerry

"Frank E. Gennari" <gennari_REMOVE_THIS_@eecs.berkeley.edu> wrote in message
news:pan.2005.05.12.22.03.59.945520@eecs.berkeley.edu...
On Thu, 12 May 2005 09:55:03 +0200, S. Badel wrote:

I could have sworn that the Cadence documentation mentioned something
about this (Design Data Translator's Reference, appendix A), but I
don't
see anything in the IC 5.1.41 version of the manual. I'll see if I
can't dig out an earlier version (I first started messing with GDSII
around 4.4, IIRC).

the 5.0.33 version states :

If the Stream file is on a magnetic tape, the records of the library are
usually divided in 2048-byte physical blocks

stéphane

Yes, GDSII on tape used to require 2048-byte blocks, but does anyone still
use tapes? Can Cadence read GDSII files that are not multiples of 2048? I
don't see why not.

Frank
 
Gerry,

I just checked Offer Kaye's page, even if I visited it not long ago (
http://groups-beta.google.com/group/comp.cad.cadence/browse_frm/thread/b0854aebc59068d3/e43edf848494b69b?q=gds2+bnf&rnum=2&hl=en#e43edf848494b69b
)
and guess what...there is something new there !

This http://www.softjin.com/html/anuvad.htm has been added at the top of the
"open source" section. They do have a library (which alliance, electric, magic,
octools and such do not have, AFAIK), but I hope they did not misuse the term
"open source" like openAccess folk do.

Let's check it out. Perfect job for a friday afternoon :)

G Vandevalk wrote:
On a similar note ...

does anyone have a set of C ( or C++ or some classLibrary ) of functions
to read/write GDSII. (version 6 or 5 or ... )

At my last job a co-worker had created a compliant GDSII reader/writer
in C. This was very useful in many of our custom tools. As time went on,
our company evolved into using comercial tools and this was only used
when the commercial tools had problems ( i.e. hidden 2Gig limit or
internal cell size limits, strange illegal cell names ... ) and custom
debugging
was needed.

-- Gerry @ www.ictooling.com

(still remembering the "good-old-days" when you had to write your own tools
and GDSI was the latest fad ... )



hsphuah@usa.com> wrote in message
news:1115949649.973041.18850@o13g2000cwo.googlegroups.com...

Thank you for the information. We know CIF/GDSII conversion tools are
available in the market. Unfortunately, some of them cannot integrate
into our design flow environment. In my company, we use many EDA tools
from different vendors. All EDA tools have been customized to suit our
design flow environment here.

In my layout automation team, we have only 3 engineers customized
layout automation tools. To make the matter worse, all of us have
different education and working experience. None of us knows have solid
understand about GDSII and CIF formats. My project leader thought it
was easy to implement it. I only knew the difficulty after I read
through the CNF slides yesterday. :(

Anyway, I am really appreciated all your helps. I had learned a lot
from the GDSII and it is good for me to understand how software
developers handle shapes, graphics and etc in binary files. :)
 
I tried to get Softjin's ANUVAD a few months ago. I filled out their
request form and never got anything. Eventually they called me about it
and seemed helpful, but by that time I didn't need it anymore. It seems
like ANUVAD is the right way to go, especially if you plan to work with
OASIS sometime in the near future. I'm not sure if their free source
GDSII/OASIS tools are really free for commercial purposes. I'm planning to
look into their tools in more detail later when I need the OASIS
converter so I guess I'll find out.

Frank


On Fri, 13 May 2005 17:10:32 +0200, fogh wrote:

Gerry,

I just checked Offer Kaye's page, even if I visited it not long ago (
http://groups-beta.google.com/group/comp.cad.cadence/browse_frm/thread/b0854aebc59068d3/e43edf848494b69b?q=gds2+bnf&rnum=2&hl=en#e43edf848494b69b
)
and guess what...there is something new there !

This http://www.softjin.com/html/anuvad.htm has been added at the top of the
"open source" section. They do have a library (which alliance, electric, magic,
octools and such do not have, AFAIK), but I hope they did not misuse the term
"open source" like openAccess folk do.

Let's check it out. Perfect job for a friday afternoon :)

G Vandevalk wrote:
On a similar note ...

does anyone have a set of C ( or C++ or some classLibrary ) of functions
to read/write GDSII. (version 6 or 5 or ... )

At my last job a co-worker had created a compliant GDSII reader/writer
in C. This was very useful in many of our custom tools. As time went on,
our company evolved into using comercial tools and this was only used
when the commercial tools had problems ( i.e. hidden 2Gig limit or
internal cell size limits, strange illegal cell names ... ) and custom
debugging
was needed.

-- Gerry @ www.ictooling.com

(still remembering the "good-old-days" when you had to write your own tools
and GDSI was the latest fad ... )



hsphuah@usa.com> wrote in message
news:1115949649.973041.18850@o13g2000cwo.googlegroups.com...

Thank you for the information. We know CIF/GDSII conversion tools are
available in the market. Unfortunately, some of them cannot integrate
into our design flow environment. In my company, we use many EDA tools
from different vendors. All EDA tools have been customized to suit our
design flow environment here.

In my layout automation team, we have only 3 engineers customized
layout automation tools. To make the matter worse, all of us have
different education and working experience. None of us knows have solid
understand about GDSII and CIF formats. My project leader thought it
was easy to implement it. I only knew the difficulty after I read
through the CNF slides yesterday. :(

Anyway, I am really appreciated all your helps. I had learned a lot
from the GDSII and it is good for me to understand how software
developers handle shapes, graphics and etc in binary files. :)
 
Nadine@MailSys.de wrote:
I need to use the WAL to extract data from a simulation run.

However, I fail to even get started with the "hello world" example from
chapter 11 of the OSS reference: I installed all of IC5141 but still
haven't got a
voCompiler.h or virtuos.a (BTW that name is spelled both virtous.a and
virtuos.a in the OSS ref).
I managed to get away without voCompiler.h, but now linking fails with
an
"undefined reference to `voCopyString'".

Do I need to install any other component for these files?
Hm... looks like there are packaging and/or documentation bugs here.

voCompiler.h is a trivial header which just defines CDS_BEGIN_FUNCS and
CDS_END_FUNCS as (I'm doing this from memory):

#ifdef __cplusplus
#define CDS_BEGIN_FUNCS extern "C" {
#define CDS_END_FUNCS }
#else
#define CDS_BEGIN_FUNCS
#define CDS_END_FUNCS
#endif


I don't see a virtuos.a in the IC5.1.41 install, either; however, you
should be able to use libvirtuos_sh.so in tools/lib. When linking your
executable, add:
-L$CDS_INST_DIR/tools/lib -lvirtuos_sh
to the end and it should (hopefully) work.

You will need to have $CDS_INST_DIR/tools/lib in your LD_LIBRARY_PATH
(on Linux or Sun) or SHLIB_PATH (on HP-UX or AIX) when running the
executable. (You can also add it to the rpath when linking, but there
are caveats...)

(The name should be virtuos, which stands for VirtualOS.)

--
David Cuthbert dacut at cadence dot com
Cadence Design Systems +1 (412) 599-1820
 
This is a VFAQ (very frequently asked question).

SKILL behaves no differently than any other application which uses the
machine's floating point hardware.

Rather than try to explain it, I'll just link to David Goldberg's
excellent paper on the subject, "What Every Computer Scientist Should
Know About Floating-Point Arithmetic." It's very rigorous, and will
require some patient study, but if you work through the theorems you'll
never be bitten by this again.

http://docs.sun.com/source/806-3568/ncg_goldberg.html

--
David Cuthbert dacut at cadence dot com
Cadence Design Systems +1 (412) 599-1820
 
L. Coleman wrote:
Is that much of a
difference between pre-layout and post-layout timing expected? Can
anyone suggest a way to get the final layout to perform more closely to
the Synopsys estimate?
I'm not an Encounter guy (I just took the RTL Compiler training out of
sheer curiosity), but have you tried putting the RTL through RTL
Compiler and seeing how it compares with the Synopsys numbers?

One of the remarks that struck me from the training is, "The netlist
matters." Could it be that the netlist being fed from Synopsys to
Encounter is suboptimal for it? Did a false path get dropped in the
translation? Is it just one net holding you back, perhaps something you
could toss an inverter in the middle of?

The other approach would be to fix the Synopsys tools to get *their*
output to correspond more closely to the layout numbers, but I don't
think that's a solution you wanted to hear. :)

--
David Cuthbert dacut at cadence dot com
Cadence Design Systems +1 (412) 599-1820
 
How can I get two different results for the exact same inputs in
different iterations?
It might be that the inputs are not exactly the same.
They are identical to some precision - we see only six digits
after the point, but they might be different in fact.

ie. it might be that the result in your second example is
1.9999999998929, which rounds to 2.000000 when printed with this
precision, but it's smaller that 2 and hence yields the result 1.0
to the int() function.

it's allways tricky to work with floating-point numbers - i've been hurt
before. you should try this:
precision = 1e-6
x = coreWidth / precison
y= netSpace / precision
ration = x/y
result = precision * int(ratio)

try changing the precison and see.

stéphane
 
Aby wrote:
Thanks for the reply. I have had a course on computer arithmetic before
but I don't recollect seeing such inconsistencies. Here is what I am
printing in a loop using the fprintf( "%f" varName):
If you had read the paper, it would explain this.

Furthermore, %f performs rounding in both C and SKILL (which relies on
the underlying C library). Try it again with %.20g instead.

--
David Cuthbert dacut at cadence dot com
Cadence Design Systems +1 (412) 599-1820
 
On 15 May 2005 21:59:41 -0700, "Erik Wanta" <erikwanta@starband.net> wrote:

What is WAL? Which tools uses it? Does Cadence recommend using it?
---
Erik
It's an API for accessing waveforms in WSF format - look in the OSS reference
manual for more details.

I'd say WSF is pretty much obsolete, and would not recommend anyone starting
any new developments based on it. Note, this is a personal opinion - I've not
checked internally for an official viewpoint on this.

Regards,

Andrew.
 
On 11 May 2005 23:28:30 -0700, ourarash@gmail.com wrote:

Hi,

I want to highlight a particular net in the layout, i.e., I wan to know
exactly which polygons are connected. I tried to use connectivity->mark
net, but it did not work. Is there any other way for doing this?

Thanks,
Arash
Well, your choices are either to use mark net (you need to make sure the
technology information is set up correctly for this. "it did not work" doesn't
give much info as to what the problem was), or to use an extraction tool
(Assura, Diva, Dracula, etc) and then highlight the net in the resulting
extracted view (Assura, Diva) or use Dracula Interactive (aka InQuery) to
probe the net.

Andrew.
 
On 16 May 2005 02:58:29 -0700, Nadine@MailSys.de wrote:

Andrew Beckett wrote:
I'd say WSF is pretty much obsolete, and would not recommend anyone
starting
any new developments based on it. Note, this is a personal opinion -
I've not
checked internally for an official viewpoint on this.

That's a pity to hear. To my knowledge (from searching the web) it is
only
WSF and the nutmeg format that are both accessible from C and supported
by spectre. I really would hate having to go through Ocean (including
all the overhead of spawning the process, feeding it the right
commands, converting the
data to ASCII and back, propably leading to a loss of precision) just
to read the simulation data.
I'm not really sure how universally supported WSF is with spectre. For a
start, it's not been the primary output format for many, many years, and so I
personally wouldn't want to trust my life on it! Again, this is a personal
view (as is everything I post here).

A few years ago you mentioned that a package "SRR" would one day be
available to read PSF:
http://groups.google.com/groups?hl=de&lr=&ie=UTF-8&selm=9osvsu05jojtiabore3hm6jhiasut4p4p0%404ax.com
Any news on this? (BTW: Where can I search for a PCR number on the new
sourcelink home?)

Nadine
I mentioned the PCR number in that posting. The documentation and libraries
will be available to customers as a "special" product I believe (I don't know
the details). I think you need to speak to your account manager, and they'll
need to contact spectre product engineering for more details.

Regards,

Andrew.
 
"Nadine" == Nadine <Nadine@MailSys.de> writes:
Nadine> Date: 16 May 2005 02:52:19 -0700

[...]
Nadine> Thank you for this information. I was able to compile the
Nadine> example this way. I had to link the wal.a into a dynamic
Nadine> library and use dlopen to access it on a non-RH7.2 box due
Nadine> to references to errno and __ctype_b, but that was
Nadine> expected and not a big deal. It works just fine now.

Nadine

Watch out for the AC data. I was trying to use WAL a year ago, and
could not get it to read AC (complex) data due to a bug in WAL. I
talked to the Cadence AE. No use.

Then recently I found that Aptivia has some libraries for reading PSF
files using MATLAB. There might be a library to read PSF in C embedded
in there.

Satya

--
Remove XXX and YYY to get my address
 
Frank,

I gave it a quick look. So far
The registration works fine. The code compiles nicely on solaris and
linux, even if there are some strangeties in the makefiles. I tried the
programs on a few stream files (below 2GB), and it ran without trouble.
The license allows commercial use, unreleased enhancements, and binary
distribution. The directory layout is very clear and clearly mapped to
libraries and namespaces. Both the design and the library usage are
concisely and accurately documented. Only good surprises so far.

Is your openGL layout rendering code now open sourced ?

Frank E. Gennari wrote:
I tried to get Softjin's ANUVAD a few months ago. I filled out their
request form and never got anything. Eventually they called me about it
and seemed helpful, but by that time I didn't need it anymore. It seems
like ANUVAD is the right way to go, especially if you plan to work with
OASIS sometime in the near future. I'm not sure if their free source
GDSII/OASIS tools are really free for commercial purposes. I'm planning to
look into their tools in more detail later when I need the OASIS
converter so I guess I'll find out.

Frank


On Fri, 13 May 2005 17:10:32 +0200, fogh wrote:


Gerry,

I just checked Offer Kaye's page, even if I visited it not long ago (
http://groups-beta.google.com/group/comp.cad.cadence/browse_frm/thread/b0854aebc59068d3/e43edf848494b69b?q=gds2+bnf&rnum=2&hl=en#e43edf848494b69b
)
and guess what...there is something new there !

This http://www.softjin.com/html/anuvad.htm has been added at the top of the
"open source" section. They do have a library (which alliance, electric, magic,
octools and such do not have, AFAIK), but I hope they did not misuse the term
"open source" like openAccess folk do.

Let's check it out. Perfect job for a friday afternoon :)

G Vandevalk wrote:

On a similar note ...

does anyone have a set of C ( or C++ or some classLibrary ) of functions
to read/write GDSII. (version 6 or 5 or ... )

At my last job a co-worker had created a compliant GDSII reader/writer
in C. This was very useful in many of our custom tools. As time went on,
our company evolved into using comercial tools and this was only used
when the commercial tools had problems ( i.e. hidden 2Gig limit or
internal cell size limits, strange illegal cell names ... ) and custom
debugging
was needed.

-- Gerry @ www.ictooling.com

(still remembering the "good-old-days" when you had to write your own tools
and GDSI was the latest fad ... )



hsphuah@usa.com> wrote in message
news:1115949649.973041.18850@o13g2000cwo.googlegroups.com...


Thank you for the information. We know CIF/GDSII conversion tools are
available in the market. Unfortunately, some of them cannot integrate
into our design flow environment. In my company, we use many EDA tools

from different vendors. All EDA tools have been customized to suit our

design flow environment here.

In my layout automation team, we have only 3 engineers customized
layout automation tools. To make the matter worse, all of us have
different education and working experience. None of us knows have solid
understand about GDSII and CIF formats. My project leader thought it
was easy to implement it. I only knew the difficulty after I read
through the CNF slides yesterday. :(

Anyway, I am really appreciated all your helps. I had learned a lot

from the GDSII and it is good for me to understand how software

developers handle shapes, graphics and etc in binary files. :)
 
Nadine@MailSys.de wrote:
Andrew Beckett wrote:
I'd say WSF is pretty much obsolete, and would not recommend anyone starting
any new developments based on it. Note, this is a personal opinion - I've not
checked internally for an official viewpoint on this.

That's a pity to hear. To my knowledge (from searching the web) it is
only
WSF and the nutmeg format that are both accessible from C and supported
by spectre. I really would hate having to go through Ocean (including
all the overhead of spawning the process, feeding it the right
commands, converting the
data to ASCII and back, propably leading to a loss of precision) just
That is an interesting question actually: what is the printable precision of a
SKILL float ?
x=atan(1)
printf("%-1.30e\n" x)
printf("%-1.50e\n" x)
printf("%-1.70e\n" x)

It seems to be 49 or 50 decimal places. Much than the 16 or so that the equality
test can handle.
 
I have been using Cadence for quite soemtime now but have been stumped
by this error which says "Edge not on Grid". I am using technology data
provided by my foundry.
Each technology has a minimum grid all shapes have to be aligned on.

You can usually get this value by typing :
techGetMfgGridResolution( techGetTechFile( ddGetObj( "TECH_LIB" ) ) )
or
techGetMfgGridResolution( techGetTechFile( geGetEditCellView() ) )
if you have an open cellview.

Your layout has to comply with this. If you did a lot of layout without observing
this rule, you might be in trouble, as it can be a tedious job to correct all
offgrid errors.

to avoid having such errors, a simple security is to set the layout snap grid to
a multiple of the manufacturing (minimum) grid, so no point will end offgrid.

stéphane
 
fogh wrote:
That is an interesting question actually: what is the printable
precision of a SKILL float ?
x=atan(1)
printf("%-1.30e\n" x)
printf("%-1.50e\n" x)
printf("%-1.70e\n" x)

It seems to be 49 or 50 decimal places. Much than the 16 or so that the
equality test can handle.
Nah... beyond 16 decimal places, printf() is just making stuff up.

An IEEE 754 double precision floating-point number (which is what SKILL
uses) has 52 mantissa (fraction) bits plus one implicit character
(integer) bit. log10(2^53) is roughly 15.95, which rounds up to 16.

The reason why printf() thinks it can go beyond 16 decimal places is
because it keeps multiplying an imprecise floating-point fraction by 10.

I have attached a C program which illustrates this. It prints out the
floating-point number 1.0000000000000002 (== 1 + 2*10^-16), the next
representable floating-point number after 1.0, in both hexadecimal
(base-16) form along with the standard printf %lf, %.16lf, and %.22lf forms.

It also implements its own version of printf's %lf formatter so you can
play with what's going on under the hood.

The output you will see is:

hexform: +0x1.0000000000001e+000
%lf form: 1.000000
%.16lf form: 1.0000000000000002
%.22lf form: 1.0000000000000002220446
print_double: 1.0000000000000002220446

You can see that it's making up numbers at the end.

What's going on? To your machine, 1 + 2*10^-16 and 1 + 2^-52 have the
same representation. Of course, it doesn't maintain a decimal
representation under the hood, so 1 + 2^-52 is used. 2^-52 is roughly
2.2204460492503131*10^-16... look familiar?

--
David Cuthbert dacut at cadence dot com
Cadence Design Systems +1 (412) 599-1820
 
On Wed, 18 May 2005 14:18:40 +0200, "S. Badel"
<stephane.badel@REMOVETHISepfl.ch> wrote:

I have been using Cadence for quite soemtime now but have been stumped
by this error which says "Edge not on Grid". I am using technology data
provided by my foundry.

Each technology has a minimum grid all shapes have to be aligned on.

You can usually get this value by typing :
techGetMfgGridResolution( techGetTechFile( ddGetObj( "TECH_LIB" ) ) )
or
techGetMfgGridResolution( techGetTechFile( geGetEditCellView() ) )
if you have an open cellview.

Your layout has to comply with this. If you did a lot of layout without observing
this rule, you might be in trouble, as it can be a tedious job to correct all
offgrid errors.

to avoid having such errors, a simple security is to set the layout snap grid to
a multiple of the manufacturing (minimum) grid, so no point will end offgrid.

stéphane
I would like to add a note to stéphane's observation. Few DRC rule decks
get the manufacturing grid size from the DFII database. You should check
what the values are in the offGrid rules in the DRC rule deck as well.
 

Welcome to EDABoard.com

Sponsor

Back
Top