OR-1 dataflow CPU sketch
at main 56 lines 848 B view raw
1from dataclasses import dataclass 2from typing import Optional 3 4from cm_inst import FrameOp, MemOp, Port 5 6 7@dataclass(frozen=True) 8class Token: 9 target: int 10 11 12@dataclass(frozen=True) 13class PEToken(Token): 14 pass 15 16 17@dataclass(frozen=True) 18class CMToken(PEToken): 19 offset: int 20 act_id: int 21 data: int 22 23 24@dataclass(frozen=True) 25class DyadToken(CMToken): 26 port: Port 27 28 29@dataclass(frozen=True) 30class MonadToken(CMToken): 31 inline: bool 32 33 34@dataclass(frozen=True) 35class PELocalWriteToken(PEToken): 36 act_id: int 37 region: int 38 slot: int 39 data: int 40 is_dest: bool 41 42 43@dataclass(frozen=True) 44class FrameControlToken(PEToken): 45 act_id: int 46 op: FrameOp 47 payload: int 48 49 50@dataclass(frozen=True) 51class SMToken(Token): 52 addr: int 53 op: MemOp 54 flags: Optional[int] 55 data: Optional[int] 56 ret: Optional[CMToken]