skidl.bus module

Handles buses.

class skidl.bus.Bus(*args, **attribs)[source]

Bases: SkidlBaseObject

This class collects one or more nets into a group that can be indexed.

Parameters:
  • name – A string with the name of the bus.

  • args – A list of ints, pins, nets, buses to attach to the net.

Keyword Arguments:

attribs – A dictionary of attributes and values to attach to the Net object.

Example

n = Net()
led1 = Part("Device", 'LED')
b = Bus('B', 8, n, led1['K'])
connect(*pins_nets_buses)[source]

Return the bus after connecting one or more nets, pins, or buses.

Parameters:

pins_nets_buses – One or more Pin, Net or Bus objects or lists/tuples of them.

Returns:

The updated bus with the new connections.

Notes

You can connect nets or pins to a bus like so:

p = Pin()       # Create a pin.
n = Net()       # Create a net.
b = Bus('B', 2) # Create a two-wire bus.
b += p,n        # Connect pin and net to B[0] and B[1].
copy(num_copies=None, **attribs)[source]

Make zero or more copies of this bus.

Parameters:

num_copies – Number of copies to make of this bus.

Keyword Arguments:

attribs – Name/value pairs for setting attributes for the copy.

Returns:

A list of Bus copies or a Bus if num_copies==1.

Raises:

Exception if the requested number of copies is a non-integer or negative.

Notes

An instance of a bus can be copied just by calling it like so:

b = Bus('A', 8)  # Create a bus.
b_copy = b(2)   # Get two copies of the bus.

You can also use the multiplication operator to make copies:

b = 10 * Bus('A', 8)  # Create an array of buses.
extend(*objects)[source]

Extend bus by appending objects to the end (MSB).

classmethod fetch(name, *args, **attribs)[source]

Get the bus with the given name from a circuit, or create it if not found.

classmethod get(name, circuit=None)[source]

Get the bus with the given name from a circuit, or return None.

get_nets()[source]

Return the list of nets contained in this bus.

get_pins()[source]

It’s an error to get the list of pins attached to all bus lines.

insert(index, *objects)[source]

Insert objects into bus starting at indexed position.

is_implicit()[source]

Return true if the bus name is implicit.

is_movable()[source]

Return true if all the nets in a bus are movable to another circuit.

property name

Get, set and delete the name of the bus.

When setting the bus name, if another bus with the same name is found, the name for this bus is adjusted to make it unique.

property pins
property width

Return width of a Bus, which is the same as using the len() operator.