diff --git a/autotest.c b/autotest.c index ef66e78..152ef23 100644 --- a/autotest.c +++ b/autotest.c @@ -2175,6 +2175,9 @@ static int test_dist_mem(struct test_state *tstate) rc = test_logic(tstate, y, x, type_i, &logic_cfg); if (rc) FAIL(rc); } + // todo: we could test a configuration with a memory lut in the + // first and last position of a row (doesn't work easily + // with test_logic() subfunction right now). return 0; fail: return rc; diff --git a/libs/bit_frames.c b/libs/bit_frames.c index 968d6ab..475460b 100644 --- a/libs/bit_frames.c +++ b/libs/bit_frames.c @@ -762,8 +762,8 @@ static int extract_logic(struct extract_state* es) // // Step 3: // - // Parse all bits from minors 20 and 25/26 into more - // easily usable cfg_ml and cfg_x structures. + // Parse all bits from minors 20, 23 and 25/26 into + // more easily usable cfg_ml and cfg_x structures. // memset(&cfg_ml, 0, sizeof(cfg_ml)); @@ -817,6 +817,80 @@ static int extract_logic(struct extract_state* es) mi20 &= ~(1ULL< XC6_ROW_RAM_MI19) { + for (i = XC6_ROW_RAM_MI16; i <= XC6_ROW_RAM_MI19; i++) { + frame_set_pinword(u8_p + i*FRAME_SIZE + XC6_HCLK_POS, + clock_word[i-XC6_ROW_RAM_MI16] & ~(1<