Discipline names are user-defined strings. The basic disciplines are defined in <install_dir>/tools/spectre/etc/ahdl/disciplines.vams. This includes the default discipline logic for the discrete part and various continuous disciplines, such as electrical, magnetic, thermal, and translational.
The following is an example of how to define new disciplines. It shows that continuous disciplines need the potential and flow definition, while the discrete discipline is defined only with the keyword discrete.
discipline my_electrical potential Voltage; flow Current;enddiscipline
discipline my_logicdomain discrete;enddiscipline
There is no standard available for variable names other than the default definitions. The following is a list of useful naming conventions for wreal discipline definition to simplify the IP exchange between different groups:
- wreal_voltage normal voltage: R2E has default output resistance.
- wreal_vsup power supply: R2E has zero output resistance.
- wreal_vmatch matched load: R2E is driven with twice the wreal value through output resistor Rmatch. E2R input resistance is also Rmatch.
- wreal_current ideal current: R2E is current with impedance. E2R is a fixed-bias voltage plus load resistance. Supply limiters in R2E could prevent that the voltage exceeds gnd or vdd levels.
- wreal_iloadgnd gnd based current: R2E is resistor from pin to ground, no E2R.
- wreal_iloadsup supply based current: R2E is resistor from pin to supply, no E2R.
If different discipline naming had been used, the connect or resolveto command defines identical/compatible disciplines. In the below example, disciplines A, B, and C are defined as compatible. They are all resolved toward discipline A.
connectrules cr;connect A, B, C resolveto A;endconnectrules
