--
-- TODO
-- 
-- This is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2, or (at your option)
-- any later version.
-- 
-- This software is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
-- 
-- You should have received a copy of the GNU General Public License
-- along with this package; see the file COPYING.  If not, write to
-- the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
-- Boston, MA 02110-1301, USA.  
--

This file lists all the things we would like to add in the future.
Bugs are not listed here; for a list of all known bugs (fixed and
unfixed) have a look at the file BUGS.

(completed tasks are indented one tab)

	- Transmission line defined by RLCG values.
	- Implement fftshift() functionality.
- File based sources defined in the frequency domain.
- MESFET translation from SPICE to qucs in the converter.
- Four-terminal versions of two-port RFEDD's.
	- Implementation of ddx() operator, especially for EDD.
	- Introduce global nodes (e.g. subst!) in the simulator. 
	- Allow variable references in property value lists (reference
	  can be introduced by creating vectors, and referencing to the
	  vector).
- Translation of B-sources in SPICE converter using EDD.
	- Translation of polynomial C's and L's in SPICE converter using EDD.
- Noise equations in EDD.
- Implicit expressions for EDD.
- User defined functions for equation solver.
- Functions for double- and single-sided spectra conversion.
	- Mutual inductors with virtually unlimited number of
	  couplings.
- Make 'time' and 'frequency' variables available in equations during
  AC, SP and transient simulation.
	- Allow engineering notation in equations.
	- Support for ZVR ascii data (R&S network analyzer) as an import
	  file format in the Qucs Converter.
	- Allow input parameters of components, e.g. Q1.Bf, in equations.
- Implementation of some basic binary operations for binary data like
  and, or, xor, etc. in the equation solver.
- Support for binary (digital simulation) data in datasets.
	- Implement open/short in S-parameter component during DC.
	- Support for touchstone as an export file format in the
	  Qucs Converter.
- Translate switches in spice netlists in the netlist converter.
	- Support for equation defined voltage/current sources or
	  components.
	- Allow equations in subcircuits.
	- Support for CITIfiles as an import file format in the Qucs
	  Converter.
	- Support for comma separated values (CSV) as an export
	  file format in the Qucs Converter.
	- Implement yval(values,xval) and xval(values,yval) evaluation
	  functions in the equation solver.
	- Allow output of characteristics (e.g. ErEff) very likely
	  operating points.
	- Implement knee currents Ikf and Ikr in the diode model.
	- Implementation of delay times of digital components for
	  transient simulation.
	- QucsConv: Implementation of VCD to Qucs dataset converter.
	- Implement analog models for digital (and, or, xor, etc.)
	  components.
	- Use symbol hash for function lookup in equation solver. Now
	  using 'gperf' to create a perfect hash.
	- Implement dft() and idft() functions.
	- Implementation of correlated noise sources.
- Allow variables from other datasets in equations.
	- Use minimum noise figure for noise circles as default. Makes no
	  sense, because there is no circle but a point for the minimum.
	- Use maximum gain for gain circles as default. This makes no
	  sense, because there is no circle but a point for the maximum.
	- Allow impedances other than 50ohms in rtoz(), ztor(), stoy(),
	  ytos(), stoz(), ztos(), ztoy(), ytoz() and alike.
	- QucsConv: Redefine qucslib format.
	- QucsConv: Find a solution for three and more mutual inductors
	  conversion from spice to qucs.  Solution for three mutual
	  inductors implemented.
	- Implementation of non-ideal transformers (mutual inductances).
	- Spline interpolation for touchstone S-parameters.  Implement
	  general interpolation functionality for all kind of data.  Make
	  this available in equation solver as well.
	- Singular value decomposition (SVD) for solving linear equation
	  systems.
	- Automatic variable generation in equation solver (plotvs,
	  circles).
	- QR decomposition algorithm for solving linear equation systems.
	- Implement fft() function for signals in the time domain in the
	  equation solver.
	- Digital simulation (on gate level with timing?).  Implemented
	  in the GUI.  Using a FreeHDL installation.
- Document interface for additional device model implementations.
- HEMT implementation.
- Relative permeability of microstrip line substrate.
- Cover height (shielding) of (coupled) microstrip line.
	- Coplanar short and open components.
- Large signal S-parameter simulation based on harmonic balance.
	- Implement Zener diode model or extend the existing diode
	  model.  Using the Bv and Ibv parameters.
- Use Markowitz pivoting when solving equation systems with a sparse
  matrix.
- Implement a sparse matrix template class.
	- Non-ideal transient models of bias-t, dc-block and dc-feed.
	- Implement optional gmin-stepping algorithm.
	- More S-parameter computation formulas, e.g. stability factors.
	- Implementation of noise and stability circle formulas.
	- Implement some more matrix operations, e.g. det(), conj(),
	  transpose() and inverse(), to be available in equations.
	- Spice to Qucs netlist converter.
