Wednesday, 2020-12-02

*** tpb has joined #symbiflow00:00
*** smkz has joined #symbiflow00:01
HackerFooI wish we had used capnproto for FASM.00:05
litghostOne of the design goals for FASM was a line oriented text format00:06
litghostSo capnproto doesn't really line up there00:07
HackerFooIt is fun  learning ANTLR, though. It seems nicer than yacc/bison.00:07
HackerFooI think supporting arbitrary width numbers with different formats is the biggest problem.00:07
HackerFooIt should be FEATURE OFFSET HEX_VALUE00:08
HackerFooWith at most 32-bit values.00:09
litghostYou are wrong?00:09
litghostAlmost all modern LUT inits are 64 bits?00:09
litghostAnd BRAM inits are 256 bits?00:09
HackerFooThen it would be:00:10
litghostLike you are design a format that doesn't line up with the underlying requirements to express the hardware succulently00:10
HackerFooLUT 0 lower00:10
HackerFooLUT 32 upper00:10
HackerFoo64 bits would be fine I guess. All modern CPUs are 64 bits.00:10
HackerFooBut >64 bits is annoying. There are long longs, but that only goes up to 128 bits.00:11
HackerFooAnd we use 256 bit vectors for BRAM.00:11
litghostWhy are you messing with integer types at all?00:11
litghostJust use bit vectors for everything?00:11
litghostbool[] or u8[] is likely fine at the boundry00:12
HackerFooI use fixed arrays of words, because it's faster, but single words would be easier to work with in most languages.00:13
litghostFixed array?00:13
litghostYou mean fixed length?00:13
HackerFoohttps://github.com/HackerFoo/bitjig/blob/master/bitjig.cpp#L35-L4400:16
HackerFooYeah.00:16
litghostAlso, if you are having trouble on the C++ <-> Python boundry, shouldn't https://docs.python.org/3/c-api/long.html#c.PyLong_FromString work?00:18
litghostWhich should be directly invokable once you have parsed the verilog prefix (e.g. "64'b" or "256'h")00:18
tpbTitle: Integer Objects Python 3.9.1rc1 documentation (at docs.python.org)00:18
litghostYour implementation strategy is very fragile.  Why not use std::vector (or absl::InlinedVector) to implement a dynamic bitvector00:20
HackerFooThanks. I'm working on a C++ visitor that generates a string of tag/length/hex values right now, which should be about as fast as possible to marshal into Python.00:20
litghostabsl::InlinedVector allows for lightweight small vectors below a certain size, and spill into allocation automatically00:21
HackerFooI think it would still be a lot of allocations.00:22
HackerFooIt's easy enough to bump up the word width and recompile if needed.00:22
litghostBy definition, replacing std::array with absl::InlinedVector will result in the same number of allocations, and doesn't explode if the input exceeds your size limits00:22
HackerFoostd::array doesn't have to be heap allocated.00:23
litghostNeither does absl::InlinedVector if the allocation is less than the template parameter?00:23
litghosthttps://github.com/abseil/abseil-cpp/blob/592924480acf034aec0454160492a20bccdbdf3e/absl/container/inlined_vector.h#L2900:23
litghostDo not bake in exploding size limits to modern C++ code.  There are light-weight ways to trade compile time static allocation and dynamic allocation00:24
litghosthttps://github.com/abseil/abseil-cpp/blob/master/absl/container/inlined_vector.h#L63-L6800:25
HackerFooI prefer to hit some limit (and know about it) that have my machine slowly die.00:25
HackerFoo*than00:26
litghostSure, but 64 bytes (or 101 bytes) is not that limit00:26
litghost10e7 as a limit, sure!  Anything less than 64kB, no way00:27
litghostAs a concrete example, tcmalloc will generate warnings on allocations large than 1 GB I believe?00:28
litghosthttps://stackoverflow.com/questions/52351611/is-tcmalloc-large-alloc-a-warning-or-error-in-python/5239966500:28
tpbTitle: memory - is tcmalloc: large alloc a warning or error in Python - Stack Overflow (at stackoverflow.com)00:28
HackerFooAlso, InlinedVector is 845 lines. My implementation with helper functions and a test is ~40 lines, and I know what to expect from it.00:30
HackerFooNot saying it's better, just that there are tradeoffs.00:31
litghostSo?  std::array is 400 lines, std::vector is 2k?  We move useful constructs behind interfaces and test them00:32
litghostIf you want the advantages of small static arrays without exploding when the size exceeds them, that is what absl::InlineVector (et all) is for00:32
HackerFooYou can't have all the advantages, though. For example, there must be a check to see if the static array size is exceeded.00:34
HackerFooMaybe this could be disabled with a macro, because you'd need assertions on the fixed width code anyway.00:36
litghostI doubt that it matters that much.  Without data, I'd lean to the robust solution before further optimization00:37
bjorkintoshso, is there yet a batteries included kit one can get started with?01:15
*** Degi_ has joined #symbiflow01:38
*** Degi has quit IRC01:41
*** Degi_ is now known as Degi01:41
HackerFoobjorkintosh: https://github.com/SymbiFlow/symbiflow-examples01:57
HackerFooOr, if you're not opposed to Nix: https://github.com/SymbiFlow/nix-symbiflow01:58
bjorkintoshmultics forever! down with eunuchs!!!01:58
HackerFooI mean the package manager: https://nixos.org/02:00
tpbTitle: NixOS - NixOS Linux (at nixos.org)02:00
bjorkintoshoh. nixos. the other guix02:00
bjorkintosh(or is it the other way around)02:00
bjorkintoshHackerFoo, do you use the quicklogic or some other hardware?02:01
*** citypw has joined #symbiflow03:31
mithrolitghost / HackerFoo: I just found https://github.com/conda-incubator/conda-lock03:54
mithroumarcor: https://github.com/conda-incubator/conda-docker03:56
mithroumarcor: "Create minimal docker images from conda environments"03:57
umarcor@mithro: I'll have a llok04:02
mithroI also just discovered that anaconda has build badges -> https://anaconda.org/anaconda/constructor/badges04:03
mithrohttps://anaconda.org/litex-hub/yosys/badges04:03
umarcorIs that different from the Conda shields in http://shields.io/ ?04:06
tpbTitle: Shields.io: Quality metadata badges for open source projects (at shields.io)04:06
mithroumarcor: Dunno....04:07
umarcorI prefer using shields.io if possible, because it allows customisation and homogeneity.04:07
mithrohttps://medium.com/@QuantStack/open-software-packaging-for-science-61cecee7fc2304:13
tpbTitle: Open Software Packaging for Science | by QuantStack | Medium (at medium.com)04:13
HackerFoobjorkintosh: I have various Xilinx Artix 7 boards, but I haven't used them much.04:29
HackerFooI have one of these, which I'm most interested in: https://www.crowdsupply.com/rhs-research/nitefury04:31
tpbTitle: NiteFury | Crowd Supply (at www.crowdsupply.com)04:31
HackerFooMaybe I should do a proper release of nix-symbiflow once we have Litex in symbiflow-examples. I could probably even upsteam it to nixpkgs, then NixOS would have support in the next release.04:37
HackerFooI wonder if that might put too much load on hydra.nixos.org. Probably not, though.04:39
HackerFoohydra.vtr.tools might be bigger that their cluster.04:40
HackerFoo*than04:40
umarcor@mithro: I had a look at conda-docker, and I didn't find much special about it. It seems to be a Python library for using docker images as tarballs. So, it can add and remove layers/content, but I'd say it cannot do anything which requires actually executing something.05:13
umarcorIt doesn't seem to have features for squashing specific layers or for merging layers from different images, which would be useful.05:15
*** az0re has quit IRC05:15
umarcorTherefore, I only find it useful for users that want to package Python only projects and which cannot use docker/podman.05:16
*** az0re has joined #symbiflow05:18
-_whitenotifier-f- [sv-tests] caryr opened issue #1186: Many tests from ivtest can now be removed from the blacklist. - https://git.io/JITj405:57
*** kgugala_ has joined #symbiflow06:06
*** kgugala has quit IRC06:09
*** kgugala has joined #symbiflow06:34
*** kgugala_ has quit IRC06:34
*** awordnot has quit IRC06:36
*** awordnot has joined #symbiflow06:41
*** join_subline has quit IRC07:03
*** join_subline has joined #symbiflow07:06
*** mkru has joined #symbiflow07:29
-_whitenotifier-f- [symbiflow-arch-defs] acomodi opened issue #1829: CI on master does not run properly - https://git.io/JIkng08:02
*** xtro has quit IRC08:54
-_whitenotifier-f- [yosys-symbiflow-plugins] tmichalak opened issue #59: Remove workaround with skipping clocks on dangling wires - https://git.io/JIk9C11:13
*** kgugala has quit IRC12:25
*** kgugala has joined #symbiflow12:26
*** mkru has quit IRC15:15
*** mkru has joined #symbiflow15:33
*** join_subline has quit IRC15:33
*** join_subline has joined #symbiflow15:34
*** mkru has quit IRC15:48
*** maartenBE has quit IRC16:04
*** maartenBE has joined #symbiflow16:06
*** mkru has joined #symbiflow16:16
*** mkru has quit IRC16:26
mithro@umarcor I only read the description and didn't actually look at the code16:50
*** citypw has quit IRC16:51
*** xtro has joined #symbiflow17:07
*** titanbiscuit has joined #symbiflow18:33
mithro@umarcor Do you know anything about maintaining github actions externally from the using repo. I just figured out we should probably be doing that for our Python packages.19:53
mithro@umarcor https://github.com/SymbiFlow/python-symbiflow-v2x/blob/master/.github/workflows/ci.yml#L6-L13 is would be super nice if that job was shared between multiple different packages like python-symbiflow-v2x, vtr-xml-utils, etc19:55
HackerFooI sped up the FASM parser ~30x, and it passes tests. Now to package it.23:50
litghostSweet23:55

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