will be under maintenance from Friday, Oct. 3rd at 6pm (PST) thru Sunday, Oct 5th at 11pm (PST). login, registration, community posting and commenting functionalities will be disabled.
Home > Community > Blogs > RF Design > my favorite nport settings
Login with a Cadence account.
Not a member yet?
Create a permanent login account to make interactions with Cadence more convenient.

Register | Membership benefits
Get email delivery of the RF Design blog (individual posts).


* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

My Favorite nport Settings for Spectre and SpectreRF

Comments(4)Filed under: Spectre, Spectre RF, RFIC, Circuit simulation, RF Simulation, Analog Simulation, RF, nport, analogLib, nport settings

The nport component located in analogLib can be used in circuits for Spectre and SpectreRF simulations. It is a scattering parameter (S-parameter) based distributed multi-port element. The nport truly is a "black box"… It can be used to model dramatically different systems, such as:

  • lowpass/bandpass systems
  • highpass/bandstop systems 
  • allpass systems
  • systems with delay

It is nearly impossible to have a "one size fits all" default setting. In recent releases, a great deal of fine tuning has been done to ensure accuracy and good simulation performance based on numerous design applications. However, you still need to understand how to tailor the model for your particular application.  The most common problems seen during transient, pss, hb, etc analysis with a circuit containing an nport are due to:   

  • No DC data point, incorrect DC data point, or a big gap between DC and the next frequency point.
  • Passivity not enforced in the data  
  • Insufficient high-frequency data
  • Insufficient frequency resolution  
  • Data noise or error in data
To assess the quality of your s-parameter data, look at the s-parameter data on the Smith Chart. You can now do this easily with ViVA in IC6.1.4 USR2, IC6.1.5 and later subversions. See Solution 11640878;solutionNumber=11640878

  • The magnitude should be less than 1 (assuming a passive DUT) and remain inside the Smith Chart.
  •  The trace should be a clockwise growing or decaying spiral.  
  • The DC data point must be real and on the horizontal axis of the Smith Chart.
  •  The data should be smooth (not piecewise-linear or choppy looking. No sudden discontinuities).

My favorite parameters are: dcextrap, hfextrap, passivity, and causality.  These all assume that you are using linear or spline interpolation, which is recommended for most applications.   Here’s the “scoop” ….   

dcextrap (long delay dc extrapolation method)   

dcextrap is typically used when the nport s-parameter data file models a system with long delay --and-- the DC point is not included in the s-parameter data file. One problem that occurs in these systems is the default extrapolation mechanism for the phase calculation results in an incorrect value of phase at DC, and then continues to be incorrect up to Fmin (the lowest frequency s-parameter data point). This happens when Fmin does not model the phase well enough at low frequency such that a simple extrapolation provides incorrect results.

With dcextrap=constant (default option), a constant magnitude from the lowest frequency data point is used and the dc phase is set to the real axis near the lowest frequency data point.    

Using dcextrap=unwrap can improve the results by calculating a better estimate of the extrapolated phase response at DC. The DC magnitude is set based on a regression of the low frequency data. The DC phase is set by unwrapping the phase and setting it onto the real axis.    

With dcextrap=hpunwrap, both the magnitude and phase are extrapolated from a regression analysis. It is similar to dcextrap=unwrap but provides an alternate approach for dc phase extraction which may be preferred for high pass characteristics.   

Note that dcextrap=unwrap and hpunwrap are used only if you *do not* have a DC point in the s-parameter data file. If there is a DC data point, then this parameter is ignored.      

The hfextrap parameter (long delay high frequency extrapolation method)  

hfextrap=constant (default). The default behavior of Spectre's nport element is to use constant extrapolation at high frequencies.   

hfextrap=linear linearly extrapolates phase at high frequencies. This can help to more closely match lab measurements when the S-parameter data is frequency limited and extrapolating the phase in a linear fashion is realistic.   

