Skip to content

Releases: tenstorrent/tt-system-firmware

v19.6.0

20 Feb 15:47
v19.6.0

Choose a tag to compare

We are pleased to announce the release of TT Zephyr Platforms firmware version 19.6.0 🥳🎉.

Major enhancements with this release include:

Wormhole Changes

New Features

  • Added support for Samsung GDDR6 memory
  • Wiped Tensix L1, ERISC L1, and GDDR memory during init for security

Blackhole Changes

Stability Improvements

  • On p300 boards, fixed issue where one ASIC would drop after numerous consecutive reboots.

New Boards

  • Add support for Galaxy revC board

Power Management

  • Update limits for p300c boards:
    • Board power limit to 550 W
    • TDP limit to 125 W
    • GDDR temperature limit to 88 C

Telemetry

  • New TAG_AICLK_PPM_INFO telemetry entry captures which arbiter is limiting AICLK and why
  • Enhanced TAG_AICLK_ARB_MIN and TAG_AICLK_ARB_MAX to include arbiter IDs
  • Added targ_freq_update trace event for debugging AICLK decisions

Migration guide

An overview of required and recommended changes to make when migrating from the previous v19.5.0 release can be found in 19.6 Migration Guide.

Full ChangeLog

The full ChangeLog from the previous v19.5.0 release can be found at the link below.

v19.5.0...v19.6.0

v19.6.0-rc1

12 Feb 04:33
v19.6.0-rc1

Choose a tag to compare

v19.6.0-rc1 Pre-release
Pre-release
tt-zephyr-platforms 19.6.0-rc1

v19.5.1

10 Feb 22:04
v19.5.1

Choose a tag to compare

v19.5.1

Wormhole Changes

New and Experimental Features

  • Added support for Samsung GDDR6 memory

Full ChangeLog

The full ChangeLog from the previous v19.5.0 release can be found at the link below.

v19.5.0...v19.5.1

v19.5.0

04 Feb 16:10
v19.5.0

Choose a tag to compare

v19.5.0

We are pleased to announce the release of TT Zephyr Platforms firmware version 19.5.0 🥳🎉.

Important

Please use tt-flash >= 3.6.0 to upgrade.
There is a known issue with tt-flash < 3.6.0 that causes the board ID to be lost on Blackhole.

Major enhancements with this release include:

Wormhole Changes

Stability Improvements

  • Update Wormhole ERISC FW to 7.5.0, change list from 7.2.0:
    • 7.5.0
      • Adjust the resend chip info packet time to resolve the link training failures with ANLT ports
      • Minimize static training retries to compensate for longer delays in the training sequence
      • Adjust DFE settings for weak lanes only to improve the link stability
    • 7.4.0
      • Code clean-up and documentation
      • Use register defines and convert arrays into data structures
    • 7.3.0
      • Fix retrain hangs with Active Cables
      • Adjust DFE value to improve BER on WH UBB QSFP ports
      • Link quality improvements to non-retimer long trace on WH UBB
      • Updated retraining logic to set train_status to LINK_TRAIN_TRAINING when entering into retraining
      • Remove link_training_fw_phony debug feature from eth_init to free up more space

Blackhole Changes

p150 Tensix Core Count

Beginning January 2026, all Blackhole p150 accelerator cards (p150a, p150b) will ship with 120 Tensix cores instead of 140. To present a unified interface to metal and other system software, firmware v19.5.0 and later will change the core count on all existing cards to 120. Typical workloads show a non-material (~1–2%) performance difference.
You may observe a change in grid size in metal, which may require updates to applications that depend on grid layout.

