The pcie-bus device models a logical PCI Express switch that PCI Express devices can be connected to. The switch needs memory-space objects connected, representing the three PCI Express address spaces 'configuration', 'I/O' and 'memory'. The switch itself should be connected to a PCI Express bridge device.
conf_object, log_object, io_memory, pci_upstream, pci_downstream, pci_upstream_operation, pci_express, pci_bus
- cell-change
- Notifier that is triggered after the object's cell was changed.
- object-delete
- Notifier that is triggered just before Simics object is deleted.
- queue-change
- Notifier that is triggered after the object's clock was changed. New clock can be obtained with the SIM_object_clock function.
- port.downstream
-
pcie-bus.downstream
– Downstream Transactions, used by RC's
- port.upstream
-
pcie-bus.upstream
– Upstream Transactions, used by endpoints
-
info
– print information about the object
-
conf_space
-
Required attribute;
read/write access; type:
o
Memory-space object representing the PCI configuration space.
-
memory_space
-
Required attribute;
read/write access; type:
o
Memory-space object representing the PCI memory space.
-
io_space
-
Required attribute;
read/write access; type:
o
Memory-space object representing the PCI I/O space.
-
bridge
-
Optional attribute;
read/write access; type:
o|n|[o*]
Upstream PCI bridge object, which must implement the pci_bridge and the pci_express interface. It can also implement the optional pci_express_hotplug interface. For cPCI use-case, multiple bridges can be assigned and signals will be sent to all of them.
-
interrupt
-
Optional attribute;
read/write access; type:
o|n|[o*]
One or more interrupt device objects that implements the pci_interrupt interface. This attribute only has to be set if the bridge does not handle PCI interrupts.
-
bus_number
-
Optional attribute;
read/write access; type:
i
PCI bus number of this bus. In most cases this is 0, but some exceptions exist. This attribute is set by the bridge and should not be changed by the user.
-
sub_bus_number
-
Optional attribute;
read/write access; type:
i
Subordinate PCI bus number for this bus. This attribute is set by the bridge and should not be changed by the user.
-
send_interrupt_to_bridge
-
Optional attribute;
read/write access; type:
i
If non-zero (default), interrupt will be routed to the PCI bridge as well as the interrupt devices.
-
upstream_target
-
Optional attribute;
read/write access; type:
n|o|[os]
If non-NULL, all upstream transactions are forwarded to the specified object using the pci_upstream or transaction interface.
-
pci_devices
-
Optional attribute;
read/write access; type:
[[iio]|[iioi]*]
((id, function, object)*). id is the PCI device id. function is the PCI device logical function. object is the PCI device itself, which must implement the pci_device interface. The object can also optionally implement either or both of: the pci_express interface, a port-object named 'port.pcie_message' implementing the transaction interface.The tuple may also contain an additional integer that tells if the PCI device is enabled or not. As default the PCI device is enabled.
pcie-bus
Downstream Transactions, used by RC's
conf_object, log_object, transaction
- cell-change
- Notifier that is triggered after the object's cell was changed.
- object-delete
- Notifier that is triggered just before Simics object is deleted.
- queue-change
- Notifier that is triggered after the object's clock was changed. New clock can be obtained with the SIM_object_clock function.
-
wait-for-get
– issue an inquiry read transaction and wait for it to complete
-
wait-for-read
– issue a read transaction and wait for it to complete
-
wait-for-set
– issue an inquiry write transaction and wait for it to complete
-
wait-for-write
– issue a write transaction and wait for it to complete
Upstream Transactions, used by endpoints
conf_object, log_object, transaction
- cell-change
- Notifier that is triggered after the object's cell was changed.
- object-delete
- Notifier that is triggered just before Simics object is deleted.
- queue-change
- Notifier that is triggered after the object's clock was changed. New clock can be obtained with the SIM_object_clock function.
-
wait-for-get
– issue an inquiry read transaction and wait for it to complete
-
wait-for-read
– issue a read transaction and wait for it to complete
-
wait-for-set
– issue an inquiry write transaction and wait for it to complete
-
wait-for-write
– issue a write transaction and wait for it to complete