- Reordering algorithm for MNA matrices (fail of convergence).
	- Allow array indices in vectors with multiple dependencies.
	- Add charge-conversing model for MOS capacitances (i.e. Simpson's
	  numerical integration rule).
- Implement variable step-size coefficients for Adams-Bashford.
	- Implement variable step-size coefficient calculations for
	  transient integrators.
- Transient model of phaseshifter.
	- Transient models for controlled sources with time delay.
- Transient noise analysis.
	- Implement a real predictor for transient analysis.
	- Use Milne's formula for local truncation error estimation.
- Transient models of transmission lines (using convolution?).
	- Transient models of non-linear devices.
	- Implementation of transient models for capacitor, inductor and
	  resistor.
	- Subcircuit definitions with properties.
	- Node-set functionality for DC and transient analysis.
	- Coplanar line implementation.
	- Microstrip via hole implementation.
	- Microstrip t-junction.
	- Microstrip cross.
- Modella, HICUM, MEXTRAM and VBIC bipolar model implementations.
	- MESFET (Curtize, Staatz) implementations.
- BSIMv3 implementation.
- BSIMv4 implementation.
- Harmonic balance simulation.
	- Transient simulation.
	- AC noise analysis.
	- AC analysis.
	- Implement sorted node list for S-parameter analysis in order
	  to increase speed.
	- What about a damped Newton-Raphson or source-stepping?
	- Find an efficient algorithm to ensure non-zero diagonal matrix
	  elements for iterative methods.
	- Clarify pn-junction noise issue.
	- Check polarity of BJT (SPICE Gummel-Poon) device.
	- Implement temperature models of existing non-linear devices.
	- Implement DC model for transmission line.
	- Implement noise model for attenuator, diode and isolator.
	- Recalculate S-parameters in touchstone files for n+1 ports.
	- Implement excess phase and polarity of SGP BJT model.
- Make Wheeler's quasi-static formulas for microstrip continual.
	- Allow subcircuits in netlist and simulate them correctly.
	- Parameter for exporting equation result to dataset.
	- What about resistors with R=0?
	- Implement DC model for phaseshifter.
	- Implement DC model for bias T.
	- Handle special DC models for dc-block, dc-feed, inductor and
	  capacitor.
	- Use LU decomposition for matrix inversion and determinants.  Done
	  by Gaussian methods.
	- Implement sec(), cosec(), sech() and cosech() functions.
	- Implement sinc() and sign() functions.
	- Fix dependency in dataset variables when e.g. using max().
	- Add constants like pi to the available symbols in equations.
	- Implement list and logarithmic sweeps and merge them with the
	  existing linear parameter sweep.
	- Do not permit duplicate parameter names in parameter sweeps, but
	  allow them in same order sweeps.
	- Implement implicit dependencies of analysis types.
	- Check for duplicate definitions in equations and parameter sweep
	  variables.
	- Add string constants to equation base class.
	- Allow equation variables in component properties.
	- Implement class for vectors of matrices.
	- Check for cyclic analysis definitions.
	- Somehow merge the variable class and the equation base classes.
	- Fix dataset output of multiple variable sweeps.
	- Implement correct analysis order.
	- Optimize reduce by searching for a connection that will result 
	  in the new subnetwork with the smallest number of s-parameter
	  to calculate.
	- Avoid both types of singularities of s-parameter analysis.
	- Insert open node points if necessary.
	- Make dedicated signal ports.
	- Implement 4-port voltage controlled current source (VCCS).
	- Implement circulator.
	- Implement isolator.
	- Implement attenuator.
	- Implement 4-port transformer.
	- Implement device (touchstone file).
	- Implement netlist parser using bison + flex.
	- Permit differential s-parameters.
	- Add math functionality to the dataset class.  The functionality was
	  build into the base types.
	- Allow multiple s-parameter simulations at once.
	- Free the parsed netlist input (as checker functionality).
	- Add already implemented components to checker + factory.
	- Allow s-parameter impedances other than Z=50 Ohm.
	- Implement "@file" component property.  Is now "{file}" property.
	- Allow variable definitions and sweeps.
	- Exit code indicating simulation success/failure.
	- Status and error message file descriptors.
	- Autofy the package.
	- Make 'nr_double_t' configurable.
	- Handle reference impedance for touchstone files correctly.
	- Implement matrix conversion routines for datasets.
	- Add noise parameters in touchstone file importer.
	- Implement 6-port transformer.
	- Add microstrip elements to the list of available components.
