4 ms·
I tried Verilog at first but found myself liking vhdl quite a lot more. It just fit my mental model better and helped avoid some really silly errors I kept maki
by bfrog 4y ago
I tried Verilog at first but found myself liking vhdl quite a lot more. It just fit my mental model better and helped avoid some really silly errors I kept making as a beginner.
I could probably pick up Verilog now a bit quicker, I’d jump straight to system Verilog though if I did.
- bajsejohannes 4y agoVerilog does make it fantastically easy to create bugs! It feels like very early C versions that are way too lenient. The biggest bang-for-the-buck you can get here is adding "`default_nettype none" at the top of every file, which makes undeclared identifiers an error. I believe this is SystemVerilog, though, and I agree that's what you should learn.
- _0ffh 4y agoThe default_nettype directive is at least in the Verilog 2001 standard. Ed. Seems it's in Verilog-1995, too: http://www.csit-sun.pub.ro/~duca/cn/verilog_ref_guide/vlog_ref_top.html http://www.csit-sun.pub.ro/~duca/cn/verilog_ref_guide/vlog_r...
- fayalalebrun 4y agoYou should try out Chisel. I learned and used VHDL first, but after switching to Chisel I realized it was much better designed and avoided many of the footguns you'll likely encounter with Verilog or VHDL. And in general, it is a joy to work with.
- bfrog 4y agoI like the idea of a newer language but inevitably it feels like anything not Verilog or vhdl is missing direct tooling support from the vendors. Do any vendors intend on supporting chisel? Does chisel have enough control to ensure generated vhdl/Verilog match the what vendors look for to infer certain things like certain ram and dsp instances? Does chisel have a fast simulator like ghdl?
- fayalalebrun 4y agoChisel is compiled to Verilog so it has excellent interoperability. You can use Chisel in an existing Verilog project or use existing Verilog modules in a Chisel project. Therefore it is already supported by practically all vendors and simulators. I've used Chisel to interface with proprietary Lattice DSPs and RAM modules, and I'm sure you could do the same with other vendors as well. All you have to do is define the IOs and parameters of the module. In Chisel this is called a "Blackbox". Example: https://github.com/fayalalebrun/6502-exp/blob/master/src/main/scala/blackbox/LatticeFIFO.scala https://github.com/fayalalebrun/6502-exp/blob/master/src/mai...
- IshKebab 4y agoI haven't used Chisel yet but looking at the home page it looks like it generates surprisingly readable Verilog with source mapping. Also there's a project called FireSim that can do cycle accurate simulation of Chisel on cloud FPGAs apparently at 10-100MHz which is pretty crazy!
- pclmulqdq 4y agoSystemVerilog or a modern language like Chisel/HardCaml is the way to go. Combine SV with a good linter and you can avoid most of the silly bugs the language lets you do.