Remix.run Logo
lizknope 9 days ago

I've been designing chips for almost 30 years.

We have a bunch of AI initiatives in my company but most of them are about using Copilot to help write scripts to automate the design flow. Our physical design flow are thousands of lines of Tcl and Python code.

The article mentions High Level Synthesis. I've been reading about this since my first job in the 1990's. I've worked on at least 80 chips and I've never seen any chip use one of these tools except for some tiny section that was written by some academics who didn't want to learn Verilog for reasons.

arrakark 2 days ago | parent | next [-]

I've been designing chips for 2 years. One of our very well known third-party IP vendors clearly used HLS. I say clearly, because it was almost a 1:1 translation from OO C++ code, variable names, hierarchies, polymorphism, you name it. Absolutely everything about the Verilog was the complete opposite about how a designer organizes their state machines, etc.

Anyways, their IP very clearly violated the standards of a very well known interface, which could have spelled disaster at tape-out. I had to fight tooth-and-nail, and spent lots of my company's time trying to convince this third-party vendor that this was an actual issue. Only months later were they convinced. The revised code kept coming back and failing interface checks, which shows that they weren't doing these checks on their end. All I could think is, "this can't go well..."

shash 9 days ago | parent | prev [-]

I've never tried SystemC. But after having tried to learn Chisel and friends, and successfully learning Bluespec (and using it in professional projects), I have some insights.

It's fundamentally important when doing hardware design to work in a language that _expresses_ itself like you're designing hardware. Verilog (for all its faults) shines there because it feels like you're writing a slightly higher level netlist. That's not the case with SC and friends, which doesn't allow you to think in hardware. Languages like BSV and SV are functionally similar but they force you to think in similar ways to Verilog, meaning you can write much tighter high-level code.

I'd be interested in your experience, but I feel that using normal programming languages to build hardware is an abstraction failure. Which is why it performs so poorly.