10 comments

  • weebull 5 hours ago
    My biggest complaint is there's no way to name a signal because a wire isn't a thing. You instance gates and give those names, but wires are anonymous connections between gate pins.

    I think this is backwards. Knowing that a signal is the clock, reset, data valid, adder result is far more important than the gate that drove it. The gates barely need names. Sadly, I think starting with that concept leads to a rather different language.

  • Lramseyer 10 hours ago
    Kind of a wild idea, but have you considered using this as a markup language for logic diagrams? I'm thinking something like mermaid - https://mermaid.js.org/ While this might not be super useful for chip design, it is a fully functional HDL, and since it is gate level, it would map nicely to diagrams.
    • rafa_rrayes 7 hours ago
      That is a very interesting idea! Tbh, I have been thinking about something along those lines. I was messing around with gemini 3.0 back when it came out and made this program called Logic Lab (https://logiclab-227111532364.us-west1.run.app/). I was thinking of exporting/importing the components as SHDL, but as of rn they are just exported in some generic format gemini made.
    • knowitnone3 7 hours ago
      I thought the opposite. Use mermaid as the HDL language. Draw the diagram, then synthesis.
  • huragok 1 hour ago
    Dumb question: how do I load this onto an ICE40?
  • fspeech 9 hours ago
    If you are just interested in a structural description (so-called netlist) the standard is EDIF.
  • vhantz 6 hours ago
    Real nice project!

    If you removed the explicit declaration of every gate in a preamble and then their wiring as a separate step, you could reduce the boilerplate a lot. This example could look like this:

      component FullAdder(A, B, Cin) -> (Sum, Cout)
      {
        A XOR B -> AxB
        A AND B -> AB
    
        AxB XOR Cin -> S
        (AxB AND Cin) OR AB -> C
    
        Sum: S
        Cout: C
      }
  • 5- 4 hours ago
    perhaps similar in scope to the hdl used in 'the elements of computing systems' aka nand2tetris.org ?

    https://drive.google.com/file/d/1dPj4XNby9iuAs-47U9k3xtYy9hJ...

    honorary mention: https://www.funghisoft.com/mhrd

  • bigbadfeline 7 hours ago
    Looks cool and can be useful for its stated purpose. You mention simulation, is there a way to specify and simulate time delays?
    • rafa_rrayes 7 hours ago
      Not as a native functionality, not yet but it is something I have been wanting to do for a while. I want to make a complete simulation platform with useful tools such as that. For now you can make the python code call the step() function on your desired timing
  • UncleOxidant 4 hours ago
    A structural netlist similar to EDIF.
  • oleumbudget 7 hours ago
    Looks really cool
  • notherhack 9 hours ago
    [flagged]
    • dang 8 hours ago
      I'm sure you didn't mean to, but this comes across as a shallow dismissal, which is against the site guidelines (https://news.ycombinator.com/newsguidelines.html): "Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something.", as well as the Show HN guidelines (https://news.ycombinator.com/showhn.html).

      A comment like this could turn from a bad one to a good one if it were written more in the key of curiosity: what are the similarities or differences? what are some pointers for further development? and so on. If you know more than someone else does, that's great, but then please share some of what you know so we can all learn.

      Telling somebody that their project which they've been pouring their passion and creativity into is merely reinventing some well-known thing that's been around for years is going to come across as a putdown even when it isn't intended that way. The effect is to shut down creativity and exploration, which is the opposite of what this place is supposed to be for.