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 |