<Wanda[cis]>
current status: doing take two of geometry database extraction for XC3000, this time from XACT instead of ISE
<Wanda[cis]>
I must say it looks somewhat less batshit (but still well within batshit parameters) when I look at the raw wires instead of the botched tile-ification that whoever ported it to ISE did
whitequark[cis] has joined #prjcombine
<whitequark[cis]>
nice
<Wanda[cis]>
fun fact: I originally only included XC4000 in prjcombine because I was feverish and delirious from I-can't-believe-it's-not-covid and spending a week extracting XC4000 geometry databases from ISE seemed like a good idea
<Wanda[cis]>
right afterwards I looked at XC3000 and decided I'm not nearly delirious enough for that
<Wanda[cis]>
XACT is funny. the routing database it uses is a literal grid of wires.
<Wanda[cis]>
like if you look at the on-disk files, it's a giant-ass two-dimensional u16 array describing what's at every grid cell, with a few hundred codes for "horizontal wire segment", "vertical wire segment", "crossover", "left-down bend", "T-join with a programmable connection", ...
<Wanda[cis]>
and you just. trace over the lines.
<Wanda[cis]>
the IR they are using literally stores enabled PIPs as coordinates on that grid
<Wanda[cis]>
so, naturally, to RE the bitstream I need to know the coordinate of every PIP
<Wanda[cis]>
there is, of course, no database export option
<Wanda[cis]>
I was briefly considering manually transcribing them from the UI but Maja called me batshit insane when I said that out loud and baited me into just parsing the damn data files.
<Wanda[cis]>
another fun fact: whoever originally wrote ISE support for XC3000 and XC4000E did the exact same thing as me
<Wanda[cis]>
because all wires in ISE databases have nondescript numbered names
<Wanda[cis]>
and the order of the numbers turns out to perfectly match the XACT wires if you sort them by the lexicographically lowest (x, y) coordinate a given wire occupies.
<Wanda[cis]>
so I ended up having to write a giant dict that turns these names into something reasonable.