Wednesday, 2021-02-03

cesar[m]1New slogan:09:37
cesar[m]1Use Simple-V (on your scalar ISA). It adds a whole new (vector) dimension.09:37
lkclcesar[m]1: ooOoo :)12:01
jon_Hi all, I'm Jon and I am trying to develop myself into someone that would be useful toward the vision of the EOMA68. I am currently a student and my University has tasked us with finding hardware security researchers we'd like to hear from this semester. Do any of you have recommendation on who I maybe should request? Bunnie comes to mind but anyone else?15:58
awyglelkcl: sure16:15
lkcljon_, hi!  yes, bunnie would be a good start.  btw do join the arm-netbooks mailing list, this project is the development of an SoC16:54
lkclhttp://lists.phcomp.co.uk/pipermail/arm-netbook/16:54
lkclcesar[m]1: a long while back i also designed 2/3D matrix "shuffling" as well https://libre-soc.org/openpower/sv/remap/16:55
lkcli got the concept from Aspex Semiconductors (i used to work for them)16:56
* lkcl waves to awygle16:56
lkclyes, cesar[m]1 has been doing the formal correctness proof on the actual PartitionedSignal class16:56
lkclhttps://git.libre-soc.org/?p=ieee754fpu.git;a=blob;f=src/ieee754/part/formal/proof_partition.py;hb=HEAD16:57
lkclthe tricky bit where we are concerned is here:16:58
lkclhttps://git.libre-soc.org/?p=ieee754fpu.git;a=blob;f=src/ieee754/part/partsig.py;h=f09b972a4c93e3a07e1f869c1f9a8ff16952743a;hb=HEAD#l4516:58
lkclnotice it doesn't derive from Value or UserValue/etc ?16:58
awyglemhm16:58
lkcland, if you use the standard nmigen.Mux or other operations on it, those know absolutely nothing about the dynamic partitioning.16:59
awyglemhm16:59
lkclhere's how a Mux *should* work if nmigen.Mux "understood" partitioning:17:00
lkclhttps://git.libre-soc.org/?p=ieee754fpu.git;a=blob;f=src/ieee754/part_mux/part_mux.py;hb=HEAD17:00
lkclit's actually a dead-simple for-loop, treat each partition separately17:00
lkclwhere the "bool" signal is actually not a bool, it's an *array* of bools (single-bits)17:01
lkcland you just apply each bit of that not-bool independently to the parts of A and B.17:01
lkclbut17:01
lkclunless nmigen "understands" this, and allows us to "override" the behaviour of nmigen.Mux, we're hosed.17:02
awygleby which you mean "doomed to using PMux everywhere instead of the built-in language features"17:02
lkclurrr...17:03
* lkcl eurgh yes :)17:03
lkcland we can't use m.If, m.Else, m.Switch - nothing17:03
lkclall of the very features of nmigen that make it attractive: completely prohibited.17:03
awygleright17:03
lkclhence this: https://bugs.libre-soc.org/show_bug.cgi?id=458#c417:03
lkclwhich should actually be, if my estimates are right, something less than a 50 line patch17:04
lkcl(first version, that is)17:04
awygleand i assume from this that you are not using an nmigen fork, but are either committed to using or at the very least intend to use upstream17:04
lkclcorrect.17:04
lkclwe reaaally do not want to become the permanent maintainers of a high-profile nmigen fork.17:05
lkclthere's one already: that's causing enough problems for whitequark17:05
cesar[m]1The thing is, both m.If and m.Switch end up as "switch" statements in RTLIL. It is actually Yosys that inserts the MUXes.17:05
lkclah: i traced it through, it's ok :)17:06
awygleand so the limiting factor here is "somebody needs to interface with whitequark to get this upstreamed and/or find an equivalent solution, ideally in a way which does not cause either side undue stress"17:06
lkclawygle: exactly.17:06
lkclcesar[m]1: fascinatingly, m.If and m.Else end up calling (via a roundabout route), into Value.cases()17:06
* lkcl goes to check the name17:06
awygleand i think you mentioned your timeline in nmigen the other day and it was a single digit number of weeks?17:06
lkclsorry, matches17:07
lkclhttps://github.com/nmigen/nmigen/blob/746886ca8ac3b9a8941b540a347452805acbbcf2/nmigen/hdl/ast.py#L38917:07
lkcl3 to 6 weeks, it'll hit the critical path, yes.17:08
lkclwe can delay / extend that somewhat by re-focussing people, say, i do the power-gem5 simulator work17:08
cesar[m]1BTW, while I see Part being used in bit_select and word_select, I don't see Value.part() anywhere, and don't really see how it could help PartitionedSignal.17:09
lkclyes, this needs investigation.  i tracked it through, part generates slightly different verilog.  i think... a shiftx cell rather than a shift cell? something like that?17:10
lkclawygle: we don't need absolutely everything.17:11
lkcleven just having m.If, m.Else is a massive "win".17:11
lkclm.Switch is the next highest priority17:11
lkclif we can't get a parallel version of Cat, that's a pain but not insurmountable, we'll "make do"17:12
lkclas this is quite important (read: critical) we can allocate quite a substantial budget to it.17:14
awyglei see17:14
awyglewell i'm not un-interested, but slightly hesitant because this requires another person's consent for the most obvious deliverable. let me think about it and i'll get back to you soon.17:15
lkclwe can run with a fork for some months.17:16
lkclappreciated.  thank you awygle17:16
lkclultimately, though, if whitequark isn't happy to include this, then much as it pains me to say it we'd be forced to fork nmigen.  i'd clearly very much prefer that scenario did not occur.17:18
awygleof course17:18

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