Stability Improvements

  • Fixed boardcfg loading error handling in recovery image
  • Updated Blackhole ERISC FW to v1.8.1, change list from v1.7.1:
    • v1.8.1 (2025-01-23)
      • Change P150 products to use Manual EQ training mode
      • Updated MACPCS init sequence to wait longer before SerDes reinit
      • Added wait for LCPLL lock check in SerDes init before training start
      • Fixed bug where calling eth_mac_pcs_reinit with option = 1 would immediately return without running the function
      • Increased AN timeout and disabled SerDes lt_timeout_enable to allow for better control of the ANLT sequence via FW
    • v1.8.0 (2026-01-20)
      • Updated TX/RX remapping for P300 and P150
      • Updated settings to improve PRBS test mode
        • Keep TX BIST enabled even on Serdes training fail
        • Disable FW features at beginning of initialization for PRBS tests
      • Restore some of the timeout changes to pre v1.7.1 settings as new timeouts proved to be problematic on galaxy systems
      • Cleaned up RX retraining sequence for Manual EQ
      • Added tx_barrier to sync TX/RX across multiple eth controllers on init
      • Added eth_link_recovery to eth_api_table to allow access to runtime FW
      • Added disable_l1_cache function to disable data cache completely, function called in main() of base FW and all test FWs
      • Ensure eth_api_table is not wiped between inits
      • Changed some ETH messages:
        • ETH msg PORT_REINIT -> PORT_REINIT_MACPCS: Initiates fill initialization sequence based on selected option
        • ETH msg PORT_RETRAIN -> PORT_REINIT_SERDES: Only initiates serdes initalization sequence based on selected option

Power Management

  • Galaxy TDP limit reduced from 170 W to 130 W to stay within system power limits
  • Disabled PHY powerdown for MRISC on Galaxy systems to address DRAM funtest regression

Telemetry & Monitoring

  • Added telemetry entries for enabled AICLK min/max arbiters (TAG_ENABLED_MIN_ARB and TAG_ENABLED_MAX_ARB)
  • Added telemetry for effective AICLK min/max arbiter values (TAG_AICLK_ARB_MIN and TAG_AICLK_ARB_MAX)
  • Added Doxygen documentation for aiclk_arb_max and aiclk_arb_min enumerations
  • PVT sensor message fixes
    • Revert backward-incompatible message interface changes to READ_{TS,PD,VM} introduced in v19.1.0
    • Fixed conversion truncation issue in voltage monitoring messages
    • Improved error checking in PVT functions
  • Added tracing for AICLK updates (disabled by default)

Drivers

  • Added interrupt support to ARC DMA driver and enabled it by default
  • Added "is alive" check to PVT sensor drivers

Tooling

  • Add support for newer P300 boards to blackhole recovery script
  • Properly support flash read across multiple blocks with pyocd
  • tt-tracing improvements
    • Added -b command-line argument to select BAR (bar0 or bar4)
    • Improved tracing performance when running in parallel with tt-burnin
    • Fixed to send enable tracing command only once (not on every loop iteration)
    • Updated documentation with coding examples for custom tracing events
    • Fixed babeltrace2 version to 2.0.4 for compatibility

Build System & Dependencies

  • Migrated from patch-based workflow to Zephyr fork
  • Removed all usages of west patch treewide
  • Fixed git describe to use correct module directory (enables correct version tags for applications built in different repositories)

Grendel Changes

  • Initial support added for the Grendel SMC platform
    • 4-core Berkeley Rocketcore with peripheral complement for external device interfacing
  • Initial devicetree definition
  • Virtual console driver for simulation debugging via printf
  • Basic build workflow for CI validation

Migration guide

An overview of required and recommended changes to make when migrating from the previous v19.4.0 release can be found in 19.5 Migration Guide.

Full ChangeLog

The full ChangeLog from the previous v19.4.0 release can be found at the link below.

v19.4.0...v19.5.0

v19.5.0-rc2

28 Jan 18:53
v19.5.0-rc2

Choose a tag to compare

v19.5.0-rc2 Pre-release
Pre-release
tt-zephyr-platforms 19.5.0-rc2

v18.12.2

16 Jan 03:08
v18.12.2

Choose a tag to compare

v18.12.2 Pre-release
Pre-release

v18.12.2

We are pleased to announce the release of TT Zephyr Platforms firmware version 18.12.2 🥳🎉.

