Monday, 2020-06-01

*** tpb has joined #yosys00:00
*** craigo has joined #yosys00:00
mwklambda: not really, I've been... busy with other things00:20
mwkso far what I've done is just gathering the requirements in the issue00:20
*** _whitelogger has quit IRC00:48
*** _whitelogger has joined #yosys00:50
*** FFY00 has quit IRC01:57
*** FFY00 has joined #yosys01:58
*** rlee287 has quit IRC02:05
*** Cerpin has quit IRC02:18
*** ktemkin_ has joined #yosys02:21
*** citypw has joined #yosys02:26
*** Twix has quit IRC02:28
*** promach3 has quit IRC02:28
*** whitequark has quit IRC02:28
*** Sarayan has quit IRC02:28
*** ktemkin has quit IRC02:28
*** ktemkin_ is now known as ktemkin02:28
*** Degi has quit IRC02:30
*** Degi has joined #yosys02:31
*** jryans has quit IRC02:32
*** rjo has quit IRC02:32
*** emily has quit IRC02:36
*** Cerpin has joined #yosys02:40
*** Degi has quit IRC02:51
*** Degi has joined #yosys02:52
*** promach3 has joined #yosys03:06
*** emily has joined #yosys03:06
*** rjo has joined #yosys03:07
*** jryans has joined #yosys03:15
*** BinaryLust has quit IRC03:52
*** BinaryLust has joined #yosys04:09
*** BinaryLust has quit IRC05:00
*** az0re has quit IRC05:29
*** kraiskil has joined #yosys05:48
*** craigo has quit IRC06:20
*** kgugala_ has joined #yosys06:26
*** emeb_mac has quit IRC06:27
*** kgugala has quit IRC06:29
*** kgugala_ has quit IRC06:30
*** kraiskil has quit IRC06:33
*** dys has joined #yosys06:45
*** dys has quit IRC07:07
*** az0re has joined #yosys07:17
*** N2TOH_ has joined #yosys08:34
*** N2TOH has quit IRC08:37
*** rswarbrick has joined #yosys09:04
rswarbrickJust out of interest, is the lack of unique_ptr in the codebase a historical thing, or a style/design decision? As part of adding bind support, I need a couple of new classes, and I'm wondering whether to delete pointers in a destructor, or use smart pointers. I *think* the two options compile to the same thing.09:07
daveshahafaik, Yosys was pre-C++11 at one point09:08
daveshahunique_ptr should be fine now though, imo anyway09:08
rswarbrickCool, makes sense to me.09:09
*** Asu has joined #yosys09:25
*** madushan1000 has joined #yosys10:15
*** dys has joined #yosys10:33
*** vidbina has joined #yosys10:46
*** futarisIRCcloud has quit IRC11:24
*** vidbina has quit IRC11:46
*** rswarbrick has quit IRC12:16
*** vidbina has joined #yosys12:17
*** vidbina has quit IRC12:51
*** jfcaron_ has joined #yosys13:04
*** az0re has quit IRC13:09
lambdamwk: alright, that's great - won't get very far without any set goals and requirements13:33
*** emeb has joined #yosys13:36
ZirconiumXGood luck, lambda13:50
lambdathanks :D still waiting for whitequark to reconnect to discuss her ideas, but I already see this won't be pretty13:56
ZirconiumXStart from the very basics and work upward, I suppose :P13:58
ZirconiumXSoftware development in Yosys is driven by people wanting to die on incredibly specific hills13:59
lambdawell, at least there's passion14:00
ZirconiumXI maintain my own synthesis flow that - to my knowledge - nobody but me uses14:00
ZirconiumXSo14:00
*** vidbina has joined #yosys14:26
*** Twix has joined #yosys15:03
*** craigo has joined #yosys15:34
*** whitequark has joined #yosys15:44
ZirconiumXwb whitequark15:45
*** X-Scale` has joined #yosys15:46
*** X-Scale has quit IRC15:48
*** X-Scale` is now known as X-Scale15:48
mithroIs there a way to create a verilog define which expands to nothing?16:22
ZirconiumXWhy not just `define THING ?16:26
lambdahey whitequark, got some time to philosophise about memory?16:26
mithroZirconiumX: That is what I /thought/ I could do - but it doesn't seem to work16:28
*** vidbina has quit IRC16:28
*** vidbina has joined #yosys16:30
*** vidbina has quit IRC16:46
mithroOh, I need to put a ` in front of the macro value16:48
whitequarklambda: sure17:10
whitequarkZirconiumX: wb?17:10
lambdawhitequark: I'm trying to start with data structures - as far as I can tell, (RTLIL::Memory + $memrd + $memwr + $meminit) are already capable of representing most of the necessary memory models (maybe with some more transparency options), but $mem *definitely* is not, so we have to stop normalizing to that17:15
whitequarkdo we?17:16
lambdaI don't think any single cell normalization will work17:16
whitequarkwhy?17:17
whitequark(i don't know that it will, and i don't know that it won't)17:17
lambdahow should arbitrarily many arbitrary-width access ports be represented? I guess dynamically creating module ports and parameters would be possible, but I've never seen that with any other cell in yosys, so not sure if that's even sane17:19
*** citypw has quit IRC17:19
ZirconiumXwhitequark: welcome back17:19
ZirconiumXlambda: I feel like handling "arbitrarily many" is impractical, but also missing the point a little17:20
lambdaZirconiumX: well, sure. but even two differently-sized read and write ports each would be a bit of a mess already17:21
whitequarki think $mem already has dynamically created module ports and parameters?17:21
lambdanope, not according to the manual at least17:22
whitequarkoh, i see what you mean17:22
whitequarkhmm17:22
whitequarklambda: have you read the discussion here? https://github.com/YosysHQ/yosys/issues/113417:23
tpbTitle: Synthesis of asymmetric block RAMs · Issue #1134 · YosysHQ/yosys · GitHub (at github.com)17:23
lambdaI have not, thanks17:23
ZirconiumXlambda: The Cyclone V supports that kind of thing, but as far as I can tell, address lines + data lines is a constant there.17:24
lambdawhitequark: alright, yeah, I think the $mem.+ cells can stay as is - $mem can either stay as is, and only be able to model symmetric memories, or be expanded/changed for asymmetric memories *somehow*17:30
whitequarkfwiw i also at first leaned towards killing $mem17:38
whitequarkbut it seems that Claire wants it to stay17:38
lambdanow, is it easier to hack around with $mem, or to change all consumers of $mem to use the split cells instead?17:40
*** az0re has joined #yosys17:40
whitequarki don't know if the latter will get merged17:44
lambdaalso, for read+write port sharing, a $memport cell with fixed data+address widths, a common clock, one optional read port, and one optional write port would be nice, but adding yet another cell to this mess is probably not gonna happen17:44
whitequarki would ask first before spending any time implementing it17:45
lambdaoh definitely, just trying to come up with designs that just satisfy the requirements at all17:46
whitequarkah, yeah17:46
*** az0re has quit IRC17:46
*** az0re has joined #yosys17:51
*** rjo has quit IRC18:41
*** emily has quit IRC18:41
*** promach3 has quit IRC18:42
*** madushan1000 has quit IRC18:42
*** jryans has quit IRC18:42
*** oter_ has quit IRC18:45
*** fevv8[m] has joined #yosys19:20
*** vidbina has joined #yosys19:47
*** rjo has joined #yosys19:49
*** emily has joined #yosys19:49
*** jryans has joined #yosys19:49
*** promach3 has joined #yosys19:49
*** madushan1000 has joined #yosys19:49
lambdamwk: ...what *does* the $macc cell do? The closest thing to documentation I can find is simlib, and that's 100 lines of verilog19:49
mwk... multiply and accumulate19:50
mwktbh I don't remember how exactly it works19:50
lambdasure, but how do the ports work19:50
lambdaI'll just concur with "not a particularly clean approach" then19:51
mwkbut in general: it is a sum of multiple products19:52
mwkthe `A` input contains all the multiplication inputs, concatenated19:52
mwkand the CONFIG parameter kind of describes how to cut up `A` into pieces to be multiplied / added19:53
mwkthe `B` input is uhhh, for carry inputs, I guess?19:53
lambdayeah, uh, I'd rather not19:54
mwkit may yet turn out to be the best solution19:55
whitequarkdo we actually need $mem?19:55
mwkwell there's the simulation issue19:55
whitequarki would like to get rid of it so that formal verification of CPUs stops breaking due to fake comb loops19:55
lambdamwk: I'll leave that particular bucket of joy for someone else19:55
whitequarkhmm19:56
mwk$mem can be simulated, $memwr+... can not19:56
whitequarkis it a hard requirement that every internal cell be simulatable?19:56
whitequarkyou're using write_verilog anyways19:56
whitequarkjust teach write_verilog about those cells19:56
whitequarkwhich by the way i believe should happen in either case19:57
mwkyeah, that could work19:57
lambdacxxrtl is probably the only simulator for RTLIL anyway19:57
mwklambda: write_verilog+iverilog is a simulator for RTLIL19:58
lambdabut not directly, there won't be a $mem in the verilog output19:58
whitequarkyep19:58
mwkor +xsim (or pick your own propetriary simulator), which happens to be the only way to simulate stuff with weird hard primitives19:59
mwkbut, agreed, handling that stuff in write_verilog could be the right way to go20:00
whitequarki mean, it's already handled in write_verilog whichever way you look at it20:00
whitequarkthe only thing you lose is "structural verilog output" which is not well-defined in first place20:01
mwktrue20:01
whitequarkany simulator that can only take a "structural" netlist can't process yosys' $mem model anyways20:01
corecodeoh i guess there is no support for ice40 ultra lite?20:19
corecodeboo20:19
ZirconiumXIt can't be inferred20:19
ZirconiumXThat doesn't mean it's "not supported"20:19
whitequarkwe're discussing right now an improvement that ought to solve that problem20:22
awyglecorecode: it is pretty easy to add it, if you'd like to work on that21:00
whitequarkwait, both i and ZirconiumX seem to have misread the request21:01
ZirconiumXIt's maybe a little vague21:02
*** dys has quit IRC21:15
*** vidbina has quit IRC22:16
*** Asu has quit IRC23:00
*** mwk has quit IRC23:34
*** mwk has joined #yosys23:36
*** emeb has quit IRC23:49

Generated by irclog2html.py 2.17.2 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!