clash-compiler
clash-compiler copied to clipboard
Haskell to VHDL/Verilog/SystemVerilog compiler
Currently in `clash-testsuite` we allow testing against `modelsim` for SystemVerilog only. However, we could allow testing against _all_ HDL supported by Clash in `modelsim`, which would help identify more bugs...
Crucially: https://github.com/clash-lang/clash-compiler/blob/31857597f103a2a62eb8657a4b7c3360bfbe484c/clash-lib/src/Clash/Backend/Verilog.hs#L751 should read ``` hty = BitVector (start-end+1) ``` Furthermore, it shouldn't match on `BitVector`: https://github.com/clash-lang/clash-compiler/blob/31857597f103a2a62eb8657a4b7c3360bfbe484c/clash-lib/src/Clash/Backend/Verilog.hs#L748 as _most_ things in `Verilog` are `BitVector`s anyway, so slicing is allowed.
The `trueDualPortRAM` component (https://hackage.haskell.org/package/clash-prelude-1.6.3/docs/Clash-Explicit-BlockRam.html#v:trueDualPortBlockRam) has no API to set the initial contents like `blockRam` (https://hackage.haskell.org/package/clash-prelude-1.6.3/docs/Clash-Explicit-BlockRam.html#v:blockRam). As far as I know there is no technical reason to not be able to...
Normally, when a function recognised as a test bench makes use of a function recognised as a top entity, these two end up in separate directories (and VHDL libraries). However,...
When a Clash backend encounters netlist that it does not want to attempt to translate, it will return `Nothing`, and silently discard the netlist. Perhaps this is fine for release...
## Still TODO: - [x] Write a changelog entry (see changelog/README.md) - [x] Check copyright notices are up to date in edited files - [ ] Make sure the flag...
This is a discussion piece to improve our developer documentation on writing entries for the CHANGELOG. Please propose any changes you'd like. Since we want to automate changelog file processing...
The warnings of the form ``` Integers are dynamically sized in simulation, but fixed-length after synthesis. Use carefully. ``` are suppressed if they occur in a testbench (`ANN TestBench`). But...
https://github.com/clash-lang/clash-compiler/pull/1147
Something that just occurs to me: since `errorX` is just `throw (XException ...)` it presumably always gets left alone by the simplifier, but what if a user writes `throw (XException...