4 ms·
You did not get it. MyHDL is simply a macro-processor used to generate an RTL. And generating a sequence of similar, say, module instances is ok even with an im
by sklogic 11y ago
You did not get it. MyHDL is simply a macro-processor used to generate an RTL. And generating a sequence of similar, say, module instances is ok even with an imperative language, even Verilog got for loops for this.
Chisel and Clash are not any different.
- vvanders 11y agoYou might want to re-read my post again, I'm specifically railing against imperative -> RTL/VHDL/Verilog. Verilog may have for loops but they're largely used for simulation, they're expensive in terms of synthesized hardware(mostly toolchain/process dependent on how they synthesize) and can only be fixed size. I've got no issue with Chisel, it's a DSL which I think is a good fit. What I'm arguing against is constructs that don't have a clear mapping to hardware representations which means you have to guess at what the compiler generates(see my Mealy vs Moore comment above).
- kersny 11y agoMy understanding is that MyHDL is in fact more like Chisel/Clash, it specifically says "It does not turn arbitrary Python into silicon" in their getting started guide (and as sklogic says). See also: a MyHDL UART: https://github.com/andrecp/myhdl_simple_uart/blob/master/serial_rx.py https://github.com/andrecp/myhdl_simple_uart/blob/master/ser...
- vvanders 11y agoYeah, but that feels like round hole/square peg -ish. It's like saying we've got all this stuff over here but don't use it, really, we mean don't! You're going to spend a ton of docs explaining to the user what parts of the language you can't use rather than having a DSL spec that's clear in what's supported. With a proper DSL you also don't have to massage language features that don't quite map(say enums for state machines) into a format that it's not meant for.
- sebastic 11y agoYou have no idea what you're talking about. You're wrong, MyHDL is a proper hardware DSL in Python. You've never used it and you have no idea what you're talking about
- sklogic 11y agoMyHDL is exactly the same kind of a eDSL as Chisel. And you have a full control of what it generates, see the examples.
- vvanders 11y agoIf it's Python, it's not a DSL by definition. Since you don't seem interested in addressing just one issue(I'm sure I could come up with more) around state machines I don't see any reason in continuing this discussion.
- sklogic 11y ago> If it's Python, it's not a DSL by definition. Scala is not any better. It's exactly the same kind of a eDSL - no macros, nothing, just generating objects in runtime and then serialising this tree into a Verilog code. Nothing fancy. > around state machines What state machines?!? It does not have any more features for defining FSMs than an underlying Verilog.