Thursday, 2023-11-09

*** tpb <[email protected]> has joined #yosys00:00
*** bjorkintosh <bjorkintosh!~bjork@user/bjorkintosh> has quit IRC (Remote host closed the connection)00:27
*** bjorkintosh <bjorkintosh!~bjork@2600:1700:5400:c80:a11e:c4e2:84b4:adb> has joined #yosys00:27
*** bjorkintosh <bjorkintosh!~bjork@user/bjorkintosh> has quit IRC (Remote host closed the connection)00:36
*** bjorkintosh <bjorkintosh!~bjork@user/bjorkintosh> has joined #yosys00:37
*** bjorkintosh <bjorkintosh!~bjork@user/bjorkintosh> has quit IRC (Remote host closed the connection)00:40
*** bjorkintosh <bjorkintosh!~bjork@user/bjorkintosh> has joined #yosys00:41
*** bjorkintosh <bjorkintosh!~bjork@user/bjorkintosh> has quit IRC (Remote host closed the connection)00:48
*** bjorkintosh <bjorkintosh!~bjork@2600:1700:5400:c80:a11e:c4e2:84b4:adb> has joined #yosys00:48
*** _whitelogger <[email protected]> has quit IRC (Server closed connection)01:00
*** _whitelogger <[email protected]> has joined #yosys01:01
*** bjorkintosh <bjorkintosh!~bjork@user/bjorkintosh> has quit IRC (Ping timeout: 272 seconds)01:11
*** bjorkintosh <bjorkintosh!~bjork@user/bjorkintosh> has joined #yosys01:12
*** bjorkintosh <bjorkintosh!~bjork@user/bjorkintosh> has quit IRC (Ping timeout: 258 seconds)01:20
*** bjorkintosh <bjorkintosh!~bjork@user/bjorkintosh> has joined #yosys01:29
*** bjorkintosh <bjorkintosh!~bjork@user/bjorkintosh> has quit IRC (Client Quit)01:33
*** schaeg <schaeg!~anabrid@2a02:3036:268:d670:68ac:760d:58ed:d419> has joined #yosys02:02
*** schaeg_ <schaeg_!~anabrid@2a02:3036:26a:8b0c:7c60:4034:1653:4150> has quit IRC (Ping timeout: 252 seconds)02:03
*** freshmaker666 is now known as greeb05:13
*** aosync <aosync!~alews@user/aws> has left #yosys (WeeChat 3.2.1)07:17
*** FabM <FabM!~FabM@2a03:d604:103:600:2e60:8c7c:e8fb:7990> has joined #yosys07:18
*** svenn <[email protected]> has quit IRC (Server closed connection)07:47
*** svenn <[email protected]> has joined #yosys07:47
*** cr1901 <cr1901!~cr1901@2601:8d:8600:226:edb4:c334:3b9c:abc4> has joined #yosys09:00
*** cr1901_ <cr1901_!~cr1901@2601:8d:8600:226:828:2469:efd7:4ee6> has quit IRC (Ping timeout: 258 seconds)09:00
*** sugarbeet <[email protected]> has quit IRC (Server closed connection)10:36
*** sugarbeet <[email protected]> has joined #yosys10:36
schaegQuestion: Does someone have a good reason to disagree with the assertion: "A hardware description language describes the wanted behaviour using the description of an simplified, abstract and ideal hardware. This does also applies to the RTL or the netlist which also describe abstract and idealized hardware. A hardware description language maybe used to develop hardware and that creates some confusion by suggesting HDLs are used to 11:12
schaegdevelop hardware. However one should think of Hardware description languages as a 'description through hardware', not 'description for hardware' and also not 'description of hardware'. "11:12
schaeg(agreement or sources which have a similar definition are welcome too)11:20
loftyschaeg: that last sentence makes no sense.11:54
loftyAnd really, the first sentence seems a little incorrect to me because in practice HDLs - especially newer ones - can have very different models of computing as a basis.11:57
loftyVerilog and VHDL are event machines; BlueSpec Haskell is a term rewriting system; and HLS starts with a serial model of computing.12:01
schaegMhh , i wouldn't call C++ a HDL, even though FPGAs can be configured through it via an HLS compiler.12:46
*** whitequark[cis] <whitequark[cis]!whitequark@2a01:4f8:c012:5b7:0:1:0:4> has joined #yosys12:46
whitequark[cis]anything is a HDL if you're brave enough :312:46
schaegwell that doesn't help me argue my case. 12:51
*** anticw <[email protected]> has quit IRC (Server closed connection)12:56
*** anticw <[email protected]> has joined #yosys12:57
schaegSo ... i am in the cursed situation of having to define a HDL for a task-graph like computation framework where invidual tasks can be analog computations, optimisation problems or general purpose computations and yeah the analog computations will be run on a analog computer.13:01
schaegSo i hoped i could make the arguement: Well an abstract hybrid computer actually just has $list_of_components_which_map_to_things_we_could_do as abstract hardware components and our HDL is program that.13:05
* schaeg stops from musing publicly, hoping people comment.13:10
schaegIs there some HDL, where i can encode invariants? like f(g(h(x1,x2),x2)) = f(h(g(j(x1), x2), x2)) and the synthesizer is expected to pick the variant under those rules which best matches the harware available?13:33
loftyUnfortunately not, because the lowest common denominator is Verilog/VHDL, and that's not really expressible in those languages13:34
*** xiretza[cis] <xiretza[cis]!xiretzaxir@2a01:4f8:c012:5b7:0:1:0:88> has joined #yosys13:34
xiretza[cis]that sounds like techmapping13:34
schaegand like f,g,h,j are so complicated things that no compiler could be expected to discover that invariance/ computation graph rewrite-rule13:35
loftySure, there's stuff like $assert/$assume, but synthesis tools tend to ignore them13:35
schaegxiretza[cis] what's techmapping?13:36
loftyat best you can say something like `if (cond) output = 'x;`, but tooling doesn't always use that either13:36
loftyschaeg: technology mapping13:36
loftyAKA "turning logic into something implementable in hardware"13:36
schaegIf i was just working in the logic world all would be nice. ...13:39
*** bjorkintosh <bjorkintosh!~bjork@2600:1700:5400:c80:d45d:36a0:e613:b333> has joined #yosys13:40
loftyschaeg: in theory, theory and practice are the same; in practice, they are not.13:49
schaegI guess i wanna jointly transform and rewrite nummeric and analog computations. I don't wanna have to proof that i can do those transformation safely, i just wanna allow a language where i can do those transformations. I also want to reason about the length in wall clock time of different elements.  I don't wanna have to support a different interface where i can't do those. So i am trying to make up something i can call an HDL which 13:50
schaegwould allow for that and all stuff would have to be implemented on top of that so we can do dirty, dirty tricks easily to get the most out of our multi-tenant time hardware. 13:50
schaegCalling that interface an HDL is important because people negotiated that we expose an HDL.13:51
*** schaeg_ <schaeg_!~anabrid@2a02:3036:268:d670:68ac:760d:58ed:d419> has joined #yosys14:43
*** schaeg <schaeg!~anabrid@2a02:3036:268:d670:68ac:760d:58ed:d419> has quit IRC (Ping timeout: 255 seconds)14:43
*** schaeg_ is now known as schaeg14:53
*** ecs <ecs!ecs@hare/maintainer/ecs> has quit IRC (Server closed connection)14:53
*** ecs <ecs!ecs@hare/maintainer/ecs> has joined #yosys14:53
*** tlwoerner <[email protected]> has quit IRC (Server closed connection)15:00
*** tlwoerner <[email protected]> has joined #yosys15:00
schaegActual yosys question this time: How heavily are netlists specific to the FPGA targeted? Are the synth.edif generally portable between vendors? If so how big is the performance difference if you use one optimised for a different chip? 16:04
loftyschaeg: *highly* specific to the targeted chip16:07
loftyLike, we turn the netlists into vendor-specific cells, like LUTs, flops, memory blocks, DSPs, etc16:08
schaegI think there are multiple netlists in a normal synthesis workflow. Does that also hold for the highest level artefact of netlist you produce?16:09
loftywe don't produce artifacts for anything but the lowest level netlist16:10
* schaeg nods.16:10
loftyThere's no use for anything other than the low-level architecture-specific netlist16:11
schaegI am following https://github.com/YosysHQ/yosys-manual-build/releases/download/manual/presentation.pdf where the Register-Transfer Level (RTL), the Logical Gate Level, the Physical Gate Level and the Switch Level are said to be netlists in yosys.16:13
loftyNo it doesn't16:14
loftyIt says that these are levels of abstraction for digital circuits16:14
schaegwhich all have netlists associated with them?16:14
loftyslide 7 shows that Yosys only goes as low as physical gate level16:14
schaegSorry i missphrased. 16:16
loftyYosys works by running a series of passes which gradually lower the netlist representation from behavioural level down to physical gate level16:17
loftyand while you can draw points in a flow and say this is more-or-less one of the levels16:17
loftymost flows are a bit blurrier than that16:18
loftya good example would be carry-chain inference in FPGAs16:18
loftygiven an input behavioural netlist, you will have things like $add, $sub, $lt, and so on16:19
lofty`alumacc` unifies these different cells into `$alu` (as well as $macc, but I'm ignoring that)16:19
schaegIf one were extract something equivalent to a RTL netlist from a yosys synthesis run would that "highest level" netlist already be platform specific? 16:19
loftythen on pretty much all FPGA synthesis scripts, a `techmap` call will turn that directly into a target cell for the FPGA16:20
loftywhich means that adders go from behavioural level immediately into physical gate level16:20
loftyYou can extract a non-specific RTL netlist from Yosys, yes16:21
loftyWhen you load a Verilog file in Yosys, the first possible time you can access it is at an almost-RTL level16:24
schaegIs the RTLIL the front end produces after reading a non vendor specific source code already vendor specific?16:25
loftyno, that RTLIL is non-vendor specific16:25
schaegThank you for helping me refine the question. 16:26
schaegIs it generally safe to assume that netlist files are vendor specific and non-vendor specific netlists are some "pathological" case  i just constructed because i have to little idea about FPGA work flows16:28
loftyThat's a difficult question to answer16:29
loftyYou can produce an entirely generic netlist in Yosys16:30
loftybut this entirely-generic netlist is not very useful, because to use it in actual hardware you will need to make it vendor-specific16:30
lofty(modern) FPGAs do not have the concept of an AND gate or a NOT gate16:31
loftyeven though these are generic concepts16:31
loftyyou will need to turn those into LUTs, and the moment you do so you begin to make the netlist more specialised16:32
loftyIf you choose to target, say, an Intel Cyclone V, the design physically won't fit on a Lattice iCE4016:33
loftyIf you target a Xilinx 7 Series, it won't fit in either the Cyclone V or iCE4016:33
schaegokay ... well would i be an asshole if for the FPAAs my company produces all the netlists my tools return are vendor specific?16:34
schaeg*returns16:34
loftyyou would be entirely normal :p16:34
schaegThat helps me a lot.16:35
loftyBut unfortunately, Yosys has...basically no support for FPAAs16:35
loftySo we can offer advice and opinions16:35
loftybut if your idea is "why don't I implement tooling for my FPAA with Yosys", you should be aware that it wouldn't be that much less effort than writing an entirely new tool16:36
schaegOh it's not.16:37
schaegLet me tell you the biggest problem i see, a good enough netlist depends continous parameters which are unknown until the data is available, the number of elements can both increase and decrease as you change those problem parameters in one direction.16:39
loftysee, FPGAs are pretty similar in that respect16:40
loftyso...we just don't bother about it16:40
loftyrun synthesis, and then in place-and-route do we figure out if the resulting netlist can be fit in the final chip16:41
schaegLike, wanna solve the problem with alpha=0.2, gamma=0.4, delta=0.7, omega=0.8 cool here is your netlist. What? You used alpha=0.24 ? Well the netlist is invalid as executing it runs into the working limits of some calculation component.16:43
schaegso ... fpga netlists are atleast valid for all data you ask them to be valid for. Here you need many netlists to cover a parameter range.16:45
* schaeg shudders.16:46
mewtI guess I'll just go ahead and open an issue for the param thing16:55
schaegNahh please don't ... 16:57
* schaeg thinks16:58
schaegActually i don't care but I don't see much potential using Yosys for the fpaas i work on. If you wanna do the parameter thing for FPGAs *shrugg* none of my buisness16:59
mewtMy issue above, sorry17:00
mewtI am committed to using Yosys even if I have to eventually figure this out myself17:00
schaegThere seem to be multiple version of the EDIF file format. Did you consult any standard documents when implementing EDIF? If so do you still have those flying around and can look up whether the term "netlist" is defined in there?17:05
*** notgull <notgull!~notgull@ec2-50-112-148-23.us-west-2.compute.amazonaws.com> has quit IRC (Ping timeout: 252 seconds)17:50
*** notgull <notgull!~notgull@ec2-50-112-148-23.us-west-2.compute.amazonaws.com> has joined #yosys18:13
loftyschaeg: make no mistake: EDIF is not a portable standard. Every tool interprets it differently and in highly contradictory ways18:36
* schaeg wimpers.18:47
loftyschaeg: what Yosys outputs is probably best described as Xilinx-flavoured EDIF; something ISE and Vivado will accept18:56
loftyI have managed to get one other tool to mostly accept it, aside from triggering a buffer overflow inside the EDIF parser if a netlist is big enough18:57
loftyQuartus, for example, pretty much directly rejects the output of Yosys as invalid18:58
loftyand I have no idea why18:58
*** schaeg_ <schaeg_!~anabrid@2a02:3036:268:d670:68ac:760d:58ed:d419> has joined #yosys19:52
*** schaeg <schaeg!~anabrid@2a02:3036:268:d670:68ac:760d:58ed:d419> has quit IRC (Ping timeout: 272 seconds)19:53
*** FabM <FabM!~FabM@armadeus/team/FabM> has quit IRC (Ping timeout: 252 seconds)20:03
*** buhman <buhman!sid411355@user/buhman> has quit IRC (Server closed connection)20:45
*** buhman <buhman!sid411355@user/buhman> has joined #yosys20:46
*** schaeg_ is now known as schaeg21:23
schaegwhy is everything so cursed21:23
loftyschaeg: welcome to the field.21:23
*** stephe <[email protected]> has quit IRC (Ping timeout: 240 seconds)22:17
*** stephe <[email protected]> has joined #yosys22:19
*** nonchip <[email protected]> has quit IRC (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)23:20
*** nonchip <[email protected]> has joined #yosys23:20
*** schaeg <schaeg!~anabrid@2a02:3036:268:d670:68ac:760d:58ed:d419> has quit IRC (Ping timeout: 252 seconds)23:50

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