Wanda[cis] has joined #prjcombine
<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.
<ari> this sounds like a pain
<Wanda[cis]> well I did say I was delirious when writing it
<Wanda[cis]> works pretty well though
<Wanda[cis]> perfectly matches the XC4000 database I extracted from xact two days ago, too (via less brute force ways)
<mupuf> Wanda[cis]: jeeeeez, must have taken a while :o
h_ro has quit [Remote host closed the connection]
h_ro has joined #prjcombine