Skip to content

Repository files navigation

Β΅Scope

Binary trace format for cycle-accurate hardware introspection.

What's in the box

CratePathDescription
uscopecrates/uscope/Transport layer: reader, writer, schema, checkpoints, delta replay, mipmaps
uscope-cpucrates/uscope-cpu/CPU protocol library: instruction lifecycle, counters, buffers, performance analysis
uscope-clicrates/uscope-cli/CLI for inspecting traces: info, state, timeline, counters, buffers
uscope-mcpcrates/uscope-mcp/MCP server for AI-assisted trace debugging with Claude
gen-uscopecrates/gen-uscope/Synthetic trace generator for testing
konata2uscopecrates/konata2uscope/Converts Konata pipeline logs to Β΅Scope

Also:

  • Specification (src/) β€” Transport layer and CPU protocol specs
  • C DPI library (dpi/) β€” Standalone C99 writer for simulator integration

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Consumers: uscope-cli, uscope-mcp, Reflex β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ uscope-cpu: CPU protocol interpretation β”‚
β”‚ CpuTrace, instructions, stages, counters, β”‚
β”‚ buffers, lazy loading, performance analysis β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ uscope: Transport layer (format only) β”‚
β”‚ Reader, Writer, Schema, Checkpoints, Deltas β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Quick start

Rust library

[dependencies]
uscope = { path = "crates/uscope" } # transport onlyuscope-cpu = { path = "crates/uscope-cpu" } # + CPU protocol
use uscope_cpu::CpuTrace;letmut trace = CpuTrace::open("trace.uscope")?;println!("{:#?}", trace.file_info());println!("IPC at cycle 100: {}", trace.counter_rate_at(0,100,64));

CLI

# File overview
cargo run --bin uscope-cli -- info trace.uscope
# Buffer state at cycle 50
cargo run --bin uscope-cli -- state trace.uscope --cycle 50
# Instruction lifecycle
cargo run --bin uscope-cli -- timeline trace.uscope --entity 42
# Counter values over a range
cargo run --bin uscope-cli -- counters trace.uscope --range 100:200
# Buffer occupancy with pointer positions
cargo run --bin uscope-cli -- buffers trace.uscope --cycle 50
# JSON output for scripting
cargo run --bin uscope-cli -- info trace.uscope --json

MCP server (for Claude)

# Start MCP server for a trace file
cargo run --bin uscope-mcp -- --trace trace.uscope
# Claude Code configuration (.claude/settings.json):
{
"mcpServers": {
"uscope": {
"command": "cargo",
"args": ["run", "--bin", "uscope-mcp", "--", "--trace", "/path/to/trace.uscope"]
}
}
}

MCP tools available to Claude:

  • file_info β€” trace header, schema, metadata
  • state_at_cycle β€” buffer contents at a specific cycle
  • entity_timeline β€” instruction lifecycle (stages, retire/flush)
  • counter_values β€” counter data over a range
  • buffer_occupancy β€” buffer fill level with pointer positions
  • analyze_performance β€” IPC, stall analysis, bottleneck identification

C DPI

make -C dpi
# link with -luscope_dpi

konata2uscope

cargo run -p konata2uscope -- trace.log -o trace.uscope

Documentation

Built with mdbook:

mdbook serve

Tests

cargo test --workspace # All Rust tests
make -C dpi test # C library test (writes trace, verified by Rust reader)

License

About

Efficient trace and introspection format for hardware πŸ”¬

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages