TT Mimir Board
Overview
The tt_mimir “board” is a simulation target intended to be run within
simulation/emulation environments. It represents a 4 core instance of the
Berkeley RISC-V Rocket core, with tenstorrent specific peripherals. This board
targets the Mimir Chiplet, which is the memory controller chiplet in the Grendel
Family. For instructions on running within specific simulation environments, see
the Executing Applications section.
Hardware
Single instance of the RISC-V Rocket Chip. This is a simple RISC-V core with a 5-stage pipeline.
64 KB of SRAM.
SiFive CLINT interrupt controller
SiFive E300 watchdog timer
SiFive PLIC interrupt controller
4x Designware APB UART
6x Cadence I3C controllers
System Clock
The system clock is configured to run at 1.6GHz. The CLINT timer ticks at 800KHz, yielding a rate of 800,000 ticks per second.
Executing Applications
Applications can be built as usual (see Building an Application for more details). See below for instructions
Note
If planning to use VSCode for development, ensure it is installed on the login servers.
Running Within Mimir Emulation Environment
First, ssh into an SOC lab host and setup the environment:
# Create your own workspace
mkdir -p /proj_soc/user_dev/$USER/
cd /proj_soc/user_dev/$USER/
# Clone the Mimir SOC repository
git clone <mimir_soc_git_url>
cd mimir_soc
# Setup the environment, these have to be done at every login
source /tools_soc/tt/bin/bashrc
source emu/bin/setup_env.sh
# Run the default SMC test
cd emu/tests
./run-smc-test.sh
To run a Zephyr binary in the Mimir enumlation environment, upload the built binary stored in <build-dir>/zephyr/zephyr.bin,
to the emulation system using scp or a similar tool before running.
For example, you could run the hello world application as follows:
# Build a binary and upload it to the emulation host
west build -p always -b tt_mimir ../zephyr/samples/hello_world
scp build/zephyr/zephyr.bin <user@emu-host>:zephyr.bin
# Source the environment every login
ssh <user@emu-host>
source /tools_soc/tt/bin/bashrc
source emu/bin/setup_env.sh
# Run the emulation
cd emu/bin
./run-smc-test.sh ~/zephyr.bin
The zrun process should include output like the following:
2025-06-23 16:31:00,759 INFO pytest_plugin.dut Sim time = 204,008.22 ns, Real time = 0.60 s, Ratio = 337,660.34 ns/s
CONSOLE: *** Booting Zephyr OS build v4.1.0-rc2 ***
CONSOLE: Hello World!
TEST STATUS SIM TIME (ns) REAL TIME (s) RATIO (ns/s)
-----------------------------------------------------------------------------
test_smc::test_smc_binary PASSED 204,008.22 0.60 337,660.34
-----------------------------------------------------------------------------
TOTAL 204,008.22 0.60 337,660.34
Running Within SMC Simulation Environment
To run a built application within the SMC simulation environment, first build the application as usual (see Building an Application for more details).
Then, you can clone and setup SMC simulation environment repository:
mkdir -p /proj_soc/user_dev/$USER/
cd /proj_soc/user_dev/$USER/
git clone git@yyz-gitlab.local.tenstorrent.com:tensix/tensix-hw/tt_smc.git
cd tt_smc
source /tools_soc/tt/bin/bashrc
source bin/setup_env.sh
Copy the built Zephyr bin file to the tt_smc directory.
cp <build-dir>/zephyr/zephyr.bin \
tt_smc/firmware/zephyr/grendel_smc_hello_world_smp_zephyr/grendel_smc_hello_world_smp_zephyr.bin
Finally, run the simulation using the following command:
cd tt_smc
ttem tb_uvm/yaml/regression_smc_chiplet.yaml smc_zephyr_hello_world_smp_test \
--stack flist,cgen,compile_smc_chiplet,sim --wave --no-lsf --seed 1 --c compile_smc_chiplet
Running Within Renode Co-Simulation
The renode co-simulation environment should be considered experimental for
development on the tt_mimir board. The SMC simulation environment
should be treated as the “ground truth” for simulation of this board.
To run within the Renode co-simulation environment, a prebuilt co-simulation
package is available. The package is stored at the following location
on internal SOC systems. Execution should be performed on soc-l* hosts.
/proj_syseng/user_dev/ddegrasse/public/grendel-renode-cosim-2025-12-11
To run co-simulation, the following scripts are provided in the package:
start-renode.sh: Script to start renode with a single argument, the path to the ELF binary to load.start-renode-sip.sh: Script to start renode in SIP mode. Takes two arguments,the path to the ELF to load on the primary SMC core, and the path to the ELF to load on the remote core.
The Co-Simulation environment supports both single core and SIP mode execution. In single core execution, a single SMC is simulated. In SIP mode, two SMCs are simulated, with their peripherals interconnected.
For details on the specific peripherals present in the simulation, see the
release-notes.md file included in the package.
Co-Simulation can be run as follows:
west build -p always -b tt_mimir app/hello_world
/proj_syseng/user_dev/ddegrasse/public/grendel-renode-cosim-2025-12-11/start-renode.sh <build-dir>/zephyr/zephyr.elf
[INFO] Including script(s): /tmp/renode_cmds.S9DMFL
[INFO] sysbus: Loading block of 85880 bytes length at 0xC0060000.
[INFO] sysbus: Loading block of 1408 bytes length at 0xC0074F78.
[INFO] hart0: Setting PC value to 0xC0060000.
[INFO] hart1: Setting PC value to 0xC0060000.
[INFO] hart2: Setting PC value to 0xC0060000.
[INFO] hart3: Setting PC value to 0xC0060000.
(tt-smc) start
[INFO] tt-smc: Machine started.
[INFO] [no-name]: CONSOLE: *** Booting Zephyr OS build v4.1.0-rc2 ***
[INFO] [no-name]: CONSOLE: Hello World!
(tt-smc) quit
Renode is quitting
[INFO] tt-smc: Machine paused.
Renode connection closed
Simulation PASSED
$finish called from file "/proj_syseng/user_dev/ddegrasse/grendel/tt_smc/tb_uvm/sv/smc_renode_top.sv", line 445.
$finish at simulation time 0.876000800s
V C S S i m u l a t i o n R e p o r t
Time: 876000800000000 fs
CPU Time: 65.130 seconds; Data structure size: 25.9Mb
Fri Dec 12 14:12:03 2025
[INFO] tt-smc: Disposed.