hfextrap is ignored if you are using causality.    When using hfextrap, you may also want to set usewindows=yes (smooth data windowing function) to help ensure model stability, particularly with s-parameter data having insufficient bandwidth.     

The causality parameter corrects s-parameter data to ensure the system is causal.    

When causality=no or the parameter is not set, the nport behavior is the same as in previous MMSIM releases.  No causality correction is done.   

Both causality=fmax and causality=auto extrapolate s-parameter data with polynomial, and apply a Hilbert transform to calculate causality violation. Then coefficients of interpolating polynomial are optimized to minimize causality error. The parameters usewindow and hfextrap are ignored when causality=fmax or auto.    

When causality=fmax, Spectre corrects causality up to fmax. It either uses the default (which is 3 times the maximum frequency specified in the s-parameter data file), or it uses what the user has specified for the existing nport parameter fmax.    

When causality=auto, Spectre corrects s-parameter causality up to an automatically optimized fmax (the fmax frequency is iteratively adjusted to minimize causality error) and ignores the existing nport parameter fmax. Note that the auto setting can significantly increase simulation time, therefore causality=fmax is recommended.     

There are two passivity parameters: passivity and pabstol.  

Due to poor measurement accuracy, the s-parameter data may be non-passive. The consequence is the time-domain simulation may not converge. The passivity parameter checks and enforces passivity of s-parameters. Possible values are no (default), check or enforce.   

passivity=check ensures the eigenvalues of the real(Y) matrix are non-negative. A warning message is issued if the data is not passive.   

passivity=enforce re-sets the negative eigenvalues of the real(Y) matrix to zero if the data is found to be non-passive. A notice is issued in the spectre.out.file.   The pabstol parameter specifies the absolute tolerance of passivity criteria. The default is 1e-6.    

Summarizing....      Good S-parameter data is the key to nport model stability and accuracy in the time domain.  Most convergence problems are caused by incomplete or incorrect data.    

nport troubleshooting tips


Tawna Wilsey


By Stephan on November 11, 2011
Hi, although not everybody like it: If you know your s-parameter are presented well with a lumped element circuit (like package or LC filter, etc.), then 'rational' is a good choice!! Use not a too large 'order', usually it is best to use one more than the expected order. With rational you often get best transient behavior and extrapolation. Try to learn for your own: Make a little LC filter, simulated + save s2p file, then change testbench to include the s2p via nport and run e.g. a pulse step - and play with port settings. This way you can prepare for more complex cases.

By Tawna on November 11, 2011
Hi Stephan,  you are absolutely correct.  Rational interpolation is a reasonable choice if you have lumped elements.  The rational model is not as robust and accurate as the convolution based model (linear or spline), particularly when the s-parameter data models distributed systems with long propagation delay, or the DUT is a multi-port system with the number of ports > 4.  
best regards,

By Pietro M on September 28, 2012
Good morning, I wanted to use the N1PORT component for the transient simulation of a measured device, but I had problems. I hence tried to create a capacitor with N1PORT and S=(1-jwRC)/(1+jwRC), with f from 0 to 1GHz with 500KHz step. The simulation works well in "Rational", but with "Spline" and "Linear" interpolation there is a static current equivalent to a 12.5KOhm parallel resistor, which produces 80uA current on 1V DC voltage. I tried with all the options I had in the schematic entry without improving the simulation.

By Tawna on November 5, 2012
Hi Pietro M,
I would use  the analogLib nport (not the n1port).   The nXports are there for legacy reasons.  All enhancements/fixes/etc are in the nport.
Rational interpolation works well when you have lumped elements, as you have discovered.   However, it does not work well when you have > 4 ports or are  modeling a system with long propagation delay,   In those cases, rational is not as robust nor as accurate as the linear/spline algorithms.  
best regards,

Leave a Comment

E-mail (will not be published)
 I have read and agree to the Terms of use and Community Guidelines.
Community Guidelines
The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.