*** gnucode <gnucode!~gnucode@user/jab> has quit IRC | 01:30 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has joined #libre-soc | 07:06 | |
sadoon[m] | I feel like this was discussed before but | 07:07 |
---|---|---|
sadoon[m] | I found two different "nmigen"s | 07:07 |
sadoon[m] | One is now called Amaranth HDL | 07:08 |
sadoon[m] | What's up with that? | 07:08 |
sadoon[m] | I'm trying to learn nmigen for an upcoming project of mine and to be able to work on libre-soc stuff, I know ours is the one on gitlab because I see Luke and Jacob's names on the commits, but that other one seems weird | 07:12 |
*** ghostmansd <ghostmansd!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has quit IRC | 07:40 | |
*** octavius <octavius!~octavius@92.40.171.199.threembb.co.uk> has joined #libre-soc | 08:16 | |
octavius | nmigen is the original project, and the official project (coming from m-labs) and the name "nmigen" is trademarked | 08:21 |
octavius | https://m-labs.hk/gateware/nmigen/ | 08:21 |
octavius | Amaranth is a fork made by one of the lead developers who left nmigen, but it was done in a way that breached the nmigen trademark. Sadly this fork had a great deal of publicity, so most people think this is the continuation of nmigen. It is not! | 08:23 |
octavius | lkcl may clarify here, but Sebastien from m-labs authorised for us to maintain nmigen (see the gitlab repo) | 08:24 |
*** ghostmansd <ghostmansd!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has joined #libre-soc | 08:53 | |
lkcl | sadoon[m], amaranth is an Unlawful Trademark-violating fork of nmigen | 09:58 |
sadoon[m] | I suspected as much | 09:59 |
sadoon[m] | I remember some conversation happening about that | 09:59 |
lkcl | the repository contains things like "Amaranth (formerly known as nmigen") which creates what's called a "Trademark Alias" | 09:59 |
lkcl | (an "also-known-as") | 09:59 |
sadoon[m] | Yeah | 09:59 |
lkcl | very interestingly - it is really really brief - blink and you miss it - | 09:59 |
lkcl | the latest Marvel "She-Hulk" episodes cover this | 10:00 |
lkcl | She-Hulk proves in court that she was using the name "She-Hulk" and the judge says, "Ownership is granted to Defendent, **ALSO KNOWN AS** She-Hulk" | 10:01 |
sadoon[m] | Nmigen looks quite cool and despite never using it before I could understand the example code almost fully | 10:01 |
sadoon[m] | lkcl: Lol | 10:01 |
lkcl | yes, it's really "blindingly obvious" and natural | 10:01 |
sadoon[m] | Can't say the same about VHDL :p | 10:01 |
lkcl | yeah VHDL takes getting used to | 10:02 |
sadoon[m] | SystemVerilog was nice to work on when I did work on it but let's see how nmigen goes | 10:02 |
lkcl | i trained / learned electronics at the gate level | 10:02 |
lkcl | so i thoroughly recommend using yosys "show top" command | 10:02 |
sadoon[m] | I'll try that | 10:02 |
sadoon[m] | Is the verilog generated code readable in any way? | 10:03 |
lkcl | get the nmigen design converted to verilog, then "view" it. you need graphviz and xdot installed, which the devscripts automatically do | 10:03 |
sadoon[m] | Or is it similar to assembly | 10:03 |
lkcl | yes it is | 10:03 |
sadoon[m] | Nice! | 10:03 |
lkcl | names of any variables are preserved, but any intermediary expressions are given signal names "$1", "$938" and so on | 10:03 |
lkcl | which is why "show top" (or "show <press tab twice and get a list of modules>") is really useful | 10:04 |
lkcl | sadoon[m], https://libre-soc.org/docs/learning_nmigen/ | 10:04 |
sadoon[m] | Yeah I bookmarked it | 10:04 |
sadoon[m] | Will start after work | 10:05 |
sadoon[m] | Blinky and such | 10:05 |
lkcl | blinky's fun-but-not-immediately-obvious | 10:05 |
lkcl | the HDL is completely abstracted out from the platform (your target FPGA, or even an ASIC platform) | 10:06 |
lkcl | the interface is the pin-definitions which are again given in "abstracted" form, such as "give me one UART pinset please" | 10:06 |
lkcl | or "give me SPI interface 2" please | 10:06 |
lkcl | nmigen - just like migen - connects the two together | 10:07 |
lkcl | the abstraction ensures that you don't end up wasting time writing completely unportable HDL that is incapable of being run on e.g. a Xilinx FPGA because your entire HDL is chock-stuffed with Lattice ECP5-isms | 10:07 |
lkcl | so you: | 10:08 |
lkcl | * declare an instance of Blinky() | 10:08 |
lkcl | * declare an instance of the FPGA "Platform" | 10:08 |
lkcl | * the "platform" instance is passed to the Blinky "elaborate()" function | 10:09 |
lkcl | * the elaborate function requests an "LED" I/O pin from the platform instance | 10:09 |
*** ghostmansd <ghostmansd!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has quit IRC | 10:13 | |
sadoon[m] | That's very nice | 10:27 |
programmerjake | a more complex but still quite simple example that demos using the nmigen platforms: https://salsa.debian.org/Kazan-team/mirrors/utils/-/blob/991b9e0b1165054fa0144ffc6347e9c25fd4f34b/uart_demo.py | 10:29 |
programmerjake | I got that to program a FPGA from inside gitlab-ci | 10:29 |
programmerjake | by simple I mean not a whole cpu, not that you can see it all on one page or anything... | 10:30 |
sadoon[m] | I'll bookmark it as well | 10:34 |
sadoon[m] | I like blinky or a simple adder to start because I like to see the most basic form of the workflow, it's less about the language itself | 10:35 |
sadoon[m] | i.e. getting the pinmap complete, assigning a clock, inputs and outputs | 10:35 |
sadoon[m] | My usual hello world is a counter that displays on 7-segments | 10:36 |
sadoon[m] | So that covers clocks, interfacing, and pin mapping | 10:36 |
programmerjake | well, the url i posted is a transmit-only uart that writes some text over and over, so not too complex (except maybe the frequency conversion logic...) | 10:37 |
sadoon[m] | I bookmarked it anyways, the more examples the better :) | 10:37 |
programmerjake | :) | 10:37 |
lkcl | programmerjake, that was an awesome bit of coding | 11:56 |
lkcl | i used it for the University of Oregon demo for the India students | 11:56 |
lkcl | it worked really well and allowed the students to get at least some kind of "interactivity" by changing the ASCII text, they could get feedback | 11:57 |
lkcl | sadoon[m], basically it's a Finite State Machine that implements RS232/Uart, "from scratch". | 12:20 |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has quit IRC | 13:11 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@176.59.53.103> has joined #libre-soc | 13:12 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@176.59.53.103> has quit IRC | 13:17 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@176.59.160.249> has joined #libre-soc | 13:18 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@176.59.160.249> has quit IRC | 13:46 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has joined #libre-soc | 13:46 | |
*** octavius <octavius!~octavius@92.40.171.199.threembb.co.uk> has quit IRC | 14:06 | |
*** choozy <choozy!~choozy@75-63-174-82.ftth.glasoperator.nl> has joined #libre-soc | 14:46 | |
*** octavius <octavius!~octavius@92.40.171.202.threembb.co.uk> has joined #libre-soc | 15:19 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has quit IRC | 16:07 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has joined #libre-soc | 16:07 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has quit IRC | 16:29 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@176.59.160.5> has joined #libre-soc | 16:30 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@176.59.160.5> has quit IRC | 16:49 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has joined #libre-soc | 16:50 | |
*** ghostmansd <ghostmansd!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has joined #libre-soc | 18:43 | |
*** gnucode <gnucode!~gnucode@user/jab> has joined #libre-soc | 19:03 | |
lkcl | ghostmansd, 939 looks good. no point having 1000 EUR "on the table" - it means nobody can get that money until absolutely every single task in the entire Grant is 100% completed | 19:31 |
lkcl | best to allocate it to "something" | 19:31 |
*** gnucode <gnucode!~gnucode@user/jab> has quit IRC | 19:40 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has quit IRC | 19:40 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has joined #libre-soc | 19:42 | |
ghostmansd | done, assigned to cavatools test API support (985) | 19:50 |
programmerjake | meeting in 9min | 19:51 |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has quit IRC | 19:55 | |
*** gnucode <gnucode!~gnucode@user/jab> has joined #libre-soc | 19:55 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has joined #libre-soc | 19:59 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has quit IRC | 20:07 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has joined #libre-soc | 20:07 | |
*** ghostmansd <ghostmansd!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has quit IRC | 20:09 | |
*** ghostmansd <ghostmansd!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has joined #libre-soc | 20:32 | |
*** octavius <octavius!~octavius@92.40.171.202.threembb.co.uk> has quit IRC | 22:24 | |
*** choozy <choozy!~choozy@75-63-174-82.ftth.glasoperator.nl> has quit IRC | 22:43 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has quit IRC | 22:52 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has joined #libre-soc | 22:53 | |
*** ghostmansd <ghostmansd!~ghostmans@broadband-109-173-83-100.ip.moscow.rt.ru> has quit IRC | 23:58 |
Generated by irclog2html.py 2.17.1 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!