Index: trunk/util/boxsym-rnd/generator.awk =================================================================== --- trunk/util/boxsym-rnd/generator.awk (revision 4217) +++ trunk/util/boxsym-rnd/generator.awk (revision 4218) @@ -133,16 +133,23 @@ return siden } -function draw_pins(slot, ALIGN, loc, x0, y0, stx, sty, ST,n,currslot) +function draw_pins(slot, ALIGN, loc, x0, y0, stx, sty, ST,save_last, n,currslot) { if (slot == "") { # all slots for(n = 0; n < nslots; n++) - draw_pins(SLOTS[n], ALIGN, loc, x0, y0, stx, sty, ST) + draw_pins(SLOTS[n], ALIGN, loc, x0, y0, stx, sty, ST, 1) } - ST["x"] = x0 + ALIGN[loc, "x0"] - ST["y"] = y0 + ALIGN[loc, "y0"] + if ((LAST_CRD[loc, "x"] != "") && save_last) + ST["x"] = LAST_CRD[loc, "x"] + else + ST["x"] = x0 + ALIGN[loc, "x0"] + if ((LAST_CRD[loc, "y"] != "") && save_last) + ST["y"] = LAST_CRD[loc, "y"] + else + ST["y"] = y0 + ALIGN[loc, "y0"] + if (ALIGN["cfg", "expand_slot"]) { # generate pins in a per slot fashion until slots run out (or at most 256 of them to avoid infinite loop) for(currslot = 1; currslot <= 256; currslot++) { @@ -152,6 +159,11 @@ } else draw_pins_(slot, ALIGN, loc, stx, sty, ST, "") + + if (save_last) { + LAST_CRD[loc, "x"] = ST["x"] + LAST_CRD[loc, "y"] = ST["y"] + } }