Sonnet provides the capability to take a large circuit and split it into any number of smaller projects, then connect the results in a netlist project to produce a response for the whole circuit. This method can significantly reduce the required processing time and memory necessary to analyze the circuit while still obtaining an accurate answer.
The number of subsections in a circuit is one of the most important factors in determining processing time since the matrix solve time is proportional to N3. To illustrate how circuit subdivision reduces processing time, consider two subprojects each with half as many subsections as the source project. The total matrix solve time is now four times faster:
Circuit subdivision allows you to take advantage of this technique by breaking your circuit into smaller parts with fewer subsections, hence, requiring less processing time and memory to analyze. The trade off is that you introduce some error into the analysis. However, by subdividing the circuit appropriately you can minimize the error while still obtaining the reduction in processing time.
The circuit should be split where there is no coupling across the subdivision line. Areas where significant coupling occurs must be contained within a subproject. In this way, all the significant coupling in the circuit is accounted for. If care is taken when subdividing the circuit, the accuracy of the results is very high.
Circuit subdivision is not appropriate for every design, but in the cases of large circuits (5-10 minutes processing time per frequency) where it is applicable, you can obtain marked increases in processing efficiency.
Another advantage of circuit subdivision is the use of frequency interpolation in the master netlist analysis. A netlist is used to connect the response data of the subprojects of the circuit to simulate the full circuit. If the subprojects are chosen in such a way that their response data does not vary significantly over the frequency band, the ABS algorithm requires only a few discrete frequency points be calculated for each subproject. So not only do the smaller files require less time and memory because of their smaller size, but you can also analyze these smaller circuits at fewer discrete frequency points.
Shown below is an example showing the typical advantages of using this approach.
Circuit subdivision in Sonnet allows you to insert subdivision lines in your geometry in the project editor. These subdivision lines create the sections from which the subdivide command makes geometry subprojects. When you select the subdivide command, the software creates a main netlist file and the geometry subprojects. The main netlist connects the subprojects so that the response data for the netlist may be substituted for the response data of the source project.
You should also be aware that if your main circuit contains any parameters or dimensions, they are removed during the subdivision process. After the subprojects are created, you may enter parameters in any of the geometries. In fact, it is possible to run optimizations on the main netlist project using a parameter in one of the subprojects.
Performing circuit subdivision as a method of analysis should, in general, be done as follows:
If you add parameters to a subproject in a netlist, the parameters are not automatically displayed in the netlist. You must save the main netlist and re-open it to display the parameters and make them available for editing.
Since it is possible for a netlist project to include a netlist subproject, it is possible to use “double” subdivision. After subdividing your initial circuit, you then may use subdivision on one of the resulting geometry subprojects. In this case, you would need to change the name on the appropriate PRJ line from the old geometry subproject to the new netlist subproject.
We recommend using an ABS sweep for both the master netlist project and all the subprojects. However, on the rare occasion where you are not using an ABS sweep, we suggest the following strategy on setting up the analysis frequencies for your subprojects.
Many times, the response for the subprojects does not vary significantly over the frequency band. In this case, very few frequency points need to be calculated for each subproject and you should consider using a course frequency sweep for the geometry subprojects, and a fine frequency sweep for the netlist. Each subproject should be analyzed at the same minimum and maximum frequency as the overall analysis and at enough points in between to provide for reasonable interpolation of data at frequencies which fall between these values. You then specify a fine frequency sweep for the master netlist project. When the netlist analysis is performed, em will interpolate to provide simulation data at frequencies not specified in the subprojects. This results in a fine frequency sweep for the final result, without the requirement to simulate at every frequency point for each subproject.
To accomplish this, you will need to uncheck hierarchy sweep so that the subprojects do not use the frequency sweeps of the master netlist. To turn off this option, do the following:
As mentioned in the Introduction, the difficult part in using circuit subdivision is to decide where to place your subdivision lines to split the circuit. The subdivision lines should be placed between polygons which have negligible coupling. Places on the circuit where a high degree of coupling or rapidly varying currents are present should be kept within an individual subproject.
Long lengths of transmission lines in your circuit are usually good places to subdivide your circuit because there would be no coupling across the subdivider line. Long lengths of coupled transmission lines are also good places to place a subdivider, provided your subdivider is perpendicular to the flow of current. This point is illustrated below.
The circuit shown below, on the left, consists of a coupled transmission line. This is too simple a circuit to require subdivision but is very useful in demonstrating the principle. When subdivided, the circuit is split into two subprojects both of which would resemble the circuit shown on the right.
It is important to avoid areas where there is coupling across the subdivision line. Subdivision lines should not split any diagonal polygon edges. Illustrated in the next topic are good placements and bad placements of subdivision lines.
This section contains a series of illustrations each showing the good placement of a subdivision line in a circuit and its counterpart showing a bad (and in some cases illegal) placement of a subdivision line. Setting a subdivision line perpendicular to one or more transmission lines provides a good general guideline for line placement.
The first example is a pair of coupled lines. As explained above, when you split coupled lines as on the left, very little loss of accuracy results. However, on the right, you have split the coupled pair along the axis where significant interaction takes place. The subprojects have no way to account for this coupling and will produce bad data.
The second example shows how to split a series of resonators. In this type of structure, there is strong coupling at the gaps between adjacent resonators. The example on the left is good since the subdivision lines do not prevent this inter-resonator coupling. The example on the right is incorrect since the resulting subprojects do not contain the inter-resonator coupling.
The third example shows a square spiral. The example on the left is a good placement since the location where the spiral is divided is essentially a group of coupled transmission lines and the subdivision line is perpendicular to those lines. Here, the left side of the spiral is sufficiently far from the right side so that coupling is negligible. The example on the right is bad because the lines on the left side of the spiral do couple strongly with the lines on the right side.
The meander line on the left is split in such a way that Sonnet provides an accurate answer since the bends on the top are far enough away from the bends on the bottom that coupling between them is negligible. The example on the right provides an inaccurate result because the coupling between two close transmission lines is eliminated by the subdivision.
The circuit shown below has coupled transmission lines on two different layers. Once again, it is correct to place a subdivision line perpendicular to the transmissions lines, but not parallel to them. Subdivision is valid for multi-layer structures as long as the coupling across the subdivider is negligible.
In the double stub circuit shown on the left, the subdivision lines split the polygon perpendicular to the direction of current flow and far from any discontinuities. The circuit on the right however, shows the subdivision line splitting the bases of the two stubs which may be coupled.
The subdivision line shown in the circuit on the right is wrong since the circuit is split in the middle of a via between layers. In general, subdivision lines should never be placed on top of discontinuities, such as vias. The subdivision line on the left is the correct placement.
The subdivision line shown in the circuit on the right splits a polygon at the box-wall which is an illegal placement for a subdivision line. It is illegal to subdivide polygons grounded to the box-walls since such polygons do not behave like transmission lines. Also, the new ports added during the subdivide would be shorted to the box-wall. The circuit on the left is correct since there is no contact between the top and bottom polygons with the top and bottom box-wall.
Subdividers may split the circuit on a horizontal axis or a vertical axis, but you may not mix orientation. Choosing the direction in which you split your circuit is dependent upon the structure of your circuit. Shown below is a typical circuit in which you would use the vertical orientation and another example in which you would use the horizontal orientation.
You may use both orientations by using double subdivision mentioned earlier. The first time you subdivide your main circuit you choose an orientation for your subdivision lines. Then use circuit subdivision on the resulting geometry subprojects, this time using the opposite orientation for your subdivision lines.
Before adding subdividers to your geometry project, you should ensure that specification of your circuit is complete. Subprojects created when you execute the subdivision inherit their properties from the source project. Such properties as cell size, metal types, properties of the dielectric layers, dielectric bricks, metal levels, etc. are all used in the resultant subprojects.
When you place a subdivider in your circuit, a line representing the subdivider appears in the horizontal or vertical plane running through the point at which you clicked. The resultant sections of the circuit are automatically labeled. Subdivision sections are labeled from left to right, or top to bottom, depending upon orientation. These labels are always sequential and are non-editable.
Once a subdivider has been added to your circuit, you may edit the subdivider as you would any other object in your geometry. You may click on the subdivider and move it. You may also control the display and selection of the subdivider lines and labels in the Object Visibility dialog box and the Selection Filter dialog box.
The following are illegal conditions for subdivision lines:
Once you have completed adding all the desired subdividers to your circuit, you must save the project before performing the subdivision.
Since the geometry subprojects created by the subdivide inherit their properties from the source project, you should complete entering all the desired attributes for your circuit before performing the subdivide. This includes such things as defining the dielectric layers (which includes the height of the box top), top and bottom box metals, ports, frequency sweeps, metal and dielectric brick materials, cell size and box size. This saves the effort of having to enter these values in each of the subprojects.
The actual subdividing of your circuit into separate geometry subprojects and a master netlist project is performed by the software. You enter the desired names for the master netlist and the geometry subprojects. You may also automatically add feedlines of lossless metal to any ports generated in the subprojects.
Feedlines should be added when discontinuities contained in sections of your source circuit need to be moved away from the box-wall to prevent interaction between the box-walls and the discontinuity. The use of feedlines are optional; if you choose to add a feedline, you may use the suggested length calculated by the software or input your own value. By default, the software creates feedlines using the suggested length.
When the subdivide is executed, Sonnet creates a geometry subproject for each section of the circuit in which you placed the subdividers. It also creates a master netlist that connects the geometry subprojects together to produce an equivalent circuit for the original geometry project that you subdivided.
Each of the geometry subprojects uses the properties of the original circuit: cell size, dielectric layers, dielectric and metal materials, analysis setup, etc. Therefore, all the geometry subprojects contain the same analysis setup with the same analysis frequencies specified
To obtain the desired response data, edit the analysis setup for the master netlist so that all of the desired analysis frequencies are specified. Each of the geometry subprojects are set up with the coarser resolution of analysis frequencies. When the netlist is analyzed, em runs the geometry project analyses first to produce response data for each part of the network. Then the analysis of the whole network is executed. Em interpolates to produce data for frequency points in between those available from the analysis of the geometry subprojects.
If properly subdivided, the results of the netlist analysis should provide an accurate solution for your difficult to handle circuit using fewer resources. The use of circuit subdivision is demonstrated in the example "bp_filter" which may be obtained in the Example Browser by selecting Help ⇒ Browse Examples in any Sonnet tab.