This is a point release to enable recovery firmware (which is based on 18.12) to
operate on newer P300 cards

Major Highlights

  • Patch to STM32 SPI flash loader algorithms to support latest P300 board revision
  • Multiple CI improvements to enable executing CI on new runner configurations

v18.12.1

We are pleased to announce the release of TT Zephyr Platforms firmware version 18.12.1 🥳🎉.

This is a point release to ensure that users are able to test with the latest ERISC firmware while
v19.0 is going through additional testing.

Major Highlights

  • Update Blackhole ERISC FW to v1.7.0
    • ETH msg PORT_RETRAIN: force a link to retrain
    • ETH msg PORT_REINIT: asks a failed port to redo initialization
    • ETH msg PORT_LOOPBACK: allows putting the port in internal or external loopback
    • ETH msg INTERRUPT: enables or disables interrupts to the ERISC
    • ETH msg PORT_ACTION: force the link to be up or down via the MAC
    • ETH msg CABLE_CHECK: checks whether a cables exists or not
    • ETH msg TELEMETRY_EVENT: handles specific telemetry exchange events over the link
    • ETH msg REMOTE_ALIVE: send packet to check if remote side is alive
    • ETH msg PORT_SPEED: re-initializes the port to a different speed

Stability Improvements

  • ERISC FW v1.7.0
    • Fix snapshot reading bug in eth_runtime where the upper 32 bits of a preceding metric read is picked up by the following metric read
    • Remove interrupt enablement as current implementation can cause infinte loops
    • Changed logical_eth_id calculation using new enabled_eth param to address SYS-2064
    • Added ASIC ID in chip_info and param table to address SYS-2065
    • Changed manual EQ TX-FIRs for ASIC 8 Retimer ports to address SYS-2096
    • Only trigger retraining if check_link_up polls link down for 5ms
    • Removed BIST check in training sequence, improves stability a bit
    • Send chip_info packet on retrain completion, which along with BIST disabled allows for a single chip with an active link to be reset and allow the link come back up
    • Set manual TX FIR parameters for warp cable connections on P300 to 1/3/4/45/2 for PCB-1997
    • increase stack size to 2048 for SYS-2266
    • inline icache flush function for SYS-2267
    • Fix for reset skew where one tt-smi reset should make other side up
    • Added interrupt enablement again, controlled via INTERRUPT_CHECK feature enable flag
    • Moved auto retraining outside of link_status_check into its own link check state mechine, controlled via DYNAMIC_LINK_STATE_CHECK feature enable flag
    • Added link flap check based on resend and un-cor words
    • Added eth_reinit state machine to handle fail case when port is up
  • PVT Sensor
    • correct PVT RTIO buffer size and frame count for decode

v18.12.0

We are pleased to announce the release of TT Zephyr Platforms firmware version 18.12.0 🥳🎉.

This release brings significant enhancements to power management, SMBus communication robustness, and developer tooling, along with improved stability across the platform.

Major Highlights

  • Enhanced Power Management: New MRISC PHY powerdown/wakeup support and power command capabilities
  • Improved SMBus Reliability: Enhanced error detection, logging, and robustness for CM2DM operations
  • Advanced Developer Tooling: New stack dump utilities and improved console tooling
  • Zephyr v4.3.0 Alignment: Updated to latest Zephyr pre-release for better upstream compatibility
  • Streamlined Board Support: Focused support on production devices

New Features

Power Management

  • lib: bh_arc: Added support for MRISC PHY powerdown/wakeup operations
  • lib: bh_arc: Implemented new Power command functionality
  • boards: tt_blackhole: Enabled AICLK PPM in firmware table for Galaxy boards
  • boards: tenstorrent: Applied more conservative TDP limits for P300 boards

Communication & Protocols

  • app: dmc: Added support for SMBus block process call (pcall) operations
  • drivers: smbus: stm32: Enhanced with block read capabilities
  • app: smc: Added overlay configuration to build DMFW with I2C shell enabled

