Main Content

viaSingleEnded

Create single ended via in PCB stack

Since R2023a

Description

Use the viaSingleEnded object to create a single-ended via model within a printed circuit board (PCB) stack.

A vertical interconnect access (via) is an essential part of a multilayer PCB. You can use vias to create an electrical connection between the different layers in a PCB. You can construct vias by placing copper pads on each layer of the PCB and drilling a hole through the pads, using a non-conductive material in the inner layer of the via and a conductive plating on the outer layer.

A via consists of:

  1. Barrel — Conductive tube filling the drilled hole

  2. Pad — Connects each end of the barrel to a component, plane, or trace

  3. Antipad — Clearance hole between the barrel and metal layer

In a multilayer PCB, vias reduce the length over which you need to route a trace to complete its connection. Smaller the via, the better the performance of the circuit.

Note

In this release, viaSingleEnded only supports behavioral model analysis of s-parameters. For more information, see Behavioral Models.

Creation

Description

via = viaSingleEnded creates a single-ended via with default properties. This via has four dielectric layers, two signal layers, three ground layers, one signal via, and one ground return via. The default substrate is FR4 with a thickness of 1.27e-4 m per layer.

example

via = viaSingleEnded(number of conductive layers) returns a single-ended via based on the number of conductive layers. The expected number of conductive layers must be four, or greater.

via = viaSingleEnded(Name=Value) sets Properties using one or more name-value arguments. For example, viaSingleEnded(SignalViaDiameter=0.0065) creates a single-ended via with a signal diameter of 0.0065 meters. Properties not specified retain their default values.

example

Properties

expand all

Diameter of the signal via(s) barrel in meters, specified as a scalar or a column. If this is a column, the size is equal to the number of signal vias.

Example: via = viaSingleEnded(SignalViaDiameter=5e-4); show(via)

Data Types: double

Diameter of the finished signal via(s) barrel in meters, specified as a scalar or a column. If this is a column, the size is equal to the number of signal vias. Changes in this property are not reflected in the visualizations.

Example: via = viaSingleEnded(SignalViaFinishedDiameter=4e-4)

Data Types: double

Location of the signal via(s) in Cartesian coordinates, specified as a N-by-4 matrix, where N is the number of signal vias. The first and the second column corresponds to the X and Y coordinates of the via in meters, respectively. The third and the fourth columns correspond to the respective start and stop layers of the via.

SignalViaLocations can be used to create plated-through signal vias, and back-drilled signal vias. A signal via is typically back drilled to the nearest connected layer.

Note

  • Buried and blind signal vias are not supported.

  • Hollow dielectric is not shown in the visualization.

Example: via = viaSingleEnded(SignalViaLocations=[5e-3 2.5e-3 1 5],SignalLayer=[1 5 7],GroundLayer=[3 9],SignalTable={1 1 2e-4 45;1 5 2e-4 0});show(via)

Data Types: double

Diameter of the ground return via(s) in meters, specified as a scalar or a column. If this property is a column, the size of the vector is equal to the number of ground return vias.

Example: via = viaSingleEnded(GroundReturnViaDiameter=6e-4);show(via)

Data Types: double

Diameter of the finished ground return via(s)' barrel in meters, specified as a scalar or a column. If this property is a column, the size of the vector is equal to the number of ground return vias. Changes in this property are not reflected in the visualization.

Example: via = viaSingleEnded(GroundReturnViaFinishedDiameter=6e-4)

Data Types: double

Location(s) of the ground return via(s) in Cartesian coordinates, specified as an M-by-4 matrix, where M represents the number of ground return vias in the PCB stack. The first and the second column corresponds to the X and Y coordinates, respectively, of the via in meters. The third and the fourth columns corresponds to layer where the via starts and stops, respectively.

Note

All ground return vias should span across every metal layer - from top to bottom.

Example: via = viaSingleEnded(GroundReturnViaLocations=[2e-3 2e-3 1 5]);show(via)

Data Types: double

Shape of the ground return via antipads specified as a scalar or M-by-P cell array of shape.Circle objects. M is the number of ground return vias and P is the number of power planes.

Note

The ground return via antipads are not used in behavioral modeling and are for visualization only.

Example: via=viaSingleEnded(GroundLayer=[3 9],PowerPlane={5 shape.Rectangle(Length=4e-3,Width=4e-3)},GroundReturnViaAntipad=shape.Circle(Radius=3e-4)); show(via)

Data Types: shape.Circle object

Position of the signal layers in the PCB stack, specified as a row vector

