Open in tt-awesome →

tensix-viz

affiliated★ featured
by tsingletaryTT · JavaScript ·
tensix-viz preview

Hardware topology visualizer for Tenstorrent chips — from individual chip to full cluster. Interactive JavaScript visualization of Tensix core layout and NoC connections.

LATEST v1.2.1 2026-09-04T23:09:32Z Release notes ↗
4 previous releases
v1.2.0 2026-08-05T16:35:19Z
v1.1.2 2026-06-29T17:42:46Z
v1.1.1 2026-06-26T13:32:52Z
v1.1.0 2026-06-09T22:19:42Z
See all releases on GitHub ↗
# Changelog

All notable changes to tensix-viz are documented here.

## [1.2.1] - 2026-08-20

### Fixed

- **The chip grid is centered within its canvas** (`src/chip.js`, `_computeLayout`).
  `_cellW`/`_cellH` are floored, so `cols * _cellW` is usually smaller than the
  drawable width; drawing from a fixed top-left `pad` piled all that leftover on
  the right and bottom, making the grid look shoved toward the top-left corner
  (visible in small multi-chip layouts). `_padX`/`_padY` now split the leftover
  slack evenly — `max(pad, floor((w - cellW*cols) / 2))` — so the grid sits
  centered, never narrower than the base pad on any edge. 86 tests green.

- **Idle rendering no longer flickers and is frame-rate independent** (`src/chip.js`, `_drawHeatmap`, `activate()` idle).
  Heatmap normalization now uses a floored, slowly-decaying reference scale, and the idle decay/pop maths use elapsed time so behavior is consistent across refresh rates.
  slack evenly — `max(pad, floor((w - cellW*cols) / 2))` — so the grid sits
  centered, never narrower than the base pad on any edge. 86 tests green.

## [1.1.2] - 2026-06-29

### Fixed

- **`TensixViz.autoInit()` is idempotent for `.tensix-viz-container` elements** (`src/chip.js`)
  1.1.1 made the `[data-viz]` path idempotent but left the legacy single-chip path unguarded. When
  `autoInit()` ran twice (the bundle's self-init plus an explicit host-page call), each
  `.tensix-viz-container` canvas received a second `TensixViz` instance — two animation loops drawing
  on one canvas, which renders as a doubled/overlapping grid. `TensixViz.autoInit()` now skips any
  container already initialized (`container._tensixViz`) and records the instance on it.

### Added

- **Responsive multi-chip canvas** (`tensix-viz.css`)
  `.tv-chip-wrapper canvas { max-width: 100%; height: auto; }` — card/system canvases (created
  without the `.tensix-viz-canvas` class) now scale to fit a narrow column instead of being clipped
  by `.tv-card`'s overflow. Previously this rule had to be patched in by downstream consumers.

## [1.1.1] - 2026-06-25

### Fixed

- **Animation player accepts both script schemas** (`src/chip.js` `_execStep`)
  The player dispatched on `step.step` and read `step.cores` only, so scripts authored with the
  alternate `{ action, coords }` schema ran zero steps — the Play button (and auto-play) appeared
  dead. `_execStep` now dispatches on `step.step || step.action` and falls back `coords → cores`,
  so blocks written in either schema animate.

- **`autoInit()` is idempotent for `[data-viz]` elements** (`src/index.js`)
  `autoInit()` can run more than once (the bundle's self-init plus an explicit call). For `card`
  and `system` vizzes — which append their render into the host element — the second run appended
  a duplicate set of chips. `autoInit()` now skips any element already initialized (`el._tensixViz`).

## [1.1.0] - 2026-06-09

### Fixed

- **Heatmap: non-tensix cells no longer painted by heat overlay**
visualization topology noc hardware
wormhole blackhole
Blackhole · P100 / P150 / P300c · 140 Tensix cores
Wormhole · N150 / N300 · 64 Tensix cores
mode