Developer & Debug Tools

  • scripts: New dump_smc_stack.py utility for on-demand SMC state analysis
  • scripts: tooling: Enhanced tt-console with PCIe rescan skip option for smooth TT-KMD transitions (2.3.0 to 2.4.1)
  • scripts: Updated blackhole_recovery with improved status messaging and increased delays

Stability & Robustness Improvements

Communication Reliability

  • CM2DM Protocol: Enhanced robustness with detection of duplicate SMBus messages and improved error handling
  • lib: tenstorrent: bh_arc: Improved error logging in SPI EEPROM operations

System Reliability

  • app: dmc: Implemented fine-grained DMC events, replacing the previous single "wakeup" flag approach
  • regulators: Fixed Galaxy SerDes programming regression
  • boards: tenstorrent: Reduced P300 I2C clock speeds to minimize packet errors
  • lib: bh_chip: Optimized I2C gate handling during BH ARC reset operations

Infrastructure

  • CI/CD: Migrated to centralized Docker containers hosted at ghcr.io/tenstorrent
  • scripts: tooling: Reworked logging macros with new rate-limited variants

Wormhole Updates

  • blobs: Updated Wormhole firmware blob
    • CMFW 2.36.0.0
      • Attempt to enter A3 state on both chips of n300 before triggering
        reset
      • Fix VR addresses for Nebula CB P0V8_GDDR_VDD and P1V35_MVDDQ
      • Update Nebula CB SPI parameters
        • Disable DRAM training at boot
        • Voltage margin = 0
        • P0V8_GDDR_VDD override to 850 mV
        • P1V35_MVDDQ override to 1.35 V
        • Enable additional DRAM training parameters
    • ERISC 6.7.1.0
      • Enable partial response phase detector mode to compensate jitter lanes
      • Initial support for per asic resetting in WH Galaxy

API Changes

Breaking Changes

  • lib: bh_arc: Renamed msg_type to tt_smc_msg
    • Header file changed from tenstorrent/msg_type.h to tenstorrent/smc_msg.h
    • Migration Required: Update include statements in existing code

Platform Updates

  • zephyr: patches: Added patch for SPI-NOR erase-block-size property support

Zephyr Integration

Version Update

  • manifest: Updated to Zephyr v4.3.0-pre
    • Snapshot from Zephyr mainline prior to v4.3.0 feature freeze (October 24th)
    • Minimized in-tree patches through active upstream contribution

Upstream Contributions

  • Enhanced PWM API test suite with cleaner platform-specific conditionals
  • Fixed I2C DesignWare target implementation
  • Improved SMBus STM32 driver with proper block write byte count handling
  • Added IRQ lock protection for CTF tracing timestamp generation
  • Extended interrupt controller support for multiple DesignWare instances
  • Implemented "safe" API variants for k_event_wait() in kernel events

Documentation Improvements

Enhanced Documentation

  • lib: bh_arc: Comprehensive Doxygen documentation for host-to-SMC message types
  • doxygen: Added supported boards reference links
  • doc: New contribution and coding guidelines
  • docs: Added CI job status visualization on project landing page

Developer Guidance

  • doc: Added code update workflow snippet: west patch clean; west update; west patch apply
  • lib: bh_arc: Documented unused commands for better API clarity
  • doc: Improved version handling using project settings from conf.py

Board Support Changes

Removed Support

  • Removed P100 (Scrappy) Support:
    • P100 was an internal engineering unit used during initial bringup and testing
    • Support removed to focus resources on consumer-facing devices
    • Migration Impact: P100 users must transition to supported production boards

Migration Guide

For detailed migration instructions from v18.11.0, including required code changes and recommended updates, please refer to the v18.12 Migration Guide.

Full Changelog

Complete changelog from v18.11.0 is available at:
v18.11.0...v18.12.0

v19.5.0-rc1

16 Jan 14:43
v19.5.0-rc1

Choose a tag to compare

v19.5.0-rc1 Pre-release
Pre-release
tt-zephyr-platforms 19.5.0-rc1

v19.4.2

05 Jan 23:13
v19.4.2