Example: via = viaSingleEnded(SignalLayer=[1 7 11]);show(via)

Data Types: double

Position of the ground layers in the PCB stack, specified as a row vector.

Example: via = viaSingleEnded(GroundLayer=[4 9],GroundReturnViaLocations=[1e-3 1e-3 4 9]);show(via)

Data Types: double

Power plane specified as a P-by-2 cell matrix. The first column is the position of the power plane and the second column is the shape of the power plane island. The island can be represented by a shape.Shape2D object.

At least one ground layer should be present above and below the power plane for analysis.

Example: via = viaSingleEnded(GroundLayer=[3 9],PowerPlane={5 shape.Rectangle(Length=4e-3,Width=4e-3)},GroundReturnViaAntipad=shape.Circle(Radius=3e-4)); show(via)

Data Types: cell

Shape of the signal via pads, specified as a scalar or N by K cell array. N is the number of signal vias. K is the number of conductive layers in the PCB stack. You can use getPads to generate a pad stack. You can use getPads to view the pad stack in a table. The default value of shape.Circle is ('Radius', 0.0005).

Example: obj = viaSingleEnded; obj.SignalViaPad = {shape.Circle(Radius=6e-4) [] [] shape.Circle('Radius',7e-4) []};show(obj)

Data Types: cell array of shape.Circle objects | shape.Circle object

Remove unused pads specified as logical 1 (true) or 0 (false). A flag to indicate pads that are not on the top or bottom of the PCB and not part of a port are to be removed. When true, unused pads are removed.

Example: via = viaSingleEnded; via.RemoveUnusedPads = 0; show(via)

Data Types: logical

Shape of the signal via antipads, specified as a scalar or N by L cell array. N is the number of signal layers. L is the number of ground layers. The default value of shape.Circle is ('Radius', 0.00075).

Example: obj = viaSingleEnded(SignalViaAntipad = {shape.Circle(Radius=8e-4) shape.Circle(Radius=7e-4) shape.Circle(Radius=7.5e-4)});show(obj)

Data Types: shape.Circle object | cell array of shape.Circle objects

Type of metal used for the conducting layers, specified as a scalar or array of metal object(s), one per conducting layer. For more information see metal. The metal should have a finite conductivity.

Note

The thickness of the conducting planes is not shown in the visualization. All metal layers should have the same conductivity, they can however have different thicknesses.

Example: m = metal('Gold'); obj = viaSingleEnded(Conductor=m);show(obj)

Data Types: metal object | scalar | vector

Type of dielectric material used as a substrate, specified as a dielectric object. The thickness of the default dielectric material FR4 is 0.000127 m. The object supports a heterogeneous substrate.

Example: obj = viaSingleEnded(4);d1 = dielectric("FR4");d2 = dielectric("Teflon");obj.Substrate = [d1 d2 d2 d1];

Data Types: dielectric object | array of dielectric objects

Port connections for each via, specified as a p-by-4 cell array, where p is the number of port connections. Each cell row contains {SignalViaNum SignalLayerNumforPort TraceWidth SignalDirection}.

SignalViaNum is the corresponding row layer number of a given signal via as listed in SignalViaLocations.

SignalLayerNumforPort is the layer on which connected port is defined.

TraceWidth is the corresponding width of the entry/exit trace in meters.

SignalDirection is the direction (angle in degrees) at which the trace connects to the pad, or string "Vertical"

The default values define the port for:

  • Signal via 1 at signal layer 1 with TraceWidth = 2.9e-4 meters, and SignalDirection = 180 degrees.

  • Signal via 1 at signal layer 7 with TraceWidth = 2.9e-4 meters, and SignalDirection = 0 degrees.

For more information see properties SignalLayerPerVia, TraceWidth, and SignalDirection. These read-only properties show corresponding quantities sorted such that each row corresponds to a signal via as listed in SignalViaLocations. Signal vias with no ports defined are considered to be open. For "Vertical" port connection (which is possible at the top or bottom of the board) the ground layer and signal layer can overlap. For "Vertical" port connection the top and/or bottom should be defined as entries in bothSignalLayer and GroundLayer.

Example: via = viaSingleEnded(SignalViaLocations=[5e-3 2.5e-3 1 5],SignalLayer=[1 5 7],GroundLayer=[3 9],SignalTable={1 1 2e-4 45;1 5 2e-4 0});show(via)

Data Types: cell

This is a read-only property derived from SignalTable.

Position of the signal layers for each signal via specified as a N-by-1 cell array. N is the number of signal vias.

