FastFieldSolvers Forum
FastFieldSolvers Forum
Home | Profile | Register | Active Topics | Members | Search | FAQ
Username:
Password:
Save Password
 All Forums
 FastFieldSolvers
 FasterCap and FastCap2
 Accuracy issues with parallel wires
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

davidc

USA
3 Posts

Posted - Jan 10 2018 :  01:59:09  Show Profile  Reply with Quote
I have a test case where I have 2 rectangular prism wires of the same size in parallel. I ran another capacitance extraction tool to get a value to compare against, but fastercap is pretty far off.
These are the values I got.

test case specs
perm: 4.1
length: 150e-6
width: 330e-9
height: 580e-9
space:1e-6

  • Plate : 3.1582218e-15
  • Comparative : 5.44053e-15
  • Fastercap : 9.22556e-15


In my testcase I break the plates of my wires into equally sized squares.

Let me know if you need more info.

david calvin

Enrico

530 Posts

Posted - Jan 10 2018 :  23:48:23  Show Profile  Reply with Quote
Actually the FasterCap results seems consistent. Using the following input file that I constructed based on your specs:

bus_2x_lines_150um.lst:


* Bus made of 2x lines 150um long
* 

C line_150um.txt  4.1     0.0 0.0 0.0
C line_150um.txt  4.1  1330.0 0.0 0.0


line_150um.txt:

0 330nmX580nmX150um
*
Q line 0.0 0.0 0.0  330.0 0.0 0.0  330.0 580.0 0.0  0.0 580.0 0.0
Q line 0.0 0.0 150000.0  330.0 0.0 150000.0  330.0 580.0 150000.0  0.0 580.0 150000.0

Q line 0.0 0.0 0.0  330.0 0.0 0.0  330.0 0.0 150000.0  0.0 0.0 150000.0
Q line 0.0 580.0 0.0  330.0 580.0 0.0  330.0 580.0 150000.0  0.0 580.0 150000.0

Q line 0.0 0.0 0.0  0.0 0.0 150000.0  0.0 580.0 150000.0  0.0 580.0 150000.0
Q line 330.0 0.0 0.0  330.0 0.0 150000.0  330.0 580.0 150000.0  330.0 580.0 150000.0



I get the following results:


***************************************
Increasing the geometric refinement.. 
Refinement completed
Mesh refinement (-m): 6.84124e-007
***************************************
Computing the links.. 
Number of panels after refinement: 3547
Number of links to be computed: 797950
Done computing links
***************************************
Precond Type(s) (-p): Jacobi 
GMRES Iteration: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 
GMRES Iteration: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 
Capacitance matrix is:
Dimension 2 x 2
g1_line  1.17512e-005 -8.41804e-006 
g2_line  -8.41906e-006 1.17551e-005 

Weighted Frobenius norm of the difference between capacitance (auto option): 0.00377182

Solve statistics:
Number of input panels: 12 of which 12 conductors and 0 dielectric
Number of input panels to solver engine: 744
Number of panels after refinement: 3547
Number of potential estimates: 742609
Number of links: 801497 (uncompressed 12581209, compression ratio is 93.6%)
Max recursion level: 40
Max Mesh relative refinement value: 6.84122e-007
Iteration time: 0.842000s (0 days, 0 hours, 0 mins, 0 s)
Iteration allocated memory: 18384 kilobytes

Total allocated memory: 18384 kilobytes
Total time: 2.964000s (0 days, 0 hours, 0 mins, 2 s)



If you need comparison with another solver, you can compare against FastCap2, using the refined output from FasterCap:

