Thursday, 2023-10-12

*** tpb <[email protected]> has joined #yosys00:00
Myrl-sakiI think I can make my shifter even go more zoom.03:56
Myrl-sakiHm wait nah03:57
Myrl-sakiI mean, it's slightly easier on the router?03:57
Myrl-sakiI need to learn how PIPs work!03:57
Myrl-sakiOh wait, I can't yet.03:58
Myrl-sakiWell, that kinda sucks. My idea was to make the first stage use `x + (b ? x : 0`03:58
Myrl-sakiOh, I know how to solve some other things phew.04:02
Myrl-sakiThe only problem is that I'm implementing right shifts then.04:02
Myrl-sakiSo I need to rewrite it to use left shifts.04:02
Myrl-sakiQuestion is, is this better than `b ? {x[N:1], ...} : x`?04:02
Myrl-sakiAh, the answer is no for GOWIN specifically I think, because there's only 6 ALUs per CFU, while there are 8 LUTs per CFU. :(04:05
*** hrberg <[email protected]> has quit IRC (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)04:30
*** hrberg <[email protected]> has joined #yosys04:31
lofty[04:57:16]  Myrl-saki: I need to learn how PIPs work! <--- there's not much to learn; a Programmable Interconnect Point connects one wire to another 06:28
Myrl-sakiOh yeah, I get that part. What I'm curious about is for example, how signals get from (R,C) to (R',C')06:29
Myrl-sakiAnd also how things get connected uh, from external signals? to the slices?06:31
Myrl-sakiI guess what I'm saying is I'm curious about the topology here. If for example, I want to create a D latch, I think it's possible for a LUT to feedback to itself, and put an enable pin. How does it do that?06:33
*** bpye <bpye!~bpye@user/bpye> has quit IRC (Ping timeout: 245 seconds)06:33
loftyMyrl-saki: the LUT will have an output signal in the SLICE; PIPs will connect it to some wires, which are arranged in a grid shape - I think you're using Gowin, so it would be the X1 wires.06:35
*** bpye <bpye!~bpye@user/bpye> has joined #yosys06:35
loftyAt the end of each wire is a switch box made up of PIPs to connect more wires together, which is how it makes the turns needed to end up back at the inputs of the slice06:36
loftyAnd then a connection box made up of PIPs is used to pull wire signals into slice inputs 06:36
Myrl-sakiAhhh thanks. And I'm guessing the router's job is to figure out which PIPs to enable?06:39
Myrl-sakiHuh yeah, I think I see.06:47
Myrl-sakiOh wait, am I slightly wrong on that?07:08
loftyMyrl-saki: yeah, basically.07:08
*** daglem <[email protected]> has joined #yosys07:09
Myrl-sakiI think I see it now by the way! :) Specifically the "turns needed to end up back" part.07:10
Myrl-sakihttps://github.com/YosysHQ/apicula/blob/066a70b6d41a0c2d8adf13ae33d4664d4a422230/apycula/gowin_pack.py#L1013-L103007:10
Myrl-sakiThis seems like it enables PIPs to route one wire to another within a tile.07:12
*** FabM <[email protected]> has joined #yosys07:12
*** schaeg <schaeg!~anabrid@2a02:3036:268:a0dc:4a63:19f2:f34d:b4c9> has joined #yosys08:02
Myrl-sakiHm, how do higher-width MUXes get generated? $pmux?09:16
Myrl-sakiI guess pmuxtree also to some extent.09:16
Myrl-sakiOh, muxcover?09:18
Myrl-sakiAh found it.09:20
Myrl-sakiHmmm09:28
Myrl-sakiI'll probably need help from someone to understand the timings.10:03
Myrl-sakiOh cool, turns out there are mux tests!10:35
Myrl-sakiHehe. :)10:38
Myrl-sakiI'll push this in a bit I think.10:38
*** xiretza[cis] <xiretza[cis]!xiretzaxir@2a01:4f8:c012:5b7:0:1:0:88> has quit IRC (Quit: Idle timeout reached: 172800s)10:41
loftypovik: what did you change in toymap? it's not too obvious from the commit history.10:47
Myrl-sakiInfo: Max frequency for clock 'sysclk': 29.71 MHz (PASS at 24.00 MHz)10:57
Myrl-sakioh no what have I done10:57
Myrl-sakiHm, what does shiftx do11:00
Myrl-sakiOr rather, how does shiftx get transformed as passes run?11:02
*** schaeg <schaeg!~anabrid@2a02:3036:268:a0dc:4a63:19f2:f34d:b4c9> has quit IRC (Quit: Konversation terminated!)11:42
*** schaeg <schaeg!~anabrid@2a02:3036:268:a0dc:c079:36c1:fb91:deb7> has joined #yosys11:43
*** keesj <[email protected]> has joined #yosys12:10
keesjHi, I am wondering about the compressed instruction set option of PicoRV32. Does COMPRESSED_ISA =1 imply a choice between the normal and compressed set or should is be seen as addition?12:12
keesjhttps://github.com/YosysHQ/picorv3212:12
tntIt's an addition.12:17
loftykeesj: the compressed instruction set is not standalone, so it has to be an addition anyway12:21
Myrl-sakiOkay cool, I have something which I think can be reviewed.12:22
loftysure, I'll take a look if you link it12:22
Myrl-sakiYay. :)12:22
Myrl-sakiHm wait.12:25
*** schaeg <schaeg!~anabrid@2a02:3036:268:a0dc:c079:36c1:fb91:deb7> has quit IRC (Remote host closed the connection)12:35
*** schaeg <schaeg!~anabrid@2a02:3036:268:a0dc:4611:19e6:a127:56af> has joined #yosys12:35
Myrl-sakiOkay, so it does seem to actually have some effect, phew.12:35
Myrl-sakilofty: https://github.com/YosysHQ/yosys/pull/400412:35
Myrl-sakiDraft for 2 reasons: (a) I'm not sure if the timings are right (b) I have no idea how to integrate it with synth_gowin.12:36
Myrl-sakiI took the timings based on LUT5 and LUT6.12:38
keesjtnt: thanks (that is what GPT was also saying but I wanted to double check)13:00
loftykeesj: are you actually trusting GPT on...*anything?*13:01
keesjPretty much yes, trust but verify13:03
*** ppisati <ppisati!~flag@2a01:e11:1403:8620:77cc:a896:e38d:a902> has quit IRC (Remote host closed the connection)13:11
Myrl-sakiSeems like there's actually a pass to convert LUTs back to MUXes. I'm not sure when it actually triggers though.13:23
Myrl-sakiOkay, so I think the reason why I need to set a proper cost is because Yosys might decide to promote a 3-input mux into a 4-input mux?13:39
Myrl-sakiHm13:40
loftyMyrl-saki: there's basically no reason to use lut2mux though14:02
Myrl-sakiI checked and even before this patch, synth_gowin seems to know how to convert a MUX4 to a 2xLUT3 + MUX2 sometimes.14:03
Myrl-sakiAnd I'm not sure how it does it lol14:04
Myrl-sakiOh wait.14:05
Myrl-sakiAh.14:05
Myrl-sakiI think this was a misinterpretation on my part.14:05
Myrl-sakiI think what muxtree is comparing is then whether to use a LUT5 or a MUX4.14:06
Myrl-sakiErrr muxcover14:07
Myrl-sakiYeah, okay, cool.14:08
Myrl-sakiIn hindsight though, yeah, turns out I could have just implemented this with a LUT5 lol14:08
*** schaeg <schaeg!~anabrid@2a02:3036:268:a0dc:4611:19e6:a127:56af> has quit IRC (Ping timeout: 246 seconds)14:31
*** FabM <FabM!~FabM@armadeus/team/FabM> has quit IRC (Ping timeout: 255 seconds)15:30
poviklofty: lutrewrite generalizations are the improvement16:12
povikit considers more structures to rewrite the network into (different LUT sizes and also what some of the literature calls a 'shared' variable)16:12
povikalso rewriting got enabled for LUT6 mapping16:13
povikMyrl-saki: so, about that PR, very curious16:15
povikdoes that demonstrably improve QoR?16:15
povikwouldn't the MUX gates like that, being only an optimized composition of other technology gates, but being registered for a mapping target of its own anyway, be called a 'supergate' in the literature?16:18
loftyWell, ABC9 can't directly map to this anyway, so16:18
povikah16:18
*** MoeIcenowy <MoeIcenowy!~MoeIcenow@2401:c080:1000:445a:5400:4ff:fe31:6509> has quit IRC (Quit: ZNC 1.8.2 - https://znc.in)16:18
lofty...you would have to create a gate library or something and map it as if it was an ASIC16:18
loftywhich is...incredibly inefficient :p16:19
*** MoeIcenowy <MoeIcenowy!~MoeIcenow@2401:c080:1000:445a:5400:4ff:fe31:6509> has joined #yosys16:19
*** bpye <bpye!~bpye@user/bpye> has quit IRC (Quit: Ping timeout (120 seconds))16:19
*** DX-MON <[email protected]> has quit IRC (Quit: I'm not disconnecting, you're disconnecting!)16:19
*** ecs <ecs!ecs@hare/maintainer/ecs> has quit IRC (Ping timeout: 246 seconds)16:19
*** DX-MON| <DX-MON|[email protected]> has joined #yosys16:19
*** bpye <bpye!~bpye@user/bpye> has joined #yosys16:19
*** stephe <[email protected]> has quit IRC (Read error: Connection reset by peer)16:19
*** lethalbit <[email protected]> has quit IRC (Remote host closed the connection)16:19
*** edm <[email protected]> has quit IRC (Read error: Connection reset by peer)16:19
*** stephe <[email protected]> has joined #yosys16:20
*** Ekho <Ekho!~Ekho@user/ekho> has quit IRC (Remote host closed the connection)16:20
*** ecs <ecs!ecs@hare/maintainer/ecs> has joined #yosys16:20
*** edm <[email protected]> has joined #yosys16:20
*** lethalbit <[email protected]> has joined #yosys16:20
povikah of course, gowin as an FPGA flow will instruct ABC9 to map to the registered LUT variaties only, other then that won't be inferred16:21
poviki got distracted by the `(* abc9_box *)` annotation, but that was... err, only yesterday when we covered that that means something else16:22
*** oldtopman <[email protected]> has quit IRC (Quit: *poof*)16:22
lofty;)16:22
*** Ekho <Ekho!~Ekho@user/ekho> has joined #yosys16:26
*** GenTooMan <GenTooMan!~cyberman@2601:547:437f:e5c6:21f:5bff:fefe:a883> has quit IRC (Ping timeout: 272 seconds)17:19
*** GenTooMan <GenTooMan!~cyberman@2601:547:437f:e5c6:21f:5bff:fefe:a883> has joined #yosys17:21
*** GenTooMan <GenTooMan!~cyberman@2601:547:437f:e5c6:21f:5bff:fefe:a883> has quit IRC (Ping timeout: 252 seconds)17:43
*** GenTooMan <[email protected]> has joined #yosys17:59
*** nonchip <[email protected]> has quit IRC (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)22:18
*** nonchip <[email protected]> has joined #yosys22:18

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