Introduction
About this specification
This document is the authoritative specification of the PicoLink cache-coherency protocol and of the PicoLink verification IP that implements it. It defines the message set, message field formats, signal-level transport, the coherence state machine observed at each core, the required behavior of the Coherency Manager, and the resolution of all architecturally visible race conditions.
The intended audience is:
Designers implementing a PicoLink requester (core-side L1/L2 controller) or a PicoLink Coherency Manager.
Verification engineers writing stimulus, checkers, and coverage against this protocol.
Release information
Issue |
Date |
Change summary |
|---|---|---|
0.1 |
2026 |
Initial draft: message set, MESI transitions, basic CM behavior. |
0.2 |
2026-07-03 |
Normative rewrite. Added numbered protocol rules, signal-level
transport chapter, transaction-identifier allocation rules, channel
dependency (deadlock-avoidance) rules, forward-progress guarantees,
and complete race enumeration. Corrected the |
Document conventions
Normative language
The key words below are used with the following meanings:
Key Word |
Meaning |
|---|---|
shall / shall not |
A mandatory requirement. Non-compliance makes an implementation non-conformant. |
should |
A recommendation. Deviations are permitted but must be justified. |
may |
A permitted behavior or implementation choice. |
can |
A statement of capability or possibility, not a requirement. |
Rule identifiers
Normative requirements are tagged with unique identifiers of the form
PL-<AREA>-<NN>, for example PL-ORD-01. These identifiers are stable
across releases and are intended to be referenced from testbenches, checkers,
and compliance reports. The areas are:
Area |
Scope |
|---|---|
|
Channel and message-usage rules. |
|
Signal-level handshake and reset rules. |
|
Message field content rules. |
|
Transaction-identifier allocation and matching rules. |
|
Requester (core-side) coherence state rules. |
|
Coherency Manager behavior rules. |
|
Message ordering rules. |
|
Channel dependency and deadlock-avoidance rules. |
|
Race resolution rules. |
|
Forward-progress guarantees. |
Numbering and units
Numeric constants prefixed with
0xare hexadecimal; all other constants are decimal.Bit
0is the least-significant bit of any field.A cache line is the unit of coherence. The default line size is 64 bytes; see Message Field Definitions for the parameter definitions.
Protocol overview
PicoLink is a directory-based cache-coherency protocol derived from TileLink, with a deliberately reduced message set intended for small multi-core systems and for protocol-verification training environments. Its defining properties are:
MESI (Modified, Exclusive, Shared, Invalid) coherence model at each requester.
Exactly two channels:
A(Core → CM) andB(CM → Core). See Channels.No probe/downgrade messages. The only demand the Coherency Manager can make of a core is full invalidation (
Invalidate). A core holding a line inEorMcan never be downgraded toS; it can only be invalidated.No Release handshake. Clean lines (
S,E) are evicted silently, without notifying the Coherency Manager.No cache-to-cache transfers. Memory is the only source of granted data: the data payload of every
GrantSandGrantEis supplied from memory, never forwarded from another core’s cache.
System architecture
flowchart LR
subgraph Cores
C0["Core 0 + private L1"]
C1["Core 1 + private L1"]
CN["Core N-1 + private L1"]
end
CM["Coherency Manager<br/>(directory)"]
MEM["Memory<br/>(clean data only)"]
C0 <-- "A / B" --> CM
C1 <-- "A / B" --> CM
CN <-- "A / B" --> CM
CM <--> MEM
The protocol assumes the following system architecture:
Each CPU core has its own private L1 cache; there are no shared caches between the cores and the Coherency Manager.
A single, central Coherency Manager (CM) owns the directory. It tracks, per cache line, which cores hold copies and in what state, and it is the serialization point for all coherence decisions (see Coherency Manager (CM) Behavior).
Memory stores only clean data. Dirty data exists only in a core’s L1 in
Mstate, or in flight in aWriteBackmessage. The CM commits every receivedWriteBackpayload to memory before granting the line to another core.Each core is connected to the CM by one independent pair of A/B channels (a point-to-point topology from the protocol’s perspective; the physical interconnect is implementation defined).
Scope and limitations
The following are out of scope for this specification:
Uncached or device (I/O) accesses — all PicoLink traffic is cacheable and cache-line sized.
Sub-line transfers, byte enables, and partial writes.
Multiple Coherency Managers, address interleaving, and multi-level directories.
Virtual memory and address translation — all addresses are physical.
Error signaling, poisoning, and RAS features — PicoLink has no error response;
Nackis a race-resolution mechanism, not an error indication.Atomic (read-modify-write) bus operations — cores implement atomics using exclusive ownership (
E/M) locally.
Relationship to TileLink
PicoLink borrows TileLink’s terminology for grants and its channel-per-direction philosophy, but is substantially simplified:
Concept |
TileLink (TL-C) |
PicoLink |
|---|---|---|
Channels |
Five (A–E) |
Two (A, B) |
Probe / downgrade |
Channel B Probes with partial permission drops |
|
Voluntary release |
Channel C Release / ReleaseData |
Silent drop for clean lines; |
Grant acknowledgment |
Channel E GrantAck |
None (see Ordering, Races, and Atomicity) |
Data source |
Cache-to-cache transfer possible |
Memory only |