Portal Interface Structure

Connectal connects software and hardware via portals, where each portal is an interface that allows one side to invoke methods on the other side.

We generally call a portal from software to hardware to be a “request” and from hardware to software to be an “indication” interface:

Sequence Diagram to be drawn
{
  SW; HW
  SW -> HW [label = "request"];
  SW <- HW [label = "indication"];
}

A portal is conceptually a FIFO, where the arguments to a method are packaged as a message. CONNECTAL generates a “proxy” that marshalls the arguments to the method into a message and a “wrapper” that unpacks the arguments and invokes the method.

Currently, connectal Includes a library that implements portals from software to hardware via memory mapped hardware FIFOs.

Portal Device Drivers

Connectal uses a platform-specific driver to enable user-space applications to memory-map each portal used by the application and to enable the application to wait for interrupts from the hardware.

indexterm:pcieportal indexterm:zynqportal

  • pcieportal.ko

  • zynqportal.ko

Connectal also uses a generic driver to enable the applications to allocate DRAM that will be shared with the hardware and to send the memory mapping of that memory to the hardware.

  • portalmem.ko

Portal Memory Map

Connectal is designed to support multiple tiles, each of which can hold an independent design. Currently, the number of tiles is one.

Connectal currently supports up to 16 portals connected between software and hardware, for a total of 64KB of address space.

Base address

Function

0x0000

Portal 0

0x1000

Portal 1

0x2000

Portal 2

0x3000

Portal 3

0x4000

Portal 4

0x5000

Portal 5

0x6000

Portal 6

0x7000

Portal 7

0x8000

Portal 8

0x9000

Portal 9

0xa000

Portal 10

0xb000

Portal 11

0xc000

Portal 12

0xd000

Portal 13

0xe000

Portal 14

0xf000

Portal 15

Each portal uses 16KB of address space, consisting of a control register region and then per-method FIFOs, each of which takes 32 bytes of address space.

Base address

Function

0x000

Portal control regs

0x020

Method 0 FIFO

0x040

Method 1 FIFO

For request portals, the FIFOs are from software to hardware, and for indication portals the FIFOs are from hardware to software.

Portal FIFOs

Base address

Function

0x00

FIFO data (write request data, read indication data)

0x04

Request FIFO not full / Indication FIFO not empty

Portal Control Registers

Base address

Function

Description

0x00

Interrupt status register

1 if this portal has any messages ready, 0 otherwise

0x04

Interrupt enable register

Write 1 to enable interrupts, 0 to disable

0x08

Number of tiles

0x0C

Ready Channel number + 1

Reads as zero if no indication channel ready

0x10

Interface Id

0x14

Number of portals

0x18

Cycle count LSW

Snapshots MSW when read

0x1C

Cycle count MSW

MSW of cycle count when LSW was read