*** tpb has joined #symbiflow | 00:00 | |
*** smkz has joined #symbiflow | 00:01 | |
HackerFoo | I wish we had used capnproto for FASM. | 00:05 |
---|---|---|
litghost | One of the design goals for FASM was a line oriented text format | 00:06 |
litghost | So capnproto doesn't really line up there | 00:07 |
HackerFoo | It is fun learning ANTLR, though. It seems nicer than yacc/bison. | 00:07 |
HackerFoo | I think supporting arbitrary width numbers with different formats is the biggest problem. | 00:07 |
HackerFoo | It should be FEATURE OFFSET HEX_VALUE | 00:08 |
HackerFoo | With at most 32-bit values. | 00:09 |
litghost | You are wrong? | 00:09 |
litghost | Almost all modern LUT inits are 64 bits? | 00:09 |
litghost | And BRAM inits are 256 bits? | 00:09 |
HackerFoo | Then it would be: | 00:10 |
litghost | Like you are design a format that doesn't line up with the underlying requirements to express the hardware succulently | 00:10 |
HackerFoo | LUT 0 lower | 00:10 |
HackerFoo | LUT 32 upper | 00:10 |
HackerFoo | 64 bits would be fine I guess. All modern CPUs are 64 bits. | 00:10 |
HackerFoo | But >64 bits is annoying. There are long longs, but that only goes up to 128 bits. | 00:11 |
HackerFoo | And we use 256 bit vectors for BRAM. | 00:11 |
litghost | Why are you messing with integer types at all? | 00:11 |
litghost | Just use bit vectors for everything? | 00:11 |
litghost | bool[] or u8[] is likely fine at the boundry | 00:12 |
HackerFoo | I use fixed arrays of words, because it's faster, but single words would be easier to work with in most languages. | 00:13 |
litghost | Fixed array? | 00:13 |
litghost | You mean fixed length? | 00:13 |
HackerFoo | https://github.com/HackerFoo/bitjig/blob/master/bitjig.cpp#L35-L44 | 00:16 |
HackerFoo | Yeah. | 00:16 |
litghost | Also, 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 |
litghost | Which should be directly invokable once you have parsed the verilog prefix (e.g. "64'b" or "256'h") | 00:18 |
tpb | Title: Integer Objects Python 3.9.1rc1 documentation (at docs.python.org) | 00:18 |
litghost | Your implementation strategy is very fragile. Why not use std::vector (or absl::InlinedVector) to implement a dynamic bitvector | 00:20 |
HackerFoo | Thanks. 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 |
litghost | absl::InlinedVector allows for lightweight small vectors below a certain size, and spill into allocation automatically | 00:21 |
HackerFoo | I think it would still be a lot of allocations. | 00:22 |
HackerFoo | It's easy enough to bump up the word width and recompile if needed. | 00:22 |
litghost | By 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 limits | 00:22 |
HackerFoo | std::array doesn't have to be heap allocated. | 00:23 |
litghost | Neither does absl::InlinedVector if the allocation is less than the template parameter? | 00:23 |
litghost | https://github.com/abseil/abseil-cpp/blob/592924480acf034aec0454160492a20bccdbdf3e/absl/container/inlined_vector.h#L29 | 00:23 |
litghost | Do not bake in exploding size limits to modern C++ code. There are light-weight ways to trade compile time static allocation and dynamic allocation | 00:24 |
litghost | https://github.com/abseil/abseil-cpp/blob/master/absl/container/inlined_vector.h#L63-L68 | 00:25 |
HackerFoo | I prefer to hit some limit (and know about it) that have my machine slowly die. | 00:25 |
HackerFoo | *than | 00:26 |
litghost | Sure, but 64 bytes (or 101 bytes) is not that limit | 00:26 |
litghost | 10e7 as a limit, sure! Anything less than 64kB, no way | 00:27 |
litghost | As a concrete example, tcmalloc will generate warnings on allocations large than 1 GB I believe? | 00:28 |
litghost | https://stackoverflow.com/questions/52351611/is-tcmalloc-large-alloc-a-warning-or-error-in-python/52399665 | 00:28 |
tpb | Title: memory - is tcmalloc: large alloc a warning or error in Python - Stack Overflow (at stackoverflow.com) | 00:28 |
HackerFoo | Also, 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 |
HackerFoo | Not saying it's better, just that there are tradeoffs. | 00:31 |
litghost | So? std::array is 400 lines, std::vector is 2k? We move useful constructs behind interfaces and test them | 00:32 |
litghost | If you want the advantages of small static arrays without exploding when the size exceeds them, that is what absl::InlineVector (et all) is for | 00:32 |
HackerFoo | You 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 |
HackerFoo | Maybe this could be disabled with a macro, because you'd need assertions on the fixed width code anyway. | 00:36 |
litghost | I doubt that it matters that much. Without data, I'd lean to the robust solution before further optimization | 00:37 |
bjorkintosh | so, is there yet a batteries included kit one can get started with? | 01:15 |
*** Degi_ has joined #symbiflow | 01:38 | |
*** Degi has quit IRC | 01:41 | |
*** Degi_ is now known as Degi | 01:41 | |
HackerFoo | bjorkintosh: https://github.com/SymbiFlow/symbiflow-examples | 01:57 |
HackerFoo | Or, if you're not opposed to Nix: https://github.com/SymbiFlow/nix-symbiflow | 01:58 |
bjorkintosh | multics forever! down with eunuchs!!! | 01:58 |
HackerFoo | I mean the package manager: https://nixos.org/ | 02:00 |
tpb | Title: NixOS - NixOS Linux (at nixos.org) | 02:00 |
bjorkintosh | oh. nixos. the other guix | 02:00 |
bjorkintosh | (or is it the other way around) | 02:00 |
bjorkintosh | HackerFoo, do you use the quicklogic or some other hardware? | 02:01 |
*** citypw has joined #symbiflow | 03:31 | |
mithro | litghost / HackerFoo: I just found https://github.com/conda-incubator/conda-lock | 03:54 |
mithro | umarcor: https://github.com/conda-incubator/conda-docker | 03:56 |
mithro | umarcor: "Create minimal docker images from conda environments" | 03:57 |
umarcor | @mithro: I'll have a llok | 04:02 |
mithro | I also just discovered that anaconda has build badges -> https://anaconda.org/anaconda/constructor/badges | 04:03 |
mithro | https://anaconda.org/litex-hub/yosys/badges | 04:03 |
umarcor | Is that different from the Conda shields in http://shields.io/ ? | 04:06 |
tpb | Title: Shields.io: Quality metadata badges for open source projects (at shields.io) | 04:06 |
mithro | umarcor: Dunno.... | 04:07 |
umarcor | I prefer using shields.io if possible, because it allows customisation and homogeneity. | 04:07 |
mithro | https://medium.com/@QuantStack/open-software-packaging-for-science-61cecee7fc23 | 04:13 |
tpb | Title: Open Software Packaging for Science | by QuantStack | Medium (at medium.com) | 04:13 |
HackerFoo | bjorkintosh: I have various Xilinx Artix 7 boards, but I haven't used them much. | 04:29 |
HackerFoo | I have one of these, which I'm most interested in: https://www.crowdsupply.com/rhs-research/nitefury | 04:31 |
tpb | Title: NiteFury | Crowd Supply (at www.crowdsupply.com) | 04:31 |
HackerFoo | Maybe 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 |
HackerFoo | I wonder if that might put too much load on hydra.nixos.org. Probably not, though. | 04:39 |
HackerFoo | hydra.vtr.tools might be bigger that their cluster. | 04:40 |
HackerFoo | *than | 04: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 |
umarcor | It 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 IRC | 05:15 | |
umarcor | Therefore, 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 #symbiflow | 05:18 | |
-_whitenotifier-f- [sv-tests] caryr opened issue #1186: Many tests from ivtest can now be removed from the blacklist. - https://git.io/JITj4 | 05:57 | |
*** kgugala_ has joined #symbiflow | 06:06 | |
*** kgugala has quit IRC | 06:09 | |
*** kgugala has joined #symbiflow | 06:34 | |
*** kgugala_ has quit IRC | 06:34 | |
*** awordnot has quit IRC | 06:36 | |
*** awordnot has joined #symbiflow | 06:41 | |
*** join_subline has quit IRC | 07:03 | |
*** join_subline has joined #symbiflow | 07:06 | |
*** mkru has joined #symbiflow | 07:29 | |
-_whitenotifier-f- [symbiflow-arch-defs] acomodi opened issue #1829: CI on master does not run properly - https://git.io/JIkng | 08:02 | |
*** xtro has quit IRC | 08:54 | |
-_whitenotifier-f- [yosys-symbiflow-plugins] tmichalak opened issue #59: Remove workaround with skipping clocks on dangling wires - https://git.io/JIk9C | 11:13 | |
*** kgugala has quit IRC | 12:25 | |
*** kgugala has joined #symbiflow | 12:26 | |
*** mkru has quit IRC | 15:15 | |
*** mkru has joined #symbiflow | 15:33 | |
*** join_subline has quit IRC | 15:33 | |
*** join_subline has joined #symbiflow | 15:34 | |
*** mkru has quit IRC | 15:48 | |
*** maartenBE has quit IRC | 16:04 | |
*** maartenBE has joined #symbiflow | 16:06 | |
*** mkru has joined #symbiflow | 16:16 | |
*** mkru has quit IRC | 16:26 | |
mithro | @umarcor I only read the description and didn't actually look at the code | 16:50 |
*** citypw has quit IRC | 16:51 | |
*** xtro has joined #symbiflow | 17:07 | |
*** titanbiscuit has joined #symbiflow | 18: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, etc | 19:55 |
HackerFoo | I sped up the FASM parser ~30x, and it passes tests. Now to package it. | 23:50 |
litghost | Sweet | 23:55 |
Generated by irclog2html.py 2.17.2 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!