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