Binary trace format for cycle-accurate hardware introspection.
| Crate | Path | Description |
|---|---|---|
| uscope | crates/uscope/ |
Transport layer: reader, writer, schema, checkpoints, delta replay, mipmaps |
| uscope-cpu | crates/uscope-cpu/ |
CPU protocol library: instruction lifecycle, counters, buffers, performance analysis |
| uscope-cli | crates/uscope-cli/ |
CLI for inspecting traces: info, state, timeline, counters, buffers |
| uscope-mcp | crates/uscope-mcp/ |
MCP server for AI-assisted trace debugging with Claude |
| gen-uscope | crates/gen-uscope/ |
Synthetic trace generator for testing |
| konata2uscope | crates/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
ββββββββββββββββββββββββββββββββββββββββββββββββ
β 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 β
ββββββββββββββββββββββββββββββββββββββββββββββββ
[dependencies]
uscope = { path = "crates/uscope" } # transport only
uscope-cpu = { path = "crates/uscope-cpu" } # + CPU protocoluse uscope_cpu::CpuTrace;
let mut trace = CpuTrace::open("trace.uscope")?;
println!("{:#?}", trace.file_info());
println!("IPC at cycle 100: {}", trace.counter_rate_at(0, 100, 64));# 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# 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, metadatastate_at_cycleβ buffer contents at a specific cycleentity_timelineβ instruction lifecycle (stages, retire/flush)counter_valuesβ counter data over a rangebuffer_occupancyβ buffer fill level with pointer positionsanalyze_performanceβ IPC, stall analysis, bottleneck identification
make -C dpi
# link with -luscope_dpi
cargo run -p konata2uscope -- trace.log -o trace.uscope
Built with mdbook:
mdbook serve
cargo test --workspace # All Rust tests
make -C dpi test # C library test (writes trace, verified by Rust reader)
- Code: Apache-2.0
- Specification text: CC-BY-4.0