JOIN

Wire jumper element that creates signal aliases by merging multiple signals.

SPECIAL

Model

Signal 1 Signal 2 Signal n Merged Signal

Note: JOIN does not perform logic evaluation—it electrically connects signals into a single net.

Description

The JOIN primitive is a wire jumper that electrically connects two or more signals together, creating signal aliases. When signals are joined, SIMIC merges them into a single representative signal and creates aliases for the other signal names.

Unlike LOAD elements which only add loading, JOIN actually merges the signals themselves, combining their electrical attributes and ensuring all references to the joined signals point to the same physical net.

Key Characteristics

Signal Precedence Rules

When multiple signals are joined, SIMIC determines which signal becomes the representative based on precedence:

  1. Power Signals: ZERO or ONE (highest priority)
  2. Primary Signals: Circuit inputs and busses
  3. Other Signals: Internal signals (lowest priority)

The signal with the highest precedence becomes the representative, and all other signals become aliases pointing to it.

Connection Restrictions

SIMIC enforces the following rules when joining signals to prevent circuit errors:

Prohibited Connection Reason
ZERO to ONE Logic power rail short circuit
ZERO or ONE to primary input/bus Cannot tie input to power rail
Two different primary signals Cannot short circuit inputs or busses

Violating these restrictions will result in a fatal error during circuit compilation.

Attribute Merging

When signals are joined, SIMIC merges their electrical attributes into the representative signal:

Loading

All loading values are summed (added together). The representative signal carries the total capacitive load of all joined signals.

merged_load = signal1_load + signal2_load + ... + signaln_load

Decay

If both signals have decay attributes, the minimum decay value is chosen (faster decay wins). If decay types don't match, an error is reported.

Spike Filter

If both signals have spike filter attributes, the minimum filter value is chosen (stricter filtering wins).

Dominance

If both signals have dominance attributes, the thresholds must exactly match, otherwise an error is reported.

Equivalent Type Statement

Type=JOIN i=I[1:1-32767]

Usage Syntax

The JOIN primitive takes a list of signals to connect as inputs:

PART=<part_name> TYPE=join I=<signal1>,<signal2>[,<signal3>,...]

Where:

Examples

Example 1: Simple Wire Jumper

Connect two internal signals:

PART=j1 TYPE=join I=node_a,node_b

After compilation, node_a and node_b refer to the same physical signal.

Example 2: Power Supply Connection

Connect a signal to the power rail:

Type=plug O=vdd
Part=j1 TYPE=join I=ONE,vdd

This connects the signal vdd to the global ONE constant, making vdd an alias for the power rail.

Example 3: Multiple Signal Merge

Join several signals together:

PART=j2 TYPE=join I=sig_a,sig_b,sig_c,sig_d

All four signals are merged into one representative signal.

Example 4: Complete Circuit with Jumper

Type=jumper i=a o=c
c       and     vdd,b ochange=1
vdd     plug
j1      join    a,b

Type=plug O=vdd
j1      join    ONE,vdd

This creates a circuit where signal a is joined to b, and vdd is connected to the power rail.

Notes

See Also