Tuesday, 2022-02-08

openpowerbot_[mattermost] <lkcl> joel: acomodi kindly responded on the #symbiflow libera IRC channel00:08
openpowerbot_[mattermost] <lkcl> there is a workaround: in this file00:08
openpowerbot_[mattermost] <lkcl> symbiflow-arch-defs/xc/xc7/yosys/synth.tcl00:08
openpowerbot_[mattermost] <lkcl> wherever you see synth_xilinx00:08
openpowerbot_[mattermost] <lkcl> add the option "-nocarry"00:08
openpowerbot_[mattermost] <lkcl> the problem is that vtr is not yet able to cope with greater than about 95-bit add/sub/cmp00:09
openpowerbot_[mattermost] <lkcl> the "$alu" techmap found in yosys/share/xilinx/arith_map.v00:09
openpowerbot_[mattermost] <lkcl> it's actually quite fascinating. the A7 FPGA is subdivided into mini blocks with some clock tree buses between them00:10
openpowerbot_[mattermost] <lkcl> CARRY4s can be chained together but you have to use special blocks to do it.00:11
openpowerbot_[mattermost] <lkcl> above about 23-25 CARRY4s in a chain (which happens easily with greater than a 92-100 bit add say in ooo, a 64-bit divide unit)00:11
openpowerbot_[mattermost] <lkcl> the mini blocks all get used up00:11
openpowerbot_[mattermost] <lkcl> BUT00:11
openpowerbot_[mattermost] <lkcl> what vtr cannot cope with is: crossing *over* those clock buses to start using a new mini block/area of the FPGA00:12
openpowerbot_[mattermost] <lkcl> LUT4/5/6s on the other hand, no problem, those can cross over00:16
openpowerbot_[slack] <joel> I see. I tried to build it, but ran into many issues getting everything working04:10
openpowerbot_[slack] <joel> I despise the conda environment that you need to use to get symbiflow going. As it takes over the python executable, it caused issues in litex. Similarly, it uses it's own yosys binary which didn't have support for the ghdl plugin. And you can't build the plugin against the yosys they ship, because it doesn't ship ghdl04:11
openpowerbot_[slack] <joel> I struggle with the conda environment that you need to use to get symbiflow going.04:18
openpowerbot_[slack] <joel> 04:18
openpowerbot_[slack] <joel> As it takes over the python executable, it caused issues in litex. Similarly, it uses it's own yosys binary which didn't have support for the ghdl plugin. And you can't build the plugin against the yosys they ship, because it doesn't ship ghdl04:18
openpowerbot_[slack] <joel> I the latest I got to was watching (yosys?) print this quite rapidly over and over:04:20
openpowerbot_[slack] <joel> 04:20
openpowerbot_[slack] <joel> > malloc(): invalid size (unsorted)04:20
openpowerbot_[slack] <joel> @mithro Could we get ghdl and the ghdl yosys plugin added to conda?04:36
openpowerbot_[mattermost] <lkcl> i mean, come on, one package-installer is enough04:59
openpowerbot_[mattermost] <lkcl> so i created these: https://git.libre-soc.org/?p=dev-env-setup.git;a=summary04:59
openpowerbot_[mattermost] <lkcl> i recommend using this in a chroot https://git.libre-soc.org/?p=dev-env-setup.git;a=blob;f=symbiflow-install;hb=HEAD05:00
openpowerbot_[mattermost] <lkcl> joel: this is one of the reasons i refused to use conda05:00
openpowerbot_[mattermost] <lkcl> conda05:00
openpowerbot_[mattermost] <lkcl> pip305:00
openpowerbot_[mattermost] <lkcl> venv05:00
openpowerbot_[mattermost] <lkcl> where the chroot can be set up with this https://git.libre-soc.org/?p=dev-env-setup.git;a=blob;f=mk-deb-chroot;hb=HEAD05:00
openpowerbot_[mattermost] <lkcl> and then i have found that you can simply do:05:01
openpowerbot_[mattermost] <lkcl> cp -aux /opt/chroot/symbiflow-chroot/usr/local/symbiflow /usr/local/symbiflow05:01
openpowerbot_[mattermost] <lkcl> about the plugins:05:01
openpowerbot_[mattermost] <lkcl> i first upgraded to yosys 0.1305:02
openpowerbot_[mattermost] <lkcl> Yosys 0.13 (git sha1 8b1eafc3a, clang 9.0.1-12 -fPIC -Os)05:02
openpowerbot_[mattermost] <lkcl> then sigh i went through one by one the list of the symbiflow plugins and built and installed them globally (not under conda)05:02
openpowerbot_[mattermost] <lkcl> now, do also bear in mind: if you use the online instructions strictly for building vpr, you end up with a version of vpr that is 100% guaranteed to segfault.05:04
openpowerbot_[mattermost] <lkcl> if however you drill down into the tree of sources that got downloaded, and find vtr-verilog-to-routing, and update it to latest master05:05
openpowerbot_[mattermost] <lkcl> (or at least Version: 8.1.0-dev+d15ed6774)05:05
openpowerbot_[mattermost] <lkcl> then the segfault goes away05:05
openpowerbot_[mattermost] <lkcl> in this way i have found that you do *not* need the patched version of yosys that comes with the "standard" (public, prominently-advertised) symbiflow installation05:06
openpowerbot_[mattermost] <lkcl> and you get a version that can actually cope with large designs05:07
openpowerbot_[mattermost] <lkcl> small designs (the blinky example), no problem, works perfectly05:07
* openpowerbot_ [mattermost] <lkcl> currently genfasm is taking up 30 gb - and increasing - of resident RAM converting the bitstream for microwatt05:08
openpowerbot_[mattermost] <lkcl> my advice, don't for goodness sake try building microwatt with symbiflow on a machine with less than 64 GB of RAM05:09
openpowerbot_[mattermost] <lkcl> i have 64 GB RAM, i had 32 GB swap space, and was getting OOM killers terminating vtr.  added another 40 GB swapfile and my laptop locked up. sigh.  lost hundreds of editor sessions.05:10
openpowerbot_[mattermost] <lkcl> hooraay, a 3.7 mbyte arty.bit file05:12
openpowerbot_[mattermost] <lkcl> didn't work, but at least i got one :)05:32
openpowerbot_[mattermost] <lkcl> oh - then this: export PATH="$PATH":/usr/local/symbiflow/bin/:/usr/local/symbiflow/vtr/bin/05:34
openpowerbot_[mattermost] <lkcl> v. important05:34
openpowerbot_[mattermost] <lkcl> if you do the explicit one-by-one install of the yosys plugins on top of yosys-0.13 you shouuuldn't have to also export PATH="/usr/local/symbiflow/yosys/bin":$PATH05:36
openpowerbot_[mattermost] <lkcl> hooray, building at 50 mhz i get at least startup BIOS messages10:58
openpowerbot_[mattermost] <lkcl> it says "built on __DATE__ __TIME__" but at least it says something.10:59
openpowerbot_[mattermost] <lkcl> it says "built on _ _ DATE _ _ _ _ TIME _ _" but at least it says something.10:59
openpowerbot_[mattermost] <lkcl> joel: unless it's hiding from me i'm not seeing any obvious commits that are different, i suspect the yosys-packaged version in symbiflow is a vanilla install.  i _heard_ it had some patches but can't find any, instead the checkouts are quite specific, and one that's definitely in "upstream" yosys  commit f44110c62561b Date:   Sat Sep 11 00:50:11 2021 +000014:53
openpowerbot_[mattermost] <lkcl> bottom line then is that it should be perfectly safe to use your "own" version of yosys (usual caveats of course), everything needed by symbiflow looks to be covered with plugins14:54
openpowerbot_[mattermost] <lkcl> except for the rewriting of CARRY4 which, and this does make me smile, is done by exporting to json, running a python script that does json tree-node-walking, then re-importing that in the synth.tcl script :)14:55
openpowerbot_[mattermost] <lkcl> which is... quite hilarious / slightly scary14:56
openpowerbot_[mattermost] <lkcl> but the alternative is to actually patch the xilinx yosys techmaps which is even scarier, and would definitely mean a deviation from how things are currently done in yosys (patch to its source code)14:57
openpowerbot_[mattermost] <lkcl> safest option for now: use the "-nocarry" option to symbiflow_xilinx14:57
openpowerbot_[mattermost] <lkcl> good news: compiling microwatt with symbiflow @ 25 mhz "passes" (runs)16:50
openpowerbot_[mattermost] <lkcl> unfortunately of course, 25 mhz is far too slow for the DDR3 DRAM, the minimum is 48-55 mhz16:51
openpowerbot_[mattermost] <lkcl> but at least it runs, where at 50 mhz it does not16:51
openpowerbot_[slack] <Peter Gielda> As for Symbiflow and Yosys. It used to be a fork (because of some things in VPR mainly) but now it is no longer the case -- its upstream + a plugin.21:15

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