m_w has joined ##openfpga
kuldeep has quit [Remote host closed the connection]
kuldeep has joined ##openfpga
<DocScrutinizer05> ta! :-)
pie_ has joined ##openfpga
pie_ has quit [Changing host]
pie_ has joined ##openfpga
scrts has quit [Ping timeout: 258 seconds]
scrts has joined ##openfpga
kuldeep_ has joined ##openfpga
ChickeNES has quit [Excess Flood]
kuldeep has quit [Remote host closed the connection]
SuperChickeNES has joined ##openfpga
DocScrutinizer05 has quit [Disconnected by services]
DocScrutinizer05 has joined ##openfpga
SuperChickeNES is now known as ChickeNES
<azonenberg> whitequark: around?
digshadow has quit [Quit: Leaving.]
digshadow has joined ##openfpga
<whitequark> azonenberg: yes
mtp has quit [Read error: Connection reset by peer]
<azonenberg> whitequark: Can you take a look at my LFOsc and RingOsc unit tests?
<azonenberg> They're giving garbage results for unknown reasons
<azonenberg> frequencies in the 60 MHz range etc
<azonenberg> or was it 600?
<azonenberg> either way, totally garbage
mtp has joined ##openfpga
<azonenberg> So hmm, PARing the DACs will be fun b/c they share inputs from the DCMPs
<azonenberg> If there are no DCMPs used, it's easy
<azonenberg> create one, assign our input to it, place it at DCMP1
<azonenberg> if all 3 DCMPs are used, it's easy
<azonenberg> if none of them share our input, fail
<azonenberg> if at least one has our input, make sure it's placed at DCMP1
<azonenberg> but it gets trickier in other cases where we don't know if replication is required...
<whitequark> azonenberg: so, hm
<whitequark> I don't have an oscilloscope right now
<azonenberg> i have one and can probe, but i'm all but certain the bitstream is correct
<azonenberg> and the measurement is wrong
<azonenberg> Unless i'm sending out the wrong pin or something
<azonenberg> or not doing some setup properly
<azonenberg> i tried to basically copy the measurement setup done for the rc osc trim
<whitequark> ahh so the board is suspect?
<whitequark> ok hm
<azonenberg> All i know for certain is that a correct-looking HDL module is giving totally wrong results in that test
<azonenberg> and given that the board works properly for RC oscillator trimming
<azonenberg> plus tests of the LF and ring oscillator in my blinky test
<azonenberg> I suspect the test case
<azonenberg> I'm trying to up our hardware test coverage and get at least one HiL test case written for each module we currently support
<whitequark> ok, I'll take a look, but not right now
<whitequark> primarily because I have a serious toothache and that makes it pretty hard to concentrate on debugging
<azonenberg> oh joy
<azonenberg> Gonna go to a dentist?
<whitequark> buy some ibuprofen for a start
<azonenberg> Won't solve the problem but may make it more bearable
<whitequark> indeed
* azonenberg is now working on parallel counter output
<azonenberg> At least to start, you won't be able to infer them
<azonenberg> and if you need parallel output you have to instantiate it
<openfpga-github> [yosys] azonenberg pushed 1 new commit to master: https://github.com/azonenberg/yosys/commit/27a626ce9851f4f5832892d5bd6d60258af03ada
<openfpga-github> yosys/master 27a626c Andrew Zonenberg: greenpak4: Added POUT to GP_COUNTx cells
Bike has quit [Quit: fear god]
<lain> happy new year!
mifune has joined ##openfpga
<clifford> azonenberg, looks like nobody has made iCE40 die photos so far. process node is similar to spartan 6 and that one is on siliconpr0n. how big of a project would it be to make die photos of iCE40 HX1K and/or HX8K?
<nats`> pretty small for someone already having the microscope and the decapping acid
pie__ has joined ##openfpga
pie_ has quit [Ping timeout: 265 seconds]
<whitequark> mmhm, let me check the local shops
mifune has quit [Ping timeout: 260 seconds]
Ardeshir has joined ##openfpga
mifune has joined ##openfpga
mifune has joined ##openfpga
mifune has quit [Changing host]
mifune has quit [Ping timeout: 260 seconds]
<azonenberg> clifford: Top metal only or all layers?
<azonenberg> Top metal overview is pretty easy
<azonenberg> you can do that optically
<azonenberg> all layers SEM is a much bigger project
<azonenberg> clifford: On modern deep-submicron processes, the top metal layer generally doesn't have a ton to see
<azonenberg> clifford: it's all power distribution routing
<azonenberg> So you can image it optically, largest features are several microns across
<azonenberg> sometimes even tens of microns
<azonenberg> But all of the interesting bits are further down
<azonenberg> Personally, the image that I find most useful for showcasing the chip as well as floorplan analysis of major blocks is the bare silicon after etching off all metal and poly
<azonenberg> Compare (PIC12F683, 350 nm) top metal http://siliconpr0n.org/archive/lib/exe/fetch.php?cache=&media=azonenberg:microchip:pic12f683_m3_bf_neo10x_4k.jpg
<azonenberg> vs poly (active looks pretty similar at low mag): http://siliconpr0n.org/archive/lib/exe/fetch.php?cache=&media=azonenberg:microchip:pic12f683_poly_bf_neo10x_4k.jpg
Ardeshir has quit [Quit: Leaving]
<azonenberg> That is also fairly easy to image, you won't see all of the detail but it's probably going to be possible to see the config memory, LUT/slice boundaries, etc a lot easier
<azonenberg> if you want full netlist extraction like i did for parts of coolrunner that's a very involved process
<azonenberg> as you're talking thousands of photos and polishing to every intermediate metal layer (probably about 8 of them at that node)
<clifford> azonenberg, the motivation would be floorplan analysis and figuring out which resource takes up what amount of area, not creating a silicon netlist.
<clifford> top metal would probably ok, but I agree that poly looks much much nicer.
<azonenberg> Well, i dont have a photo handy
<azonenberg> Poly is hard to do because it requires a planar delayert
<azonenberg> delayer*
<azonenberg> but bare silicon can be done with a HF etch
<azonenberg> and at optical magnification is generally pretty indistinguishable from poly
<azonenberg> I'll poke digshadow, he has this more automated than i do
<azonenberg> clifford: If you supply a couple of chips (say 2 of each density) we can probably make this happen
pie___ has joined ##openfpga
pie__ has quit [Ping timeout: 258 seconds]
pie_ has joined ##openfpga
pie___ has quit [Ping timeout: 268 seconds]
pie_ has quit [Ping timeout: 248 seconds]
mifune has joined ##openfpga
<azonenberg> So clifford, lain, and anybody else who's awake
<azonenberg> I have a fun problem with the greenpak4 DAC input routing
<azonenberg> in particular, each DAC can take its digital input from an 8-bit bitstream-defined constant (already implemented)
<azonenberg> or the negative input of DCMP1
<azonenberg> Which is a mux
<azonenberg> If there are no DCMPs used, this is easy
<azonenberg> infer a hidden one, ignore output, just use the input
<azonenberg> but if DCMPs are used i'm trying to think how best to implement this constraint
<azonenberg> Do i create a hidden "DCMP input mux" object and route that separately?
<azonenberg> b/c then i could have the user's input signal drive a DCMPInputMux object, have that output drive both a GP_DCMP and the two GP_DAC objects
<lain> ehhh I dunno
<lain> I'm neck-deep in llvm target code :P
<azonenberg> and if not, how do i describe the routing constraint
<azonenberg> that DCMP1 must have the same input as this dac?
<azonenberg> seems like creating a node to be PAR'd is the natural solution
<openfpga-bb> build #62 of openfpga is complete: Failure [failed test_openfpga_normal] Build details are at https://openfpga-dashboard.antikernel.net/builders/openfpga/builds/62 blamelist: Andrew Zonenberg <azonenberg@drawersteak.com>
<openfpga-github> [openfpga] azonenberg pushed 1 new commit to master: https://git.io/vMqva
<openfpga-github> openfpga/master 4184719 Andrew Zonenberg: doc: Added documentation for POUT output of GP_COUNTx
<azonenberg> openfpga-bb: force build
<openfpga-bb> you must provide a Builder, try 'force build [--branch=BRANCH] [--revision=REVISION] [--props=PROP1=VAL1,PROP2=VAL2...] <WHICH> <REASON>'
<azonenberg> openfpga-bb: force build Forgot to plug in the dev board :(
<openfpga-bb> no such builder 'Forgot'
<azonenberg> hrr
<azonenberg> grr*
<lain> lol
<azonenberg> This should do the trick :P
<openfpga-bb> build #63 of openfpga is complete: Failure [failed test_openfpga_normal] Build details are at https://openfpga-dashboard.antikernel.net/builders/openfpga/builds/63 blamelist: Andrew Zonenberg <azonenberg@drawersteak.com>
<openfpga-github> [openfpga] azonenberg pushed 1 new commit to master: https://github.com/azonenberg/openfpga/commit/e1c6877dea1c4712c552f7763a77dfcd90e5221f
<openfpga-github> openfpga/master e1c6877 Andrew Zonenberg: greenpak4: Added some comments for DCMP input routing
<azonenberg> curious
<azonenberg> still failing for hardware reasons
<openfpga-github> [openfpga] azonenberg pushed 1 new commit to master: https://git.io/vMqfJ
<openfpga-github> openfpga/master afd23bf Andrew Zonenberg: gp4par: Fixed typo in comment
<openfpga-bb> build #64 of openfpga is complete: Failure [failed test_openfpga_normal] Build details are at https://openfpga-dashboard.antikernel.net/builders/openfpga/builds/64 blamelist: Andrew Zonenberg <azonenberg@drawersteak.com>
<azonenberg> ok that looks better but still failing on the oscillator tests for who knows what reason
mifune has quit [Ping timeout: 260 seconds]
<lain> whitequark: do you know off the top of your head how to represent shadow registers in the RegisterInfo.td file? having trouble finding info on it
<lain> ah nvm
Bike has joined ##openfpga
pie_ has joined ##openfpga
<digshadow> clifford: get me ice40 die(s) and I'll take some pictures
m_t has joined ##openfpga
<azonenberg> digshadow: he said he was sending them to me but i can forward to you, or if he didn't send them yet we can change the dest address
<azonenberg> my plan was to decap and quickly inspect then send you bare dies for imaging
<digshadow> works for me
<digshadow> would definitely simplify things on my end
<digshadow> how much are these things
<digshadow> aren't they like $1
<digshadow> or is that just the greenpak
<azonenberg> greenpak is $0.50 single unit and $0.35 volume
<azonenberg> ice40 is substantially larger
<azonenberg> up to ~8000 LUT4s
<azonenberg> so close to the smallest artixes
<lain> is that enough to implement a gameboy? :P
<azonenberg> i fit an 8-bit RISC CPU (custom ISA), UART, and 32 PWMs in 1408 LUT4s
<azonenberg> less, the chip had 1408 and i had a small handful free
<lain> :D
<azonenberg> Was also my first fpga project
<azonenberg> so i prboably did lots of dumb thigns
<lain> aha
<digshadow> lain: a few people have expressed interest in doing polygon capture on the gameboy die images
<digshadow> but no serious takers yet I think
Ardeshir has joined ##openfpga
<cr1901_modern> azonenberg: A good metric I've heard is that ice40hx8k is approx a Spartan 6 LX5
<cr1901_modern> if such a thing existed
<cr1901_modern> I thought the smallest artix was quite larger than the smallest Spartan 6, tbh
<azonenberg> cr1901_modern: smallest spartan6 is a lx4
<azonenberg> smallest artix available now is the 15k
<azonenberg> but there are 9 and 6 announced
<azonenberg> not yet available
<azonenberg> or maybe those are only spartan7
<azonenberg> i know there's some new low-density 7 series in the works
<lain> those are s7 yeah
<cr1901_modern> Are the LUT archs the same between artix 7 and spartan 6?
<cr1901_modern> or approx the same?*
<azonenberg> Similar
<lain> I dunno if slices are same, but I think both are 6-LUT?
<azonenberg> 7 series removed the stupid slices with no carry chains or wide muxes
<lain> lol
<azonenberg> everything has muxes and carry afaik
<azonenberg> in s6 that really limited utilization for things like crypto
<cr1901_modern> I did a calculation some time ago and calculated that spartan 3 4-LUT 200k is approx 4/9ths the size of a LX9
<azonenberg> its not even directly comparable b/c of hard ip, block ram, different lut architectures
<azonenberg> it totally depends on your design
<azonenberg> like, having more DSP slices / wider multipliers wont help a non-DSP application at all
<azonenberg> wider luts may make 50% less utilization for some designs or make no difference for others
<cr1901_modern> I didn't add a factor accounting for wider LUTs, tbh. Just raw usage of slices
<cr1901_modern> I don't think it's a *bad* rule-of-thumb when getting size comparisons between FPGA families in the first place is convoluted
<azonenberg> xilinx's marketing numbers say a lut6 + two FFs = 1.6 logic cells
<azonenberg> where a logic cell is a lut4 + ff
<cr1901_modern> Based on a wide variety of real world tests conducted, and totally not a number pulled out of their asses :D
<azonenberg> lol
<azonenberg> in other news, i'm going to try and get a yosys-smtbmc verification flow working with splash v0.2 over the next few days
<azonenberg> rather than the old sat solver i was using, smt should be faster
<cr1901_modern> I need to get yosys-smtbmc working on Windoze
<cr1901_modern> well, z3 works AFAICT, but of course yosys-smtbmc uses the "Unixism" of "calling select() without calling WSAStartup() first :D"
<azonenberg> Lol
<cr1901_modern> ^That is a joke btw
<azonenberg> As i port all of my old antikernel code over and clean it up
<azonenberg> I'm going to try and make formal tests for as much of the core system as i can
digshadow1 has joined ##openfpga
<cr1901_modern> I have a crappy SPI core I wrote on Christmas Day (motivation to write it must've been a Christmas Present from the Deity itself). Have a few invariants that I assume that I want to formally verify
digshadow has quit [Ping timeout: 252 seconds]
<azonenberg> Yeah in my case what i want to do is get a lot better at formal stuff
<azonenberg> rewrite a bunch of my modules with parameterizable size
<azonenberg> Prove correctness at least for a reduced-size version that generalizes to the full data width
* azonenberg waits for z3 to compile
digshadow has joined ##openfpga
digshadow1 has quit [Ping timeout: 258 seconds]
pie__ has joined ##openfpga
pie_ has quit [Ping timeout: 258 seconds]
<azonenberg> clifford: Does yosys SMT not support initialized/zero-filled memory?
<azonenberg> had some trouble tinkering with it earlier
<azonenberg> actually no that isnt my problem
<azonenberg> clifford: http://pastebin.com/raw/AhGeTBw2
<azonenberg> < (error "line 280 column 82: invalid function/constant definition, sort mismatch")
<azonenberg> SMT Solver Error: (error "line 280 column 82: invalid function/constant definition, sort mismatch")
<azonenberg> ideas?
<lain> to initialize to zero, don't you just assume memory is zero in the initial block?
cr1901_modern has quit [Ping timeout: 258 seconds]
pie___ has joined ##openfpga
pie__ has quit [Ping timeout: 265 seconds]
m_w has quit [Quit: leaving]
<azonenberg> lain: yeah but i am trying to do this on synthesizeable code
<azonenberg> more importantly, though
<azonenberg> even without init it's failing :p
<lain> right but I mean I thought the actual way that you tell the smt solver to zero the mem is by making that an initial assume
<lain> because the solver isn't going to - if I understand correctly - sim the code with your zero routine
<clifford> azonenberg, Looks like porta_dout_0 is 16 bits wide, but at the same time it is 2 bits wide ?!
<azonenberg> clifford: /me looks at the rtl
<lain> quantum port sizes
<clifford> can you show me the HDL code and synthesis script for this?
<lain> superportsition
<azonenberg> read_verilog -formal ../../../antikernel-ipcores/device_abstraction/MemoryMacro.v
<azonenberg> read_verilog -formal main.v
<azonenberg> prep -nordff -top main
<azonenberg> that's your synth script
<azonenberg> gimme a sec to push the hdl
<azonenberg> ... derp
<azonenberg> i think i forgot a width attribute
* azonenberg facepalms
<lain> :D
<azonenberg> yeah its an easy bug now that i know what to look for
<azonenberg> but i was very confused based on the smt error :p
<azonenberg> synth script included in that directory
<azonenberg> it synthesizes OK
<azonenberg> and yosys-smbmc fails the assertion at main.v:182
<azonenberg> is there any way i can dump a VCD or other counterexample to investigate?
<azonenberg> this is my first time trying to do SMT instead of SAT verification
<clifford> see "yosys-smtbmc --help" for list of all options. --dump-vcd <vcd_filename> is the one you are looking for.
<azonenberg> ok
<azonenberg> And if it says "assert failed"
<azonenberg> does it tell you what time step that failed in?
<azonenberg> is it the last one in the dump?
<azonenberg> Welp, it seems i have a bug
* azonenberg investigates
<clifford> azonenberg, fixed the bug in commit f0df7dd. Now you'll get a warning from "hierarchy" and the correct smt file.
<azonenberg> :)
<azonenberg> thanks
<openfpga-github> [yosys] azonenberg pushed 8 new commits to master: https://github.com/azonenberg/yosys/compare/27a626ce9851...babd8dc5b179
<openfpga-github> yosys/master 2198948 Clifford Wolf: Improved write_json help message
<openfpga-github> yosys/master 4f5efc3 Clifford Wolf: Updated ABC to hg id f591c081d5e7
<openfpga-github> yosys/master 4cf3170 Clifford Wolf: Merge pull request #284 from azonenberg/master...
m_t has quit [Quit: Leaving]
<whitequark> azonenberg: so I did root canal on myself, which solved that problem
<whitequark> but it's late and I want to sleep, so tomorrow maybe
<lain> wat
<whitequark> lain: I had a toothache
<lain> whitequark: how does one self-root canal
<whitequark> lain: with pliers and a piece of wire, evidently
<lain> sounds ... safe?
<whitequark> I dunno it worked
<lain> welp
<whitequark> I mean
<whitequark> ultimately it is not that different from what a dentist would use
<whitequark> except packing
<whitequark> and I'm gonna see an actual one to pack it
<lain> isn't a drill generally involved, to get into the tooth?
<whitequark> pliers.
<lain> ah right
<whitequark> I broke off pieces of the crown until the canal got exposed
<whitequark> that was the most painful part
<lain> wheee
<whitequark> a dremel *did* cross my mind
<lain> haha
<azonenberg> whitequark: loool
<azonenberg> so um, are you gonna work on the bug now? :p
<azonenberg> (when you get up)
<whitequark> yeah sure
<whitequark> have a few hours tomorrow
Ardeshir has quit [Quit: Leaving]
pie___ has quit [Ping timeout: 248 seconds]
pie_ has joined ##openfpga