Index: landscape/openems-notes-layout.sch =================================================================== --- landscape/openems-notes-layout.sch (revision 37410) +++ landscape/openems-notes-layout.sch (nonexistent) @@ -1,181 +0,0 @@ -v 20130925 2 -C 40000 40000 0 0 0 title-C.sym -B 48500 50500 6500 2000 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -A 49500 51500 500 90 180 3 0 0 0 -1 -1 -A 54000 51500 500 270 180 3 0 0 0 -1 -1 -V 49500 51500 200 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 -V 49500 51500 300 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 -L 50900 49900 49700 51500 3 0 0 0 -1 -1 -L 50400 49500 49700 51300 3 0 0 0 -1 -1 -L 55300 51900 54500 51600 3 0 0 0 -1 -1 -L 55300 52800 55000 52500 3 0 0 0 -1 -1 -B 41500 50500 6500 2000 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -A 49500 51500 500 270 180 3 0 0 2 100 100 -L 49900 51800 50500 53400 3 0 0 0 -1 -1 -A 42500 51500 500 90 180 3 0 0 0 -1 -1 -A 47000 51500 500 270 180 3 0 0 0 -1 -1 -V 42500 51500 300 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 -V 42500 51500 200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 42500 52000 47000 52000 3 0 0 0 -1 -1 -L 42500 51000 47000 51000 3 0 0 0 -1 -1 -L 42700 51400 43700 50200 3 0 0 0 -1 -1 -L 42500 51200 43400 50000 3 0 0 0 -1 -1 -L 42200 51100 42800 49800 3 0 0 0 -1 -1 -L 46500 50100 46200 50500 3 0 0 0 -1 -1 -T 51600 50200 9 10 1 0 0 0 1 -Body of the trace replaced with a rectangle -T 55300 51900 9 10 1 0 0 0 1 -Ends of the trace replaced with a smaller polygon extruded vertically -T 55300 52800 9 10 1 0 0 0 1 -board outline is now a polygon extruded vertically -T 50900 49900 9 10 1 0 0 0 1 -via hole is now a cylinder of air which ends just at the start of the solder mask layer. -T 50400 49500 9 10 1 0 0 0 1 -the vias plating is a cylinder which is at a priority above the substrate. -T 50500 53400 9 10 1 0 0 0 1 -annular ring is here but occupies the same space as the body of the trace and it's round end. -T 45500 51400 9 10 1 0 0 0 1 -trace -T 43700 50200 9 10 1 0 0 0 1 -via hole -T 43400 50000 9 10 1 0 0 0 1 -via hole plating -T 42800 49800 9 10 1 0 0 0 1 -annular ring (overlapped by end of trace) -T 46500 50100 9 10 1 0 0 0 1 -board outline -T 43100 53900 9 20 1 0 0 0 1 -What we have in pcb-rnd. -T 50000 54600 9 20 1 0 0 0 1 -What we need in OpenEMS. -V 49700 45700 300 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 -V 49700 45700 200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 49700 45500 47700 44800 3 0 0 0 -1 -1 -L 47700 44500 49700 45400 3 0 0 0 -1 -1 -L 47700 46600 49200 45800 3 0 0 0 -1 -1 -L 47700 45800 48000 45600 3 0 0 0 -1 -1 -T 50500 45100 9 10 1 0 0 0 1 -arc -T 47700 44800 9 10 1 0 0 6 1 -via hole -T 47700 44500 9 10 1 0 0 6 1 -via hole plating -T 47700 46600 9 10 1 0 0 6 1 -annular ring (overlapped by end of trace) -T 47700 45800 9 10 1 0 0 6 1 -board outline -T 48100 47800 9 20 1 0 0 0 1 -What we have in pcb-rnd. -B 53000 43800 4200 3700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -V 54600 45700 300 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 -L 54800 45700 57500 46700 3 0 0 0 -1 -1 -L 57500 46300 54900 45600 3 0 0 0 -1 -1 -L 55500 48300 54300 46100 3 0 0 0 -1 -1 -L 57500 45100 57200 45000 3 0 0 0 -1 -1 -A 54600 44700 1500 0 90 3 0 0 0 -1 -1 -A 54600 44700 500 0 90 3 0 0 0 -1 -1 -A 55600 44700 500 180 180 3 0 0 0 -1 -1 -A 54600 45700 500 90 180 3 0 0 0 -1 -1 -T 57500 45900 9 10 1 0 0 0 1 -Rotational Polygon to form the body of the arc -T 57500 46700 9 10 1 0 0 0 1 -via hole is a cylinder filled with air -T 57500 46300 9 10 1 0 0 0 1 -via hole plating a cylinder of metal through the core -T 55500 48300 9 10 1 0 0 0 1 -two cylinders: 1 from via annular ring -T 57500 45100 9 10 1 0 0 0 1 -board outline -T 53100 47800 9 20 1 0 0 0 1 -OpenEMS -A 54600 45700 500 270 180 3 0 0 2 100 100 -L 54600 46200 54600 45200 3 0 0 2 100 100 -L 56100 44700 55100 44700 3 0 0 2 100 100 -T 56600 48100 9 10 1 0 0 0 1 -2. from the end of the arc -A 55600 44700 500 0 180 3 0 0 2 100 100 -V 54600 45700 200 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 -T 57500 44600 9 10 1 0 0 0 1 -cylinder used to add rounded end to the arc -L 57500 44600 56000 44400 3 0 0 0 -1 -1 -B 48000 43800 4200 3700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 54000 52000 54000 51000 3 0 0 2 100 100 -L 49500 52000 54000 52000 3 0 0 0 -1 -1 -L 54000 51000 49500 51000 3 0 0 0 -1 -1 -L 49500 52000 49500 51000 3 0 0 2 100 100 -L 57500 45900 55800 45600 3 0 0 0 -1 -1 -A 54600 45700 800 270 360 3 0 0 4 100 100 -A 49700 45700 800 270 360 3 0 0 4 100 100 -T 47700 45200 9 10 1 0 0 6 1 -via clearance -L 47700 45200 48900 45600 3 0 0 0 -1 -1 -L 56700 47900 55000 46400 3 0 0 0 -1 -1 -T 58700 48000 9 10 1 0 180 0 1 -cylinder for via clearance -A 49700 44700 500 0 90 3 0 0 0 -1 -1 -A 49700 45700 500 90 180 3 0 0 0 -1 -1 -A 49700 44700 1500 0 90 3 0 0 0 -1 -1 -A 50700 44700 500 180 180 3 0 0 0 -1 -1 -A 49700 45700 600 90 180 3 0 0 4 100 100 -T 47700 47300 9 10 1 0 0 6 1 -trace clearance -L 47700 47300 49600 46300 3 0 0 0 -1 -1 -A 49700 44700 1600 0 90 3 0 0 4 100 100 -A 50700 44700 600 180 180 3 0 0 4 100 100 -A 49700 44700 400 0 90 3 0 0 4 100 100 -A 54600 44700 1600 0 90 3 0 0 4 100 100 -A 55600 44700 600 180 360 3 0 0 4 100 100 -A 54600 44700 400 0 90 3 0 0 4 100 100 -L 56200 44700 55000 44700 3 0 0 4 100 100 -L 54600 46300 54600 45100 3 0 0 4 100 100 -T 47700 44000 9 10 1 0 0 6 1 -outline of trace clearance -L 47700 44000 50100 44700 3 0 0 0 -1 -1 -T 57500 44300 9 10 1 0 0 0 1 -cylinder used to add clearance in plane(s) -L 55900 44200 57500 44300 3 0 0 0 -1 -1 -L 56100 45300 57500 45500 3 0 0 0 -1 -1 -T 57500 45500 9 10 1 0 0 0 1 -rotated box used to create clearance around arc -A 49500 51500 800 270 360 3 0 0 4 100 100 -L 49500 52100 49500 50900 3 0 0 4 100 100 -A 54000 51500 600 180 360 3 0 0 4 100 100 -L 54000 52000 54000 51000 3 0 0 2 100 100 -L 54000 52100 54000 50900 3 0 0 4 100 100 -L 54000 50900 49500 50900 3 0 0 4 100 100 -L 54000 52100 49500 52100 3 0 0 4 100 100 -L 51600 50200 51000 51000 3 0 0 0 -1 -1 -A 42500 51500 800 270 360 3 0 0 4 100 100 -A 42500 51500 600 90 180 3 0 0 4 100 100 -A 47000 51500 600 270 180 3 0 0 4 100 100 -L 47000 50900 42500 50900 3 0 0 4 100 100 -L 47000 52100 42500 52100 3 0 0 4 100 100 -A 54600 45700 600 180 360 3 0 0 4 100 100 -A 49500 51500 600 180 360 3 0 0 4 100 100 -A 54000 51500 500 90 180 3 0 0 2 100 100 -L 54500 51200 55300 51000 3 0 0 0 -1 -1 -T 52300 53100 9 10 1 0 0 0 1 -clearance around the trace's body is just a square sharing 2 of the same edges with the body only wider -L 52300 53100 51600 52100 3 0 0 0 -1 -1 -T 55300 50600 9 10 1 0 0 0 3 -Clearance around the end of the trace (required if we are in a - polygon) is a cylinder of what ever matterial the copper - was displacing (air, solder mask, substrate/adheasive). -L 43700 52100 44500 52900 3 0 0 0 -1 -1 -L 42500 52300 43400 53300 3 0 0 0 -1 -1 -T 44500 52900 9 10 1 0 0 0 1 -Clearance around the trace -T 43400 53300 9 10 1 0 0 0 1 -Clearance around the via -T 50400 53700 9 10 1 0 0 0 3 -Clearance around the via (required if we are in a polygon) is - a cylinder of what ever matterial the copper was - displacing (air, solder mask, substrate/adheasive). -L 49500 52300 50400 54100 3 0 0 0 -1 -1 -T 49600 48700 9 10 1 0 0 0 3 -Clearance around the end of the trace (required if we are in a - polygon) is a cylinder of what ever matterial the copper - was displacing (air, solder mask, substrate/adheasive). -L 49300 50900 49600 49100 3 0 0 0 -1 -1 -T 46300 56000 9 10 1 0 0 0 1 -I drew these first and then realized they were too cluttered. There is a second set in the new file that is cleaner. Index: landscape/zmesh.txt =================================================================== --- landscape/zmesh.txt (revision 37410) +++ landscape/zmesh.txt (nonexistent) @@ -1,36 +0,0 @@ -0) What matterials do you want to make the boundary box out of? -> goes in BC in the output - - 0a) (do you want to pad things by adding a wall of cells and if so how - deep should it be? (or better save this for another release) - - not documented/supported, skip it) - - 0b) select max frequency of interest (f_max= in mesh_init.m) - -1) Any time you have a surface parallel to the Z axis it must have a mesh -line. So the exterior of the substrate, and if the copper is 3D then that -should have a line on top of it too. - -2) How much detail do you need inside the pcb substrate? - - 2a) No mesh lines inside the substrate? ok - - 2b) Select the number of lines you need (0, 1, 3, 5) inside the substate. - - -3) Do you have an uninterrupted copper plane under the pcb (and the right -boundary conditions)? Ask the user if in-air mesh is needed, per side -(checkbox) - -4) Do you need the field around the pcb in high resolution? -> ask for -the specific resolution - - ( - 4a) If you don't then you can ramp down the resolution outside the pcb. - - - 4b) If you do you do then you might just choose a fine uniform spacing - outside. - ) - -5) How far outside the pcb do you need to mesh? Index: landscape/zmesh-ref.sch =================================================================== --- landscape/zmesh-ref.sch (revision 37410) +++ landscape/zmesh-ref.sch (nonexistent) @@ -1,107 +0,0 @@ -v 20130925 2 -C 40000 40000 0 0 0 title-B.sym -B 40800 46000 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 -L 44000 46000 40600 46000 3 0 0 0 -1 -1 -B 40300 43000 4000 6500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 44000 46400 40600 46400 3 0 0 0 -1 -1 -L 44000 46900 40600 46900 3 0 0 0 -1 -1 -L 44000 47400 40600 47400 3 0 0 0 -1 -1 -L 44000 47900 40600 47900 3 0 0 0 -1 -1 -L 44000 48400 40600 48400 3 0 0 0 -1 -1 -L 44000 45000 40600 45000 3 0 0 0 -1 -1 -L 44000 45500 40600 45500 3 0 0 0 -1 -1 -L 44000 44000 40600 44000 3 0 0 0 -1 -1 -L 44000 44500 40600 44500 3 0 0 0 -1 -1 -L 44000 43500 40600 43500 3 0 0 0 -1 -1 -L 44000 48900 40600 48900 3 0 0 0 -1 -1 -T 42400 46200 9 10 1 0 0 4 1 -Substrate -T 40300 49500 9 10 1 0 0 0 3 -Special case 2 layers, no internal features, and -copper on the side that has the z line on it is a -ground plane. This is the most common. -B 44900 46100 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 -L 48100 46100 44700 46100 3 0 0 0 -1 -1 -B 44400 43000 4000 6500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 48100 46500 44700 46500 3 0 0 0 -1 -1 -L 48100 46900 44700 46900 3 0 0 0 -1 -1 -L 48100 47400 44700 47400 3 0 0 0 -1 -1 -L 48100 47900 44700 47900 3 0 0 0 -1 -1 -L 48100 48400 44700 48400 3 0 0 0 -1 -1 -L 48100 45100 44700 45100 3 0 0 0 -1 -1 -L 48100 45600 44700 45600 3 0 0 0 -1 -1 -L 48100 44100 44700 44100 3 0 0 0 -1 -1 -L 48100 44600 44700 44600 3 0 0 0 -1 -1 -L 48100 43600 44700 43600 3 0 0 0 -1 -1 -L 48100 48900 44700 48900 3 0 0 0 -1 -1 -T 46500 46300 9 10 1 0 0 4 1 -Substrate -T 44400 49500 9 10 1 0 0 0 6 -This has the z mesh jump kind of crazily and I think -it should transition smoother but I am not the -expert Koen is. This has a cutout in the bottom -copper plane and I am not sure if that explains the -added complexity. I am not sure but I believe mesh -inside the substrate is part of how you do vias. -L 48100 46300 44700 46300 3 0 0 0 -1 -1 -T 40300 42700 9 10 1 0 0 0 1 -Koen's notchfilter, hairpinfilter, -T 44400 42700 9 10 1 0 0 0 1 -Koen's tutorial on hyp2mat -B 49000 46200 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 -B 48500 43000 4000 6500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 52200 46500 48800 46500 3 0 0 0 -1 -1 -L 52200 47100 48800 47100 3 0 0 0 -1 -1 -L 52200 47500 48800 47500 3 0 0 0 -1 -1 -L 52200 48000 48800 48000 3 0 0 0 -1 -1 -L 52200 45300 48800 45300 3 0 0 0 -1 -1 -L 52200 44300 48800 44300 3 0 0 0 -1 -1 -L 52200 44800 48800 44800 3 0 0 0 -1 -1 -L 52200 43800 48800 43800 3 0 0 0 -1 -1 -L 52200 48500 48800 48500 3 0 0 0 -1 -1 -L 52200 46400 48800 46400 3 0 0 0 -1 -1 -T 50600 46400 9 10 1 0 0 4 1 -Substrate -T 48500 49500 9 10 1 0 0 0 5 -This example involved a very smoothed mesh which -is probably because it's an antenna example and it -divided the substrate up to handle everything being -done in 3D (meaning 3D copper too). This is probably -what people should use for multilayer (>2) boards. -T 48500 42700 9 10 1 0 0 0 1 -Thorsten's tutorial on f antennas -L 52200 46300 48800 46300 3 0 0 0 -1 -1 -L 52200 46200 48800 46200 3 0 0 0 -1 -1 -L 52200 46600 48800 46600 3 0 0 0 -1 -1 -L 52200 46800 48800 46800 3 0 0 0 -1 -1 -L 52200 46000 48800 46000 3 0 0 0 -1 -1 -L 52200 45700 48800 45700 3 0 0 0 -1 -1 -L 52200 49000 48800 49000 3 0 0 0 -1 -1 -L 52200 43300 48800 43300 3 0 0 0 -1 -1 -B 53100 46200 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 -B 52600 43000 4000 6500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 56300 46500 52900 46500 3 0 0 0 -1 -1 -L 56300 47100 52900 47100 3 0 0 0 -1 -1 -L 56300 47500 52900 47500 3 0 0 0 -1 -1 -L 56300 48000 52900 48000 3 0 0 0 -1 -1 -L 56300 48500 52900 48500 3 0 0 0 -1 -1 -L 56300 46400 52900 46400 3 0 0 0 -1 -1 -L 56300 46300 52900 46300 3 0 0 0 -1 -1 -L 56300 46200 52900 46200 3 0 0 0 -1 -1 -L 56300 46600 52900 46600 3 0 0 0 -1 -1 -L 56300 46800 52900 46800 3 0 0 0 -1 -1 -L 56300 49000 52900 49000 3 0 0 0 -1 -1 -T 54700 46400 9 10 1 0 0 4 1 -Substrate -T 52600 49500 9 10 1 0 0 0 5 -This z mesh ends at the bottom of the board. The boundary -conditions on this simulation are probably why they are able -to end the mesh here. It also has to do with the field not -being important. What is interesting is the miss use of -(addbox) for a 2D construct. -T 52600 42700 9 10 1 0 0 0 1 -Thorsten's tutorial on stub filter -T 53900 40100 14 9 1 0 0 0 1 -Evan Foss -T 50000 40700 14 9 1 0 0 0 1 -Mesh Examples Index: landscape/zmesh.sch =================================================================== --- landscape/zmesh.sch (revision 37410) +++ landscape/zmesh.sch (nonexistent) @@ -1,87 +0,0 @@ -v 20130925 2 -C 40000 40000 0 0 0 title-B.sym -B 40800 47000 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 -L 44000 47000 40600 47000 3 0 0 0 -1 -1 -B 40300 44000 4000 6500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 44000 47400 40600 47400 3 0 0 0 -1 -1 -L 44000 47900 40600 47900 3 0 0 0 -1 -1 -L 44000 48400 40600 48400 3 0 0 0 -1 -1 -L 44000 48900 40600 48900 3 0 0 0 -1 -1 -L 44000 49400 40600 49400 3 0 0 0 -1 -1 -L 44000 46000 40600 46000 3 0 0 0 -1 -1 -L 44000 46500 40600 46500 3 0 0 0 -1 -1 -L 44000 45000 40600 45000 3 0 0 0 -1 -1 -L 44000 45500 40600 45500 3 0 0 0 -1 -1 -L 44000 44500 40600 44500 3 0 0 0 -1 -1 -L 44000 49900 40600 49900 3 0 0 0 -1 -1 -T 42400 47200 9 10 1 0 0 4 1 -Substrate -B 44900 47100 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 -L 48100 47100 44700 47100 3 0 0 0 -1 -1 -B 44400 44000 4000 6500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 48100 47500 44700 47500 3 0 0 0 -1 -1 -L 48100 47900 44700 47900 3 0 0 0 -1 -1 -L 48100 48400 44700 48400 3 0 0 0 -1 -1 -L 48100 48900 44700 48900 3 0 0 0 -1 -1 -L 48100 49400 44700 49400 3 0 0 0 -1 -1 -L 48100 46100 44700 46100 3 0 0 0 -1 -1 -L 48100 46600 44700 46600 3 0 0 0 -1 -1 -L 48100 45100 44700 45100 3 0 0 0 -1 -1 -L 48100 45600 44700 45600 3 0 0 0 -1 -1 -L 48100 44600 44700 44600 3 0 0 0 -1 -1 -L 48100 49900 44700 49900 3 0 0 0 -1 -1 -T 46500 47300 9 10 1 0 0 4 1 -Substrate -L 48100 47300 44700 47300 3 0 0 0 -1 -1 -B 49000 47200 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 -B 48500 44000 4000 6500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 52200 47500 48800 47500 3 0 0 0 -1 -1 -L 52200 48100 48800 48100 3 0 0 0 -1 -1 -L 52200 48500 48800 48500 3 0 0 0 -1 -1 -L 52200 49000 48800 49000 3 0 0 0 -1 -1 -L 52200 46300 48800 46300 3 0 0 0 -1 -1 -L 52200 45300 48800 45300 3 0 0 0 -1 -1 -L 52200 45800 48800 45800 3 0 0 0 -1 -1 -L 52200 44800 48800 44800 3 0 0 0 -1 -1 -L 52200 49500 48800 49500 3 0 0 0 -1 -1 -L 52200 47400 48800 47400 3 0 0 0 -1 -1 -T 50600 47400 9 10 1 0 0 4 1 -Substrate -L 52200 47300 48800 47300 3 0 0 0 -1 -1 -L 52200 47200 48800 47200 3 0 0 0 -1 -1 -L 52200 47600 48800 47600 3 0 0 0 -1 -1 -L 52200 47800 48800 47800 3 0 0 0 -1 -1 -L 52200 47000 48800 47000 3 0 0 0 -1 -1 -L 52200 46700 48800 46700 3 0 0 0 -1 -1 -L 52200 50000 48800 50000 3 0 0 0 -1 -1 -L 52200 44300 48800 44300 3 0 0 0 -1 -1 -B 53100 47200 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 -B 52600 47000 4000 3500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 56300 47500 52900 47500 3 0 0 0 -1 -1 -L 56300 48100 52900 48100 3 0 0 0 -1 -1 -L 56300 48500 52900 48500 3 0 0 0 -1 -1 -L 56300 49000 52900 49000 3 0 0 0 -1 -1 -L 56300 49500 52900 49500 3 0 0 0 -1 -1 -L 56300 47400 52900 47400 3 0 0 0 -1 -1 -L 56300 47300 52900 47300 3 0 0 0 -1 -1 -L 56300 47200 52900 47200 3 0 0 0 -1 -1 -L 56300 47600 52900 47600 3 0 0 0 -1 -1 -L 56300 47800 52900 47800 3 0 0 0 -1 -1 -L 56300 50000 52900 50000 3 0 0 0 -1 -1 -T 54700 47400 9 10 1 0 0 4 1 -Substrate -T 53900 40100 14 9 1 0 0 0 1 -Evan Foss -T 50000 40700 14 9 1 0 0 0 1 -Mesh Examples -T 40300 50600 9 10 1 0 0 0 1 -Uniform mesh of board thickness -T 44400 50600 9 10 1 0 0 0 2 -Uniform mesh of board thickness with added -line in substrate. -T 48500 50600 9 10 1 0 0 0 2 -Non-uniform mesh with substate internal lines - -T 52600 50600 9 10 1 0 0 0 2 -Non-uniform mesh with substate internal lines -and the board at the bottom of the mesh Index: landscape/openems-layout-simple.sch =================================================================== --- landscape/openems-layout-simple.sch (revision 37410) +++ landscape/openems-layout-simple.sch (nonexistent) @@ -1,183 +0,0 @@ -v 20130925 2 -C 40000 40000 0 0 0 title-C.sym -B 49000 53000 6500 2000 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -A 50000 54000 500 90 180 3 0 0 0 -1 -1 -A 54500 54000 500 270 180 3 0 0 0 -1 -1 -L 55800 54400 55000 54100 3 0 0 0 -1 -1 -L 55800 55300 55500 55000 3 0 0 0 -1 -1 -B 41500 53000 6500 2000 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -A 50000 54000 500 270 180 3 0 0 2 100 100 -L 50400 54300 51300 55900 3 0 0 0 -1 -1 -A 42500 54000 500 90 180 3 0 0 0 -1 -1 -A 47000 54000 500 270 180 3 0 0 0 -1 -1 -L 42500 54500 47000 54500 3 0 0 0 -1 -1 -L 42500 53500 47000 53500 3 0 0 0 -1 -1 -L 42200 53600 42600 52700 3 0 0 0 -1 -1 -L 46500 52600 46200 53000 3 0 0 0 -1 -1 -T 52100 52700 9 10 1 0 0 0 1 -Body of the trace replaced with a rectangle -T 55800 54400 9 10 1 0 0 0 1 -Ends of the trace replaced with a smaller polygon extruded vertically -T 55800 55300 9 10 1 0 0 0 1 -board outline is now a polygon extruded vertically -T 51300 55900 9 10 1 0 0 0 1 -annular ring is here but occupies the same space as the body of the trace and it's round end. -T 45500 53900 9 10 1 0 0 0 1 -trace -T 42600 52700 9 10 1 0 0 0 1 -end of trace -T 46500 52600 9 10 1 0 0 0 1 -board outline -T 42300 56300 9 20 1 0 0 0 1 -What we have in pcb-rnd. -T 50300 56300 9 20 1 0 0 0 1 -What we need in OpenEMS. -L 54500 54500 54500 53500 3 0 0 2 100 100 -L 50000 54500 54500 54500 3 0 0 0 -1 -1 -L 54500 53500 50000 53500 3 0 0 0 -1 -1 -L 50000 54500 50000 53500 3 0 0 2 100 100 -T 44500 40300 9 10 1 0 0 0 6 -To me the most annoying corner case is the trouble of board outline vs board cutout. -PCB fabs by default assume the outline of the board is the middle of the lines drawn -around the layout. Board cutouts are however milled to the exterior edge of the lines -drawn in the gerber. Since both are done on the outline layer in pcb-rnd we have to -figure out which is the outline of the board and which is the outline of the cutout -before converting the geometry. -L 50000 54600 50000 53400 3 0 0 4 100 100 -A 54500 54000 600 180 360 3 0 0 4 100 100 -L 54500 54500 54500 53500 3 0 0 2 100 100 -L 54500 54600 54500 53400 3 0 0 4 100 100 -L 54500 53400 50000 53400 3 0 0 4 100 100 -L 54500 54600 50000 54600 3 0 0 4 100 100 -L 52100 52700 51500 53500 3 0 0 0 -1 -1 -A 42500 54000 600 90 180 3 0 0 4 100 100 -A 47000 54000 600 270 180 3 0 0 4 100 100 -L 47000 53400 42500 53400 3 0 0 4 100 100 -L 47000 54600 42500 54600 3 0 0 4 100 100 -A 50000 54000 600 180 360 3 0 0 4 100 100 -A 54500 54000 500 90 180 3 0 0 2 100 100 -L 55000 53700 55800 53500 3 0 0 0 -1 -1 -T 52800 55600 9 10 1 0 0 0 1 -clearance around the trace's body is just a square sharing 2 of the same edges with the body only wider -L 52800 55600 52100 54600 3 0 0 0 -1 -1 -T 55800 53100 9 10 1 0 0 0 3 -Clearance around the end of the trace (required if we are in a - polygon) is a cylinder of what ever matterial the copper - was displacing (air, solder mask, substrate/adheasive). -L 43700 54600 44500 55400 3 0 0 0 -1 -1 -T 44500 55400 9 10 1 0 0 0 1 -Clearance around the trace -B 47500 47000 2500 2500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -V 48500 48500 200 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 -V 48500 48500 300 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 -A 48500 48500 800 270 360 3 0 0 4 100 100 -A 48500 48500 500 90 360 3 0 0 0 -1 -1 -T 50100 52000 9 10 1 0 0 0 3 -Clearance around the end of the trace (required if we are in a - polygon) is a cylinder of what ever matterial the copper - was displacing (air, solder mask, substrate/adheasive). -L 49700 53500 50100 52400 3 0 0 0 -1 -1 -L 48500 49300 50300 50600 3 0 0 0 -1 -1 -L 48900 48800 50300 49100 3 0 0 0 -1 -1 -L 50300 48300 48700 48500 3 0 0 0 -1 -1 -L 50300 47800 48700 48300 3 0 0 0 -1 -1 -T 50300 50200 9 10 1 0 0 0 3 -Clearance around the via (required if we are in a polygon) is - a cylinder of what ever matterial the copper was - displacing (air, solder mask, substrate/adheasive). -T 50300 49100 9 10 1 0 0 0 1 -annular ring is here but occupies the same space as the body of the trace and it's round end. -T 50300 48300 9 10 1 0 0 0 1 -via hole is now a cylinder of air which ends just at the start of the solder mask layer. -T 50300 47800 9 10 1 0 0 0 1 -the vias plating is a cylinder which is at a priority above the substrate. -T 50300 49700 9 10 1 0 0 0 1 -board outline is now a polygon extruded vertically -T 47500 50900 9 20 1 0 0 0 1 -Vias in OpenEMS -A 42000 48500 500 90 360 3 0 0 0 -1 -1 -V 42000 48500 300 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 -V 42000 48500 200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 42200 48400 43800 47800 3 0 0 0 -1 -1 -L 42100 48200 43800 47500 3 0 0 0 -1 -1 -L 42100 48000 43800 47200 3 0 0 0 -1 -1 -L 43800 49700 43500 49500 3 0 0 0 -1 -1 -A 42000 48500 800 270 360 3 0 0 4 100 100 -L 42000 49300 43800 50100 3 0 0 0 -1 -1 -T 43800 47800 9 10 1 0 0 0 1 -via hole -T 43800 47500 9 10 1 0 0 0 1 -via hole plating -T 43800 47200 9 10 1 0 0 0 1 -annular ring (overlapped by end of trace) -T 43800 49700 9 10 1 0 0 0 1 -board outline -T 41000 50900 9 20 1 0 0 0 1 -What we have in pcb-rnd. -T 43800 50100 9 10 1 0 0 0 1 -Clearance around the via -B 41000 47000 2500 2500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 50300 49700 50000 49500 3 0 0 0 -1 -1 -L 47700 44600 49200 43800 3 0 0 0 -1 -1 -L 47700 43800 48000 43600 3 0 0 0 -1 -1 -B 53000 41800 4200 3700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 55300 46000 54300 44100 3 0 0 0 -1 -1 -L 57500 43100 57200 43000 3 0 0 0 -1 -1 -A 54600 42700 1500 0 90 3 0 0 0 -1 -1 -A 54600 42700 500 0 90 3 0 0 0 -1 -1 -A 55600 42700 500 180 180 3 0 0 0 -1 -1 -A 54600 43700 500 90 180 3 0 0 0 -1 -1 -A 54600 43700 500 270 180 3 0 0 2 100 100 -L 54600 44200 54600 43200 3 0 0 2 100 100 -L 56100 42700 55100 42700 3 0 0 2 100 100 -A 55600 42700 500 0 180 3 0 0 2 100 100 -L 57500 42600 56000 42400 3 0 0 0 -1 -1 -B 48000 41800 4200 3700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 57500 43900 55800 43600 3 0 0 0 -1 -1 -A 49700 42700 500 0 90 3 0 0 0 -1 -1 -A 49700 43700 500 90 180 3 0 0 0 -1 -1 -A 49700 42700 1500 0 90 3 0 0 0 -1 -1 -A 50700 42700 500 180 180 3 0 0 0 -1 -1 -A 49700 43700 600 90 180 3 0 0 4 100 100 -L 47700 45300 49600 44300 3 0 0 0 -1 -1 -A 49700 42700 1600 0 90 3 0 0 4 100 100 -A 50700 42700 600 180 180 3 0 0 4 100 100 -A 49700 42700 400 0 90 3 0 0 4 100 100 -A 54600 42700 1600 0 90 3 0 0 4 100 100 -A 55600 42700 600 180 360 3 0 0 4 100 100 -A 54600 42700 400 0 90 3 0 0 4 100 100 -L 56200 42700 55000 42700 3 0 0 4 100 100 -L 54600 44300 54600 43100 3 0 0 4 100 100 -L 47700 42400 50100 42700 3 0 0 0 -1 -1 -L 55900 42200 57500 42300 3 0 0 0 -1 -1 -L 56100 43300 57500 43500 3 0 0 0 -1 -1 -A 54600 43700 600 180 360 3 0 0 4 100 100 -T 50200 43400 9 10 1 0 0 0 1 -arc -T 47700 44600 9 10 1 0 0 6 1 -annular ring (overlapped by end of trace) -T 47700 43800 9 10 1 0 0 6 1 -board outline -T 48000 45700 9 20 1 0 0 0 1 -What we have in pcb-rnd. -T 57500 43900 9 10 1 0 0 0 1 -Rotational box to form the body of the arc -T 57500 43100 9 10 1 0 0 0 1 -board outline -T 53000 45700 9 20 1 0 0 0 1 -OpenEMS -T 55300 46000 9 10 1 0 0 0 1 -cylinders for the ends of the arc -T 57500 42600 9 10 1 0 0 0 1 -cylinder used to add rounded end to the arc -T 47700 45300 9 10 1 0 0 6 1 -trace clearance -T 47700 42400 9 10 1 0 0 6 1 -outline of trace clearance -T 57500 42300 9 10 1 0 0 0 1 -cylinder used to add clearance in plane(s) -T 57500 43500 9 10 1 0 0 0 1 -rotated box used to create clearance around arc -T 55200 46300 9 10 1 0 0 0 1 -cylinder used to add clearance -L 55200 46300 54200 44200 3 0 0 0 -1 -1 Index: landscape/openems-notes.sch =================================================================== --- landscape/openems-notes.sch (revision 37410) +++ landscape/openems-notes.sch (nonexistent) @@ -1,322 +0,0 @@ -v 20130925 2 -C 40000 40000 0 0 0 title-C.sym -B 52000 50100 500 4800 3 0 1 1 -1 100 0 -1 -1 -1 -1 -1 -B 52100 50100 300 4800 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 -L 53300 55300 53100 54700 3 0 0 0 -1 -1 -B 49500 52100 5500 700 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 -B 49500 53600 5500 600 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 -B 49500 53000 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 -L 49500 53400 49500 53600 3 0 0 0 -1 -1 -L 55000 52800 55000 53600 3 0 0 0 -1 -1 -L 49500 52800 49500 53000 3 0 0 0 -1 -1 -B 51400 51500 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 -L 55000 51900 55000 52100 3 0 0 0 -1 -1 -L 49500 51300 49500 52100 3 0 0 0 -1 -1 -L 55000 51300 55000 51500 3 0 0 0 -1 -1 -B 49500 49900 5500 600 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 51400 49700 51800 50100 3 0 0 0 -1 -1 -B 49500 50700 5500 600 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 -B 49500 54200 5500 200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -B 49500 50500 5500 200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -B 51400 50100 1700 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 -B 51400 54400 1700 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 -L 52500 51100 54000 49800 3 0 0 0 -1 -1 -B 58500 50100 500 4800 3 0 1 1 -1 100 0 -1 -1 -1 -1 -1 -B 58600 50100 300 4800 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 -L 59600 55200 59200 54800 3 0 0 0 -1 -1 -B 56000 51900 5500 1100 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 -B 56000 53400 5500 1000 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 -B 56000 53000 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 -L 61500 53000 61500 53400 3 0 0 0 -1 -1 -B 57900 51500 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 -L 56000 51500 56000 51900 3 0 0 0 -1 -1 -B 56000 49900 5500 600 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -L 57900 49700 58300 50100 3 0 0 0 -1 -1 -B 56000 50500 5500 1000 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 -B 57900 50100 1700 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 -B 57900 54400 1700 500 3 0 0 0 -1 -1 2 1 -1 100 -1 100 -L 59000 51100 60600 49700 3 0 0 0 -1 -1 -B 43000 41000 500 3100 3 0 1 1 -1 100 0 -1 -1 -1 -1 -1 -B 43100 41000 300 3100 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 -L 44100 44500 43700 44100 3 0 0 0 -1 -1 -B 40500 41000 5500 3100 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 -L 42200 40500 42700 41000 3 0 0 0 -1 -1 -L 43500 41500 45100 40400 3 0 0 0 -1 -1 -B 49500 42400 5500 1100 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 -B 52200 42400 300 1100 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 -B 52100 42400 500 1100 3 0 1 1 -1 100 0 -1 -1 -1 -1 -1 -L 51100 54400 51100 55000 3 0 0 0 -1 -1 -L 51100 55000 49500 55000 3 0 0 0 -1 -1 -L 49500 55000 49500 54400 3 0 0 0 -1 -1 -L 53400 54400 53400 55000 3 0 0 0 -1 -1 -L 53400 55000 55000 55000 3 0 0 0 -1 -1 -L 55000 55000 55000 54400 3 0 0 0 -1 -1 -L 51400 55400 51700 55000 3 0 0 0 -1 -1 -B 51400 54800 1700 100 3 0 0 0 -1 -1 3 1 4 200 -1 -1 -L 52800 55100 52900 54900 3 0 0 0 -1 -1 -T 40500 52300 9 10 1 0 0 0 5 -The exporter should ask what the lowest priority it can use is and what the highest -is. That way if you run out of room it can warn. I want to be able to set the pcb's -base priority so that it can be super imposed in designs. I am not sure how well -that will work but it is just a question of what number to use so we are not talking -about a minor addition to the complexity we already have. -T 55400 40800 9 10 1 0 0 0 4 -http://openems.de/index.php/Tutorial:_Importing_with_hyp2mat - -3D copper used to model antennas -http://openems.de/index.php/Tutorial:_Simple_Patch_Antenna -T 49700 54600 9 10 1 0 0 0 1 -Solder Mask -T 52100 52300 22 10 1 0 0 0 1 -Air -T 53300 55300 9 10 1 0 0 0 1 -Annular Ring -T 50100 53100 9 10 1 0 0 0 1 -trace on inside layer -T 49700 52400 9 10 1 0 0 0 1 -substrate -T 54100 52400 9 10 1 0 0 0 1 -substrate -T 54100 53800 9 10 1 0 0 0 1 -substrate -T 49700 53800 9 10 1 0 0 0 1 -substrate -T 53600 53200 9 10 1 0 0 0 1 -adheasive -T 50800 52800 9 10 1 0 0 0 1 -adheasive -T 50800 53400 9 10 1 0 0 0 1 -adheasive -T 40500 53500 9 10 1 0 0 0 15 -we have to assume the board is planar otherwise impedances will be a nightmare. -yes in real life some vendors squish boards in ways that make the outline of -internal copper layers embossed into all the layers over them. This type of -manufacturing is impossibly bad for calculating impedances. - -To save computational power in the E&M solver we should also ingore the tiny -layer of adheasive under and over the copper layer. Making the stackup the same -thickness but the substrate slightly thicker. So the stackup above on the left -is altered into the one on the right. - -I am not sure if the annular ring actually has adheasive under it or if it is plated -directly onto the board. This may vary with process. More research is needed. - -If we do mechanical simulation or export later we should add in a feature to -support export with adheasive because it adds required boundary conditions. -T 54600 51600 9 10 1 0 0 6 1 -trace on inside layer -T 50900 51700 9 10 1 0 0 6 1 -adheasive -T 53700 51300 9 10 1 0 0 6 1 -adheasive -T 53700 51900 9 10 1 0 0 6 1 -adheasive -T 54800 50300 9 10 1 0 180 0 1 -Solder Mask -T 51400 49700 9 10 1 0 180 0 1 -Annular Ring -T 50400 51100 9 10 1 0 180 0 1 -substrate -T 54800 51100 9 10 1 0 180 0 1 -substrate -T 50800 54200 9 10 1 0 0 0 1 -adheasive -T 53000 54200 9 10 1 0 0 0 1 -adheasive -T 50800 50500 9 10 1 0 0 0 1 -adheasive -T 53800 50500 9 10 1 0 0 0 1 -adheasive -T 53000 49600 9 10 1 0 0 0 1 -copper plating on the hole -T 58600 52300 22 10 1 0 0 0 1 -Air -T 59600 55200 9 10 1 0 0 0 1 -Annular Ring -T 56500 53100 9 10 1 0 0 0 1 -trace on inside layer -T 56200 52400 9 10 1 0 0 0 1 -substrate -T 59900 52400 9 10 1 0 0 0 1 -substrate -T 60000 53800 9 10 1 0 0 0 1 -substrate -T 56200 53800 9 10 1 0 0 0 1 -substrate -T 60100 53200 9 10 1 0 0 0 1 -adheasive -T 61100 51600 9 10 1 0 0 6 1 -trace on inside layer -T 57400 51700 9 10 1 0 0 6 1 -adheasive -T 61300 50300 9 10 1 0 180 0 1 -Solder Mask -T 57900 49700 9 10 1 0 180 0 1 -Annular Ring -T 56900 51100 9 10 1 0 180 0 1 -substrate -T 61000 51100 9 10 1 0 180 0 1 -substrate -T 59600 49500 9 10 1 0 0 0 1 -copper plating on the hole -T 47900 41300 9 10 1 0 0 0 1 -Note: None of these drawings are to scale. -T 49400 55800 9 20 1 0 0 0 1 -Worst case for PCB-RND storage. -T 56500 55800 9 20 1 0 0 0 1 -Worst case for OpenEMS. -T 40500 50900 9 10 1 0 0 0 6 -I am going to assume for simulation that the tiny amount of adheasive under and -over the traces is not important to modeling in the E&M domain. If it was we would -have to worry about minor variations in it's thickness and etc which would be brutal. - -I am also going to assume that the adheasive is not exactly the same impedance as -the substrate. -T 43100 42400 22 10 1 0 0 0 1 -Air -T 44100 44500 9 10 1 0 0 0 1 -Annular Ring -T 40700 42500 9 10 1 0 0 0 1 -substrate -T 40700 43900 9 10 1 0 0 0 1 -substrate -T 42200 40500 9 10 1 0 180 0 1 -Annular Ring -T 45800 41200 9 10 1 0 180 0 1 -substrate -T 44100 40200 9 10 1 0 0 0 1 -copper plating on the hole -T 40500 44700 9 20 1 0 0 0 1 -Multilayer accelerated with 2D mesh -T 45700 43400 9 10 1 0 180 0 1 -substrate -T 52200 42900 22 10 1 0 0 0 1 -Air -T 49700 42900 9 10 1 0 0 0 1 -substrate -T 54100 42900 9 10 1 0 0 0 1 -substrate -T 49500 44400 9 20 1 0 0 0 1 -3D copper replaced with 2D mesh -T 51400 55400 9 10 1 0 0 6 1 -Exposed Via -T 53500 54600 9 10 1 0 0 0 1 -Solder Mask -T 52800 55100 9 10 1 0 0 6 1 -ENIG Plating -L 59900 54400 59900 55000 3 0 0 0 -1 -1 -L 59900 55000 61500 55000 3 0 0 0 -1 -1 -L 61500 55000 61500 54400 3 0 0 0 -1 -1 -L 57600 54400 57600 55000 3 0 0 0 -1 -1 -L 57600 55000 56000 55000 3 0 0 0 -1 -1 -L 56000 55000 56000 54400 3 0 0 0 -1 -1 -T 60000 54600 9 10 1 0 0 0 1 -Solder Mask -T 56200 54600 9 10 1 0 0 0 1 -Solder Mask -T 51100 55200 9 10 1 0 0 6 1 -Solder Mask Clearance -L 51100 55200 51300 54900 3 0 0 0 -1 -1 -L 57900 55400 58200 55000 3 0 0 0 -1 -1 -L 57600 55200 57800 54900 3 0 0 0 -1 -1 -T 57900 55400 9 10 1 0 0 6 1 -Exposed Via -T 57600 55200 9 10 1 0 0 6 1 -Solder Mask Clearance -T 40500 47100 9 10 1 0 0 0 18 -Every matterial has a priority, matterial and geometry in OpenEMS. We can only -add matterials we can not subtract. However we can add non-conductive things -at higher priority so that we create voids with pockets of air. - -There is an added complexity in that we don't want to have to cut around traces -and annular rings that are inside/adjacent to planes. - -The following is how the priorities are to be used. The number after the item is the -priority relative to the 0 point that users set. I want this feature because there might -be a structure people want to layer this over/under after export. - -holes, mask clearance & cutouts (air) 6 -copper traces & copper planes with no clearance 5 -substrate (adheasive) clearance 4 -copper planes 3 -adheasive 2 -substrate 1 -environment (air) 0 x and y set at time of export z left as a variable to the user -L 40500 43100 46000 43100 3 0 0 0 -1 -1 -L 46000 42000 40500 42000 3 0 0 0 -1 -1 -L 42400 42000 46000 42000 7 4 0 2 100 100 -L 40500 43100 44100 43100 7 4 0 2 100 100 -L 42400 41000 44100 41000 7 4 0 2 100 100 -L 42400 44100 44100 44100 7 4 0 2 100 100 -L 51400 42400 55000 42400 7 4 0 2 100 100 -L 49500 43500 53100 43500 7 4 0 2 100 100 -B 58500 43200 500 4800 3 0 1 1 -1 100 0 -1 -1 -1 -1 -1 -B 58600 43200 300 4800 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 -L 59600 48400 59200 48000 3 0 0 0 -1 -1 -B 56000 43600 5500 3900 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 -B 56000 46100 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 -B 57900 44600 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 -L 57900 42800 58300 43200 3 0 0 0 -1 -1 -B 57900 43200 1700 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 -B 57900 47500 1700 500 3 0 0 0 -1 -1 2 1 -1 100 -1 100 -L 59000 44200 60600 43100 3 0 0 0 -1 -1 -B 49500 46400 5500 1100 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 -B 49500 47500 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 -B 51400 46000 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 -B 52200 46000 300 1900 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 -B 52100 46000 500 1900 3 0 1 1 -1 100 0 -1 -1 -1 -1 -1 -T 58600 45400 22 10 1 0 0 0 1 -Air -T 59600 48400 9 10 1 0 0 0 1 -Annular Ring -T 46200 42600 9 10 1 0 0 0 1 -trace on inside layer as 2D mesh -T 56200 45500 9 10 1 0 0 0 1 -substrate -T 56200 46900 9 10 1 0 0 0 1 -substrate -T 61100 44700 9 10 1 0 0 6 1 -trace on inside layer -T 57900 42800 9 10 1 0 180 0 1 -Annular Ring -T 61300 44200 9 10 1 0 180 0 1 -substrate -T 59700 42900 9 10 1 0 0 0 1 -copper plating on the hole -T 56300 48900 9 20 1 0 0 0 1 -Minimal Multilayer OpenEMS -T 61200 46400 9 10 1 0 180 0 1 -substrate -T 52200 46900 22 10 1 0 0 0 1 -Air -T 50100 47600 9 10 1 0 0 0 1 -trace on inside layer -T 49700 46900 9 10 1 0 0 0 1 -substrate -T 54100 46900 9 10 1 0 0 0 1 -substrate -T 54700 46100 9 10 1 0 0 6 1 -trace on inside layer -T 48400 48500 9 20 1 0 0 0 1 -What we need in OpenEMS for minimal 2 layer. -T 40500 45600 9 10 1 0 0 0 6 -In E&M solvers it is not uncommon to cheat a little and make the copper a 2D -mesh applied over the substrate to save processing time. The problem is that -openems does not currenly have any kind of 2D curved primitive. Emulating curves -with a high order polygons would be unpleasant. We should IMHO wait until -openems has 2D curve and arc primitives to invest time in acceleration using 2D -mesh. -L 46200 42600 45300 42000 3 0 0 0 -1 -1 -T 46200 43900 9 10 1 0 0 0 1 -trace on inside layer as 2D mesh -L 46200 43900 43700 43100 3 0 0 0 -1 -1 -T 49200 43800 9 10 1 0 0 0 1 -trace as 2D mesh -L 50600 43800 51100 43500 3 0 0 0 -1 -1 -T 53800 42000 9 10 1 0 0 0 1 -trace as 2D mesh -L 53800 42000 53400 42400 3 0 0 0 -1 -1 -T 58000 46200 9 10 1 0 0 6 1 -trace on inside layer -T 56600 48700 9 10 1 0 0 0 1 -This only works in with 3D representation of copper. Index: landscape/openems-layout-outline.sch =================================================================== --- landscape/openems-layout-outline.sch (revision 37410) +++ landscape/openems-layout-outline.sch (nonexistent) @@ -1,110 +0,0 @@ -v 20130925 2 -C 40000 40000 0 0 0 title-C.sym -B 42000 51000 4500 4500 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 -A 42000 55500 500 90 180 3 0 0 0 -1 -1 -A 46500 55500 500 270 180 3 0 0 0 -1 -1 -L 42000 56000 46500 56000 3 0 0 0 -1 -1 -L 42000 55000 46500 55000 3 0 0 0 -1 -1 -T 44800 55700 9 10 1 0 0 0 1 -trace -T 42300 56300 9 20 1 0 0 0 1 -What we have in pcb-rnd. -T 47800 56300 9 20 1 0 0 0 1 -What we need in OpenEMS. -A 42000 51000 500 180 180 3 0 0 0 -1 -1 -A 42000 55500 500 0 180 3 0 0 0 -1 -1 -L 41500 51000 41500 55500 3 0 0 0 -1 -1 -L 42500 51000 42500 55500 3 0 0 0 -1 -1 -T 41900 54000 9 10 1 0 90 0 1 -trace -A 46500 51000 500 270 180 3 0 0 0 -1 -1 -A 42000 51000 500 90 180 3 0 0 0 -1 -1 -L 46500 50500 42000 50500 3 0 0 0 -1 -1 -L 46500 51500 42000 51500 3 0 0 0 -1 -1 -A 46500 55500 500 0 180 3 0 0 0 -1 -1 -A 46500 51000 500 180 180 3 0 0 0 -1 -1 -L 47000 55500 47000 51000 3 0 0 0 -1 -1 -L 46000 55500 46000 51000 3 0 0 0 -1 -1 -T 43500 50900 9 10 1 0 180 0 1 -trace -T 46700 52600 9 10 1 0 270 0 1 -trace -B 48000 51000 4500 4500 3 0 0 1 -1 100 1 -1 -1 -1 -1 -1 -B 42000 43500 4500 4500 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 -A 42000 48000 500 90 180 3 0 0 0 -1 -1 -A 46500 48000 500 270 180 3 0 0 0 -1 -1 -L 42000 48500 46500 48500 3 0 0 0 -1 -1 -L 42000 47500 46500 47500 3 0 0 0 -1 -1 -A 42000 43500 500 180 180 3 0 0 0 -1 -1 -A 42000 48000 500 0 180 3 0 0 0 -1 -1 -L 41500 43500 41500 48000 3 0 0 0 -1 -1 -L 42500 43500 42500 48000 3 0 0 0 -1 -1 -A 46500 43500 500 270 180 3 0 0 0 -1 -1 -A 42000 43500 500 90 180 3 0 0 0 -1 -1 -L 46500 43000 42000 43000 3 0 0 0 -1 -1 -L 46500 44000 42000 44000 3 0 0 0 -1 -1 -A 46500 48000 500 0 180 3 0 0 0 -1 -1 -A 46500 43500 500 180 180 3 0 0 0 -1 -1 -L 47000 48000 47000 43500 3 0 0 0 -1 -1 -L 46000 48000 46000 43500 3 0 0 0 -1 -1 -T 44800 48200 9 10 1 0 0 0 1 -trace -T 42300 48800 9 20 1 0 0 0 1 -What we have in pcb-rnd. -T 41900 46500 9 10 1 0 90 0 1 -trace -T 43500 43400 9 10 1 0 180 0 1 -trace -T 46700 45100 9 10 1 0 270 0 1 -trace -A 43500 46500 200 0 180 3 0 0 0 -1 -1 -L 43300 46500 43300 45300 3 0 0 0 -1 -1 -L 43700 46500 43700 45300 3 0 0 0 -1 -1 -A 43500 45300 200 180 180 3 0 0 0 -1 -1 -A 44100 46500 200 0 180 3 0 0 0 -1 -1 -L 43900 46500 43900 45300 3 0 0 0 -1 -1 -L 44300 46500 44300 45300 3 0 0 0 -1 -1 -A 44100 45300 200 180 180 3 0 0 0 -1 -1 -A 43500 46500 200 90 180 3 0 0 0 -1 -1 -L 43500 46300 44100 46300 3 0 0 0 -1 -1 -L 43500 46700 44100 46700 3 0 0 0 -1 -1 -A 44100 46500 200 270 180 3 0 0 0 -1 -1 -A 44100 45300 200 270 180 3 0 0 0 -1 -1 -L 43500 45100 44100 45100 3 0 0 0 -1 -1 -A 43500 45300 200 90 180 3 0 0 0 -1 -1 -L 43500 45500 44100 45500 3 0 0 0 -1 -1 -B 48000 43500 4500 4500 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 -A 50100 45300 200 270 360 3 0 0 0 -1 -1 -A 49500 45300 200 90 360 3 0 0 0 -1 -1 -T 49000 43100 9 10 1 0 0 0 1 -Board outline shown not filled in for readability -A 50100 46500 200 270 360 3 0 0 0 -1 -1 -A 49500 46500 200 270 360 3 0 0 0 -1 -1 -T 55000 40700 9 10 1 0 0 0 1 -Board Outline and Cutouts -L 50100 46300 53100 46000 3 0 0 0 -1 -1 -L 50300 45800 53100 45500 3 0 0 0 -1 -1 -L 49300 46500 49500 46700 3 0 0 0 -1 -1 -L 49500 46700 50100 46700 3 0 0 0 -1 -1 -L 50100 46700 50300 46500 3 0 0 0 -1 -1 -L 50300 46500 50300 45300 3 0 0 0 -1 -1 -L 50300 45300 50100 45100 3 0 0 0 -1 -1 -L 50100 45100 49500 45100 3 0 0 0 -1 -1 -L 49500 45100 49300 45300 3 0 0 0 -1 -1 -L 49300 45300 49300 46500 3 0 0 0 -1 -1 -L 55000 44300 55200 44500 3 0 0 0 -1 -1 -L 55200 44500 55800 44500 3 0 0 0 -1 -1 -L 55800 44500 56000 44300 3 0 0 0 -1 -1 -L 56000 44300 56000 43100 3 0 0 0 -1 -1 -L 56000 43100 55800 42900 3 0 0 0 -1 -1 -L 55800 42900 55200 42900 3 0 0 0 -1 -1 -L 55200 42900 55000 43100 3 0 0 0 -1 -1 -L 55000 43100 55000 44300 3 0 0 0 -1 -1 -T 53200 46000 9 10 1 0 0 0 1 -The rounded corners are done with cylinders. -T 53200 45000 9 10 1 0 0 0 3 -The polygon is used to take up the body of the cutout is -made using tangent lines between the outside edges of -the cylinders and extruding the Z axis -T 54400 44600 9 10 1 0 0 0 1 -The polygon on it's own. Index: openems/openems-layout-outline.sch =================================================================== --- openems/openems-layout-outline.sch (nonexistent) +++ openems/openems-layout-outline.sch (revision 37411) @@ -0,0 +1,110 @@ +v 20130925 2 +C 40000 40000 0 0 0 title-C.sym +B 42000 51000 4500 4500 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 +A 42000 55500 500 90 180 3 0 0 0 -1 -1 +A 46500 55500 500 270 180 3 0 0 0 -1 -1 +L 42000 56000 46500 56000 3 0 0 0 -1 -1 +L 42000 55000 46500 55000 3 0 0 0 -1 -1 +T 44800 55700 9 10 1 0 0 0 1 +trace +T 42300 56300 9 20 1 0 0 0 1 +What we have in pcb-rnd. +T 47800 56300 9 20 1 0 0 0 1 +What we need in OpenEMS. +A 42000 51000 500 180 180 3 0 0 0 -1 -1 +A 42000 55500 500 0 180 3 0 0 0 -1 -1 +L 41500 51000 41500 55500 3 0 0 0 -1 -1 +L 42500 51000 42500 55500 3 0 0 0 -1 -1 +T 41900 54000 9 10 1 0 90 0 1 +trace +A 46500 51000 500 270 180 3 0 0 0 -1 -1 +A 42000 51000 500 90 180 3 0 0 0 -1 -1 +L 46500 50500 42000 50500 3 0 0 0 -1 -1 +L 46500 51500 42000 51500 3 0 0 0 -1 -1 +A 46500 55500 500 0 180 3 0 0 0 -1 -1 +A 46500 51000 500 180 180 3 0 0 0 -1 -1 +L 47000 55500 47000 51000 3 0 0 0 -1 -1 +L 46000 55500 46000 51000 3 0 0 0 -1 -1 +T 43500 50900 9 10 1 0 180 0 1 +trace +T 46700 52600 9 10 1 0 270 0 1 +trace +B 48000 51000 4500 4500 3 0 0 1 -1 100 1 -1 -1 -1 -1 -1 +B 42000 43500 4500 4500 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 +A 42000 48000 500 90 180 3 0 0 0 -1 -1 +A 46500 48000 500 270 180 3 0 0 0 -1 -1 +L 42000 48500 46500 48500 3 0 0 0 -1 -1 +L 42000 47500 46500 47500 3 0 0 0 -1 -1 +A 42000 43500 500 180 180 3 0 0 0 -1 -1 +A 42000 48000 500 0 180 3 0 0 0 -1 -1 +L 41500 43500 41500 48000 3 0 0 0 -1 -1 +L 42500 43500 42500 48000 3 0 0 0 -1 -1 +A 46500 43500 500 270 180 3 0 0 0 -1 -1 +A 42000 43500 500 90 180 3 0 0 0 -1 -1 +L 46500 43000 42000 43000 3 0 0 0 -1 -1 +L 46500 44000 42000 44000 3 0 0 0 -1 -1 +A 46500 48000 500 0 180 3 0 0 0 -1 -1 +A 46500 43500 500 180 180 3 0 0 0 -1 -1 +L 47000 48000 47000 43500 3 0 0 0 -1 -1 +L 46000 48000 46000 43500 3 0 0 0 -1 -1 +T 44800 48200 9 10 1 0 0 0 1 +trace +T 42300 48800 9 20 1 0 0 0 1 +What we have in pcb-rnd. +T 41900 46500 9 10 1 0 90 0 1 +trace +T 43500 43400 9 10 1 0 180 0 1 +trace +T 46700 45100 9 10 1 0 270 0 1 +trace +A 43500 46500 200 0 180 3 0 0 0 -1 -1 +L 43300 46500 43300 45300 3 0 0 0 -1 -1 +L 43700 46500 43700 45300 3 0 0 0 -1 -1 +A 43500 45300 200 180 180 3 0 0 0 -1 -1 +A 44100 46500 200 0 180 3 0 0 0 -1 -1 +L 43900 46500 43900 45300 3 0 0 0 -1 -1 +L 44300 46500 44300 45300 3 0 0 0 -1 -1 +A 44100 45300 200 180 180 3 0 0 0 -1 -1 +A 43500 46500 200 90 180 3 0 0 0 -1 -1 +L 43500 46300 44100 46300 3 0 0 0 -1 -1 +L 43500 46700 44100 46700 3 0 0 0 -1 -1 +A 44100 46500 200 270 180 3 0 0 0 -1 -1 +A 44100 45300 200 270 180 3 0 0 0 -1 -1 +L 43500 45100 44100 45100 3 0 0 0 -1 -1 +A 43500 45300 200 90 180 3 0 0 0 -1 -1 +L 43500 45500 44100 45500 3 0 0 0 -1 -1 +B 48000 43500 4500 4500 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 +A 50100 45300 200 270 360 3 0 0 0 -1 -1 +A 49500 45300 200 90 360 3 0 0 0 -1 -1 +T 49000 43100 9 10 1 0 0 0 1 +Board outline shown not filled in for readability +A 50100 46500 200 270 360 3 0 0 0 -1 -1 +A 49500 46500 200 270 360 3 0 0 0 -1 -1 +T 55000 40700 9 10 1 0 0 0 1 +Board Outline and Cutouts +L 50100 46300 53100 46000 3 0 0 0 -1 -1 +L 50300 45800 53100 45500 3 0 0 0 -1 -1 +L 49300 46500 49500 46700 3 0 0 0 -1 -1 +L 49500 46700 50100 46700 3 0 0 0 -1 -1 +L 50100 46700 50300 46500 3 0 0 0 -1 -1 +L 50300 46500 50300 45300 3 0 0 0 -1 -1 +L 50300 45300 50100 45100 3 0 0 0 -1 -1 +L 50100 45100 49500 45100 3 0 0 0 -1 -1 +L 49500 45100 49300 45300 3 0 0 0 -1 -1 +L 49300 45300 49300 46500 3 0 0 0 -1 -1 +L 55000 44300 55200 44500 3 0 0 0 -1 -1 +L 55200 44500 55800 44500 3 0 0 0 -1 -1 +L 55800 44500 56000 44300 3 0 0 0 -1 -1 +L 56000 44300 56000 43100 3 0 0 0 -1 -1 +L 56000 43100 55800 42900 3 0 0 0 -1 -1 +L 55800 42900 55200 42900 3 0 0 0 -1 -1 +L 55200 42900 55000 43100 3 0 0 0 -1 -1 +L 55000 43100 55000 44300 3 0 0 0 -1 -1 +T 53200 46000 9 10 1 0 0 0 1 +The rounded corners are done with cylinders. +T 53200 45000 9 10 1 0 0 0 3 +The polygon is used to take up the body of the cutout is +made using tangent lines between the outside edges of +the cylinders and extruding the Z axis +T 54400 44600 9 10 1 0 0 0 1 +The polygon on it's own. Index: openems/openems-layout-simple.sch =================================================================== --- openems/openems-layout-simple.sch (nonexistent) +++ openems/openems-layout-simple.sch (revision 37411) @@ -0,0 +1,183 @@ +v 20130925 2 +C 40000 40000 0 0 0 title-C.sym +B 49000 53000 6500 2000 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +A 50000 54000 500 90 180 3 0 0 0 -1 -1 +A 54500 54000 500 270 180 3 0 0 0 -1 -1 +L 55800 54400 55000 54100 3 0 0 0 -1 -1 +L 55800 55300 55500 55000 3 0 0 0 -1 -1 +B 41500 53000 6500 2000 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +A 50000 54000 500 270 180 3 0 0 2 100 100 +L 50400 54300 51300 55900 3 0 0 0 -1 -1 +A 42500 54000 500 90 180 3 0 0 0 -1 -1 +A 47000 54000 500 270 180 3 0 0 0 -1 -1 +L 42500 54500 47000 54500 3 0 0 0 -1 -1 +L 42500 53500 47000 53500 3 0 0 0 -1 -1 +L 42200 53600 42600 52700 3 0 0 0 -1 -1 +L 46500 52600 46200 53000 3 0 0 0 -1 -1 +T 52100 52700 9 10 1 0 0 0 1 +Body of the trace replaced with a rectangle +T 55800 54400 9 10 1 0 0 0 1 +Ends of the trace replaced with a smaller polygon extruded vertically +T 55800 55300 9 10 1 0 0 0 1 +board outline is now a polygon extruded vertically +T 51300 55900 9 10 1 0 0 0 1 +annular ring is here but occupies the same space as the body of the trace and it's round end. +T 45500 53900 9 10 1 0 0 0 1 +trace +T 42600 52700 9 10 1 0 0 0 1 +end of trace +T 46500 52600 9 10 1 0 0 0 1 +board outline +T 42300 56300 9 20 1 0 0 0 1 +What we have in pcb-rnd. +T 50300 56300 9 20 1 0 0 0 1 +What we need in OpenEMS. +L 54500 54500 54500 53500 3 0 0 2 100 100 +L 50000 54500 54500 54500 3 0 0 0 -1 -1 +L 54500 53500 50000 53500 3 0 0 0 -1 -1 +L 50000 54500 50000 53500 3 0 0 2 100 100 +T 44500 40300 9 10 1 0 0 0 6 +To me the most annoying corner case is the trouble of board outline vs board cutout. +PCB fabs by default assume the outline of the board is the middle of the lines drawn +around the layout. Board cutouts are however milled to the exterior edge of the lines +drawn in the gerber. Since both are done on the outline layer in pcb-rnd we have to +figure out which is the outline of the board and which is the outline of the cutout +before converting the geometry. +L 50000 54600 50000 53400 3 0 0 4 100 100 +A 54500 54000 600 180 360 3 0 0 4 100 100 +L 54500 54500 54500 53500 3 0 0 2 100 100 +L 54500 54600 54500 53400 3 0 0 4 100 100 +L 54500 53400 50000 53400 3 0 0 4 100 100 +L 54500 54600 50000 54600 3 0 0 4 100 100 +L 52100 52700 51500 53500 3 0 0 0 -1 -1 +A 42500 54000 600 90 180 3 0 0 4 100 100 +A 47000 54000 600 270 180 3 0 0 4 100 100 +L 47000 53400 42500 53400 3 0 0 4 100 100 +L 47000 54600 42500 54600 3 0 0 4 100 100 +A 50000 54000 600 180 360 3 0 0 4 100 100 +A 54500 54000 500 90 180 3 0 0 2 100 100 +L 55000 53700 55800 53500 3 0 0 0 -1 -1 +T 52800 55600 9 10 1 0 0 0 1 +clearance around the trace's body is just a square sharing 2 of the same edges with the body only wider +L 52800 55600 52100 54600 3 0 0 0 -1 -1 +T 55800 53100 9 10 1 0 0 0 3 +Clearance around the end of the trace (required if we are in a + polygon) is a cylinder of what ever matterial the copper + was displacing (air, solder mask, substrate/adheasive). +L 43700 54600 44500 55400 3 0 0 0 -1 -1 +T 44500 55400 9 10 1 0 0 0 1 +Clearance around the trace +B 47500 47000 2500 2500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +V 48500 48500 200 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 +V 48500 48500 300 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 +A 48500 48500 800 270 360 3 0 0 4 100 100 +A 48500 48500 500 90 360 3 0 0 0 -1 -1 +T 50100 52000 9 10 1 0 0 0 3 +Clearance around the end of the trace (required if we are in a + polygon) is a cylinder of what ever matterial the copper + was displacing (air, solder mask, substrate/adheasive). +L 49700 53500 50100 52400 3 0 0 0 -1 -1 +L 48500 49300 50300 50600 3 0 0 0 -1 -1 +L 48900 48800 50300 49100 3 0 0 0 -1 -1 +L 50300 48300 48700 48500 3 0 0 0 -1 -1 +L 50300 47800 48700 48300 3 0 0 0 -1 -1 +T 50300 50200 9 10 1 0 0 0 3 +Clearance around the via (required if we are in a polygon) is + a cylinder of what ever matterial the copper was + displacing (air, solder mask, substrate/adheasive). +T 50300 49100 9 10 1 0 0 0 1 +annular ring is here but occupies the same space as the body of the trace and it's round end. +T 50300 48300 9 10 1 0 0 0 1 +via hole is now a cylinder of air which ends just at the start of the solder mask layer. +T 50300 47800 9 10 1 0 0 0 1 +the vias plating is a cylinder which is at a priority above the substrate. +T 50300 49700 9 10 1 0 0 0 1 +board outline is now a polygon extruded vertically +T 47500 50900 9 20 1 0 0 0 1 +Vias in OpenEMS +A 42000 48500 500 90 360 3 0 0 0 -1 -1 +V 42000 48500 300 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 +V 42000 48500 200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 42200 48400 43800 47800 3 0 0 0 -1 -1 +L 42100 48200 43800 47500 3 0 0 0 -1 -1 +L 42100 48000 43800 47200 3 0 0 0 -1 -1 +L 43800 49700 43500 49500 3 0 0 0 -1 -1 +A 42000 48500 800 270 360 3 0 0 4 100 100 +L 42000 49300 43800 50100 3 0 0 0 -1 -1 +T 43800 47800 9 10 1 0 0 0 1 +via hole +T 43800 47500 9 10 1 0 0 0 1 +via hole plating +T 43800 47200 9 10 1 0 0 0 1 +annular ring (overlapped by end of trace) +T 43800 49700 9 10 1 0 0 0 1 +board outline +T 41000 50900 9 20 1 0 0 0 1 +What we have in pcb-rnd. +T 43800 50100 9 10 1 0 0 0 1 +Clearance around the via +B 41000 47000 2500 2500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 50300 49700 50000 49500 3 0 0 0 -1 -1 +L 47700 44600 49200 43800 3 0 0 0 -1 -1 +L 47700 43800 48000 43600 3 0 0 0 -1 -1 +B 53000 41800 4200 3700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 55300 46000 54300 44100 3 0 0 0 -1 -1 +L 57500 43100 57200 43000 3 0 0 0 -1 -1 +A 54600 42700 1500 0 90 3 0 0 0 -1 -1 +A 54600 42700 500 0 90 3 0 0 0 -1 -1 +A 55600 42700 500 180 180 3 0 0 0 -1 -1 +A 54600 43700 500 90 180 3 0 0 0 -1 -1 +A 54600 43700 500 270 180 3 0 0 2 100 100 +L 54600 44200 54600 43200 3 0 0 2 100 100 +L 56100 42700 55100 42700 3 0 0 2 100 100 +A 55600 42700 500 0 180 3 0 0 2 100 100 +L 57500 42600 56000 42400 3 0 0 0 -1 -1 +B 48000 41800 4200 3700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 57500 43900 55800 43600 3 0 0 0 -1 -1 +A 49700 42700 500 0 90 3 0 0 0 -1 -1 +A 49700 43700 500 90 180 3 0 0 0 -1 -1 +A 49700 42700 1500 0 90 3 0 0 0 -1 -1 +A 50700 42700 500 180 180 3 0 0 0 -1 -1 +A 49700 43700 600 90 180 3 0 0 4 100 100 +L 47700 45300 49600 44300 3 0 0 0 -1 -1 +A 49700 42700 1600 0 90 3 0 0 4 100 100 +A 50700 42700 600 180 180 3 0 0 4 100 100 +A 49700 42700 400 0 90 3 0 0 4 100 100 +A 54600 42700 1600 0 90 3 0 0 4 100 100 +A 55600 42700 600 180 360 3 0 0 4 100 100 +A 54600 42700 400 0 90 3 0 0 4 100 100 +L 56200 42700 55000 42700 3 0 0 4 100 100 +L 54600 44300 54600 43100 3 0 0 4 100 100 +L 47700 42400 50100 42700 3 0 0 0 -1 -1 +L 55900 42200 57500 42300 3 0 0 0 -1 -1 +L 56100 43300 57500 43500 3 0 0 0 -1 -1 +A 54600 43700 600 180 360 3 0 0 4 100 100 +T 50200 43400 9 10 1 0 0 0 1 +arc +T 47700 44600 9 10 1 0 0 6 1 +annular ring (overlapped by end of trace) +T 47700 43800 9 10 1 0 0 6 1 +board outline +T 48000 45700 9 20 1 0 0 0 1 +What we have in pcb-rnd. +T 57500 43900 9 10 1 0 0 0 1 +Rotational box to form the body of the arc +T 57500 43100 9 10 1 0 0 0 1 +board outline +T 53000 45700 9 20 1 0 0 0 1 +OpenEMS +T 55300 46000 9 10 1 0 0 0 1 +cylinders for the ends of the arc +T 57500 42600 9 10 1 0 0 0 1 +cylinder used to add rounded end to the arc +T 47700 45300 9 10 1 0 0 6 1 +trace clearance +T 47700 42400 9 10 1 0 0 6 1 +outline of trace clearance +T 57500 42300 9 10 1 0 0 0 1 +cylinder used to add clearance in plane(s) +T 57500 43500 9 10 1 0 0 0 1 +rotated box used to create clearance around arc +T 55200 46300 9 10 1 0 0 0 1 +cylinder used to add clearance +L 55200 46300 54200 44200 3 0 0 0 -1 -1 Index: openems/openems-notes-layout.sch =================================================================== --- openems/openems-notes-layout.sch (nonexistent) +++ openems/openems-notes-layout.sch (revision 37411) @@ -0,0 +1,181 @@ +v 20130925 2 +C 40000 40000 0 0 0 title-C.sym +B 48500 50500 6500 2000 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +A 49500 51500 500 90 180 3 0 0 0 -1 -1 +A 54000 51500 500 270 180 3 0 0 0 -1 -1 +V 49500 51500 200 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 +V 49500 51500 300 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 +L 50900 49900 49700 51500 3 0 0 0 -1 -1 +L 50400 49500 49700 51300 3 0 0 0 -1 -1 +L 55300 51900 54500 51600 3 0 0 0 -1 -1 +L 55300 52800 55000 52500 3 0 0 0 -1 -1 +B 41500 50500 6500 2000 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +A 49500 51500 500 270 180 3 0 0 2 100 100 +L 49900 51800 50500 53400 3 0 0 0 -1 -1 +A 42500 51500 500 90 180 3 0 0 0 -1 -1 +A 47000 51500 500 270 180 3 0 0 0 -1 -1 +V 42500 51500 300 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 +V 42500 51500 200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 42500 52000 47000 52000 3 0 0 0 -1 -1 +L 42500 51000 47000 51000 3 0 0 0 -1 -1 +L 42700 51400 43700 50200 3 0 0 0 -1 -1 +L 42500 51200 43400 50000 3 0 0 0 -1 -1 +L 42200 51100 42800 49800 3 0 0 0 -1 -1 +L 46500 50100 46200 50500 3 0 0 0 -1 -1 +T 51600 50200 9 10 1 0 0 0 1 +Body of the trace replaced with a rectangle +T 55300 51900 9 10 1 0 0 0 1 +Ends of the trace replaced with a smaller polygon extruded vertically +T 55300 52800 9 10 1 0 0 0 1 +board outline is now a polygon extruded vertically +T 50900 49900 9 10 1 0 0 0 1 +via hole is now a cylinder of air which ends just at the start of the solder mask layer. +T 50400 49500 9 10 1 0 0 0 1 +the vias plating is a cylinder which is at a priority above the substrate. +T 50500 53400 9 10 1 0 0 0 1 +annular ring is here but occupies the same space as the body of the trace and it's round end. +T 45500 51400 9 10 1 0 0 0 1 +trace +T 43700 50200 9 10 1 0 0 0 1 +via hole +T 43400 50000 9 10 1 0 0 0 1 +via hole plating +T 42800 49800 9 10 1 0 0 0 1 +annular ring (overlapped by end of trace) +T 46500 50100 9 10 1 0 0 0 1 +board outline +T 43100 53900 9 20 1 0 0 0 1 +What we have in pcb-rnd. +T 50000 54600 9 20 1 0 0 0 1 +What we need in OpenEMS. +V 49700 45700 300 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 +V 49700 45700 200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 49700 45500 47700 44800 3 0 0 0 -1 -1 +L 47700 44500 49700 45400 3 0 0 0 -1 -1 +L 47700 46600 49200 45800 3 0 0 0 -1 -1 +L 47700 45800 48000 45600 3 0 0 0 -1 -1 +T 50500 45100 9 10 1 0 0 0 1 +arc +T 47700 44800 9 10 1 0 0 6 1 +via hole +T 47700 44500 9 10 1 0 0 6 1 +via hole plating +T 47700 46600 9 10 1 0 0 6 1 +annular ring (overlapped by end of trace) +T 47700 45800 9 10 1 0 0 6 1 +board outline +T 48100 47800 9 20 1 0 0 0 1 +What we have in pcb-rnd. +B 53000 43800 4200 3700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +V 54600 45700 300 3 0 0 1 -1 100 0 -1 -1 -1 -1 -1 +L 54800 45700 57500 46700 3 0 0 0 -1 -1 +L 57500 46300 54900 45600 3 0 0 0 -1 -1 +L 55500 48300 54300 46100 3 0 0 0 -1 -1 +L 57500 45100 57200 45000 3 0 0 0 -1 -1 +A 54600 44700 1500 0 90 3 0 0 0 -1 -1 +A 54600 44700 500 0 90 3 0 0 0 -1 -1 +A 55600 44700 500 180 180 3 0 0 0 -1 -1 +A 54600 45700 500 90 180 3 0 0 0 -1 -1 +T 57500 45900 9 10 1 0 0 0 1 +Rotational Polygon to form the body of the arc +T 57500 46700 9 10 1 0 0 0 1 +via hole is a cylinder filled with air +T 57500 46300 9 10 1 0 0 0 1 +via hole plating a cylinder of metal through the core +T 55500 48300 9 10 1 0 0 0 1 +two cylinders: 1 from via annular ring +T 57500 45100 9 10 1 0 0 0 1 +board outline +T 53100 47800 9 20 1 0 0 0 1 +OpenEMS +A 54600 45700 500 270 180 3 0 0 2 100 100 +L 54600 46200 54600 45200 3 0 0 2 100 100 +L 56100 44700 55100 44700 3 0 0 2 100 100 +T 56600 48100 9 10 1 0 0 0 1 +2. from the end of the arc +A 55600 44700 500 0 180 3 0 0 2 100 100 +V 54600 45700 200 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 +T 57500 44600 9 10 1 0 0 0 1 +cylinder used to add rounded end to the arc +L 57500 44600 56000 44400 3 0 0 0 -1 -1 +B 48000 43800 4200 3700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 54000 52000 54000 51000 3 0 0 2 100 100 +L 49500 52000 54000 52000 3 0 0 0 -1 -1 +L 54000 51000 49500 51000 3 0 0 0 -1 -1 +L 49500 52000 49500 51000 3 0 0 2 100 100 +L 57500 45900 55800 45600 3 0 0 0 -1 -1 +A 54600 45700 800 270 360 3 0 0 4 100 100 +A 49700 45700 800 270 360 3 0 0 4 100 100 +T 47700 45200 9 10 1 0 0 6 1 +via clearance +L 47700 45200 48900 45600 3 0 0 0 -1 -1 +L 56700 47900 55000 46400 3 0 0 0 -1 -1 +T 58700 48000 9 10 1 0 180 0 1 +cylinder for via clearance +A 49700 44700 500 0 90 3 0 0 0 -1 -1 +A 49700 45700 500 90 180 3 0 0 0 -1 -1 +A 49700 44700 1500 0 90 3 0 0 0 -1 -1 +A 50700 44700 500 180 180 3 0 0 0 -1 -1 +A 49700 45700 600 90 180 3 0 0 4 100 100 +T 47700 47300 9 10 1 0 0 6 1 +trace clearance +L 47700 47300 49600 46300 3 0 0 0 -1 -1 +A 49700 44700 1600 0 90 3 0 0 4 100 100 +A 50700 44700 600 180 180 3 0 0 4 100 100 +A 49700 44700 400 0 90 3 0 0 4 100 100 +A 54600 44700 1600 0 90 3 0 0 4 100 100 +A 55600 44700 600 180 360 3 0 0 4 100 100 +A 54600 44700 400 0 90 3 0 0 4 100 100 +L 56200 44700 55000 44700 3 0 0 4 100 100 +L 54600 46300 54600 45100 3 0 0 4 100 100 +T 47700 44000 9 10 1 0 0 6 1 +outline of trace clearance +L 47700 44000 50100 44700 3 0 0 0 -1 -1 +T 57500 44300 9 10 1 0 0 0 1 +cylinder used to add clearance in plane(s) +L 55900 44200 57500 44300 3 0 0 0 -1 -1 +L 56100 45300 57500 45500 3 0 0 0 -1 -1 +T 57500 45500 9 10 1 0 0 0 1 +rotated box used to create clearance around arc +A 49500 51500 800 270 360 3 0 0 4 100 100 +L 49500 52100 49500 50900 3 0 0 4 100 100 +A 54000 51500 600 180 360 3 0 0 4 100 100 +L 54000 52000 54000 51000 3 0 0 2 100 100 +L 54000 52100 54000 50900 3 0 0 4 100 100 +L 54000 50900 49500 50900 3 0 0 4 100 100 +L 54000 52100 49500 52100 3 0 0 4 100 100 +L 51600 50200 51000 51000 3 0 0 0 -1 -1 +A 42500 51500 800 270 360 3 0 0 4 100 100 +A 42500 51500 600 90 180 3 0 0 4 100 100 +A 47000 51500 600 270 180 3 0 0 4 100 100 +L 47000 50900 42500 50900 3 0 0 4 100 100 +L 47000 52100 42500 52100 3 0 0 4 100 100 +A 54600 45700 600 180 360 3 0 0 4 100 100 +A 49500 51500 600 180 360 3 0 0 4 100 100 +A 54000 51500 500 90 180 3 0 0 2 100 100 +L 54500 51200 55300 51000 3 0 0 0 -1 -1 +T 52300 53100 9 10 1 0 0 0 1 +clearance around the trace's body is just a square sharing 2 of the same edges with the body only wider +L 52300 53100 51600 52100 3 0 0 0 -1 -1 +T 55300 50600 9 10 1 0 0 0 3 +Clearance around the end of the trace (required if we are in a + polygon) is a cylinder of what ever matterial the copper + was displacing (air, solder mask, substrate/adheasive). +L 43700 52100 44500 52900 3 0 0 0 -1 -1 +L 42500 52300 43400 53300 3 0 0 0 -1 -1 +T 44500 52900 9 10 1 0 0 0 1 +Clearance around the trace +T 43400 53300 9 10 1 0 0 0 1 +Clearance around the via +T 50400 53700 9 10 1 0 0 0 3 +Clearance around the via (required if we are in a polygon) is + a cylinder of what ever matterial the copper was + displacing (air, solder mask, substrate/adheasive). +L 49500 52300 50400 54100 3 0 0 0 -1 -1 +T 49600 48700 9 10 1 0 0 0 3 +Clearance around the end of the trace (required if we are in a + polygon) is a cylinder of what ever matterial the copper + was displacing (air, solder mask, substrate/adheasive). +L 49300 50900 49600 49100 3 0 0 0 -1 -1 +T 46300 56000 9 10 1 0 0 0 1 +I drew these first and then realized they were too cluttered. There is a second set in the new file that is cleaner. Index: openems/openems-notes.sch =================================================================== --- openems/openems-notes.sch (nonexistent) +++ openems/openems-notes.sch (revision 37411) @@ -0,0 +1,322 @@ +v 20130925 2 +C 40000 40000 0 0 0 title-C.sym +B 52000 50100 500 4800 3 0 1 1 -1 100 0 -1 -1 -1 -1 -1 +B 52100 50100 300 4800 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 +L 53300 55300 53100 54700 3 0 0 0 -1 -1 +B 49500 52100 5500 700 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 +B 49500 53600 5500 600 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 +B 49500 53000 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 +L 49500 53400 49500 53600 3 0 0 0 -1 -1 +L 55000 52800 55000 53600 3 0 0 0 -1 -1 +L 49500 52800 49500 53000 3 0 0 0 -1 -1 +B 51400 51500 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 +L 55000 51900 55000 52100 3 0 0 0 -1 -1 +L 49500 51300 49500 52100 3 0 0 0 -1 -1 +L 55000 51300 55000 51500 3 0 0 0 -1 -1 +B 49500 49900 5500 600 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 51400 49700 51800 50100 3 0 0 0 -1 -1 +B 49500 50700 5500 600 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 +B 49500 54200 5500 200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +B 49500 50500 5500 200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +B 51400 50100 1700 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 +B 51400 54400 1700 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 +L 52500 51100 54000 49800 3 0 0 0 -1 -1 +B 58500 50100 500 4800 3 0 1 1 -1 100 0 -1 -1 -1 -1 -1 +B 58600 50100 300 4800 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 +L 59600 55200 59200 54800 3 0 0 0 -1 -1 +B 56000 51900 5500 1100 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 +B 56000 53400 5500 1000 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 +B 56000 53000 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 +L 61500 53000 61500 53400 3 0 0 0 -1 -1 +B 57900 51500 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 +L 56000 51500 56000 51900 3 0 0 0 -1 -1 +B 56000 49900 5500 600 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 57900 49700 58300 50100 3 0 0 0 -1 -1 +B 56000 50500 5500 1000 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 +B 57900 50100 1700 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 +B 57900 54400 1700 500 3 0 0 0 -1 -1 2 1 -1 100 -1 100 +L 59000 51100 60600 49700 3 0 0 0 -1 -1 +B 43000 41000 500 3100 3 0 1 1 -1 100 0 -1 -1 -1 -1 -1 +B 43100 41000 300 3100 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 +L 44100 44500 43700 44100 3 0 0 0 -1 -1 +B 40500 41000 5500 3100 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 +L 42200 40500 42700 41000 3 0 0 0 -1 -1 +L 43500 41500 45100 40400 3 0 0 0 -1 -1 +B 49500 42400 5500 1100 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 +B 52200 42400 300 1100 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 +B 52100 42400 500 1100 3 0 1 1 -1 100 0 -1 -1 -1 -1 -1 +L 51100 54400 51100 55000 3 0 0 0 -1 -1 +L 51100 55000 49500 55000 3 0 0 0 -1 -1 +L 49500 55000 49500 54400 3 0 0 0 -1 -1 +L 53400 54400 53400 55000 3 0 0 0 -1 -1 +L 53400 55000 55000 55000 3 0 0 0 -1 -1 +L 55000 55000 55000 54400 3 0 0 0 -1 -1 +L 51400 55400 51700 55000 3 0 0 0 -1 -1 +B 51400 54800 1700 100 3 0 0 0 -1 -1 3 1 4 200 -1 -1 +L 52800 55100 52900 54900 3 0 0 0 -1 -1 +T 40500 52300 9 10 1 0 0 0 5 +The exporter should ask what the lowest priority it can use is and what the highest +is. That way if you run out of room it can warn. I want to be able to set the pcb's +base priority so that it can be super imposed in designs. I am not sure how well +that will work but it is just a question of what number to use so we are not talking +about a minor addition to the complexity we already have. +T 55400 40800 9 10 1 0 0 0 4 +http://openems.de/index.php/Tutorial:_Importing_with_hyp2mat + +3D copper used to model antennas +http://openems.de/index.php/Tutorial:_Simple_Patch_Antenna +T 49700 54600 9 10 1 0 0 0 1 +Solder Mask +T 52100 52300 22 10 1 0 0 0 1 +Air +T 53300 55300 9 10 1 0 0 0 1 +Annular Ring +T 50100 53100 9 10 1 0 0 0 1 +trace on inside layer +T 49700 52400 9 10 1 0 0 0 1 +substrate +T 54100 52400 9 10 1 0 0 0 1 +substrate +T 54100 53800 9 10 1 0 0 0 1 +substrate +T 49700 53800 9 10 1 0 0 0 1 +substrate +T 53600 53200 9 10 1 0 0 0 1 +adheasive +T 50800 52800 9 10 1 0 0 0 1 +adheasive +T 50800 53400 9 10 1 0 0 0 1 +adheasive +T 40500 53500 9 10 1 0 0 0 15 +we have to assume the board is planar otherwise impedances will be a nightmare. +yes in real life some vendors squish boards in ways that make the outline of +internal copper layers embossed into all the layers over them. This type of +manufacturing is impossibly bad for calculating impedances. + +To save computational power in the E&M solver we should also ingore the tiny +layer of adheasive under and over the copper layer. Making the stackup the same +thickness but the substrate slightly thicker. So the stackup above on the left +is altered into the one on the right. + +I am not sure if the annular ring actually has adheasive under it or if it is plated +directly onto the board. This may vary with process. More research is needed. + +If we do mechanical simulation or export later we should add in a feature to +support export with adheasive because it adds required boundary conditions. +T 54600 51600 9 10 1 0 0 6 1 +trace on inside layer +T 50900 51700 9 10 1 0 0 6 1 +adheasive +T 53700 51300 9 10 1 0 0 6 1 +adheasive +T 53700 51900 9 10 1 0 0 6 1 +adheasive +T 54800 50300 9 10 1 0 180 0 1 +Solder Mask +T 51400 49700 9 10 1 0 180 0 1 +Annular Ring +T 50400 51100 9 10 1 0 180 0 1 +substrate +T 54800 51100 9 10 1 0 180 0 1 +substrate +T 50800 54200 9 10 1 0 0 0 1 +adheasive +T 53000 54200 9 10 1 0 0 0 1 +adheasive +T 50800 50500 9 10 1 0 0 0 1 +adheasive +T 53800 50500 9 10 1 0 0 0 1 +adheasive +T 53000 49600 9 10 1 0 0 0 1 +copper plating on the hole +T 58600 52300 22 10 1 0 0 0 1 +Air +T 59600 55200 9 10 1 0 0 0 1 +Annular Ring +T 56500 53100 9 10 1 0 0 0 1 +trace on inside layer +T 56200 52400 9 10 1 0 0 0 1 +substrate +T 59900 52400 9 10 1 0 0 0 1 +substrate +T 60000 53800 9 10 1 0 0 0 1 +substrate +T 56200 53800 9 10 1 0 0 0 1 +substrate +T 60100 53200 9 10 1 0 0 0 1 +adheasive +T 61100 51600 9 10 1 0 0 6 1 +trace on inside layer +T 57400 51700 9 10 1 0 0 6 1 +adheasive +T 61300 50300 9 10 1 0 180 0 1 +Solder Mask +T 57900 49700 9 10 1 0 180 0 1 +Annular Ring +T 56900 51100 9 10 1 0 180 0 1 +substrate +T 61000 51100 9 10 1 0 180 0 1 +substrate +T 59600 49500 9 10 1 0 0 0 1 +copper plating on the hole +T 47900 41300 9 10 1 0 0 0 1 +Note: None of these drawings are to scale. +T 49400 55800 9 20 1 0 0 0 1 +Worst case for PCB-RND storage. +T 56500 55800 9 20 1 0 0 0 1 +Worst case for OpenEMS. +T 40500 50900 9 10 1 0 0 0 6 +I am going to assume for simulation that the tiny amount of adheasive under and +over the traces is not important to modeling in the E&M domain. If it was we would +have to worry about minor variations in it's thickness and etc which would be brutal. + +I am also going to assume that the adheasive is not exactly the same impedance as +the substrate. +T 43100 42400 22 10 1 0 0 0 1 +Air +T 44100 44500 9 10 1 0 0 0 1 +Annular Ring +T 40700 42500 9 10 1 0 0 0 1 +substrate +T 40700 43900 9 10 1 0 0 0 1 +substrate +T 42200 40500 9 10 1 0 180 0 1 +Annular Ring +T 45800 41200 9 10 1 0 180 0 1 +substrate +T 44100 40200 9 10 1 0 0 0 1 +copper plating on the hole +T 40500 44700 9 20 1 0 0 0 1 +Multilayer accelerated with 2D mesh +T 45700 43400 9 10 1 0 180 0 1 +substrate +T 52200 42900 22 10 1 0 0 0 1 +Air +T 49700 42900 9 10 1 0 0 0 1 +substrate +T 54100 42900 9 10 1 0 0 0 1 +substrate +T 49500 44400 9 20 1 0 0 0 1 +3D copper replaced with 2D mesh +T 51400 55400 9 10 1 0 0 6 1 +Exposed Via +T 53500 54600 9 10 1 0 0 0 1 +Solder Mask +T 52800 55100 9 10 1 0 0 6 1 +ENIG Plating +L 59900 54400 59900 55000 3 0 0 0 -1 -1 +L 59900 55000 61500 55000 3 0 0 0 -1 -1 +L 61500 55000 61500 54400 3 0 0 0 -1 -1 +L 57600 54400 57600 55000 3 0 0 0 -1 -1 +L 57600 55000 56000 55000 3 0 0 0 -1 -1 +L 56000 55000 56000 54400 3 0 0 0 -1 -1 +T 60000 54600 9 10 1 0 0 0 1 +Solder Mask +T 56200 54600 9 10 1 0 0 0 1 +Solder Mask +T 51100 55200 9 10 1 0 0 6 1 +Solder Mask Clearance +L 51100 55200 51300 54900 3 0 0 0 -1 -1 +L 57900 55400 58200 55000 3 0 0 0 -1 -1 +L 57600 55200 57800 54900 3 0 0 0 -1 -1 +T 57900 55400 9 10 1 0 0 6 1 +Exposed Via +T 57600 55200 9 10 1 0 0 6 1 +Solder Mask Clearance +T 40500 47100 9 10 1 0 0 0 18 +Every matterial has a priority, matterial and geometry in OpenEMS. We can only +add matterials we can not subtract. However we can add non-conductive things +at higher priority so that we create voids with pockets of air. + +There is an added complexity in that we don't want to have to cut around traces +and annular rings that are inside/adjacent to planes. + +The following is how the priorities are to be used. The number after the item is the +priority relative to the 0 point that users set. I want this feature because there might +be a structure people want to layer this over/under after export. + +holes, mask clearance & cutouts (air) 6 +copper traces & copper planes with no clearance 5 +substrate (adheasive) clearance 4 +copper planes 3 +adheasive 2 +substrate 1 +environment (air) 0 x and y set at time of export z left as a variable to the user +L 40500 43100 46000 43100 3 0 0 0 -1 -1 +L 46000 42000 40500 42000 3 0 0 0 -1 -1 +L 42400 42000 46000 42000 7 4 0 2 100 100 +L 40500 43100 44100 43100 7 4 0 2 100 100 +L 42400 41000 44100 41000 7 4 0 2 100 100 +L 42400 44100 44100 44100 7 4 0 2 100 100 +L 51400 42400 55000 42400 7 4 0 2 100 100 +L 49500 43500 53100 43500 7 4 0 2 100 100 +B 58500 43200 500 4800 3 0 1 1 -1 100 0 -1 -1 -1 -1 -1 +B 58600 43200 300 4800 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 +L 59600 48400 59200 48000 3 0 0 0 -1 -1 +B 56000 43600 5500 3900 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 +B 56000 46100 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 +B 57900 44600 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 +L 57900 42800 58300 43200 3 0 0 0 -1 -1 +B 57900 43200 1700 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 +B 57900 47500 1700 500 3 0 0 0 -1 -1 2 1 -1 100 -1 100 +L 59000 44200 60600 43100 3 0 0 0 -1 -1 +B 49500 46400 5500 1100 3 0 1 0 -1 -1 0 -1 -1 -1 -1 -1 +B 49500 47500 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 +B 51400 46000 3600 400 3 0 0 0 -1 -1 2 1 -1 100 -1 100 +B 52200 46000 300 1900 3 0 0 0 -1 -1 1 -1 -1 -1 -1 -1 +B 52100 46000 500 1900 3 0 1 1 -1 100 0 -1 -1 -1 -1 -1 +T 58600 45400 22 10 1 0 0 0 1 +Air +T 59600 48400 9 10 1 0 0 0 1 +Annular Ring +T 46200 42600 9 10 1 0 0 0 1 +trace on inside layer as 2D mesh +T 56200 45500 9 10 1 0 0 0 1 +substrate +T 56200 46900 9 10 1 0 0 0 1 +substrate +T 61100 44700 9 10 1 0 0 6 1 +trace on inside layer +T 57900 42800 9 10 1 0 180 0 1 +Annular Ring +T 61300 44200 9 10 1 0 180 0 1 +substrate +T 59700 42900 9 10 1 0 0 0 1 +copper plating on the hole +T 56300 48900 9 20 1 0 0 0 1 +Minimal Multilayer OpenEMS +T 61200 46400 9 10 1 0 180 0 1 +substrate +T 52200 46900 22 10 1 0 0 0 1 +Air +T 50100 47600 9 10 1 0 0 0 1 +trace on inside layer +T 49700 46900 9 10 1 0 0 0 1 +substrate +T 54100 46900 9 10 1 0 0 0 1 +substrate +T 54700 46100 9 10 1 0 0 6 1 +trace on inside layer +T 48400 48500 9 20 1 0 0 0 1 +What we need in OpenEMS for minimal 2 layer. +T 40500 45600 9 10 1 0 0 0 6 +In E&M solvers it is not uncommon to cheat a little and make the copper a 2D +mesh applied over the substrate to save processing time. The problem is that +openems does not currenly have any kind of 2D curved primitive. Emulating curves +with a high order polygons would be unpleasant. We should IMHO wait until +openems has 2D curve and arc primitives to invest time in acceleration using 2D +mesh. +L 46200 42600 45300 42000 3 0 0 0 -1 -1 +T 46200 43900 9 10 1 0 0 0 1 +trace on inside layer as 2D mesh +L 46200 43900 43700 43100 3 0 0 0 -1 -1 +T 49200 43800 9 10 1 0 0 0 1 +trace as 2D mesh +L 50600 43800 51100 43500 3 0 0 0 -1 -1 +T 53800 42000 9 10 1 0 0 0 1 +trace as 2D mesh +L 53800 42000 53400 42400 3 0 0 0 -1 -1 +T 58000 46200 9 10 1 0 0 6 1 +trace on inside layer +T 56600 48700 9 10 1 0 0 0 1 +This only works in with 3D representation of copper. Index: openems/zmesh-ref.sch =================================================================== --- openems/zmesh-ref.sch (nonexistent) +++ openems/zmesh-ref.sch (revision 37411) @@ -0,0 +1,107 @@ +v 20130925 2 +C 40000 40000 0 0 0 title-B.sym +B 40800 46000 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 +L 44000 46000 40600 46000 3 0 0 0 -1 -1 +B 40300 43000 4000 6500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 44000 46400 40600 46400 3 0 0 0 -1 -1 +L 44000 46900 40600 46900 3 0 0 0 -1 -1 +L 44000 47400 40600 47400 3 0 0 0 -1 -1 +L 44000 47900 40600 47900 3 0 0 0 -1 -1 +L 44000 48400 40600 48400 3 0 0 0 -1 -1 +L 44000 45000 40600 45000 3 0 0 0 -1 -1 +L 44000 45500 40600 45500 3 0 0 0 -1 -1 +L 44000 44000 40600 44000 3 0 0 0 -1 -1 +L 44000 44500 40600 44500 3 0 0 0 -1 -1 +L 44000 43500 40600 43500 3 0 0 0 -1 -1 +L 44000 48900 40600 48900 3 0 0 0 -1 -1 +T 42400 46200 9 10 1 0 0 4 1 +Substrate +T 40300 49500 9 10 1 0 0 0 3 +Special case 2 layers, no internal features, and +copper on the side that has the z line on it is a +ground plane. This is the most common. +B 44900 46100 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 +L 48100 46100 44700 46100 3 0 0 0 -1 -1 +B 44400 43000 4000 6500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 48100 46500 44700 46500 3 0 0 0 -1 -1 +L 48100 46900 44700 46900 3 0 0 0 -1 -1 +L 48100 47400 44700 47400 3 0 0 0 -1 -1 +L 48100 47900 44700 47900 3 0 0 0 -1 -1 +L 48100 48400 44700 48400 3 0 0 0 -1 -1 +L 48100 45100 44700 45100 3 0 0 0 -1 -1 +L 48100 45600 44700 45600 3 0 0 0 -1 -1 +L 48100 44100 44700 44100 3 0 0 0 -1 -1 +L 48100 44600 44700 44600 3 0 0 0 -1 -1 +L 48100 43600 44700 43600 3 0 0 0 -1 -1 +L 48100 48900 44700 48900 3 0 0 0 -1 -1 +T 46500 46300 9 10 1 0 0 4 1 +Substrate +T 44400 49500 9 10 1 0 0 0 6 +This has the z mesh jump kind of crazily and I think +it should transition smoother but I am not the +expert Koen is. This has a cutout in the bottom +copper plane and I am not sure if that explains the +added complexity. I am not sure but I believe mesh +inside the substrate is part of how you do vias. +L 48100 46300 44700 46300 3 0 0 0 -1 -1 +T 40300 42700 9 10 1 0 0 0 1 +Koen's notchfilter, hairpinfilter, +T 44400 42700 9 10 1 0 0 0 1 +Koen's tutorial on hyp2mat +B 49000 46200 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 +B 48500 43000 4000 6500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 52200 46500 48800 46500 3 0 0 0 -1 -1 +L 52200 47100 48800 47100 3 0 0 0 -1 -1 +L 52200 47500 48800 47500 3 0 0 0 -1 -1 +L 52200 48000 48800 48000 3 0 0 0 -1 -1 +L 52200 45300 48800 45300 3 0 0 0 -1 -1 +L 52200 44300 48800 44300 3 0 0 0 -1 -1 +L 52200 44800 48800 44800 3 0 0 0 -1 -1 +L 52200 43800 48800 43800 3 0 0 0 -1 -1 +L 52200 48500 48800 48500 3 0 0 0 -1 -1 +L 52200 46400 48800 46400 3 0 0 0 -1 -1 +T 50600 46400 9 10 1 0 0 4 1 +Substrate +T 48500 49500 9 10 1 0 0 0 5 +This example involved a very smoothed mesh which +is probably because it's an antenna example and it +divided the substrate up to handle everything being +done in 3D (meaning 3D copper too). This is probably +what people should use for multilayer (>2) boards. +T 48500 42700 9 10 1 0 0 0 1 +Thorsten's tutorial on f antennas +L 52200 46300 48800 46300 3 0 0 0 -1 -1 +L 52200 46200 48800 46200 3 0 0 0 -1 -1 +L 52200 46600 48800 46600 3 0 0 0 -1 -1 +L 52200 46800 48800 46800 3 0 0 0 -1 -1 +L 52200 46000 48800 46000 3 0 0 0 -1 -1 +L 52200 45700 48800 45700 3 0 0 0 -1 -1 +L 52200 49000 48800 49000 3 0 0 0 -1 -1 +L 52200 43300 48800 43300 3 0 0 0 -1 -1 +B 53100 46200 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 +B 52600 43000 4000 6500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 56300 46500 52900 46500 3 0 0 0 -1 -1 +L 56300 47100 52900 47100 3 0 0 0 -1 -1 +L 56300 47500 52900 47500 3 0 0 0 -1 -1 +L 56300 48000 52900 48000 3 0 0 0 -1 -1 +L 56300 48500 52900 48500 3 0 0 0 -1 -1 +L 56300 46400 52900 46400 3 0 0 0 -1 -1 +L 56300 46300 52900 46300 3 0 0 0 -1 -1 +L 56300 46200 52900 46200 3 0 0 0 -1 -1 +L 56300 46600 52900 46600 3 0 0 0 -1 -1 +L 56300 46800 52900 46800 3 0 0 0 -1 -1 +L 56300 49000 52900 49000 3 0 0 0 -1 -1 +T 54700 46400 9 10 1 0 0 4 1 +Substrate +T 52600 49500 9 10 1 0 0 0 5 +This z mesh ends at the bottom of the board. The boundary +conditions on this simulation are probably why they are able +to end the mesh here. It also has to do with the field not +being important. What is interesting is the miss use of +(addbox) for a 2D construct. +T 52600 42700 9 10 1 0 0 0 1 +Thorsten's tutorial on stub filter +T 53900 40100 14 9 1 0 0 0 1 +Evan Foss +T 50000 40700 14 9 1 0 0 0 1 +Mesh Examples Index: openems/zmesh.sch =================================================================== --- openems/zmesh.sch (nonexistent) +++ openems/zmesh.sch (revision 37411) @@ -0,0 +1,87 @@ +v 20130925 2 +C 40000 40000 0 0 0 title-B.sym +B 40800 47000 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 +L 44000 47000 40600 47000 3 0 0 0 -1 -1 +B 40300 44000 4000 6500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 44000 47400 40600 47400 3 0 0 0 -1 -1 +L 44000 47900 40600 47900 3 0 0 0 -1 -1 +L 44000 48400 40600 48400 3 0 0 0 -1 -1 +L 44000 48900 40600 48900 3 0 0 0 -1 -1 +L 44000 49400 40600 49400 3 0 0 0 -1 -1 +L 44000 46000 40600 46000 3 0 0 0 -1 -1 +L 44000 46500 40600 46500 3 0 0 0 -1 -1 +L 44000 45000 40600 45000 3 0 0 0 -1 -1 +L 44000 45500 40600 45500 3 0 0 0 -1 -1 +L 44000 44500 40600 44500 3 0 0 0 -1 -1 +L 44000 49900 40600 49900 3 0 0 0 -1 -1 +T 42400 47200 9 10 1 0 0 4 1 +Substrate +B 44900 47100 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 +L 48100 47100 44700 47100 3 0 0 0 -1 -1 +B 44400 44000 4000 6500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 48100 47500 44700 47500 3 0 0 0 -1 -1 +L 48100 47900 44700 47900 3 0 0 0 -1 -1 +L 48100 48400 44700 48400 3 0 0 0 -1 -1 +L 48100 48900 44700 48900 3 0 0 0 -1 -1 +L 48100 49400 44700 49400 3 0 0 0 -1 -1 +L 48100 46100 44700 46100 3 0 0 0 -1 -1 +L 48100 46600 44700 46600 3 0 0 0 -1 -1 +L 48100 45100 44700 45100 3 0 0 0 -1 -1 +L 48100 45600 44700 45600 3 0 0 0 -1 -1 +L 48100 44600 44700 44600 3 0 0 0 -1 -1 +L 48100 49900 44700 49900 3 0 0 0 -1 -1 +T 46500 47300 9 10 1 0 0 4 1 +Substrate +L 48100 47300 44700 47300 3 0 0 0 -1 -1 +B 49000 47200 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 +B 48500 44000 4000 6500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 52200 47500 48800 47500 3 0 0 0 -1 -1 +L 52200 48100 48800 48100 3 0 0 0 -1 -1 +L 52200 48500 48800 48500 3 0 0 0 -1 -1 +L 52200 49000 48800 49000 3 0 0 0 -1 -1 +L 52200 46300 48800 46300 3 0 0 0 -1 -1 +L 52200 45300 48800 45300 3 0 0 0 -1 -1 +L 52200 45800 48800 45800 3 0 0 0 -1 -1 +L 52200 44800 48800 44800 3 0 0 0 -1 -1 +L 52200 49500 48800 49500 3 0 0 0 -1 -1 +L 52200 47400 48800 47400 3 0 0 0 -1 -1 +T 50600 47400 9 10 1 0 0 4 1 +Substrate +L 52200 47300 48800 47300 3 0 0 0 -1 -1 +L 52200 47200 48800 47200 3 0 0 0 -1 -1 +L 52200 47600 48800 47600 3 0 0 0 -1 -1 +L 52200 47800 48800 47800 3 0 0 0 -1 -1 +L 52200 47000 48800 47000 3 0 0 0 -1 -1 +L 52200 46700 48800 46700 3 0 0 0 -1 -1 +L 52200 50000 48800 50000 3 0 0 0 -1 -1 +L 52200 44300 48800 44300 3 0 0 0 -1 -1 +B 53100 47200 3000 400 3 0 0 0 -1 -1 3 1 -1 100 -1 -1 +B 52600 47000 4000 3500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +L 56300 47500 52900 47500 3 0 0 0 -1 -1 +L 56300 48100 52900 48100 3 0 0 0 -1 -1 +L 56300 48500 52900 48500 3 0 0 0 -1 -1 +L 56300 49000 52900 49000 3 0 0 0 -1 -1 +L 56300 49500 52900 49500 3 0 0 0 -1 -1 +L 56300 47400 52900 47400 3 0 0 0 -1 -1 +L 56300 47300 52900 47300 3 0 0 0 -1 -1 +L 56300 47200 52900 47200 3 0 0 0 -1 -1 +L 56300 47600 52900 47600 3 0 0 0 -1 -1 +L 56300 47800 52900 47800 3 0 0 0 -1 -1 +L 56300 50000 52900 50000 3 0 0 0 -1 -1 +T 54700 47400 9 10 1 0 0 4 1 +Substrate +T 53900 40100 14 9 1 0 0 0 1 +Evan Foss +T 50000 40700 14 9 1 0 0 0 1 +Mesh Examples +T 40300 50600 9 10 1 0 0 0 1 +Uniform mesh of board thickness +T 44400 50600 9 10 1 0 0 0 2 +Uniform mesh of board thickness with added +line in substrate. +T 48500 50600 9 10 1 0 0 0 2 +Non-uniform mesh with substate internal lines + +T 52600 50600 9 10 1 0 0 0 2 +Non-uniform mesh with substate internal lines +and the board at the bottom of the mesh Index: openems/zmesh.txt =================================================================== --- openems/zmesh.txt (nonexistent) +++ openems/zmesh.txt (revision 37411) @@ -0,0 +1,36 @@ +0) What matterials do you want to make the boundary box out of? -> goes in BC in the output + + 0a) (do you want to pad things by adding a wall of cells and if so how + deep should it be? (or better save this for another release) + - not documented/supported, skip it) + + 0b) select max frequency of interest (f_max= in mesh_init.m) + +1) Any time you have a surface parallel to the Z axis it must have a mesh +line. So the exterior of the substrate, and if the copper is 3D then that +should have a line on top of it too. + +2) How much detail do you need inside the pcb substrate? + + 2a) No mesh lines inside the substrate? ok + + 2b) Select the number of lines you need (0, 1, 3, 5) inside the substate. + + +3) Do you have an uninterrupted copper plane under the pcb (and the right +boundary conditions)? Ask the user if in-air mesh is needed, per side +(checkbox) + +4) Do you need the field around the pcb in high resolution? -> ask for +the specific resolution + + ( + 4a) If you don't then you can ramp down the resolution outside the pcb. + + + 4b) If you do you do then you might just choose a fine uniform spacing + outside. + ) + +5) How far outside the pcb do you need to mesh?