Create a new Buckyball Ball operator named $ARGUMENTS, covering the full flow from implementation to verification.
Important: all build/simulation operations must go through MCP tools (validate, bbdev_workload_build, bbdev_verilator_run, etc.). Do not use bbdev CLI or nix develop directly.
ballId + funct7:
arch/src/main/scala/framework/balldomain/configs/default.jsonarch/src/main/scala/examples/toy/balldomain/DISA.scalaarch/src/main/scala/framework/balldomain/prototype/bb-tests/workloads/lib/bbhw/isa/bb-tests/workloads/src/CTest/toy/inBW / outBWop2 is needediter.../prototype/relu/ReluBall.scala, Relu.scala.../prototype/systolicarray/.../blink/blink.scala, bank.scala, status.scala.../memdomain/backend/banks/SramIO.scalaarch/src/main/scala/framework/balldomain/prototype/<name>/ using templates from references/.resp.valid in the cycle after req.fire)cmdReq.fireidle -> read -> compute -> write -> complete -> idlestatus.idle and status.running must map correctly to FSM statesUpdate files in order:
.../configs/default.json - append ballIdMappings entry and update ballNum.../bbus/busRegister.scala - add import + match case.../DISA.scala - add val XXX = BitPat("bxxxxxxx").../DomainDecoder.scala - add decode row (BID = ballId.U)Create <funct7_decimal>_<name>.c under bb-tests/workloads/lib/bbhw/isa/, then include it in isa.h.
<name>_test.c under bb-tests/workloads/src/CTest/toy/bb-tests/workloads/src/CTest/toy/CMakeLists.txt using add_cross_platform_test_targetbb-tests/sardine/tests/test_ctest.py (ctest_workloads)validate and ensure all 6 invariants passbbdev_workload_buildbbdev_verilator_run for this Ball's CTest binaryPASSED -> doneFAILED -> switch to /debug