From 57dd57e2685a5038979f1067745dbea164df8fa8 Mon Sep 17 00:00:00 2001 From: Rohan Kumar Date: Tue, 1 Sep 2026 13:18:10 -0700 Subject: [PATCH 1/2] Fix CI --- .github/workflows/ci.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c511fa7..4b5b89c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,6 +14,14 @@ jobs: build: name: Compile, elaborate, and check generated collateral runs-on: ubuntu-latest + # Chisel's FIRRTL converter recurses over expression trees, and Iris's are deep + # enough to overflow the runner's default 1 MB stack inside Converter.convertPrim, + # aborting the suite before a single test runs. The heap goes up with it: a runner + # defaults to a quarter of its 16 GB, which is tight for elaborating a chip top. + # JAVA_TOOL_OPTIONS is what reaches the JVM mill forks to run the tests in, which is + # where elaboration actually happens. + env: + JAVA_TOOL_OPTIONS: -Xmx6g -Xss8m steps: - uses: actions/checkout@v4 From eebdd21c0aab2b449ef96f0691382de02da4b7ad Mon Sep 17 00:00:00 2001 From: Rohan Kumar Date: Tue, 1 Sep 2026 13:35:01 -0700 Subject: [PATCH 2/2] fix stale ucie.h --- software/ucie.h | 102 ++++++++++++++++++++++-------------------------- 1 file changed, 46 insertions(+), 56 deletions(-) diff --git a/software/ucie.h b/software/ucie.h index 10b88e9..0d8d5be 100644 --- a/software/ucie.h +++ b/software/ucie.h @@ -52,16 +52,13 @@ #define UCIE_CLK_PHASE_SEL 0x3d8ULL #define UCIE_CLK_FREQ_SEL 0x3e0ULL #define UCIE_TXCTL 0x3e8ULL -#define UCIE_TXCTL_DLL_RESET_OFS 0x0ULL -#define UCIE_TXCTL_DRIVER_OFS 0x8ULL -#define UCIE_TXCTL_SKEW_OFS 0x10ULL -#define UCIE_TXCTL_SHUFFLER_OFS 0x18ULL +#define UCIE_TXCTL_TILE_OFS 0x0ULL +#define UCIE_TXCTL_SHUFFLER_OFS 0x8ULL #define UCIE_TXCTL_SHUFFLER_WIDTH 0x8ULL -#define UCIE_TXCTL_SAMPLE_NEGEDGE_OFS 0x118ULL -#define UCIE_TXCTL_DELAY_OFS 0x120ULL -#define UCIE_TXCTL_DLL_CODE_OFS 0x128ULL -#define UCIE_TXCTL_WIDTH 0x130ULL -#define UCIE_RXCTL 0x1cd8ULL +#define UCIE_TXCTL_SAMPLE_NEGEDGE_OFS 0x108ULL +#define UCIE_TXCTL_DELAY_OFS 0x110ULL +#define UCIE_TXCTL_WIDTH 0x118ULL +#define UCIE_RXCTL 0x1ae0ULL #define UCIE_RXCTL_ZEN_OFS 0x0ULL #define UCIE_RXCTL_ZCTL_OFS 0x8ULL #define UCIE_RXCTL_VREF_SEL_OFS 0x10ULL @@ -74,49 +71,46 @@ #define UCIE_RXCTL_SAMPLE_NEGEDGE_OFS 0x138ULL #define UCIE_RXCTL_RX_DELAY_OFS 0x140ULL #define UCIE_RXCTL_WIDTH 0x148ULL -#define UCIE_DEBUG_TX_TEST_MODE 0x37c0ULL -#define UCIE_DEBUG_TX_DATA_MODE 0x37c8ULL -#define UCIE_DEBUG_TX_LFSR_SEED 0x37d0ULL -#define UCIE_DEBUG_TX_FSM_RST 0x37d8ULL -#define UCIE_DEBUG_TX_EXECUTE 0x37e0ULL -#define UCIE_DEBUG_TX_MANUAL_REPEAT_PERIOD 0x37e8ULL -#define UCIE_DEBUG_TX_PACKETS_TO_SEND 0x37f0ULL -#define UCIE_DEBUG_DATA 0x37f8ULL +#define UCIE_DEBUG_TX_TEST_MODE 0x35c8ULL +#define UCIE_DEBUG_TX_DATA_MODE 0x35d0ULL +#define UCIE_DEBUG_TX_LFSR_SEED 0x35d8ULL +#define UCIE_DEBUG_TX_FSM_RST 0x35e0ULL +#define UCIE_DEBUG_TX_EXECUTE 0x35e8ULL +#define UCIE_DEBUG_TX_MANUAL_REPEAT_PERIOD 0x35f0ULL +#define UCIE_DEBUG_TX_PACKETS_TO_SEND 0x35f8ULL +#define UCIE_DEBUG_DATA 0x3600ULL #define UCIE_DEBUG_DATA_WIDTH 0x8ULL -#define UCIE_DEBUG_DRIVERCTL 0x3878ULL +#define UCIE_DEBUG_DRIVERCTL 0x3680ULL #define UCIE_DEBUG_DRIVERCTL_WIDTH 0x8ULL -#define UCIE_DEBUG_TXCTL_DLL_RESET 0x3898ULL -#define UCIE_DEBUG_TXCTL_DRIVER 0x38a0ULL -#define UCIE_DEBUG_TXCTL_SKEW 0x38a8ULL -#define UCIE_DEBUG_TXCTL_SHUFFLER 0x38b0ULL +#define UCIE_DEBUG_TXCTL_TILE 0x36a0ULL +#define UCIE_DEBUG_TXCTL_SHUFFLER 0x36a8ULL #define UCIE_DEBUG_TXCTL_SHUFFLER_WIDTH 0x8ULL -#define UCIE_DEBUG_TXCTL_DLL_CODE 0x39b0ULL -#define UCIE_DEBUG_TX_TEST_STATE 0x39b8ULL -#define UCIE_DEBUG_TX_PACKETS_SENT 0x39c0ULL -#define UCIE_DEBUG_CLK_MUX_SEL 0x39c8ULL -#define UCIE_DEBUG_RX_LANE 0x39d0ULL -#define UCIE_DEBUG_RX_BIT 0x39d8ULL -#define UCIE_TX_VALID 0x39e0ULL -#define UCIE_RX_LFSR_VALID 0x39e8ULL -#define UCIE_CONTROLLER_SEL 0x39f0ULL -#define UCIE_MAINBAND_MODE 0x39f8ULL -#define UCIE_SIDEBAND_MODE 0x3a00ULL -#define UCIE_CREDIT_FLOW_ENABLE 0x3a08ULL -#define UCIE_TX_VALID_LANE_SEL 0x3a10ULL -#define UCIE_RX_VALID_LANE_SEL 0x3a18ULL -#define UCIE_LAST_SEEN_TL_REQ 0x3a20ULL -#define UCIE_SB_TX_PACKET 0x3a28ULL -#define UCIE_SB_TX_SEND 0x3a30ULL -#define UCIE_SB_TX_BUSY 0x3a38ULL -#define UCIE_SB_RX_PACKET 0x3a40ULL -#define UCIE_SB_RX_VALID 0x3a48ULL -#define UCIE_SB_RX_POP 0x3a50ULL -#define UCIE_SB_RX_OVERFLOW 0x3a58ULL -#define UCIE_SB_RX_RST 0x3a60ULL -#define UCIE_SB_TL_RX_OVERFLOW 0x3a68ULL -#define UCIE_UCIE_LINK_RESET 0x3a70ULL -#define UCIE_UCIE_PWR_GOOD 0x3a78ULL -#define UCIE_UCIE_RETRY_TRAINING_AMT 0x3a80ULL +#define UCIE_DEBUG_TX_TEST_STATE 0x37a8ULL +#define UCIE_DEBUG_TX_PACKETS_SENT 0x37b0ULL +#define UCIE_DEBUG_CLK_MUX_SEL 0x37b8ULL +#define UCIE_DEBUG_RX_LANE 0x37c0ULL +#define UCIE_DEBUG_RX_BIT 0x37c8ULL +#define UCIE_TX_VALID 0x37d0ULL +#define UCIE_RX_LFSR_VALID 0x37d8ULL +#define UCIE_CONTROLLER_SEL 0x37e0ULL +#define UCIE_MAINBAND_MODE 0x37e8ULL +#define UCIE_SIDEBAND_MODE 0x37f0ULL +#define UCIE_CREDIT_FLOW_ENABLE 0x37f8ULL +#define UCIE_TX_VALID_LANE_SEL 0x3800ULL +#define UCIE_RX_VALID_LANE_SEL 0x3808ULL +#define UCIE_LAST_SEEN_TL_REQ 0x3810ULL +#define UCIE_SB_TX_PACKET 0x3818ULL +#define UCIE_SB_TX_SEND 0x3820ULL +#define UCIE_SB_TX_BUSY 0x3828ULL +#define UCIE_SB_RX_PACKET 0x3830ULL +#define UCIE_SB_RX_VALID 0x3838ULL +#define UCIE_SB_RX_POP 0x3840ULL +#define UCIE_SB_RX_OVERFLOW 0x3848ULL +#define UCIE_SB_RX_RST 0x3850ULL +#define UCIE_SB_TL_RX_OVERFLOW 0x3858ULL +#define UCIE_UCIE_LINK_RESET 0x3860ULL +#define UCIE_UCIE_PWR_GOOD 0x3868ULL +#define UCIE_UCIE_RETRY_TRAINING_AMT 0x3870ULL // === Constants === #define UCIE_TX_TEST_STATE_IDLE 0x0ULL @@ -137,7 +131,7 @@ #define UCIE_DEFAULT_VALID 0xf0f0f0fULL #define UCIE_DEFAULT_TRACK 0x55555555ULL #define UCIE_ENABLE_DRIVER_CTL 0x3ffeULL -#define UCIE_DEFAULT_SKEW_CTL 0xbf80c296ULL +#define UCIE_ENABLE_TX_CTL 0x1fff000000000ULL // === Helper functions === static inline void reset_fsms(uintptr_t base) { @@ -159,9 +153,7 @@ static inline void write_rxctl(uintptr_t base, uint64_t lane, uint64_t ofs, uint static inline void setup_ucie(uintptr_t base) { for (int lane = 0; lane < 21; lane++) { - write_txctl(base, lane, UCIE_TXCTL_DLL_RESET_OFS, 0x0ULL); - write_txctl(base, lane, UCIE_TXCTL_DRIVER_OFS, UCIE_ENABLE_DRIVER_CTL); - write_txctl(base, lane, UCIE_TXCTL_SKEW_OFS, UCIE_DEFAULT_SKEW_CTL); + write_txctl(base, lane, UCIE_TXCTL_TILE_OFS, UCIE_ENABLE_TX_CTL); write_rxctl(base, lane, UCIE_RXCTL_ZEN_OFS, 0x1ULL); write_rxctl(base, lane, UCIE_RXCTL_ZCTL_OFS, 0x0ULL); } @@ -169,13 +161,11 @@ static inline void setup_ucie(uintptr_t base) { reg_write64(base + UCIE_TX_CLK_N, UCIE_DEFAULT_CLK_N); reg_write64(base + UCIE_TX_VALID, UCIE_DEFAULT_VALID); reg_write64(base + UCIE_RX_LFSR_VALID, UCIE_DEFAULT_VALID); - reg_write64(base + UCIE_DEBUG_TXCTL_DLL_RESET, 0x0ULL); reg_write64(base + UCIE_DIV_RESETB, 0x1ULL); for (int i = 0; i < 4; i++) { reg_write64(base + UCIE_DEBUG_DRIVERCTL + 8 * i, UCIE_ENABLE_DRIVER_CTL); } - reg_write64(base + UCIE_DEBUG_TXCTL_DRIVER, UCIE_ENABLE_DRIVER_CTL); - reg_write64(base + UCIE_DEBUG_TXCTL_SKEW, UCIE_DEFAULT_SKEW_CTL); + reg_write64(base + UCIE_DEBUG_TXCTL_TILE, UCIE_ENABLE_TX_CTL); reset_fsms(base); reg_write64(base + UCIE_CONTROLLER_SEL, UCIE_CONTROLLER_SEL_PHYTEST); reg_write64(base + UCIE_MAINBAND_MODE, UCIE_BAND_MODE_MANUAL);