Monday, 2019-08-19

*** tpb has joined #yosys00:00
*** lutsabound has quit IRC02:20
*** citypw has joined #yosys02:48
*** citypw has quit IRC03:18
*** promach has joined #yosys03:20
promachFor https://gist.github.com/promach/cf3ae626a85badad6cd822d3107c86b7#file-spidergon-ys , may I know why I am getting a lot of loop warnings ?03:21
tpbTitle: Spidergon Networks On Chip · GitHub (at gist.github.com)03:21
promachWarning: Detected loop at \flit_data_output_are_valid[8] [0] in spidergon_top03:22
*** PyroPeter has quit IRC03:36
*** PyroPeter has joined #yosys03:49
*** rohitksingh has quit IRC04:20
*** rohitksingh has joined #yosys04:29
*** rohitksingh has quit IRC05:10
*** dys has joined #yosys05:41
*** jakobwenzel has joined #yosys06:13
*** Cerpin has quit IRC06:15
*** Cerpin has joined #yosys06:16
*** Cerpin has quit IRC06:33
*** Cerpin has joined #yosys06:38
*** Cerpin has quit IRC06:43
*** dys has quit IRC07:01
*** dys has joined #yosys07:12
*** emeb_mac has quit IRC07:57
*** futarisIRCcloud has quit IRC08:23
*** _whitelogger has quit IRC09:15
*** _whitelogger has joined #yosys09:17
*** pie_ has quit IRC09:37
*** s_frit has quit IRC10:11
*** s_frit has joined #yosys10:12
*** adjtm_ has quit IRC11:04
*** maikmerten has joined #yosys12:17
maikmertenhmmm... "Efinix Trion"... never heard of that FPGA before. Is now high-season for FPGA startups?12:17
maikmertenthe higher-tier models have MIPI-PHY and (LP)DDR3... wonder if they're after machine vision12:21
*** citypw has joined #yosys13:54
*** pie_ has joined #yosys14:06
*** jrolli has joined #yosys14:22
*** emeb has joined #yosys14:27
*** adjtm has joined #yosys14:58
*** citypw has quit IRC15:01
*** jakobwenzel has quit IRC15:25
*** dys has quit IRC16:27
*** dys has joined #yosys16:41
*** SpaceCoaster has quit IRC17:21
*** SpaceCoaster has joined #yosys17:23
*** Jybz has joined #yosys18:09
*** maikmerten has quit IRC18:17
*** smarter has quit IRC18:54
*** smarter has joined #yosys18:54
*** rohitksingh has joined #yosys19:59
*** rohitksingh has quit IRC20:20
*** rohitksingh has joined #yosys20:22
*** rohitksingh has quit IRC20:33
*** Jybz has quit IRC20:39
*** shapr has joined #yosys21:00
shaprgood afternoon!21:00
ZirconiumXGood evening21:00
shaprI recently acquired a fomu and I'd like to try installing something like j1a swapforth21:00
shaprshould I expect yosys/icestorm/etc to build and work correctly straight out of the git repos?21:01
ZirconiumXshapr: The UP5K is a well-supported chip, so Yosys/nextpnr should work fine21:01
ZirconiumXIceprog might, but I don't know too much about it21:01
shaprIn that case, I'll stick with icestorm/yosys/nextpnr21:02
* shapr clones a bunch of things21:02
*** emeb_mac has joined #yosys21:04
ZirconiumXnextpnr might take a while to build21:04
shaprI forget the order, icestorm -> yosys -> nextpnr?21:04
shaprI found instructions at one point21:04
ZirconiumXyosys -> nextpnr -> iceprog21:04
ZirconiumXyosys builds an optimised netlist, nextpnr turns that into a bitstream for the FPGA, iceprog uploads it to the FPGA21:05
ZirconiumXshapr: Don't expect anything earth-shatteringly fast with an ice40 though21:05
ZirconiumXBut it's good for experiments21:06
emilyI think shapr meant build order, in which case icestorm -> nextpnr can be parallel with yosys21:14
shapremily: yes, thanks!21:14
*** rohitksingh has joined #yosys21:15
emilyZirconiumX: you wouldn't complain about nextpnr build time if you had to do the pypy -> icestorm -> nextpnr bootstrap dance I did for nixpkgs updates.21:15
shaprI have several cores and a whole bunch of RAM on this laptop21:15
emilyit takes like several hours pegging one core of your CPU to 100% with python2.721:15
emilyall so the icestorm and nextpnr builds can be faster for downstream users21:15
shaprI should really switch to nixOS *sigh*21:15
emilyworse, the build wrapper makes it not even print the mandelbrot set it normally does on bootstrap :<21:16
ZirconiumXemily: fair point21:16
emilymaybe I should just rewrite icestorm in Rust or something.21:16
shaprsince I just got the fomu ~48 hours ago, I'm writing a blog post on how to get started loading micropython and bitstreams21:17
shaprstep zero -> how to load the default bitstream when you screw up something21:17
shaprnegative numbered steps -> icestorm, nextpnr ; yosys21:17
shapraw, icestorm build does not use many cores :-(21:19
emilyagain, python21:19
* shapr sighs21:19
* shapr shrugs21:19
emilyI think it supports -jN though?21:19
shaproh it does?!21:19
emilyalso pypy makes it faster.21:19
* shapr adds that to notes21:19
shaprprobably won't make it into the blog post, because tools build once21:20
shapremily: useful advice for package maintenance21:20
emilythey only build once except when the releases are a year old and you need to use git to have support for a whole class of devices :p21:20
ZirconiumX<emily> maybe I should just rewrite icestorm in Rust or something. <--- Mistral's analysis tools are Rust21:20
emilyZirconiumX: ah, you're reverse-engineering Intel devices right? is that the codename?21:21
ZirconiumXYup21:21
shaprI still don't know rust, but I've done some C++ and a bunch of Haskell, shouldn't be a big jump, right? :-D21:22
ZirconiumXIt's a pun on Cyclone; the Mistral is a cold wind in the south of France21:22
ZirconiumXshapr: Both will help you, but you'll need to fight the borrow checker before you get Rust21:22
shaprI've heard scary stories21:22
emilyshapr: the third key you'd need is linear logic.21:23
shaprooh, I like linear logic21:23
ZirconiumXemily: Rust is affine though, right?21:23
shaprI kept thinking there must be some connection with the borrow checker21:23
shaprlinear types hold values that must be used no more than once, and no less than once21:23
emilyZirconiumX: well, yeah. and it's more like it just has affine-logic-like substructural rules than it actually being a linear lambda calculus directly tbh21:23
* shapr reads https://math.stackexchange.com/questions/275310/what-is-the-difference-between-linear-and-affine-function21:23
emilybut I more mean the general mindset21:23
emilyshapr: affine = you can use (non-copiable) values at most once (it's ok to drop/deallocate them)21:24
shaproh ok21:24
ZirconiumXThe "at most" is actually "it's okay to forget them"21:24
emily(you can also take an exclusive mutable reference to such a value, *or* an arbitrary number of copiable immutable ones)21:24
shaprzero or one21:24
emilyZirconiumX: yeah... that wasn't true pre-1.0 though ;.;21:24
* emily would be happier with a true linear type system for a bunch of reasons21:25
shapremily: I want to hear why!21:25
shaprreminds me a bit of Clean's uniqueness types21:25
*** rohitksingh has quit IRC21:25
ZirconiumXSince you could build mem::forget in safe Rust, it was by definition a safe function21:25
shapremily: do you have a blog or other social media account where you write about these things?21:25
ZirconiumXShe's @lambdakitten on Twitter I think21:25
emilyZirconiumX: by that logic, any memory safety bug in a std function means that being memory unsafe is safe Rust21:26
* shapr follows21:26
emilyI prefer to think of it as: the Rc implementation was unsafe21:26
emilyah, sorry for all the off-topic, though ^^;21:26
ZirconiumXemily: Which is why they get fixed rapidly :P21:26
emilyit was seriously considered adding an automatic Leak trait and requiring it for Rc21:26
emilyjust dismissed for ergonomic reasons21:26
shaprI didn't get that21:26
ZirconiumXThings are only off-topic when people have valid on-topic things to talk about :P21:27
shaprha, right21:27
shaprsame for #haskell and other channels where I have ops21:27
ZirconiumXThat's my rule21:27
emilyshapr: as for reasons I'd like a linear type system: well, leak-freedom is a nice property when you can get it. I'd also prefer the more explicit rather than magic handling of destructors/deallocation that you'd get for that. it lets you add things like &out references, that you have to fill in with a value (think of e.g. placement-new in C++ (when you want to allocate an unboxed object in some already-existing space, like21:28
emilyan element of a vector))21:28
shaprAre you saying that safe Rust can be used to build unsafe things? and the Leak trait was proposed for ... what's Rc ?21:28
emilythis is all old irrelevant obsolete stuff :)21:28
ZirconiumXemily: have you read https://gankra.github.io/blah/linear-rust/#adding-proper-must-use-types-to-rust ?21:28
tpbTitle: The Pain Of Real Linear Types in Rust (at gankra.github.io)21:28
emilybefore Rust was stable, it was unsafe to leak objects without destructing them21:28
emilyit is now considered safe to do so21:28
shaproh, I see!21:28
emilybecause you could already construct reference cycles with e.g. reference counting21:29
shaprI have wondered how it's possible to build a cyclic data structure in Rust21:29
emilyZirconiumX: I forget if I've read the whole thing but I have talked to gankra on this topic a bit :)21:29
shapror in any linear typed system21:29
emilyZirconiumX: tl;dr I'd change a lot of other things about Rust too and also I'll just point to "Ok having actually written this all out, it's better than I thought." :P21:29
ZirconiumXshapr: indexing21:29
emilyshapr: either using indices into some heap rather than references or manually-checked unsafe code (the latter is used to implement most of the common things you'd find in a data structures text in the stdlib etc.)21:30
ZirconiumXIf you have your data structure in an array and have each member hold an array index, you can build a data structure where stuff isn't owned21:30
emilywhich is a shame, but it still means a lot more of your code is getting checked for these rules than with C++ or something.21:30
ZirconiumXRust has also grown a healthy(?) paranoia about any code which is marked `unsafe`21:31
emilyZirconiumX: (I came to Rust from Haskell also and was interested in substructural type systems before it, so I have a pretty biased FP-y angle on these things, admittedly. part of my reaction to checking out Rust after first seeing it years before when it was a lot less interesting and didn't have the borrow checker was "oh hey, someone finally made Linear ML: The Systems Language like I wanted")21:31
emily(ATS has had linear dependent types for years but nobody understands it so it doesn't count.)21:32
ZirconiumXI came to Rust from OCaml, not Haskell; I found OCaml *almost* there21:32
ZirconiumXMaybe if I'd been bothered enough to try F# instead I wouldn't be a Rustacean21:32
shaprwhew, yosys build really does use all my cores21:33
ZirconiumXBut yeah, Rust was designed by people who used ML and it shows :P21:33
shaprbut not much memory21:33
emilyit didn't show quite as much before niko basically got carte blanche to restructure the entire language :D21:34
hackerfooI'm working on a language based on linear logic that has a WIP Verilog backend: https://github.com/hackerfoo/poprc21:35
tpbTitle: GitHub - HackerFoo/poprc: A Compiler for the Popr Language (at github.com)21:35
ZirconiumXIt says a lot to me that nMigen's native target is not Verilog but RTLIL, despite the obvious talent and skill of whitequark21:36
emilyhackerfoo: oh, cool! I hadn't thought of concatenative linear languages before, heh21:37
emilyseems like you might end up with some very, uh, elaborate mental state-tracking21:37
shaprI still haven't learned much verilog, even though ZipCPU spent a bunch of time helping me out21:37
ZirconiumXVerilog is a very tricky language21:38
hackerfooThe online version is currently a bit broken, but you can try it here with `:cv gcd`: http://hackerfoo.com/eval.html21:38
tpbTitle: popr (at hackerfoo.com)21:38
emily(not being able to reasonably target RTL is another thing I don't like about Rust, though I can hardly blame them for not trying to go even lower-level than they already did ^^ )21:38
hackerfooemily: It's not bad because concatenative languages make it easy to write very small functions.21:39
emily(pure call-by-name languages with some restrictions (like linear/affine typing) are actually well-suited to compilation to circuits, http://www.veritygos.org/ and https://clash-lang.org/ take advantage of this)21:39
tpbTitle: Clash: Home (at clash-lang.org)21:39
shaproh I do love clash21:40
shaprI have a clash t-shirt! I got it from christiaan!21:40
* shapr hops cheerfully21:40
shaprI had it working on my BeagleWire21:40
emilyhackerfoo: unfortunately... https://usercontent.irccloud-cdn.com/file/cS7iZVrI/screenshot.png21:42
emilyoh21:42
hackerfooHere's what `:cv gcd` produced when it worked: https://gist.github.com/HackerFoo/a065d15f64623aac64d4adafcb2a0d2321:42
tpbTitle: gcd.v · GitHub (at gist.github.com)21:42
emilyI misparsed the first half of that message, sorry21:42
*** dys has quit IRC21:43
hackerfooThere's also testbenches in the testbenches directory.21:43
hackerfooProof it works: https://youtu.be/hJgHxzZesVE21:44
hackerfooNow I'm working on compiling a form of recursion to generate streams.21:45
hackerfooUntil I fix it, this version works: https://20190727t212917-dot-hackerfoo-1174.appspot.com/eval.html21:46
tpbTitle: popr (at 20190727t212917-dot-hackerfoo-1174.appspot.com)21:46
shapranyone happen to know which ubuntu 19 pkg fulfiles the qt5 requirement for nextpnr?21:46
shaprdoh, qt5-default is mentioned in the readme: https://github.com/YosysHQ/nextpnr21:49
tpbTitle: GitHub - YosysHQ/nextpnr: nextpnr portable FPGA place and route tool (at github.com)21:49
shaprI wish cmake would check for all the packages instead of bailing out when one is missing21:49
shaprwhoops, forgot to re-conf and had to rebuild22:14
shapryay, I can build the beaglewire examples!22:14
*** rohitksingh has joined #yosys22:54
*** emeb has quit IRC23:07
*** emeb has joined #yosys23:09
*** rohitksingh has quit IRC23:34
*** rohitksingh has joined #yosys23:37

Generated by irclog2html.py 2.13.1 by Marius Gedminas - find it at mg.pov.lt!