Hacker Newsnew | past | comments | ask | show | jobs | submit | rachitnigam's commentslogin

You can express full CPU designs in Calyx (in fact, we have) because it is a superset of a hardware description language. However, Calyx will probably not provide any substantial benefit in this case because there are not that many opportunities to optimize things.

The premise of Calyx is you're generating hardware designs from high-level code which has a lot more structure than arbitrary HDL code and the compiler will use that extra structure to automatically do optimizations that cannot be done over arbitrary HDL code.


Yeah, we've been able to compile entire neural networks like GoogleNet etc. through Calyx. See: https://calebmkim.github.io/files/pubs/src.pdf

HLS-like languages are an input to Calyx. For example, we're currently building a Vivado alternative using Calyx and the frontend there does the pipelining for us. Calyx then goes in and performs a bunch of other optimizations.

A big edge we have is that Calyx supports both statically-scheduled circuits (where the latencies of things are known) and dynamically-scheduled circuits (where latency is not known). Because of this, we have been able to do optimizations in this new flow that take advantage of both.


This is great to hear. It might be nice to bubble those examples up to your Github page along with some diagrams and logic/resource results after synthesis (i.e. how many LUTs, BRAM, etc).

It's easy for people to do a lot of naysaying, it's a lot harder to try and actually do something evolutionary, let alone revolutionary. Please keep posting with up-to-date results.


All of those things. Most HLS tools use the CDFG to generate optimized resource bindings and area-aware optimizations.


Author of Calyx here. Good question! Usually, you can use OpenCL based drivers to interface with standard memory interfaces on FPGAs.

ASICs require a lot more work by either packaging on the same chip as a processor or building IO interfaces for their own package.


Odd, it works correctly for me: https://rachit.pl/files/pubs/calyx.pdf

What platform/browser has this problem?


Chrome on Android for me. Works on Firefox on Android.


Android Chrome.


Author of Calyx here. I always find these arguments quite reductive but will nonetheless entertain them.

"Developing Hardware is a solved problem"

For which audience specifically? Maybe if you consider giant teams at large corps pouring in millions. Is it a solved problem for hobbyists, students, people who're just curious? Most people who're curious about software can go play with it in 15 mins. For hardware, it's more like months.

"If you need pseudo-DSL ..."

Weirdly gatekeepy. Why should hardware be only used by experts? There's lot you could've said about it being hard to optimize hardware well (which is challenging with HDLs too) but instead choose this argument.

"You cannot abstract away this engineering task" The goal of research is to try to do things differently. We already know how to build hardware using HDLs, with waterfall models and giant teams. We want to figure out if there are better ways to do it.

The VLSI revolution wouldn't have happened if randos on the internet kept complaining about how "we already know how to do full custom design" and "you cannot abstract physics". We did before, and it changed the world. Let's have some optimism.


Good luck! :)


I think the developer did a great job for at least trying. I'm no hardware design expert, but the amount of work done shows. Plus it's reproducible research. If you're so sure about the quality and utility of the work done, you can get the artifacts, reproduce the toolchain, and write a nice rebuttal about it, and maybe even suggest improvements to the work done. Who knows.

I think, failure is a way better outcome than not trying in the first place.


It was not my intent to be discouraging towards the project, but rather than a frustration about a consistently misplaced attention from outsiders and science/research community.


But again, this notion of "outsiders" is very gatekeepy. There have been substaintial successes in using high-level programming models for hardware design.

The Google VCU paper explicitly mentions using such tools made them faster. All of these is enabled by people looking at problems with a fresh perspective


I don't have a horse in this race, and maybe the root comment came off as flippant and disparaging. But I'm not reading "outsiders" as being what you say "gatekeeping".

Maybe another perspective is that "outsiders" may not have the same view of the issue as experts in the field and may not (historically, in OP's experience) seem to want to work together with the experts to develop this view. Handwaving away complexities and not willing to get hands dirty is something I've seen as well so maybe I'm a bit more empathetic, but cold shoulders from "experts" towards newcomers is definitely a thing.

Both of which could help both sides - bring more depth to the fresh view of the "outsiders" and actually bring valuable freshness to the depth of the "experts".


"outsiders" can often bring a new perspective. There are many people who overlap both the hardware and software worlds (I consider myself one of them having started out in hardware and then moving over to the software side in EDA). Without those kinds of people you wouldn't have the kinds of EDA tools you have now.

> misplaced attention from outsiders and science/research community.

Come join the software side and work on the tools you want to see.


You’re thinking of 6110 (advanced programming languages) not 6120


Ah so I am! Thanks for the correction


Not quite. This also has the type ‘a -> ‘a:

def nitpick(x): throw “foo”


that's not a function (in the pedantic sense).

technically a partial function, or you could say that every function is really of the type A -> Exception \/ A


But you should not be writing functions that make you think about the fact that Hask is not really a category.


You're right, and foo x = foo x also qualifies as 'a -> 'a. The only function that always terminates is the identity function, then.


A function in the mathematical sense is total (always terminates).


We could throw some unsafePerformIO in there and do anything else as well, but if course we would have a function in the mathematical sense anymore.


i have never personally called out anyone anywhere ever


[OP] Yup, that was the intent. I've seen a lot of academic and industrial hand wringing about not wanting to build a compiler because it's an overkill for the solution only to have the people come back 6 months later having built a compiler.

I'm not saying everyone should build a compiler for everything–but when you should build a compiler, you really should bite the bullet and build a compiler.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: