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

example

via = viaSingleEnded creates a single-ended via with default properties. This via has one dielectric layer, two 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.

via = viaSingleEnded(number of conductive layers) returns a single-ended via based on the number of conductive layers.

example

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.

Properties

expand all

Diameter of the signal via(s) barrel in meters, specified as a scalar or a vector. if this is a vector, 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 vector. If this is a vector, 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.

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 vector. If this property is a vector, 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 vector. If this property is a vector, 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

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

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 antenna.Circle is ('Radius', 0.0005).

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

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

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 antenna.Circle is ('Radius', 0.00075).

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

Data Types: antenna.Circle shape object | cell array of antenna.Circle shape 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.

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

Data Types: metal

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

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) 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.

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.

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 table
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 7]
                  SignalViaDiameter: 2.5000e-04
          SignalViaFinishedDiameter: 2.0000e-04
                       SignalViaPad: [1x1 antenna.Circle]
                   RemoveUnusedPads: 1
                   SignalViaAntipad: [1x1 antenna.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)

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)    

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