ekiwi | 2 years ago | on: Paris cycling numbers double in one year thanks to investment
ekiwi's comments
ekiwi | 2 years ago | on: The risk of RISC-V: What's going on at SiFive?
ekiwi | 3 years ago | on: Rosenpass – formally verified post-quantum WireGuard
This is still a pretty neat result! End-to-end proofs from high level protocol to low level implementation are mostly still a research topic.
ekiwi | 4 years ago | on: Dura is a background process that watches your Git repositories
ekiwi | 4 years ago | on: China to supercharge uranium race with 150 new nuclear reactors
There is a lot more to nuclear waste than just the fuel rods. Lots of materials that are either used by workers at the plant or part of the plant become radio active and can no longer go to a regular landfill of other trash processing facilities. That is why some energy companies are trying to default rather than pay for decommissioning plants once they have reached the maximum age that they were constructed for.
ekiwi | 4 years ago | on: Intel C/C++ compilers complete adoption of LLVM
icc has always had its own dialect of C++, which in practice means that there is "C++" code that only compiles on icc but is rejected by clang++ and g++. With Intel switching to the clang frontend, I would hope that their interpretation of C++ will become more, not less, standard conform.
ekiwi | 4 years ago | on: TSMC eyes Germany as possible location for first Europe chip plant
Parsing Verilog and generating valid Verilog is fairly difficult. If you want to stay with Verilog, the most realistic alternative to firrtl right now is the RTL-IL representation used inside of yosys.
> at worst it does not do the primary function of "being" IR for RTL, because it should've been a graph, not another language with simplified syntax.
Canonicalized LoFirrtl (i.e., the representation the compiler lowers Chisel to) is essentially SSA (single static assignment) which encodes a dataflow DAG. So on a per module level, firrtl does represent the circuit as a graph.
What you might be talking about is the fact that this graph isn't global. Having a global circuit graph could make some analyses easier, but it might require essentially in-lining the whole circuit which is something a lot of designers are opposed to. Even small optimizations like removing unused pins from internal modules are often times opposed.
Chris Lattner and others are currently working on an "industry" version of firrtl as part of the CIRCT hardware compiler framework: https://github.com/llvm/circt As you can see they did not decide to go with a global graph based IR and instead opted to just represent local data-flow graphs as SSA.
ekiwi | 4 years ago | on: Programming Language Memory Models
What if your function takes a pointer that might be pointing to a global variable? Does that mean that all accesses through a pointer are now excempt from optimization unless the compiler can prove that the pointer will never point to a global variable?
ekiwi | 4 years ago | on: Chisel/FIRRTL Hardware Compiler Framework
Chisel is not synthesizing Scala. It is just a library implemented in Scala that allows you to create a data structure that describes a circuit.
Something like:
circuit = Circuit("test")
module = circuit.module("test")
in0 = module.input("in0")
// ...
The one thing Chisel adds on top of an Object hierarchy that describes a circuit is what PL people normally call "syntactic sugar". I.e., Chisel makes constructing this circuit object look more like a Verilog circuit by taking advantage of some nice Scala features. However, in the background, we are just constructing a data structure that represents a circuit, just like in a GUI library you might construct a data structure that describes your widget hierarchy. Chisel is not High Level Synthesis.ekiwi | 4 years ago | on: Chisel/FIRRTL Hardware Compiler Framework
ekiwi | 4 years ago | on: Chisel/FIRRTL Hardware Compiler Framework
That said, I think one of the problems the google team was struggling with is that in traditional HW development there is design and a separate verification team. The design team bought into Chisel since it would let them generate hardware more quickly, but the verification team just tried to apply their traditional verification methods on the _generated_ Verilog. This is almost like trying to test the assembly that a C++ compiler generates instead of trying to test the C++ program since all your testing infrastructure is setup for testing assembly code and that is "what we have always been doing".
In order to catch verification up to modern Hardware Construction Languages [0] we need more powerful verification libraries that can allow us to build tests that can automatically adapt to the parameters that were supplied to the hardware generator. There are different groups working on this right now. The jury is still out on how to best solver the "verification gap". In case you are interested:
- https://github.com/chiselverify/chiselverify
- https://github.com/leonardt/fault
- https://github.com/ucb-bar/chisel-testers2/
I am probably missing some approaches from the nmigen world that I am not familiar with. You can always write cocotb [1] tests in python, but I am not sure if they can directly interface with nmigen generators to adapt to their parameterization.
[0] besides Chisel, there is also https://github.com/nmigen/nmigen and https://github.com/SpinalHDL/SpinalHDL
ekiwi | 4 years ago | on: Chisel/FIRRTL Hardware Compiler Framework
I remember one of the reasons you did not want to use firrtl was that its compiler is implemented in Scala and thus hard to integrate into other projexts. CIRCT will solve that problem by providing a firrtl compiler implemented in C++. Other languages like Verilog/VHDL and new high level languages for HLS-like designs are also on the todo list.
ekiwi | 4 years ago | on: Chisel/FIRRTL Hardware Compiler Framework
The talk from a google engineer can be found on youtube: https://www.youtube.com/watch?v=x85342Cny8c Please note that they were using a version of Chisel from 5+ years ago and many things have changed since then. It is still true though that Chisel can be hard to learn for typical hardware engineers, which is why it may be best suited for small and highly dedicated teams rather then large hardware companies.
[EDIT] Here is a talk from a solo-developer using the latest version of Chisel: https://www.youtube.com/watch?v=Wst8IoYRWKo
ekiwi | 4 years ago | on: XiangShan open-source 64-bit RISC-V processor to rival Arm Cortex-A76
ekiwi | 5 years ago | on: Unifying the CUDA Python Ecosystem
ekiwi | 5 years ago | on: System76 Developing “Cosmic” Desktop Environment
ekiwi | 5 years ago | on: Glacial – Microcoded RISC-V core designed for low FPGA resource utilization
ekiwi | 5 years ago | on: Jazzer brings modern fuzz testing to the JVM
ekiwi | 5 years ago | on: Jazzer brings modern fuzz testing to the JVM
ekiwi | 5 years ago | on: RISC-V isn’t as interesting as you think
It has some comparisons so you can judge for yourself. Of course, since this is a project driven by only 2-3 grad students it isn't completely fleshed out. However, you would assume that if the ISA just wasn't suitable for high performance implementations that a project like BOOM would have uncovered that by now.