Sunday, 2020-03-29

*** tpb has joined #symbiflow00:00
*** OmniMancer has joined #symbiflow01:37
*** Degi has quit IRC02:01
*** Degi_ has joined #symbiflow02:01
*** Degi_ is now known as Degi02:01
*** ramin_r348 has joined #symbiflow02:06
ramin_r348Hi All, I am a PhD student, working on FPGA architectures (Designing LE, DSPs, Routing) targeting ML applications. I was wondering to find a task here which I can handle and help the SymbiFlow. Also, I want to submit a GSoC application, as well. Could you please help me and tell me about the architectural works here? I have a few published works02:21
ramin_r348about LE/DSPs. I hope to be helpful.02:21
ramin_r348Thanks02:21
*** citypw has joined #symbiflow02:40
*** citypw has quit IRC03:32
*** citypw has joined #symbiflow03:34
*** citypw has quit IRC03:36
*** citypw has joined #symbiflow03:37
*** citypw has joined #symbiflow04:30
*** citypw_ has joined #symbiflow04:33
*** sth0R__ has joined #symbiflow04:33
*** citypw has quit IRC04:34
*** sth0R__ has quit IRC04:34
*** citypw has joined #symbiflow04:38
*** _whitelogger has quit IRC05:21
*** _whitelogger has joined #symbiflow05:23
*** _whitelogger has quit IRC06:39
*** _whitelogger has joined #symbiflow06:41
*** ramin_r348 has quit IRC06:57
*** Bertl_oO is now known as Bertl_zZ07:23
*** _whitelogger has quit IRC07:45
*** _whitelogger has joined #symbiflow07:47
*** tcal has quit IRC08:26
*** clay_1 has joined #symbiflow10:39
*** clay_1 has quit IRC10:54
*** kraiskil has joined #symbiflow11:19
*** zeen has joined #symbiflow11:52
*** CMP1 has joined #symbiflow11:58
CMP1Hello, I have moved into reading about PIPs and comparing it to what I can visually see in vivado. So far I have understood that to create a wire, you have to define the connection between two `pip junctions` from what is shown in vivado.12:02
CMP1If my understanding regarding that is correct, I am getting confused by the `<tile_type>.<destination_wire>.<source_wire>.` format12:03
CMP1shouldnt it be a destination/source pip junction instead ? since in each such line one wire/connection is defined12:04
daveshahIn reality, pip junctions are just a wire that has pips on it12:09
CMP1so what is actually a pip, from its name I understand its a point, so to define a wire you need two pips, is that right ?12:10
daveshahA pip is a programmable connection between wires12:11
daveshahWires are not defined by pips, it is more the other way round12:11
daveshahwires can also be connected to site pins, or other wires (a set of permanently-connected is called a node) as well as pips12:11
daveshah* a set of permanently-connected wires12:14
CMP1so, nodes are always active ?12:15
daveshahA node is a set of wires - wires are always contained within a single tile, nodes contain connected wires across tiles12:16
daveshahFor example, the node INT_L_X32Y217/SL1BEG2 that covers two wires contains the wires INT_L_X32Y216/SL1END2 and INT_L_X32Y217/SL1BEG2 - these two wires are permanently connected (physically just a single bit of metal)12:17
CMP1hmm12:21
CMP1I am a bit confused12:21
CMP1pips are only connections inside a swithchbox12:22
CMP1while nodes are outside12:22
CMP1and the outside is wires12:22
CMP1is that correct ?12:22
daveshahThe key difference is that pips can (with a few exceptions) be turned on or off, and generally have bitstream bits associated with them. Pips connect two wires.12:24
daveshahWires are local to a tile12:24
daveshahNodes represent the fact that multiple wires (possibly in different tiles) are permanently connected together12:25
CMP1that permenently, is always there or will happen after the programming ?12:25
daveshahIn practice all of the wires in the node are physically a single piece of metal12:26
daveshahthe reason the node is split into different wires is purely a software thing12:27
daveshahthere is no way for the different wires in a node to not  be connected together12:27
CMP1probably that is confusing me because in vivado as a node they mean a single wire12:28
CMP1but lets get back to the basics to see if I have at least understood pips12:28
daveshahYes, in practice a node is multiple wires12:29
CMP1CLBLL_L_A6.CLBLL_IMUX5  this means a pip will get activated to connect the wire clbll_L_A6 with the wire IMUX5, right ?12:29
daveshahYes, pips are almost always directional so this means that CLBLL_L_A6 is driven by CLBLL_IMUX512:30
CMP1great12:30
daveshahIf you want to see all the wires in a node, you can do it with Tcl, run `get_wires -of_objects [get_nodes $node]`12:30
CMP1is there a way to highlight the results of that in the view12:35
CMP1?12:35
daveshahNo, normally you could use show_objects but that doesn't work for wires12:36
CMP1I see12:36
*** citypw has quit IRC12:36
daveshahVivado somewhat hides the existence of wires12:36
daveshahthe GUI is mostly based on nodes12:36
daveshahthe only place where it shows wires separate from their nodes is "pip junctions"12:37
CMP1you mean if you look at the junction name ? because graphicaly a junction is just a circle12:38
daveshahYes, the junction name is actually a wire12:38
daveshahIf you look at a node in Vivado, the section of each node in a specific tile is effectively a wire too12:38
CMP1great so graphically every wire i see outside of switchboxes are wires12:40
CMP1(but if I look at its name it will give me the node name that it contaits it)12:40
CMP1and to see the actual wire name i will have to see at the name of its associated pip junction12:41
CMP1also how do pips connect the wires together ?12:47
*** citypw has joined #symbiflow12:51
daveshahPips boil down to one or two transistors controlled by some bitstream bits (and in some cases a decoder on some of those bits)12:55
daveshahoften that is followed by a buffer12:55
CMP1I see, so abstractly I can imagine them like a select switch controlled by the bitstream values ?12:57
daveshahYeah12:58
CMP1thank you for the clarifications !12:59
*** Bertl_zZ is now known as Bertl13:15
*** OmniMancer has quit IRC14:05
CMP1is  both `hint` and `always` indicating a fake pip that is always active ?14:05
*** citypw has quit IRC14:57
*** citypw has joined #symbiflow14:57
daveshahalways is a fake pip that is always active14:59
daveshahhint is for route throughs, etc, that are not conventional pips but are not always enabled either14:59
daveshahFor example a hint pip from LUT input to output routes through the LUT by setting the LUT value accordingly15:00
CMP1Doesnt a roit through depend on the LUT init values ?15:01
CMP1oh I think I get it. The hint means that depending on the logic in the lut, this connection may happen ?15:02
CMP1So all "CLBLL_L.CLBLL_L_D.CLBLL_L_D1 hintCLBLL_L.CLBLL_L_D.CLBLL_L_D2 hintCLBLL_L.CLBLL_L_D.CLBLL_L_D3 hintCLBLL_L.CLBLL_L_D.CLBLL_L_D4 hintCLBLL_L.CLBLL_L_D.CLBLL_L_D5 hintCLBLL_L.CLBLL_L_D.CLBLL_L_D6 hint"15:04
CMP1show that any of the inputs of LUT D can by forwarded to output CLBLL_L_D15:04
CMP1correct ?15:04
FFY00daveshah, do you have any particular reason why you don't want meson?15:32
daveshahFFY00: the support burden of changing15:33
FFY00but changing now15:33
daveshahCMP1: yes, that's correct, any of those inputs could be routed through each setting a different LUT value15:33
FFY00not in the future, right?15:33
daveshahAt any time15:34
CMP1daveshah thanks15:34
FFY00so, as you can probably see looking at the code, it is incredibly simple15:34
FFY00I almost just have definitions15:35
daveshahYes, but that doesn't mean it won't cause problems15:35
FFY00which kinds of problems?15:35
daveshahWell, all the usual build system problems15:35
FFY00I have been using in production for several projects and never had any major issues15:35
FFY00only some really minor bugs15:36
FFY00and that was in a project with 600+ line build script15:36
FFY00not the case of trellis15:37
daveshahThe reality is that anything in Trellis is something that I need to be able to support15:37
FFY00but meson can be updated with pip15:37
FFY00so, that would solve the issues there15:37
FFY00daveshah, right, but I am offering to help15:37
FFY00and to help you become conformable with it15:38
daveshahYes, but I've had people offer to help with things like this before and disappear. No personal offence but I'm very wary of accepting stuff like this15:38
FFY00I am offering to provide support until you don't need me anymore15:38
daveshahParticularly when I'll inevitably be on the receiving end of complaints when stuff breaks for people15:38
FFY00well, right15:39
FFY00you would need to believe in me :)15:39
FFY00all I can say is that I am willing to commit15:39
FFY00would you please at least consider doing a test run?15:40
FFY00like I mentioned15:40
FFY00keep both build systems for now, if any issues arise with meson, just remove it15:40
daveshahNo, because once people half start using it then it's even more of a problem15:40
FFY00so, you really really want to keep cmake?15:42
daveshahNo, but at the current state of Trellis it's the best option15:42
FFY00because a lot of things are broken15:42
FFY00and my biggest issue is that it can break systems15:42
daveshahThey don't seem to be affecting people on the whole15:42
daveshahNo one has reported Trellis breaking their system to me before now15:43
FFY00or maybe people are not reporting it to you15:43
FFY00ah15:43
FFY00the thing about breaking systems is that most people wont really is trellis fault15:43
FFY00*wont realize15:44
FFY00daveshah, is there anything I can day to convince you to trust me? that I will provide support?15:45
daveshahNo, there isn't15:45
FFY00I am packaging this for archlinux so I am already committed there15:45
daveshahBut I am effectively _contractually_ commited to supporting Trellis for people15:47
daveshahI simply can't take something on that I don't know how much trouble it will cause15:48
*** proteus-like has joined #symbiflow15:49
FFY00and what about you personally looking into meson and spending time time learning it15:52
FFY00and experimenting15:52
FFY00and once you are comfortable, bringing it to trellis?15:52
*** proteus-dude has quit IRC15:52
daveshahI just don't have the time right now15:53
FFY00I would say that the time invested there is much less than the time you will spend fixing cmake15:53
FFY00right, I am not saying it needs to be right now15:53
daveshahI doubt that in practice15:53
FFY00I have had experience with both cmake and meson, as well with interacting with a lot of upstreams (because packaging) and I can tell you from my experience it is definitely true15:54
FFY00but you could always have a different experience15:55
FFY00is there anything in the project I could help with for you to be able to take time off to experiment with meson?15:56
daveshahTo be honest I am not spending any significant time on Trellis itself atm15:58
daveshahAll my time is on generic nextpnr stuff (mostly routing), nextpnr-xilinx and some currently non-OSS projects15:58
FFY00okay15:58
daveshahI don't know anything I could point you at in particular15:58
FFY00anything I can help with there?15:58
FFY00okay15:59
daveshahYou could take a peek at nextpnr issues but I don't know if that will significantly reduce my burden15:59
daveshahA lot of what I am working on is pretty much "single thread" atm16:00
FFY00ack16:03
FFY00just some final comment16:04
daveshahIf you are really keen on meson, then your best bet at getting it merged will be to make sure that it actually works properly for Windows and OS X16:05
daveshahand a good couple of common linux distros16:05
FFY00if you are contractually committed to support it, you could still keep cmake for that purpose16:05
FFY00while we test meson16:05
FFY00okay, right16:05
daveshah(Windows = mingw and cygwin ideally)16:06
FFY00okay16:06
daveshahYes, in the short term. But long term I'd want to avoid that16:06
daveshahI can't guarantee a merge immediately even with those tests but it would make me happier about it16:06
FFY00yes, optimally you would in time get comfortable enough with meson to replace cmake entirely16:07
FFY00also, nextpnr also suffers from the same issues in the build system, I assume your position is the same there, right?16:07
FFY00daveshah, ack16:07
daveshahnextpnr is much more complicated so that's not changing16:07
FFY00complicated in what way?16:08
daveshahMany more configurations, some non public forks that also rely on sub cmake files, some cmake based dependencies16:09
daveshahThe testing burden would simply be too high16:10
FFY00meson can generate cmake dependencies16:10
FFY00but sure16:10
FFY00just keep in mind, if you want this to actually be adopted, the build system will need to work properly16:13
*** citypw has quit IRC16:30
*** _whitelogger has quit IRC16:48
*** _whitelogger has joined #symbiflow16:50
*** CMP1 has quit IRC16:58
*** adjtm has quit IRC17:31
*** adjtm has joined #symbiflow17:45
*** kraiskil has quit IRC18:03
mithroFFY00: At the moment most of the SymbiFlow related tools are all cmake based -- having everything use the same system, even if it is less than idea is important18:33
*** kraiskil has joined #symbiflow19:04
DegiAt summer of code, is "infrastructure" the right tag for a PCIe interface?19:06
DegiOkay I've submitted it (since it can be changed later)19:20
FFY00mithro, meson can identify cmake dependencies19:26
FFY00is there any other issue?19:27
*** kraiskil has quit IRC19:58
*** OmniMancer has joined #symbiflow20:18
*** QDX45 has joined #symbiflow21:23
*** tcal has joined #symbiflow21:39
*** tcal has quit IRC22:01
*** tcal has joined #symbiflow22:03
*** Renga has joined #symbiflow22:08
*** OmniMancer has quit IRC22:20
*** OmniMancer has joined #symbiflow22:21
*** Renga has quit IRC22:23
*** lambda has quit IRC22:23
*** titanbiscuit has quit IRC22:46
*** titanbiscuit has joined #symbiflow22:47
*** lambda has joined #symbiflow22:56
*** wavedrom has joined #symbiflow23:16
*** wavedrom has joined #symbiflow23:17
mithroDegi: I'll take a look at it shortly23:40
*** tcal has quit IRC23:52
mithroFFY00: For consistency reasons should be cmake *or* meson -- converting everything from cmake to meson is a big task23:54

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