Geoffrey,
I talked to our table model developer who has worked on our model as well
as with the folks from Antrim whom were active in using the behavioral
table models in block modeling. Based on my conversation with him I think
we are trying to make this too complicated but I'm open to opposing views.
First if you must cut to make the deadline do not remove the 3 dimensions
as that is a must but just restrict 2nd and 3rd order interpolation to 1
dimension tables. To do so the changes are fairly straight forward.
In 10.12.3.1 state that currently a restriction on multi-dimension tables
is that only linear interpolation is supported. This restriction may be
removed at a later date.
In 10.12.3.3 the table needs to change the "3" to "1"
In 10.12.4 the examples would need the "3" changed to "1"
With this said the most common way (I also searched the Internet a bit on
this also) is to treat each input variable (dimension)
independently. First if we start with the agreement that a one dimensional
table model is not a problem, we have enough data to fully generate 1st,
2nd, or 3rd order interpolation of this type of table using the conditions
already documented. I'm not sure if I can do justice in words to explain
this but I'll try.
Moving to a two dimensional model with say a 2nd order interpolation we can
take the input data provided (X, Y) and create a series of 1-dimensional
curves for X using 2nd order interpolation. So now I have for each value of
X a spline curve that for any value of Y gives me my F(xi,yj) value.
With the above set of Xi curves I can now generate a equivalent set of Yj
curves. The good news is since for each Xi value I can provide either the
actual Y value or the interpolated Y value based on my Xi curves allowing
this set of curves to be generated.
And I can also generate the Yj curve for the F(Xi,Yj) being solved for
which will most likely be all interpolated values at each Xi grid
point. With this last curve I can now easily determine my F(Xi,Yj) value
from this curve and the problem is now solved with the given data.
This method is extendible for any dimension table although it does become
compute intensive which is why we limited it to 3 dimensions. No Cartesian
grid is required nor are derivatives although if you wanted there are
methods to calculate them. There are other more complex ways to
interpolate points such as building a surface model for each section of the
surface bounded by the data points you provided which take more up front
time but are faster and slightly more accurate lookups.
You will also noticed that there is a certain amount of error built into
this method as the set of Yj curves are based in many cases on interpolated
results making those curves not exact but this after all is a table
model. It should also be noted that this form of table model should not be
confused with the specialized table models used in FastSPICE simulators to
model MOS devices which are highly optimized and based on numerous
assumptions to the device they are used to model.
I did find a good source of data on this at the following web site. The
second link is the description of their math library that does a similar
thing to what we do.
http://mathalacarte.com/cb/mom.fcg/ya59
http://mathalacarte.com/cb/mom.fcg/ch12-02.pdf?_;ydm=0;II=59
I'm also not convinced that we need to document more on how to do this in
the LRM as this method seemed to be well understood by those doing table
lookup in the industry and I would not want to limit folks to one specific
implementation (there are optimizations also not discussed).
I do hope this helps clarify the questions although in written form without
pictures I'm sure it leaves lots of open questions.
Let me know if this helps (or not :) )
Jon
At 01:04 PM 8/10/2004, Geoffrey.Coram wrote:
>I've been having a look at the numbers of equations and unknowns
>for a 2-d interpolation, 2nd and 3rd order.
>
>**** 2nd order splines
>
>If one has a polynomial Cij x^i y^j for i=0..2, j=0..2, there are
>9 coefficients per region.
>
>If we assume a Cartesian grid, with M points in the x direction
>and N points in the y direction, that gives (M-1)*(N-1) regions.
>
>Thus, we have a total of 9MN-9M-9N+9 unknowns.
>
>
>In each region, the polynomial must fit the data given for the four
>corners. This is 4MN-4M-4N+4 equations/constraints.
>
>The derivative df/dx must be continuous at the boundaries. I believe
>we want the derivative to be continuous for all y along the edge,
>not just at the corner points. df/dx will have terms that are
>order y^0,y^1, and y^2; the coefficients of each power must be
>equal on either side of the boundary, so this means we have 3
>equations for each boundary. There are (M-2) boundaries per "row"
>and (N-1) rows. This makes 3MN-3M-6N+6 equations.
>
>The derivative df/dy gives us 3MN-6M-3N+6 for similar reasons.
>
>Thus, we have a total of 10MN-13M-13N+16 equations, but only
>9MN-9M-9N+9 unknowns. The system is *overconstrained* once we
>get bigger than 7x7.
>
>I don't see that a 2nd order spline is useful in 2d (or 3d),
>since we have to give up some constraints, either fitting
>the data or continuity of derivatives.
>
>
>**** 3rd order splines
>
>The book "Numerical Recipes in C" indicates that a bicubic spline can
>be set up by specifying f, df/dx, df/dy, and d2f/dxdy on the Cartesian
>grid. The interpolation function will have these specified derivatives
>continuous across the region boundaries. Note that, even though it is
>cubic, we don't necessarily get 2nd order derivatives continuous.
>The bicubic spline is of the form
> (sum on i=0..3)(sum on j=0..3) Cij x^i y^j
>which is 16 terms per region.
>
>Since users generally will not have derivative information, let's see
>how many constraints we need beyond the function values and the
>continuity of derivatives.
>
>The values provide 4 constraints per region.
>
>The derivative df/dx will contain terms of order y^0, y^1, y^2, y^3,
>and these must vanish independently; that means we have 4 equations
>per boundary, and (M-2)*(N-1) boundaries. We get the same number of
>constraints for df/dy.
>
>It turns out that we do not get any further constraints by requiring
>continuity of d2f/dxdy, because these constraints are linearly related
>to the constraints enforced by the first derivatives.
>
>So, we have 16MN-16M-16N+16 unknowns, and 12MN-16M-16N+20 equations,
>so we are missing 4MN-4 constraints.
>
>Anyone one want to take a stab at defining those constraints?
>
>
>-Geoffrey
***********************************************************
Jonathan L. Sanders
Product Engineering Director
Custom IC Solutions
Cadence Design Systems, Inc.
555 River Oaks Pkwy
San Jose, CA. 95134
INTERNET:jons@cadence.com Tel: (408) 428-5654 Fax : (408) 944-7027
***********************************************************
Received on Wed Aug 11 08:19:29 2004
This archive was generated by hypermail 2.1.8 : Wed Aug 11 2004 - 08:19:43 PDT