Data Types: cell

This property is read-only.

This is a read-only property derived from SignalTable.

Width of each trace, in meters, specified as a N-by-1 cell array. N is the number of signal vias. The elements in the TraceWidth cell correspond to SignalLayerPerVia.

Data Types: cell

This is a read-only property derived from SignalTable.

Angle, or direction, of the trace to the pad as specified by a N-by-1 cell array. N is the number of signal vias. The SignalDirection value is specified in the range of [0, 360] degrees, or as 'Vertical'. 0 degrees is defined as along the x-axis. 'Vertical' is only valid for the top and bottom layers.

Data Types: double | char | cell

This is a read-only property

All conducted layers listed in SignalLayer and GroundLayer. Conducting layers cannot overlap. Exception: For "Vertical" port connection, the ground layer and signal layer can overlap.

This is a read-only property.

A PCB structure should have at least two connected layers to perform an analysis. A connected layer is either a ground layer or a power plane.

Object Functions

criticalwavelengthNumber of wavelengths between signal via and ground return vias
gapratedistanceGap rate distance metric
layoutPlot all metal layers and board shape
shapesExtract all metal layer shapes of PCB component
showDisplay PCB component structure or PCB shape
sparametersCalculate S-parameters for RF PCB objects
padsTableDisplay pad stack used by viaSingleEnded in a table
antipadsTableDisplay antipads stack used by viaSingleEnded in a tabular from
getpadsGenerate a pad stack
getantipadsGenerate antipad stack

Examples

collapse all

Create a single-ended via with default properties.

via = viaSingleEnded
via = 
  viaSingleEnded with properties:

   Conducting Layers
                        SignalLayer: [1 7]
                        GroundLayer: [3 5 9]
                          Conductor: [1x1 metal]

   Dielectric Layers
                          Substrate: [1x1 dielectric]

   Signal Vias
                 SignalViaLocations: [0 0 1 9]
                  SignalViaDiameter: 2.5000e-04
          SignalViaFinishedDiameter: 2.0000e-04
                       SignalViaPad: [1x1 shape.Circle]
                   RemoveUnusedPads: 1
                   SignalViaAntipad: [1x1 shape.Circle]

   Ground Return Vias
           GroundReturnViaLocations: [1.0000e-03 1.0000e-03 1 9]
            GroundReturnViaDiameter: 2.5000e-04
    GroundReturnViaFinishedDiameter: 2.0000e-04

   Ports
                        SignalTable: {2x4 cell}

View the via.

show(via)

Figure contains an axes object. The axes object with title viaSingleEnded element, xlabel x (mm), ylabel y (mm) contains 17 objects of type patch, surface. These objects represent Copper, feed, FR4, \infty board edge.

Create a single-ended via.

via = viaSingleEnded;

The signal layers for this board are on layers 1 and 5. The ground/return layers for this board are on layers 3, 7, and 9.

via.SignalLayer = [1 5];
via.GroundLayer = [3 7 9];
via.Substrate = dielectric("Name","FR4","EpsilonR",4.8,...
               "LossTangent",0.026,"Thickness",1.27e-4,"Frequency",1e8);

Create signal via location.

via.SignalViaLocations = [1,2,1,7];

Set ports for the signal via 1 on layers 1 and 5 with trace width of 3e-4 m.

via.SignalTable = {1 1 3e-4 45; ...
    1 5 3e-4 0}; 

Create the ground return via locations.

via.GroundReturnViaLocations = [1.0015,2.001,1,9;...
    1.0015,1.999,1,9; ...
    0.999,1.999,1,9;...
    1,2.0015,1,9;...
    0.999,2.001,1,9;...
    1.0001,1.9987,1,9];

Assign different signal via pads shapes:

pad_temp = getpads(via);
pad_temp{3}.Radius = 4.5e-4; 
via.SignalViaPad = pad_temp;

View the via.

show(via)    

Figure contains an axes object. The axes object with title viaSingleEnded element, xlabel x (m), ylabel y (m) contains 22 objects of type patch, surface. These objects represent Copper, feed, FR4, \infty board edge.

References

[1] Steinberger, Telian, Tsuk, Iyer and Yanamadala, “Proper Ground Via Placement for 40+ Gbps Signaling”, DesignCon 2022, April 2022.

[2] Ramo, Whinnery and Van Duzer, Fields and Waves in Communications Electronics, third edition, section 9.3, John Wiley and Sons Inc., copyright 1994

Version History

Introduced in R2023a

expand all