Signal Descriptions and Flow Control
This chapter defines the signal-level transport of a PicoLink link. One link
connects one core to the Coherency Manager and carries both channels. Each
channel uses an independent valid/ready handshake, one message per
transfer (no multi-beat bursts: the data bus is a full cache line wide).
All signals are synchronous to the rising edge of clk and are qualified
by the active-low reset rst_n.
Parameter names below (ADDR_W, DATA_W, ID_W, TXN_W) are
defined in Message Field Definitions.
Global signals
Signal |
Width |
Driven by |
Description |
|---|---|---|---|
|
1 |
System |
Link clock. All signals are sampled on the rising edge. |
|
1 |
System |
Asynchronous-assert, synchronous-deassert active-low reset. |
A channel signals (Core → CM)
Signal |
Width |
Driven by |
Description |
|---|---|---|---|
|
1 |
Core |
Asserted when the core presents a valid A-channel message. |
|
1 |
CM |
Asserted when the CM can accept an A-channel message this cycle. |
|
4 |
Core |
Message opcode (see Message Field Definitions). |
|
|
Core |
Requester (core) identifier. |
|
|
Core |
Transaction identifier (see Transaction identifier rules). |
|
|
Core |
Cache-line address (line-aligned; carries no offset bits). |
|
|
Core |
Full-line write data. Meaningful only when |
B channel signals (CM → Core)
Signal |
Width |
Driven by |
Description |
|---|---|---|---|
|
1 |
CM |
Asserted when the CM presents a valid B-channel message. |
|
1 |
Core |
Asserted when the core can accept a B-channel message this cycle. |
|
4 |
CM |
Message opcode (see Message Field Definitions). |
|
|
CM |
Destination (core) identifier. |
|
|
CM |
Transaction identifier (see Transaction identifier rules). |
|
|
CM |
Cache-line address (line-aligned; carries no offset bits). |
|
|
CM |
Full-line read data. Meaningful only when |
Handshake rules
A transfer occurs on a channel on any rising clk edge at which both
valid and ready are asserted. The rules below apply independently to
each channel; *_valid denotes the channel’s valid, *_ready its ready,
and payload denotes all other signals of that channel.
Rule |
Requirement |
|---|---|
|
Once |
|
The sender shall not wait for |
|
The receiver may assert |
|
Payload signals carrying no information for the current
opcode (e.g. |
|
While |
sequenceDiagram
participant S as Sender
participant R as Receiver
Note over S,R: Cycle n: valid=1, ready=0 → payload held stable
Note over S,R: Cycle n+1: valid=1, ready=1 → transfer occurs
Note over S,R: Cycle n+2: sender may present a new message or idle
Flow-control and dependency rules
The two channels are independent at the transport level, but protocol-level
responses create cross-channel dependencies (e.g. the CM withholds GrantM
until it has received InvAck on channel A). To keep such dependency
chains acyclic, message acceptance must never depend on the opposite
channel:
Rule |
Requirement |
|---|---|
|
A core shall not make assertion of |
|
The CM shall not make assertion of |
|
A receiver may deassert |
Together with the bounded number of outstanding transactions
(PL-CHAN-02), rules PL-DEP-01 through PL-DEP-03 guarantee the
link is deadlock-free: channel A messages sink unconditionally at the CM,
channel B messages sink unconditionally at the core, and every protocol
dependency chain (request → invalidation → acknowledgment → grant) therefore
terminates.