Choose a tag to compare

v19.4.2

This is a patch release on top of v19.4.0, and includes all changes from v19.4.1.

What's Changed since v19.4.1

Bug Fixes (Blackhole)

  • Revert backward-incompatible message interface changes to READ_{TS,PD,VM} introduced in v19.1.0
  • Do not apply MRISC PHY powerdown to BH Galaxy due to data errors with the feature enabled

Full ChangeLog

The full ChangeLog from the v19.4.0 release can be found at the link below.

v19.4.0...v19.4.2

v19.4.1

19 Dec 03:15
v19.4.1

Choose a tag to compare

v19.4.1

What's Changed

Bug Fixes

  • Update Wormhole FW blob to revert ERISC FW to 6.7.2.0
    • Due to ETH training instability on WH Galaxy with ERISC FW 6.7.3.0

Full ChangeLog

The full ChangeLog from the previous v19.4.0 release can be found at the link below.

v19.4.0...v19.4.1

v19.4.0

16 Dec 05:15
v19.4.0

Choose a tag to compare

v19.4.0

We are pleased to announce the release of TT Zephyr Platforms firmware version 19.4.0 🥳🎉.

Major enhancements with this release include:

What's Changed

Stability Improvements

  • Update Wormhole FW blob
    • ERISC FW 6.7.3.0
      • Fix retrain hangs with Active Cables
      • Adjust DFE value to improve BER on WH UBB QSFP ports
      • Link quality improvements to non-retimer long trace on WH UBB
      • Updated retraining logic to set train_status to LINK_TRAIN_TRAINING when entering into retraining
      • Remove link_training_fw_phony debug feature from eth_init to free up more space
    • Switch WH FW over to Zephyr ARC toolchain 0.17.4
    • Fix BSS to be 0-initialized
      • Causes telemetry TAG_TIMER_HEARTBEAT to start at 0 upon reset
    • GDDR improvement for WH Galaxy
      • Increase read latency from 23 to 25 for 14G
      • Explicitly disable EDC tracking
    • Add vendor-specific GDDR settings and report GDDR vendor
  • Re-release MRISC FW 2.11
    • Reduce Galaxy datarate to 14G to address regression in FW bundle v19.3.0
    • Reapply memory bandwidth utilization improvements to all board types

Drivers

  • Fix SMBus cancel/uncancel interface
    • Driver-specific implementations are now properly called
    • Cancel state is now properly taken into account when starting a transaction, which fixes some PCIe enumeration issues

Libraries

  • BH ARC library improvements
    • AICLK power management enhancements
      • Apply AICLK busy state from GO_BUSY and POWER messages for legacy application compatibility
      • Track last BUSY/IDLE message received and apply AICLK state based on both that and power settings
      • Extended native simulation support for aiclk_ppm initialization
    • Message queue improvements
      • Add doxygen documentation and structured access for ASIC state messages (TT_SMC_MSG_ASIC_STATE0 and TT_SMC_MSG_ASIC_STATE3)
      • Add doxygen documentation and structured access for TT_SMC_MSG_TEST
      • Code formatting improvements (clang-format)
    • Power management logging improvements
      • Condense noisy prints in bh_power into a single print statement

Debug / Developer Features

  • Scripts and tooling improvements
    • tt_bootstrap: Add support for erasing flash with west flash -r tt_bootstrap --erase
    • vuart: Open file descriptor with O_APPEND flag to prevent power-on when opening console
    • Add update_versions.sh script to upgrade versions of SMC, DMC, and FW during the release process

Other Notable Changes

  • Documentation
    • Update release process documentation to use version update script
    • Add firmware signing key conflicts guide explaining how to move from a production-signed firmware to a development-signed firmware (v19.0.0+)

Migration guide

An overview of required and recommended changes to make when migrating from the previous v19.3.0 release can be found in v19.4 Migration Guide.

Full ChangeLog

The full ChangeLog from the previous v19.3.0 release can be found at the link below.

v19.3.0...v19.4.0