ITERATION DATA
Starting on column 1 (g1_line%GROUP1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 
166 167 168 169 170 171 172 173 174 175 176 177 
Starting on column 2 (g2_line%GROUP2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 
166 167 168 169 170 171 172 173 174 175 176 177 178 

CAPACITANCE MATRIX, microfarads
                         1          2 
g1_line%GROUP1 1      11.41     -8.683
g2_line%GROUP2 2     -8.683      11.82

Total time: 4.415
Total memory allocated: 173445 kilobytes


which is quite consistent with the first result (note however that FastCap2, due to the algorithm used, does not converge well in these kind of cases, where the geometry is not more or less uniformly filling up a cubical space).

As a sanity check, we can compare the result with the capacitance between two cylindrical conductors, that has an analytical solution. You can look at en.wikipedia.org/wiki/Capacitance#Capacitance_of_simple_systems . By using an equivalent radius of 2.89662E-07 (equating the perimeter of the cross-section of the cylinder with the one of the rectangular conductor), d = 1um + 2*radius, you get 10.3 fF, which is quite close to the FasterCap result, but possibly an overshoot. If you instead equate the areas, you get a lower limit of 7.4 fF (don't forget that your relative permittivity is 4.1). So it seems consistent.

May I ask which other capacitance extraction tool you used, and why you think that it is FasterCap far off from the real value, and not vice-versa?

Best Regards,
Enrico
Go to Top of Page

davidc

USA
3 Posts

Posted - Jan 13 2018 :  00:17:16  Show Profile  Reply with Quote
The tool I used is called calibre. It is used for extraction on integrated circuits. I assumed (possibly incorrectly) calibre would be pretty accurate, but based off what you've shown me now I am questioning it.

I have a few questions.
Is it better to use 150000.0 than 150e-6 and why
what radius did you come up with for the equivalent area(I got 9.66e-06)?
what exact command did you run for faster cap?

When I ran your testcase I got 9.11592e-06 instead of 8.41906e-006.

david calvin
Go to Top of Page

Enrico

530 Posts

Posted - Jan 15 2018 :  16:53:49  Show Profile  Reply with Quote
Hi David,

sorry I did not copy the whole FasterCap log, that also reported the run parameters. If you run the simulation with the standard options, you get 9.1fF (after scaling). But since the line is long, I recommend lowering the -d parameter to 0.5; then you get 8.8fF.
However I was a bit in a rush and did not notice there is an error in the input file (actually this is flagged by FasterCap) as one side of the line is not a rectangle but a triangle (two nodes have the same coordinates). Here's the correct one:

0 330nmX580nmX150um
*
Q line 0.0 0.0 0.0  330.0 0.0 0.0  330.0 580.0 0.0  0.0 580.0 0.0
Q line 0.0 0.0 150000.0  330.0 0.0 150000.0  330.0 580.0 150000.0  0.0 580.0 150000.0

Q line 0.0 0.0 0.0  330.0 0.0 0.0  330.0 0.0 150000.0  0.0 0.0 150000.0
Q line 0.0 580.0 0.0  330.0 580.0 0.0  330.0 580.0 150000.0  0.0 580.0 150000.0

Q line 0.0 0.0 0.0  0.0 0.0 150000.0  0.0 580.0 150000.0  0.0 580.0 0.0
Q line 330.0 0.0 0.0  330.0 0.0 150000.0  330.0 580.0 150000.0  330.0 580.0 0.0


The overall result changes only marginally, but convergence is quite improved (as expected). Actually I was not alarmed by it as in other, more extreme cases (see the sample file "bus_5x_lines_2500m.lst") this is expected. I will update the thread with the right values, not to create confusion in other future readers, but only after we finish the discussion.

Anyway, here's the full log dump:

Running FasterCap version 6.0.0
Copyright 2017 FastFieldSolvers S.R.L. ht*p://w*w.fastfieldsolvers.com, All Rights reserved
Starting capacitance extraction with the following parameters:
Input file: N:\Documenti\Codice\_Runs\Customers\David_Calvin\bus_2x_lines_150um.lst
Auto calculation with max error: 0.01
Remark: Auto option overrides all other Manual settings

3D Solver Engine invoked
Solution scheme (-g): Collocation, GMRES tolerance (-t): 0.005
Out-of-core free memory to link memory condition (-f): 0
Potential interaction coefficient to mesh refinement ratio (-d): 0.5
Mesh curvature (-mc): 3
Number of input panels to solver engine: 1152

Iteration number #0 ***************************

***************************************
Refining the geometry.. 
Refinement completed
Mesh refinement (-m): 1e+032
***************************************
Computing the links.. 
Number of panels after refinement: 1152
Number of links to be computed: 2302
Done computing links
***************************************
Precond Type(s) (-p): Jacobi 
GMRES Iteration: 0 1 2 3 
GMRES Iteration: 0 1 2 3 
Capacitance matrix is:
Dimension 2 x 2
g1_line  -9.23576e-007 2.68274e-006 
g2_line  2.68274e-006 -9.23576e-007 
Warning: capacitance matrix has a non-negative off-diagonal element at row 1 col 2
Warning: capacitance matrix has a non-negative off-diagonal element at row 2 col 1
Warning: capacitance matrix is not diagonally dominant due to row 1
Warning: capacitance matrix is not diagonally dominant due to row 2


Solve statistics:
Number of input panels: 12 of which 12 conductors and 0 dielectric
Number of input panels to solver engine: 1152
Number of panels after refinement: 1152
Number of potential estimates: 2260
Number of links: 3454 (uncompressed 1327104, compression ratio is 99.7%)
Max recursion level: 12
Max Mesh relative refinement value: 6.85642e-006
Iteration time: 0.063000s (0 days, 0 hours, 0 mins, 0 s)
Iteration allocated memory: 16972 kilobytes

Iteration number #1 ***************************

***************************************
Increasing the geometric refinement.. 
Delta in refined panel and link count w.r.t. previous iteration less than 10%
(Panels # 1152, Links # 36016)
(Mesh relative refinement value (-m): 4.84822e-006)
Automatically increasing the refinement parameters
Delta in refined panel and link count w.r.t. previous iteration less than 10%
(Panels # 1152, Links # 54716)
(Mesh relative refinement value (-m): 3.40792e-006)
Automatically increasing the refinement parameters
Refinement completed
Mesh refinement (-m): 2.37962e-006
***************************************
Computing the links.. 
Number of panels after refinement: 1385
Number of links to be computed: 97692
Done computing links
***************************************
Precond Type(s) (-p): Jacobi 
GMRES Iteration: 0 1 2 3 4 5 6 7 8 
GMRES Iteration: 0 1 2 3 4 5 6 7 8 
Capacitance matrix is:
Dimension 2 x 2
g1_line  1.22126e-005 -8.88806e-006 
g2_line  -8.8881e-006 1.22122e-005 

Weighted Frobenius norm of the difference between capacitance (auto option): 1.15896

Solve statistics:
Number of input panels: 12 of which 12 conductors and 0 dielectric
Number of input panels to solver engine: 1152
Number of panels after refinement: 1385
Number of potential estimates: 90323
Number of links: 99077 (uncompressed 1918225, compression ratio is 94.8%)
Max recursion level: 25
Max Mesh relative refinement value: 2.3795e-006
Iteration time: 0.218000s (0 days, 0 hours, 0 mins, 0 s)
Iteration allocated memory: 17134 kilobytes

Iteration number #2 ***************************

***************************************
Increasing the geometric refinement.. 
Refinement completed
Mesh refinement (-m): 1.68256e-006
***************************************
Computing the links.. 
Number of panels after refinement: 1616
Number of links to be computed: 165566
Done computing links
***************************************
Precond Type(s) (-p): Jacobi 
GMRES Iteration: 0 1 2 3 4 5 6 7 8 
GMRES Iteration: 0 1 2 3 4 5 6 7 8 
Capacitance matrix is:
Dimension 2 x 2
g1_line  1.21857e-005 -8.86047e-006 
g2_line  -8.8601e-006 1.21857e-005 

Weighted Frobenius norm of the difference between capacitance (auto option): 0.002558

Solve statistics:
Number of input panels: 12 of which 12 conductors and 0 dielectric
Number of input panels to solver engine: 1152
Number of panels after refinement: 1616
Number of potential estimates: 152347
Number of links: 167182 (uncompressed 2611456, compression ratio is 93.6%)
Max recursion level: 27
Max Mesh relative refinement value: 1.68023e-006
Iteration time: 0.203000s (0 days, 0 hours, 0 mins, 0 s)
Iteration allocated memory: 17250 kilobytes

Total allocated memory: 17250 kilobytes
Total time: 0.483000s (0 days, 0 hours, 0 mins, 0 s)



Now your other questions:

quote:
Is it better to use 150000.0 than 150e-6 and why


Out of habit, I always scale up the values to avoid possible numerical issues. This is often not needed, but I prefer 'whole' values than a lot of e-6 in the input file. If you want the capacitance values already scaled to the correct values, you can keep the coordinates as 150000.0 but account for the measurement units in the relative permittivity.


quote:
what radius did you come up with for the equivalent area(I got 9.66e-06)?


Area is 330e-9 * 580e-9 = 1.914e-13 m^2

Now area of a circle is pi_greek * r^2

So equivalent radius is r = sqrt(1.914e-13 / pi_greek) = 2.47e-7 m
I actually divided this value by 2 to have a sort of lower limit (less coupling) even if this is not a strict proven lower boundary.

How did you get 9.66e-6?

I also take the chance to comment that the parallel plate value cannot be an accurate estimate of the capacitance for this kind of geometry, where the gap is significative vs. the dimension of the structure (a lot of couplings are due to fringing fields).

quote:
The tool I used is called calibre


May I also ask which version of Calibre are you using? I would guess Calibre xACT or xACT 3D. I had not the chance to use these field solvers, but you can find some information about the underlying algorithms in literature. Unless there is some problem in your input, I may just guess that, in order to allow massive parasitics extractions, some tradeoff is made between accuracy and speed. 5.4 fF is not completely off from 8.8 fF. FasterCap, and FastCap, instead are not large scale IC parasitics extractors, but accurate 3D capacitance solvers.

If you wish / can share more details about your Calibre simulation, we may be able to better understand the source of this lower value. BTW are you able to change any simulation option in Calibre, to increase the accuracy?

Best Regards,
Enrico






Go to Top of Page

davidc

USA
3 Posts

Posted - Jan 16 2018 :  22:24:17  Show Profile  Reply with Quote
I recalculated radius for matching area and it matches yours I'm not sure what I did wrong the first time.

I am using calibre xrc.
I haven't seen any options to increase accuracy yet.

I have one new question.
How do I know what to set the -d option to with fastercap?

Thanks Enrico for answering my questions.


david calvin
Go to Top of Page

Enrico

530 Posts

Posted - Jan 16 2018 :  23:07:00  Show Profile  Reply with Quote
Look at the FasterCap embedded online help for an explanation of the parameter:

quote:
'Direct potential interaction coefficient to mesh refinement ratio (-d)' controls the degree of matrix compression. FasterCap stores the panels set and their relationships ('links') in a hierarchical structure, representing the interaction matrix. The '-d' parameter specifies the compression of the links with respect to the panels mesh information as specified with the 'Mesh relative refinement value (-m)' parameter (either manually set or automatically calculated in the 'Auto' mode). A lower value of the '-d' parameter means more links per panel on the average, and in principle a more accurate result; but simulation time will increase accordingly.


Now, the default setting is 1.0 and this value is ok for most of the cases. However, if you see that the solution takes too many iteractions to converge, you may want to lower this value a bit. In particular, when there are extreme geometrical ratios, e.g. a wide plate with structures very near to the surface w.r.t. the plate sides, or long lines with respect to the cross-section dimensions etc. you may need to reduce the -d value. Usually 0.5 or 0.3 makes the trick; the lowest value of 0.1 is in 99% of the cases the bottom you will use even for the most extreme situations. However, lowering this values comes at a cost, as explained above. So I do recommend to reduce the value only if needed. You can run a simulation (possibly with a rough discretization) and see how FasterCap behaves; if you have doubts, you can lower the -d parameter. If the results do not change significatively, you may stay with the original -d value. Otherwise, if you see that the results are different and that the convergence improves, you should probably keep the lower -d value you set.

Regarding Calibre XRC, I believe this is the older version of xACT (when Pextra was acquired by Mentor it had a software called 'PexRC', to extract resistances and capacitances; and actually I think that the format used by both is still called 'pex'). You may check Weiping Shi, Jianguo Liu, Naveen Kakani, Tiejun Yu, "A Fast Hierarchical Algorithm for Three-Dimensional Capacitance Extraction", IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, Vol. 21, No. 3, Mar 2002, as well as Weiping Shi's home page at dropzone.tamu.edu/~wshi/ for some history and details about what's behind Calibre.

However one of the reasons for the -d parameter in FasterCap is exactly to allow the tuning between refinement of the structure (discretization into panels) and the number of links between the panels that, at least according to the article above, is missing in the algorithm described there.

If you want, we can run additional accuracy checks of reference structures. I am quite confident of the results of FasterCap as well as FastCap (and you can see that they are pretty aligned). You may see that these solvers are used as golden references by (literally!) thousands of scientific articles.

Best Regards,
Enrico



Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
FastFieldSolvers Forum © 2020 FastFieldSolvers S.R.L. Go To Top Of Page
Powered By: Snitz Forums 2000 Version 3.4.06