HN user

555dreams

47 karma

Hardware, software, etc.

Posts0
Comments7
View on HN
No posts found.

Despite sounding weird, the multiplication without division is actually very helpful for low cost and resource constrained MCUs/soft-CPUs. Even utilizing the `mno-div` complication flag, division can still occur in precompiled binaries that are linked (because the linker looks at the -march setting). By standardizing the use of multiplication without division we can avoid dealing with this.

As a side note, I ran into this exact problem in a work project last year and needed to implement software division in an illegal instruction handler to get around it.

To iterate on what other people have been saying, nMigen is great! But I probably wouldn't learn it as my first intro to HDLs because in my opinion it's best thought of as a macro-generator for Verilog.

I'd first go through the HDLbits online tutorials for Verilog (https://hdlbits.01xz.net/wiki/Problem_sets). They're a nice interactive intro to Verilog (and HDLs in general) and can be simulated directly in your browser without having to download any software. Even if you only plan to write nMigen, learning Verilog will be helpful when you inevitably need to inspect the nMigen generated Verilog.

I have! SymbiFlow is very good for being a FOSS hardware toolchain, sometimes it has trouble with peculiar FPGA primitives but it's nothing you can't work around.

I've hacked around with my EOS S3 board less than my other boards (mostly because if I need a CPU I'll just add a VexRiscv soft-core in a regular FPGA), but I can definitely see it's use case if you'd like to accelerate sections of your software without building the entire design on an FPGA.

This is a really great list for learning C89/C99! I have to double recommend "Expert C Programming: Deep C Secrets", such a fascinating and fun book (albeit showing some age).

I think many kernel developers view that as a problem as well. KUnit hopefully will change this when it becomes more widely used. I recommend more kernel developers check it out, it's quite nice even in its current form!