<cr1901_modern> Ya know what's fun? Trying to find JTAG pins on an unmarked board
<cr1901_modern> (and literature on this topic is sparse)
<rqou> no it's not
<rqou> there's plenty of random slide decks describing "bang on some input pins until you find a correlated toggling output pin"
<cr1901_modern> And pray you didn't connect an output on your driver board to an output on the board being probed*
<rqou> there are various ways to guess if the pin is input/output
<rqou> e.g. by just using a high-impedance driver
<cr1901_modern> http://www.grandideastudio.com/jtagulator/ This is cool (if expensive as hell)
<cr1901_modern> Well this is just for fun so maybe I should save up for it
<azonenberg_work> That would be a cool feature to add to starshipraider
azonenberg_work has quit [Ping timeout: 260 seconds]
scrts has quit [Ping timeout: 276 seconds]
scrts has joined ##openfpga
amclain has quit [Quit: Leaving]
promach__ has joined ##openfpga
promach__ has quit [Quit: Leaving]
m_w has quit [Ping timeout: 260 seconds]
m_w has joined ##openfpga
pervo has joined ##openfpga
pervo has quit [Quit: Leaving]
<cr1901_modern> azonenberg: So like, how many arms and legs is starshipraider gonna cost?
fitzsim has joined ##openfpga
<azonenberg> cr1901_modern: The prototype (single io card vs 4, less/slower RAM, and 1gbit ethernet)
<azonenberg> was $213.95 in components, not counting a few cheap passives i had around the lab already
<azonenberg> This is for the host board only, no io modules
<azonenberg> Three host boards at oshpark were $122.50
<azonenberg> I don't have numbers for the io cards or the final host as they dont exist yet :p
<cr1901_modern> phew...
<azonenberg> But you'd be looking at around $260-275 for one host board
X-Scale has quit [Quit: I love my HydraIRC -> http://www.hydrairc.com <-]
ZipCPU|Laptop has joined ##openfpga
<cr1901_modern> Well, I'm not gonna get 1GHz b/w anywhere that low cost. But can I actually take advantage of it (since your board only works for periodic signals)?
<cr1901_modern> anywhere else*
m_w has quit [Quit: leaving]
<awygle> i'm studying clifford's docs on the ice40 and i'm a little confused about the carry chain. there's a CarryEnable bit for each LC but also you can route lutff_(i-1)/cout to lutff_i/in3 at the tile routing level, which seems redundant. anybody here know what's up with that? should i ask in #yosys?
<awygle> thinking maybe CarryEnable turns on a tri-state output driver from the carry logic...
<rqou> unfortunately i don't think there is any documentation other than the notes that clifford wrote up
<rqou> (no idea if this works) have you tried looking into icebox?
<awygle> hmm that might be a good idea. might be hard to isolate specifically what i'm confused about, but then again maybe not
<awygle> thanks for the suggestion rqou
<rqou> er wait
<rqou> awygle are you the gsoc person that's tasked with writing better documentation?
<awygle> rqou: i am not :) bit old for gsoc
<awygle> just expanding my horizons
<rqou> fossi foundation (iirc) is actually sponsoring a gsoc project for this because the documentation was apparently confusing for everybody except clifford and cseed :P
<awygle> oh cool. "high-level bitstream format"
<awygle> yeah the docs are a little opaque. i wasn't sure how much of that was the docs, how much was me, and how much was lattice :P
<awygle> i had not seen that. it's very cool.
eduardo__ has joined ##openfpga
<rqou> hmm so the way i'm reading it, it is just possible to route cout to in3
<rqou> this allows a lut in the tile to consume the result of a carry chain i guess?
<awygle> yeah that's how i read that too, but if you look in the logic tile documentation (http://www.clifford.at/icestorm/logic_tile.html) i'm confused about what CarryEnable
<awygle> does
<awygle> "must be set if the carry logic is used", sure, but why tho
Hootch has joined ##openfpga
<rqou> uh, idk
eduardo_ has quit [Ping timeout: 255 seconds]
<rqou> oh i think i know why
<rqou> the carry chain probably isn't implemented as a chain in silicon
<rqou> it's probably a tree and/or has lookahead
<rqou> that might be why it has an enable bit rather than being always on
<rqou> poke poke azonenberg plz decap+image ice40
<awygle> haha
pie__ has quit [Ping timeout: 248 seconds]
<azonenberg> rqou: actually i have a pile clifford sent me
<azonenberg> as soon as i get cnc imaging running, i'll post pix
<rqou> it's 40nm though, needs SEM :P
<azonenberg> i meant top metal
<azonenberg> i have sem access at ioa now though
<azonenberg> and fib
<azonenberg> i did some test runs on 180nm the other day
<rqou> neat
<rqou> should i send all my "haul" to you or only the coolrunner2 parts?
<azonenberg> only the coolrunners
<rqou> rest to dig?
<azonenberg> hold onto them for a bit
<azonenberg> and keep in mind i only *just* got sem/fib access, i do not yet have a way to copy images off the microscope due to network awkwardness
<azonenberg> i also do not have a great decap setup right now
<rqou> i picked up some BCM56800 parts for cheap that would be interesting to image
<rqou> also picked up a pile of fake as fuck microsd cards that would be fun to image
<rqou> also, i really want you to try to steal the bitstreams off of the coolrunner parts because i'm 99% sure they're pulls
<rqou> azonenberg: awygle reminds me that we need to rewrite the coolrunner2 bitstream documentation
<rqou> er, not necessarily rewrite but definitely improve
<rqou> i don't think it makes much sense to anyone who hasn't been looking at it for a while (just like the ice40 documentation)
<azonenberg> rqou: yes agreed
<azonenberg> i would love to have a more extensive doc
<rqou> we need some "liberated" diagrams
<rqou> right now i have a scribbled-on xilinx document with bits annotated
<rqou> but "go look at this page of this appnote" isn't very good
<rqou> huh does kicad have "generic logic" schematic symbols?
<azonenberg> not really
<azonenberg> i made a library for generic fets
<rqou> arrgh why
<azonenberg> may be of use
<azonenberg> this was a doc i started ages ago
<azonenberg> that may be worth using as a baseline
<rqou> yak stack: "generic" schematic symbols for kicad
<rqou> or do you think this should block on eeschema-new?
<azonenberg> yes it should
<azonenberg> anyway skim my docc
<azonenberg> it's incomplete, i re-rendered it hence today's date
<azonenberg> but the original doc dates to a year or two ago
<azonenberg> so missing all of our recent findings
<rqou> is eeschema-new happening at all?
<rqou> as in, is anybody working on it?
<azonenberg> yes but probably not until version 6 from what i remember
<rqou> yes, i know that part
<azonenberg> pcbnew was the higher priority
<rqou> when is that going to happen? "when it's ready?"
<rqou> you mean pcbnewnew? :P
<azonenberg> lolol
<rqou> gotta love kicad
<rqou> i should actually send them cleanup patches rather than complaining about it all the time
<azonenberg> i've been doing that
<azonenberg> but its now reaching the point that there arent many small yaks i'd want to shave
<azonenberg> i use my own libraries so the stock ones arent really a concern
<rqou> hmm i'm currently sick so doing something masochistic right now might not be too bad :P
<azonenberg> the only stock ones i use are like "generic N-pin connector" and passives
<azonenberg> All of the other small yaks are dealt with
<azonenberg> the big ones, like stackup-aware impedance math and length matching, will be major projects
<rqou> wait what
<rqou> it doesn't have that?
<rqou> i thought that should be easy?
<rqou> i guess it's kicad :P
<azonenberg> it has length matching
<azonenberg> but it is not stackup aware
<azonenberg> i.e. it wont compensate for via length
<azonenberg> it also is *length*, rather than *delay* matching
<azonenberg> so it also doesn't compensate for different propagation delays on different layers
<azonenberg> If you are matching signals with the same layer setup its fine
<azonenberg> but if you want to match an internal and external layer you have to tune them manually to different target lengths to compensate for the velocity skew
<rqou> this doesn't seem like it should be particularly hard to add?
<rqou> er, the math/approximations might be hard, but the implementation doesn't seem like it should be?
<azonenberg> well first you have to add the 2D field solver to calculate propagation velocity etc better than the current closed-form approximations :p
<rqou> oh you wanted to do it that way
<azonenberg> there's a stackup editor under development now
<rqou> the hard way
<rqou> :P
<azonenberg> but afaik it's not actually used for anything but the 3d renders
<rqou> wait what
<rqou> it didn't have one before?
<azonenberg> It let you specify what layers were being used
<azonenberg> but not thicknesses/spacing
<rqou> even EAGLE had that
<rqou> (although i don't think EAGLE did anything with it)
<azonenberg> exactly :p
<azonenberg> anyway, once we have the data the next step will be to make the length matcher add via barrels to the path length
<azonenberg> then make the matching work in the time rather than space domain
<azonenberg> and use a layer-dependent velocity
<azonenberg> initially using closed-form approximations and eventually a field solver
<azonenberg> also, right now the diff pair / trace width dimensions are global
<rqou> btw is there even foss code that can calculate this stuff?
pie__ has joined ##openfpga
<azonenberg> i'd rather specify a target impedance and then have it use layer dependent width/space
<rqou> i know there's openEMS, but that's a) slow as shit b) complicated as shit and c) a 3d field solver, which is probably not necessary
<azonenberg> not to my knowledge, no
<azonenberg> lain was thinking of writing one
<azonenberg> anyway my vision is you'd enter the stackups
<azonenberg> specify target impedance
<azonenberg> then you'd get an x/y plot of impedance vs width for each layer
<azonenberg> sorry i meant, width vs spacing
<azonenberg> to get the target impedance
<rqou> doesn't "PCB calculator" already do that?
<azonenberg> and you could specify where in that chart you wanted to be
scrts has quit [Ping timeout: 268 seconds]
<azonenberg> it uses closed form approximations that seems to disagree badly with hyperlynx simulations of the same geometry
<azonenberg> i want to go back and verify
<azonenberg> but in any case, regardless of where the data comes from
<azonenberg> right now all of the geometry is done in the space domain, not time
<rqou> (PCB calculator is my favorite part of kicad to complain about because it's a calculator. calculator = pure functions. except kicad's code has all sorts of random UI shit mixed up with the math)
scrts has joined ##openfpga
<azonenberg> i want to say, match these traces within 50 ps
<azonenberg> and figure out propagation delay across the layers they cross
<azonenberg> knowing that an extra 1mm of path is not the same delay on one layer vs another
<rqou> so i remember using various random javascript impedance calculators to try to figure out what width a 50ohm trace should be on a 2-layer 1.6mm board and the answer was always something over 100mils
<rqou> is that anywhere close to correct?
<azonenberg> yes
<azonenberg> 2-layer boards are almost impossible to do sane impedances on
<azonenberg> for such designs i normally do 4L and just use the layers on one side of the board
<azonenberg> then use the other layers if i need to
<azonenberg> but i mostly just want the thin spacing
azonenberg_work has joined ##openfpga
<awygle> i have done super-thin boards (not recommended) and coplanar waveguide (better) to get around that
<rqou> does a coplanar waveguide work if you're trying to do "super buget" serdes/memory bus stuff rather than "real" RF?
<awygle> no idea *shrug* i was doing RF
wolfspraul has quit [Quit: leaving]
<rqou> ham?
<awygle> i do remember having to do the extra-thin thing for budget USB
wolfspraul has joined ##openfpga
pie__ has quit [Ping timeout: 246 seconds]
<awygle> because seeed still charges 5$ for boards that are 0.8mm thick
<awygle> rqou: curious, are you based in HK or just visiting?
<rqou> i was just visiting; i'm actually back in the US now (and sick)
<awygle> ooo bummer :( travel plague is the worst
<rqou> actually we seem to now suspect it's the apartment in HK
<awygle> did you enjoy your trip other than the attempt on your life? HK is next on my travel list
<rqou> yeah, i finally for once actually did "normal tourist things" like taking an obnoxious selfie on Victoria Peak :P
<awygle> lol nice
<awygle> oh btw, go bears! just noticed on twitter
<rqou> lol
<awygle> i am class of 2013
<rqou> oh nice
<rqou> no trees here in ##openfpga :P :P
* UmbralRaptor is confused, given just how many schools have bears as their mascot.
<rqou> uc berkeley
<rqou> (and trees = stanford, a rival)
<UmbralRaptor> This leads to hilarity like one school's motto being "Bear up" (Missouri State University), while another's is "bear down" (University of Arizona) >_>
<awygle> both my parents are UofA alums lol
<awygle> i think the "stanford cardinal" is the worst though. "what's your mascot?" "literally a shade of red"
<rqou> also worst marching band :P
<awygle> haha throwing shade! were you in the cal band or something?
<rqou> my sister was in marching band (not cal's)
<awygle> ah
<awygle> well thanks for the lattice help, i appreciate it
ZipCPU|Laptop has quit [Remote host closed the connection]
pie__ has joined ##openfpga
ZipCPU|Laptop has joined ##openfpga
seu has quit [Ping timeout: 240 seconds]
pie__ has quit [Ping timeout: 255 seconds]
<cr1901_modern> https://irclog.whitequark.org/~h~openfpga/2017-07-04#19699048; rqou: Bahaha, so it wasn't just me who thought "this is hard to read"
<cr1901_modern> azonenberg: https://irclog.whitequark.org/~h~openfpga/2017-07-04#19699329; This reminds me I have to ask this q on EE.SE (can 2-layerr impedance be reasonably calculated?)
pointfree[m] has quit [Ping timeout: 240 seconds]
Guest2760 has quit [Ping timeout: 258 seconds]
pie__ has joined ##openfpga
_whitelogger has joined ##openfpga
pointfree[m] has joined ##openfpga
pointfree[m] has quit [Remote host closed the connection]
pointfree[m] has joined ##openfpga
qu1j0t3 has quit [Quit: WeeChat 0.4.3]
qu1j0t3 has joined ##openfpga
enick_88 has joined ##openfpga
qu1j0t3 has quit [Quit: WeeChat 0.4.3]
ZipCPU|Laptop has quit [Ping timeout: 255 seconds]
qu1j0t3 has joined ##openfpga
kristianpaul has quit [Quit: Lost terminal]
Hootch_Work has joined ##openfpga
kristianpaul has joined ##openfpga
Hootch has quit [Ping timeout: 240 seconds]
mifune has joined ##openfpga
mifune has joined ##openfpga
<azonenberg> cr1901_modern: did you read my not-datasheet?
<azonenberg> i planned to eventually move our bitstream notes into the same format
<azonenberg> more conversational prose-like writing style
<cr1901_modern> azonenberg: No I did not. But I'm guilty of the "being s*** at naming vars when REing" behavior as well.
minux has joined ##openfpga
minux has quit [Quit: leaving]
Hootch_Work has quit [Ping timeout: 248 seconds]
Hootch_Work has joined ##openfpga
Hootch_Work has quit [Ping timeout: 246 seconds]
Hootch_Work has joined ##openfpga
lexano_ has quit [Ping timeout: 248 seconds]
pervo has joined ##openfpga
<azonenberg> o/ pervo
<azonenberg> (11:28:26) azonenberg_work: pervo: so you're trying to push state from a cycle-accurate emulator of an FPGA design into the actual FPGA?
<azonenberg> (11:30:59) azonenberg_work: because if not, you're going to have a *hell* of a time doing the mapping
<azonenberg> (11:30:48) azonenberg_work: or, say, shift reg luts vs dffs etc
<azonenberg> (11:28:47) azonenberg_work: is it full techmap-accurate (i.e. exact same RAM topologies, no register balancing, etc)?
<azonenberg> this is what i sent last time, not sure if you saw it
<pervo> nope, got dc'ed, sorry about that :)
<azonenberg> So, that's the first step
<azonenberg> As far as extracting contents, look at the CAPTURE feature of the STARTUPE2 primitive
<pervo> so, take the simplest example of a simple counter. i have a simulation that gives me a dump of the counter value. the goal is to rewrite/update a bitstream so the initial value for the ff's corresponding to the counter have the designated value.
<azonenberg> that will let you update the jtag readback bitstream to have a given state
<azonenberg> as far as going the other way around, it's tricky - my experience with the xilinx LL files have been poor to say the least
<azonenberg> in terms of reliability/accuracy
<pervo> write_bitstream -logic_location_file seems to give a mapping to the bitstream frames, etc, but i don't know enough (or really anything) about the bitstream format to know if that's useful or not
<azonenberg> Basically what you would need to do is RE most of the bitstream other than the routing and hard IP
<azonenberg> I am extremely interested in doing this but it's a major project
<pervo> yeah, that sounds painful :)
<pervo> right now my proof of concept just generates initial blocks, but the turnaround from resynth and reimplement makes it less than ideal
<azonenberg> Yeah makes sense
<azonenberg> So, what primitives do you need to initialize?
<azonenberg> FFs, RAM, shregs?
<rqou> there was/is a tool that can change the init values of BRAMs, but i never understood how to use it
<azonenberg> You may want to consider just adding reconfiguration logic in your design for the short term, that will reduce Fmax and add quite a bit of gate overhead
<azonenberg> but be easy to implement
<rqou> i don't know if it works on anything else
<azonenberg> rqou: it does not
<azonenberg> and i never got it to work either :p
<pervo> yeah the reconfig logic is something i was planning on trying
<azonenberg> This is one of the many use cases for a published bitstream doc
<azonenberg> and library, etc
<azonenberg> If you want to help us work on 7 series we're definitely interested
<azonenberg> I was going to start on s3a just because it seemed like a simpler project to get basic familiarity with the xilinx uarches
<azonenberg> then generalize to more modern stuff
<pervo> i'm not sure how much i can yak shave on this right now, my pinging you was mostly to gauge how much of a stretch it would be, and it sounds like the answer is: a lot
<azonenberg> Yes its a major project
<azonenberg> Feel free to hang out in this chan and stay updated on our prorgess etc
<pervo> will do, and thanks for the info
<rqou> heh, "progress"
<rqou> current progress: still sick
<azonenberg> rqou: Lol fixing that is generally a prereq to getting work done
<azonenberg> also i didnt hear bac kfrom you re the not-datasheet
<azonenberg> was there any useful info in there?
<azonenberg> section 2.4 needs to be updated with the bladerunner info
<rqou> oh right
<rqou> i did read it
<rqou> it seems pretty good for the parts that are actually documented
<rqou> it seems decently confused which parts are generic across sizes and which parts are 32A-specific though
<azonenberg> yes b/c i didnt know anything about larger devices back in 2014 :p
<rqou> or maybe that was only the ZIA section
<azonenberg> 2015*
<azonenberg> It needs to be udpated
<azonenberg> but i mean, would you like a doc similar to that that's current?
X-Scale has joined ##openfpga
pervo has quit [Ping timeout: 255 seconds]
<rqou> that's probably good initially
<rqou> we'll still point to xilinx appnotes i suppose?
lexano has joined ##openfpga
<rqou> wow the xilinx datasheet itself has very little information
<rqou> all the useful information is in appnotes
lexano has quit [Ping timeout: 246 seconds]
<azonenberg> i would rather rewrite the info just in case xilinx removes anything
<azonenberg> And so all the info is in one place
<azonenberg> we can cite the original appnotes of course
<fouric1> .
<fouric1> huh, that's odd
<fouric1> would anyone happen to know if ##embedded and ##electronics have some sort of IRC permissions thing that i'm not aware of?
<fouric1> apparently, i'm banned on both of those channels, despite never having said anything
<azonenberg> Yes, you have to be registered
<azonenberg> with nickserv
mifune has quit [Ping timeout: 260 seconds]
<fouric1> i am registered, but when trying to change my nick to "fouric" (my registered nick), i get "##electronics :Cannot change nickname while banned on channel"
<fouric1> wait
<fouric1> don't tell me i have to leave, register, and then come back
<azonenberg> You might have to leave and re-identify... idk, i have my client set to auto-id
fouric1 is now known as fouric
<fouric> still "##embedded: Cannot send to channel"
<fouric> wait nvm
<azonenberg> the op of ##embedded is coming over for a bbq in a few hours
<azonenberg> so if you're still having trouble i'll bug him :p
lexano has joined ##openfpga
<fouric> i just had a little glitch with identifying
<fouric> tried again and it worked
<fouric> thank you, azonenberg
<rqou> wait wtf azonenberg how many people are coming to this bbq?
<rqou> how do you know ALL THE PEOPLE?
<azonenberg> rqou: me, error_404, obnauticus and his gf, lain, sgstair, $WIFE, and a non-freenode person from work
<jn__> sounds like fun
<fouric> rqou: you need to find more computer engineering people in your area
<fouric> either that, or convert your neighbors
<rqou> apparently i'm just not that good at meeting people
<fouric> go door-to-door with iCEstick samples
lexano_ has joined ##openfpga
<balrog> azonenberg: yes sure sounds like fun
lexano has quit [Ping timeout: 260 seconds]
lexano_ is now known as lexano
Hootch_Work has quit [Quit: Leaving]
SpaceCoaster has joined ##openfpga
ZipCPU|Laptop has joined ##openfpga