|
36 | 36 | //! |
37 | 37 | //! ### Senders (CPU sends to other tables) |
38 | 38 | //! - DECODE: instruction fetch |
39 | | -//! - IS_BYTE: range checks for rs1, rs2, rd, arg1[i], arg2[i], res[i] |
| 39 | +//! - IS_BYTE: range checks for rs1, rs2, rd |
| 40 | +//! - IS_BYTE_PAIR: range checks for arg1/arg2/res byte pairs (×12, two bytes per interaction) |
40 | 41 | //! - IS_BIT: range checks for flags (via templates) |
41 | 42 | //! - ADD: for ADD, LOAD, JALR operations |
42 | 43 | //! - STORE ADD: for STORE (res = arg1 + imm, separate from main ADD) |
@@ -1944,11 +1945,11 @@ pub fn bus_interactions() -> Vec<BusInteraction> { |
1944 | 1945 | )); |
1945 | 1946 |
|
1946 | 1947 | // ------------------------------------------------------------------------- |
1947 | | - // Range checks (15 total: 3 IS_BYTE + 12 IS_HALF) |
| 1948 | + // Range checks (15 total: 3 IS_BYTE + 12 IS_BYTE_PAIR) |
1948 | 1949 | // CPU-CR29: IS_BYTE[rs1], CPU-CR30: IS_BYTE[rs2], CPU-CR31: IS_BYTE[rd] |
1949 | | - // CPU-CR32.i: IS_HALF[arg1[2i] + 256*arg1[2i+1]] (i=0..3) |
1950 | | - // CPU-CR33.i: IS_HALF[arg2[2i] + 256*arg2[2i+1]] (i=0..3) |
1951 | | - // CPU-CR34.i: IS_HALF[res[2i] + 256*res[2i+1]] (i=0..3) |
| 1950 | + // CPU-CR32.i: IS_BYTE_PAIR[arg1[2i], arg1[2i+1]] (i=0..3) |
| 1951 | + // CPU-CR33.i: IS_BYTE_PAIR[arg2[2i], arg2[2i+1]] (i=0..3) |
| 1952 | + // CPU-CR34.i: IS_BYTE_PAIR[res[2i], res[2i+1]] (i=0..3) |
1952 | 1953 | // ------------------------------------------------------------------------- |
1953 | 1954 | // RS1, RS2, RD are single-byte register indices — checked individually. |
1954 | 1955 | // ARG1/ARG2/RES are 8-byte little-endian values — adjacent byte pairs are |
|
0 commit comments