Releases: sarchlab/akita
v5.0.0-beta.5
What's Changed
- Daisen Bot: frontend-configurable LLM provider, model picker, and fixes by @syifan in #381
- fix(writeback): do not reuse transaction slots with in-flight bottom-port transactions by @syifan in #384
Full Changelog: v5.0.0-beta.4...v5.0.0-beta.5
v5.0.0-beta.4
Highlights
- Memory controllers use global storage (#382):
idealmemcontroller,simplebankedmemory, anddramnow back onto a global, identity-addressed storage — a request's address indexes the backing store directly, with no per-controller storage address conversion. - simplebankedmemory bank-selection conversion (#382): an optional, bank-selection-only address conversion (
BankAddrConv*) lets a banked memory used as one of several interleaved controllers stripe finely across all banks (storage stays global). - Add Domain back to the modeling package (#374, #375).
- mem/cache: reuse removed transaction slots to bound the Transactions slice (#378).
Breaking changes
- Removed the storage address-conversion fields from
idealmemcontrollerandsimplebankedmemorySpecs, and the address converter fromdram(HasAddrConverter+ interleaving fields). Storage is always global now.simplebankedmemoryaddsBankAddrConv*for bank selection. No further per-controller storage conversion is supported.
v5.0.0-beta.2
Second beta of Akita v5. This release covers roughly three months of work since v5.0.0-beta.1 — the headline is simulation checkpoint/resume, plus a round of API consolidation in preparation for the v5.0.0 freeze.
Highlights
Simulation checkpoint and resume
A running simulation on a SerialEngine can be saved to a .tar.gz archive and resumed later, with an oracle-tested contract: run to the end equals checkpoint, rebuild, restore, run to the end — including mid-transaction checkpoints taken with SerialEngine.RunUntil. Components built on modeling.Component[Spec, State, Resources] get this for free; Build validates at construction that Spec/State cannot silently lose data. See the Writing Checkpointable Code tutorial.
Protocols as first-class packages
A protocol is a named set of message types organized into roles. Defining one (messaging.DefineProtocol) registers every message it carries with the checkpoint codec, and ports bind the role they speak where they are declared: DeclarePort("Top", memprotocol.Responder). Each framework protocol now lives in its own package: mem/memprotocol, mem/memcontrolprotocol, mem/vm/vmprotocol, mem/datamoverprotocol, noc/packetization. Protocols are opt-in — plain messages without a protocol remain fully supported. A CI audit guarantees every library message type in Akita itself is registered. See the new Protocols tutorial.
Uniform memory-agent control protocol
Every memory agent speaks the same control verbs over its Control port — Pause, Drain, Enable, Reset, Invalidate, Flush — with a shared lifecycle state model and a reusable conformance harness (mem/memcontrolprotocol).
Externalized port creation
Components declare their port topology (DeclarePort); setup code builds and attaches the instances via modeling.MakePortBuilder and AssignPort. Port names are hierarchical and globally unique ("Comp.Port"), enforced at registration.
Other notable changes
- Messages are value types: construct and send messages by value; type-switch on value cases.
Sendno longer returns an error — guard withCanSend. - Time is integer picoseconds:
VTimeInSec→VTimeInPicoSec. - Package restructure: timing and transport extracted into their own packages; generated mocks untracked.
- Tracing API improvements and tracing support in acceptance tests.
- Daisen2 frontend rewritten in React; monitoring2 live monitor UI and slice pagination.
- New documentation site with a full tutorial sequence (components, talking components, events, hooks, protocols, checkpointing): https://akitasim.dev/docs/akita/tutorial/
Migrating from v4 / beta.1
Message and protocol types moved into per-protocol packages:
| Before | Now |
|---|---|
mem.ReadReq / mem.WriteReq / mem.DataReadyRsp / mem.WriteDoneRsp |
memprotocol.… |
mem.AccessReq / mem.AccessRsp |
memprotocol.… |
mem.ControlReq / mem.ControlRsp / mem.ControlCommand / mem.Cmd* |
memcontrolprotocol.Req / .Rsp / .Command / .Cmd* |
vm.TranslationReq / vm.TranslationRsp |
vmprotocol.… |
datamover.DataMoveRequest / …Response |
datamoverprotocol.… |
VTimeInSec |
timing.VTimeInPicoSec |
Plus the structural changes above: value-type messages, CanSend-guarded Send, and the declare/build/assign port pattern. The tutorials show all current conventions.
Known limitations
v5.0.0-beta.1
Beta release of Akita v5
This pre-release contains the V5 rewrite of the Akita simulation framework.
Key changes from v4:
- Module path updated to github.com/sarchlab/akita/v5
- All packages moved to repository root (previously under v5/ directory)
- New hooking package
- Standardized control protocol for cache and memory components
- Improved pipeline and middleware patterns
This is a pre-release. APIs may change before the stable v5.0.0 release.
v4.9.0
v4.8.0
What's Changed
- Lock toolchain versions: Go 1.24, Node.js 18.20.7, Python 3.10.15, and Go tools by @Copilot in #338
- Bump vite from 6.3.6 to 6.4.1 in /monitoring/web by @dependabot[bot] in #344
- Bump vite from 7.0.7 to 7.0.8 in /daisen/static by @dependabot[bot] in #343
- Investigate correctness of unified memory fix for multi-GPU system by @MaxKev1n in #342
- Simple Banked Memory by @syifan in #348
Full Changelog: v4.7.1...v4.8.0
v4.7.1
What's Changed
- Bump vite from 6.2.7 to 6.3.6 in /monitoring/web by @dependabot[bot] in #318
- Bump vite from 7.0.0 to 7.0.7 in /daisen/static by @dependabot[bot] in #317
- 311 update tlb to use unified control protocol by @DX990307 in #320
- Fix failing TLB unit test by adding missing mock expectations by @Copilot in #323
- Duplicate Akita CLI for v5 components by @syifan in #325
- Create queueingv5 package with struct-only buffer and pipeline implementations by @Copilot in #329
- Frontend milestones by @YuanhuanO in #332
Full Changelog: v4.7.0...v4.7.1
v4.7.0
What's Changed
- Only record the first milestone if one task has multiple milestones at the same time by @Copilot in #290
- Add copilot-setup-steps.yml for structured development environment setup by @Copilot in #302
- remove qurey function by @DX990307 in #303
- Add milestone instrumentation to TLB by @YuanhuanO in #252
- Start v5 development: Add examplesv5, migration guide, and update README by @Copilot in #306
- Add idealmemcontrollerv5 (V5 Spec/State/Ports/Middlewares) by @syifan in #307
- Add auto page allocation option to MMU with proper physical page management using ReverseLookup and page size validation by @Copilot in #300
Full Changelog: v4.6.1...v4.7.0
v4.6.1
What's Changed
- Fix linter version by @syifan in #259
- Fix TLB hanging issue by @syifan in #260
- Update acceptance tests by @sylvzhz in #265
- 119 ideal memory ctrl on v4 by @DX990307 in #268
- 253 tlb unit test by @DX990307 in #256
- Daisen Bot v1.0 by @EnzeXu in #257
- Update traffic class by @xuzhongwm in #270
- Established component linter cli by @sylvzhz in #271
- Fix PR #274 comments and CI errors: add panic protection, cleanup, and deprecation warnings by @Copilot in #275
- Fix unit test error in #274: sort table names for deterministic output by @Copilot in #279
- Add comprehensive GitHub Copilot instructions for Akita development by @Copilot in #277
- Add SQLite database support for memory tracer using data recorder by @Copilot in #274
- Fix CI errors in #281: Pin golangci-lint to v2.4.0 and resolve new linting rules by @Copilot in #282
- Improve TLB and Address Translator Builder by @sajannat in #266
- Daisen Bot v2.0: workshop ready by @EnzeXu in #272
- Add WithOutputFileName method to simulation builder for custom output file names by @Copilot in #285
- v4.6.1 by @syifan in #286
New Contributors
Full Changelog: v4.5.1...v4.6.1