HN user

victor82

160 karma

contact info: victor@avoid.contact

Posts8
Comments15
View on HN

It is not explained why points 31 to 36 are valid, unlike HDL synthesis tools, C compilers are pretty deterministic, same input same output, except timestamps, etc.

If an UB adopt X behavior one time, a reproducible build will take same X behavior the next time.

Of course I am not negating the fact that this undefined in the first instance nor condoning the UB usage.

Well, that code is module without any context (ie: connected to nothig), it just have 2 inputs (clk and rst), and an "output" with the current sum, after it reach the desired value it keep stuck there (until reset).

So as the simulation code shows, it just tick the clock (with the "yield" statement) and read the "output" register and print it.

Of course you could connect this "Project Euler 1 accelerator" to a CPU, a SoC or whatever, or just connect LEDs directly to "output"

You can avoid using abstractions and write it directly on the silicon, it's not really difficult, it turns into a bunch of muxes, registers and adders (as shown in the link below) and solves the problem in just 333 clock cycles, using a minimum of power

https://gist.github.com/vmunoz82/49de4c63bee1768283162ec5406...

  class Euler(Elaboratable):
    def __init__(self):
        self.output = Signal(19)

    def elaborate(self, platform):
        m = Module()

        count5 = Signal(3)
        c3, c5 = Signal(17), Signal(18)

        cond3, cond5 = (c3 < 1000) & (count5 != 0), (c5 < 1000) & (count5 < 3)

        m.d.sync += count5.eq(Mux(count5 == 4, 0, count5+1))
        m.d.sync += [
            c3.eq(c3+3),
            c5.eq(Mux(cond5, c5+5, c5))
        ]
        m.d.sync += self.output.eq(self.output +
                                   Mux(cond3, c3, 0)+Mux(cond5, c5, 0))
        return m
  Location: Chile
  Remote: Yes
  Willing to relocate: Could be, depends on the place and project
  Technologies: C, Golang, Python, VHDL, Verilog, Amaranth HDL, FPGAs
  Résumé/CV: https://www.linkedin.com/in/victor-mu%C3%B1oz-79955093/
  Email: victor at avoid dot contact
  Github: https://github.com/vmunoz82
 
Hi! I am Victor, I have 20 years of experience working in technology, in this moment I enjoy working developing algorithms directly in RTL (FPGAs), I love to design scalable stuff from scratch.

If you are looking for hands on co-founder engineer, CTO, or want to implement algorithms in hardware, would be good to get in touch.