| lekernel | edid works :) | 09:16 |
|---|---|---|
| lekernel | now let's try the xrandr-controlled led blinker | 09:16 |
| larsc | nice | 09:27 |
| lekernel | works fine. so the lvds hack isn't too bad :) | 09:28 |
| lekernel | edid is a bit buggy though, so after a few seconds the rescan fails and the computer drops the video signal.. hmm | 09:29 |
| larsc | rescan? | 09:30 |
| larsc | will it requery the edid? | 09:30 |
| lekernel | the video driver sends edid queries every 10 seconds or so, and assumes the monitor was disconnected if it doesn't get a proper edid | 09:31 |
| larsc | ah, yea, that's the default poll interval for kms drivers | 09:31 |
| larsc | normally you'd assume though that the driver only checks hpd | 09:31 |
| lekernel | well, hdmi, unlike vga, requires edid | 09:32 |
| larsc | but there is no need to rescan the edid if the monitor hasn't been disconnected | 09:33 |
| larsc | btw. I've kind of been able to hack the AbstractActor stuff to do what I want to do. Right now you keep a list of actor classes for which the layout should be infered. A more generic option is to add a flag to the actor class which states if and how the layout should be infered | 09:38 |
| larsc | I think we need to handle 4 different cases. Infer layout from sources, Infer layout from sinks, infer layout from either sinks or sources, infer layout from both sinks and sources | 09:39 |
| lekernel | you could make that "parameter" a static method | 09:51 |
| lekernel | that takes a list of sinks/sources it's connected to, and returns the layout parameters to pass to the constructor | 09:51 |
| lekernel | then you could provide generic functions for simple cases | 09:51 |
| larsc | makes sense | 09:52 |
| lekernel | maybe there should be a way to tell what information that method needs, to resolve dependencies | 09:53 |
| larsc | I think the current algorithem handles that by just trying again and again until all AbstractActors have been instantiated | 09:57 |
| larsc | which is fine for now I guess | 09:59 |
| lekernel | hmm, the bug only manifests itself with nouveau... the proprietary nvidia driver works fine | 11:33 |
| lekernel | it does way fewer rescans though... | 11:34 |
| lekernel | ah, no. it's just doesn't drop the video signal when the bug appears. | 11:38 |
| lekernel | seems to be electrical problems... | 11:46 |
| lekernel | interestingly enough, disconnecting the logic analyzer makes EDID fail completely | 11:50 |
| lekernel | oh, how I love this sort of bug | 11:50 |
| larsc | or the timing could be slightly off | 11:55 |
| lekernel | have you assembled your board yet? | 11:58 |
| larsc | not fully, still missing a few parts | 12:01 |
| lekernel | could it be glitches (that the logic analyzer would remove due to capacitance)...? | 12:04 |
| lekernel | when the video signal is dropped by the nouveau driver, that's after an i2c address phase that is not acked but should be | 12:05 |
| lekernel | and all the FPGA does at this point is sample sda on the rising edge of scl, and compare the address | 12:06 |
| larsc | do you have a capture of the signal? | 12:12 |
| lekernel | http://lekernel.net/fail.png | 12:23 |
| lekernel | that's the transfer that causes the nouveau driver to stop | 12:23 |
| lekernel | when the video signal is off during the initial scan, the exact same waveform (at least, as captured with this thing) makes the FPGA ack | 12:24 |
| larsc | hm, have you checked what the fpga sees? | 12:29 |
| larsc | maybe some glitches on scl causes it to see extra edges | 12:29 |
| larsc | to you use a filter on scl? | 12:29 |
| lekernel | no, I don't - should I? | 12:30 |
| lekernel | why should there be glitches anyway? | 12:30 |
| larsc | I don't know | 12:30 |
| lekernel | http://pastebin.com/ChivkiUn | 12:30 |
| larsc | I'd try to add a short moving avarage filter or something similar to scl | 12:33 |
| lekernel | adding a 500ns delay on scl makes it work without the logic analyzer connected - but video signal is still dropped after a while | 12:43 |
| lekernel | s/500ns/200ns | 12:47 |
| lekernel | no change with an average of 5 samples at 50MHz | 12:59 |
| lekernel | this start to get irritating | 12:59 |
| lekernel | I guess I'll go ahead with the nvidia driver and fix that crap later | 13:00 |
| lekernel | https://pbs.twimg.com/media/BFPshtfCAAE8wP_.png:large | 14:59 |
| Fallenou | yeah :) | 15:11 |
| wpwrak | nice :) | 15:36 |
| kristian1aul | :) | 16:05 |
| GitHub70 | [migen] sbourdeauducq pushed 1 new commit to master: http://git.io/KUUI4g | 18:47 |
| GitHub70 | migen/master 52d1395 Sebastien Bourdeauducq: bank/description: modify reg/mem in-place | 18:47 |
| GitHub173 | [milkymist-ng] sbourdeauducq pushed 3 new commits to master: http://git.io/EMqCVA | 19:01 |
| GitHub173 | milkymist-ng/master e99bafe Sebastien Bourdeauducq: dvisampler: add core, EDID support | 19:01 |
| GitHub173 | milkymist-ng/master eaef346 Sebastien Bourdeauducq: Instantiate DVI sampler core for both ports | 19:01 |
| GitHub173 | milkymist-ng/master 2ae504f Sebastien Bourdeauducq: software/bios: default length 4 for mr command | 19:01 |
| Action: Fallenou starting to play with virtual memory things in netbsd kernel source code | 20:41 | |
| Fallenou | it's going to be fun | 20:41 |
| larsc | lekernel: is there any existing code which makes use of the plumbing actor, against which I could test my changes? | 20:50 |
| larsc | All code in examples/ seems to be single source, single sink | 20:50 |
| lekernel | https://github.com/milkymist/milkymist-ng/blob/master/milkymist/framebuffer/__init__.py | 20:51 |
| larsc | hm, the output generated by migen looks different each time, this makes it pretty hard to verify whether the code is the same | 21:21 |
| larsc | and the framebuffer testbench is broken | 21:25 |
| lekernel | it shouldn't look different... what does? | 21:26 |
| larsc | everything | 21:26 |
| larsc | the indices on named variables change | 21:27 |
| lekernel | that problem came from python iteration orders depending on id's, but I should have fixed it a while ago | 21:27 |
| larsc | stuff gets basically reorder | 21:27 |
| larsc | what's the new way of doing sim.wr(dut.bank.description[addr].field.storage, d) | 21:28 |
| larsc | with the Module API? | 21:28 |
| lekernel | ah, yes, there's a bug... it's different on each run again | 21:29 |
| lekernel | I'll have a look at this | 21:29 |
| lekernel | just define a function called do_simulation(self, sim) and derive from Module | 21:29 |
| mwalle | Fallenou: ah youre porting netbsd? | 21:33 |
| mwalle | btw anyone at ohm2013 ? | 21:33 |
| Fallenou | 22:33 < mwalle> Fallenou: ah youre porting netbsd? < yes :) | 21:33 |
| mwalle | Fallenou: nice :) | 21:33 |
| Fallenou | hopefully I will get some kernel printing on the uart in like 2 or 3 months | 21:34 |
| lekernel | mwalle, are *you* going to ohm? | 21:34 |
| mwalle | lekernel: im planning it | 21:35 |
| mwalle | to got | 21:35 |
| mwalle | got | 21:35 |
| mwalle | arg | 21:35 |
| mwalle | go | 21:35 |
| lekernel | first hacker event? | 21:35 |
| mwalle | yep | 21:36 |
| Fallenou | :) | 21:37 |
| mwalle | btw anyone got a jura impressa (coffee maker) | 21:38 |
| mwalle | e50 | 21:38 |
| lekernel | I stopped going to hacker events after the cccamp 2011 frustration, but I'll give it more thought... | 21:39 |
| lekernel | "Budget ticket, For those who can not even afford a Raspberry PI." *ahem* | 21:39 |
| mwalle | yeah.. ;) | 21:39 |
| lekernel | yea right | 21:39 |
| Fallenou | but can afford the flight to amsterdam :p or car/bus/whatever | 21:40 |
| lekernel | well this pretty much sums up the hardware culture at those events | 21:40 |
| lekernel | and has everything to do with me no longer attending them | 21:41 |
| azonenberg | lekernel: http://colossus.cs.rpi.edu/~azonenberg/unlisted/xc2c32a_bf_neo5x_annotated.jpg | 21:42 |
| mwalle | btw what happend to wolfsprau? | 21:43 |
| lekernel | I'm wondering too... | 21:43 |
| Fallenou | he is swimming in a pool of fpga internal wires | 21:43 |
| lekernel | do you have fresh news? | 21:44 |
| mwalle | azonenberg: what is FB and ZIA? | 21:44 |
| lekernel | azonenberg, very cool! | 21:44 |
| azonenberg | mwalle: FB = function block | 21:44 |
| azonenberg | ZIA = zero-power input array | 21:44 |
| azonenberg | that's semi-internal terminology used by the toolchain | 21:44 |
| azonenberg | lekernel: it's beautiful how well the silicon matches up with the bitstream | 21:44 |
| azonenberg | i knew what to expect before i even opened the package | 21:45 |
| lekernel | what does the ZIA do? | 21:45 |
| Fallenou | thats' like nice christmas presents :) | 21:45 |
| lekernel | routing? | 21:45 |
| azonenberg | It's a switching matrix that routes every function block's output, and every input pin, back to the inputs of the AND array | 21:45 |
| azonenberg | I'm still trying to understand the exact structure of it | 21:45 |
| azonenberg | i have most of it figured out by bruteforce but i don't yet understand the actual structure, i was hoping the silicon could help clarify that | 21:46 |
| lekernel | how is the config flash routed to the OR/AND arrays and the ZIA? | 21:46 |
| lekernel | I thought CPLD had distributed flash | 21:46 |
| lekernel | not large chunks of it | 21:46 |
| azonenberg | It appears not | 21:46 |
| azonenberg | The 2c32a has config SRAM | 21:46 |
| mwalle | maybe someone is interested in https://www.coursera.org/course/vlsicad | 21:46 |
| azonenberg | you can even download a bitstream into the SRAM without touching the flash | 21:46 |
| lekernel | so it copies the flash to distributed SRAM, like FPGAs? | 21:46 |
| azonenberg | Yes | 21:46 |
| azonenberg | That was a surprise to me as well | 21:47 |
| lekernel | ah. I thought one plus of CPLDs was they were live at power up | 21:47 |
| azonenberg | The actual configuration cells are probably regular 6T SRAM or D FFs | 21:47 |
| azonenberg | They are, in theory | 21:47 |
| lekernel | is the download-to-SRAM feature documented, or something you found out? | 21:47 |
| azonenberg | It's semi-documented | 21:47 |
| azonenberg | jtag instruction ICS_SRAM_WRITE | 21:47 |
| larsc | mwalle: already signed up :) | 21:48 |
| azonenberg | ISC* | 21:48 |
| mwalle | and at least altera has "real-time programming" (altera buzzword) where the cpld can be flashed while it is still working with the old configuration | 21:49 |
| azonenberg | Same here | 21:49 |
| azonenberg | You can write to the SRAM or the flash independently of the other | 21:49 |
| mwalle | larsc: nice, i guess i wont find time to do the assignments :( | 21:49 |
| azonenberg | i dont know if xc9500* has that feature but cr-ii does | 21:49 |
| azonenberg | cr-ii is a much nicer architecture | 21:49 |
| larsc | mwalle: me neither, just trying to follow the lectures | 21:50 |
| mwalle | larsc: you are not watching the lectures with an android device, do you? :) | 21:51 |
| larsc | no, on my laptop | 21:51 |
| larsc | btw. there is also https://www.coursera.org/course/mosfet | 21:52 |
| lekernel | azonenberg, you | 21:53 |
| azonenberg | lekernel: ? | 21:53 |
| lekernel | azonenberg, have you checked some microsemi/actel devices? | 21:53 |
| lekernel | sorry | 21:53 |
| azonenberg | Funny you ask | 21:53 |
| azonenberg | http://colossus.cs.rpi.edu/pictures/2013/March/3-11-2013%20-%20decapping/a3p030/a3p030_01_bf_neo5x.jpg | 21:53 |
| azonenberg | I have had zero time to analyze it | 21:53 |
| azonenberg | just a few pictures in that directory | 21:53 |
| lekernel | :) | 21:53 |
| azonenberg | Look at the date ;) | 21:54 |
| lekernel | and those have distributed flash? | 21:54 |
| azonenberg | Unknown | 21:54 |
| azonenberg | I opened it up and took a few photos | 21:55 |
| azonenberg | that was all i had time for | 21:55 |
| azonenberg | I did an XC2C64A as well http://colossus.cs.rpi.edu/pictures/2013/March/3-11-2013%20-%20decapping/xc2c64a/xc2c64a_bf_neo5x.jpg | 21:55 |
| azonenberg | No analysis on that | 21:55 |
| Fallenou | azonenberg: how much time does it take to decap a chip and then take a picture ? | 21:56 |
| azonenberg | Hmm, maybe an hour? But you can run a lot of chips at once on the hot plate | 21:57 |
| lekernel | azonenberg, another thing to consider taking apart is a spartan 3an device | 21:57 |
| lekernel | those with integrated flash | 21:57 |
| azonenberg | i did a dozen chips of nine part numbers in that run | 21:57 |
| lekernel | I think there are separate dies... | 21:57 |
| azonenberg | Yes | 21:57 |
| azonenberg | It's stacked die SPI | 21:57 |
| azonenberg | I havent taken one apart but docs say it's "similar to" Atmel DataFlash | 21:57 |
| Fallenou | azonenberg: what do you use for taking the pictures? pice range of it? | 21:57 |
| azonenberg | There's an SPI_ACCESS primitive in spartan6 too | 21:57 |
| azonenberg | but as far as i know there was never a Spartan-6N series | 21:58 |
| azonenberg | Fallenou: The optical microscope is an olympus BHM | 21:58 |
| azonenberg | $250 on ebay for the body with objectives and a binocular head, another $250 for a head with the camera port | 21:59 |
| azonenberg | sold new for probably ten times that | 21:59 |
| Fallenou | hum, the ebay price seems very reasonable | 21:59 |
| azonenberg | I got lucky | 21:59 |
| lekernel | but unfortunately non-reproducible :( | 21:59 |
| azonenberg | they were asking $500 OBO | 21:59 |
| Fallenou | how much magnification is needed ? | 21:59 |
| azonenberg | i offered 250 with the intention of negotiating | 22:00 |
| azonenberg | but they sold it to me right then and there | 22:00 |
| Fallenou | :) | 22:00 |
| azonenberg | Fallenou: Depends on what you're looking at | 22:00 |
| azonenberg | For something modern like spartan6, optical won't be of use for more than the top layer or two | 22:00 |
| azonenberg | you need a SEM | 22:00 |
| Fallenou | I guess I can forget about SEM | 22:00 |
| azonenberg | On the other hand for old MCUs made on like a 500nm process, 400x is fine | 22:00 |
| Fallenou | ok | 22:01 |
| azonenberg | with 1000x you can do 350nm stuff | 22:01 |
| azonenberg | maybe 250 if you're really careful and have high-end optics | 22:01 |
| azonenberg | 180 and below pretty much needs SEM if you want to see all the details | 22:01 |
| azonenberg | Being a student at a tech school is nice, i get access to all the labs :) | 22:02 |
| azonenberg | and the rates are quite reasonable | 22:02 |
| azonenberg | the one i took the spartan6 pic on is $65 an hour | 22:02 |
| Fallenou | I just hit that : http://www.ebay.fr/itm/Coolingtech-500X-ZOOM-8-LED-USB-Digital-Microscope-Video-Camera-New-Version-/251244191697?pt=UK_BOI_Medical_Lab_Equipment_Lab_Equipment_ET&hash=item3a7f521fd1 | 22:02 |
| azonenberg | they have a lower end one available for i think 45 or 4o | 22:02 |
| azonenberg | 40* | 22:02 |
| Fallenou | is this total shit ? | 22:02 |
| Fallenou | price seems very low | 22:02 |
| azonenberg | Yes | 22:02 |
| azonenberg | 500x, lol | 22:02 |
| azonenberg | i can magnify anything 500 times | 22:03 |
| azonenberg | doesnt mean it'll be anything but a blur :p | 22:03 |
| Fallenou | =) | 22:03 |
| azonenberg | There are good optics and cheap optics, but no good cheap optics | 22:03 |
| azonenberg | Compare: http://colossus.cs.rpi.edu/pictures/2013/January/01-18-2013%20-%20ENC424J600/enc424j600_01_bf_am40x_annotated.jpg | 22:03 |
| azonenberg | AmScope objective | 22:03 |
| azonenberg | http://colossus.cs.rpi.edu/pictures/2013/January/01-18-2013%20-%20ENC424J600/enc424j600_02_bf_neo40x_annotated.jpg | 22:03 |
| azonenberg | Olympus Neo40 objective | 22:03 |
| mwalle | Fallenou: we have that at work, its crap ;) | 22:03 |
| azonenberg | Same camera, same specimen | 22:03 |
| Fallenou | mwalle: ok ^^ | 22:03 |
| azonenberg | different lenses | 22:03 |
| Fallenou | azonenberg: wow indeed | 22:04 |
| azonenberg | Fallenou: For scale the smallest wires visible in the Olympus image are about 500nm across | 22:04 |
| azonenberg | the device is a 250 or 180nm process but this is an upper metal layer | 22:04 |
| mwalle | gn8 | 22:06 |
| Fallenou | gn8! | 22:07 |
| GitHub100 | [migen] sbourdeauducq pushed 1 new commit to master: http://git.io/--7e7g | 22:09 |
| GitHub100 | migen/master fc88319 Sebastien Bourdeauducq: bank/csrgen/BankArray: create banks in sorted order | 22:09 |
| lekernel | larsc, there's another source of non-deterministic names, will nail it down tomorrow | 22:09 |
| lekernel | gn8 | 22:09 |
| Fallenou | wow they have tons of this shitty microscope | 22:09 |
| Fallenou | it floods the ebay pages | 22:09 |
| Fallenou | they must sell like pancakes | 22:10 |
| Fallenou | and then end up directly in the bin | 22:10 |
| azonenberg | Lol, yep | 22:10 |
| azonenberg | Note that the AmScope that took that blurry picture | 22:10 |
| azonenberg | sells new for around $1000 | 22:10 |
| azonenberg | and looks that bad compared to the olympus | 22:10 |
| azonenberg | now imagine what $50 optics will look like ;p | 22:10 |
| Fallenou | omg :) | 22:11 |
| Fallenou | I guess quality is even more important when you want to see something of the order of a few hundreds nm | 22:12 |
| Fallenou | that's pretty damn small | 22:12 |
| azonenberg | Lol, yes | 22:12 |
| azonenberg | The objective is the most critical part | 22:12 |
| azonenberg | you can skimp on eyepieces to some extent | 22:12 |
| Fallenou | eyepieces? | 22:12 |
| azonenberg | You *do* want to see whatever is under that objective, right? | 22:13 |
| azonenberg | you need something to look through ;) | 22:13 |
| Fallenou | yes indeed =) | 22:14 |
| Fallenou | ok, vocabulary problem | 22:14 |
| Fallenou | ok, all netbsd .c / .S file compile fine | 22:17 |
| Fallenou | now the final linking part is failing :) | 22:17 |
| --- Thu Mar 14 2013 | 00:00 | |
Generated by irclog2html.py 2.9.2 by Marius Gedminas - find it at mg.pov.lt!