)]}'
{
  "commit": "88b0bbde9007e0e52a4dcd8dd8b2c1cf9ef45120",
  "tree": "4778875a6c705ef38994fafc39280d011ef7cd25",
  "parents": [
    "a9ce01c608f8afd9f8f205e2077257ccc3b5339c"
  ],
  "author": {
    "name": "Alex Van Damme",
    "email": "atv@google.com",
    "time": "Tue Sep 02 15:54:02 2025 -0700"
  },
  "committer": {
    "name": "Alex Van Damme",
    "email": "atv@google.com",
    "time": "Fri Sep 05 10:52:09 2025 -0700"
  },
  "message": "feat(soc): Add Spi2TLUL bridge and tests\n\nThis commit introduces a new Chisel module, `Spi2TLUL`, which functions as a bridge between a SPI slave interface and a TileLink UL master interface. This allows an external SPI master to initiate TileLink transactions within the SoC.\n\nThe bridge includes:\n- A register map accessible via SPI for configuring TileLink transactions (address, length, command).\n- A data buffer for staging data for both read and write operations.\n- Asynchronous queues to handle clock domain crossing between the SPI clock and the main SoC clock.\n- State machines to manage SPI commands and TileLink transactions for both reads and writes.\n\nTo support verification, this commit also adds:\n- A Python-based `SPIMaster` class for cocotb, providing an easy-to-use interface for driving the SPI slave.\n- A comprehensive cocotb test suite (`test_spi_to_tlul.py`) with tests for:\n  - Register read/write access.\n  - Single and multi-beat TileLink reads.\n  - Single and multi-beat TileLink writes.\n\nThe necessary BUILD file modifications are included to integrate the new module and its tests into the Chisel and cocotb build systems.\n\nChange-Id: Ie1280db53e77cec7b3f734b5bd6d63c8d41b2ca9\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d793ef690837e5e4930a32f451ba9829afbc1b02",
      "old_mode": 33188,
      "old_path": "hdl/chisel/src/bus/BUILD",
      "new_id": "6c88270ba18cb283cd805390da006f515f875d46",
      "new_mode": 33188,
      "new_path": "hdl/chisel/src/bus/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a134f9371a8cfa80458927cd8596a06b429c94cc",
      "new_mode": 33188,
      "new_path": "hdl/chisel/src/bus/Spi2TLUL.scala"
    },
    {
      "type": "modify",
      "old_id": "fbde1025e9023ead26d7df9ab3e452d743c06e88",
      "old_mode": 33188,
      "old_path": "hdl/chisel/src/bus/TlulIntegrity.scala",
      "new_id": "ec9a2545822abe75aad6d62e210757727ecacdf8",
      "new_mode": 33188,
      "new_path": "hdl/chisel/src/bus/TlulIntegrity.scala"
    },
    {
      "type": "modify",
      "old_id": "94c7b6ab0a2b4db106b6f40476ec324bccda15a7",
      "old_mode": 33188,
      "old_path": "kelvin_test_utils/BUILD",
      "new_id": "89b0269393ec988f9ec2f63b2f5e145eff7ad282",
      "new_mode": 33188,
      "new_path": "kelvin_test_utils/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c5182fcf829435991bc2b1d187aebc228c8365b4",
      "new_mode": 33188,
      "new_path": "kelvin_test_utils/spi_master.py"
    },
    {
      "type": "modify",
      "old_id": "41cae7478fc5cce62cc5f9385b8acf62d9df12d6",
      "old_mode": 33188,
      "old_path": "tests/cocotb/tlul/BUILD",
      "new_id": "71676eb141ab07e7691b458e9e7f222e253cfab0",
      "new_mode": 33188,
      "new_path": "tests/cocotb/tlul/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2cc6599d6a0eb6a13bcc4fab1fe157c837ae23eb",
      "new_mode": 33188,
      "new_path": "tests/cocotb/tlul/test_spi_to_tlul.py"
    }
  ]
}
