Startup Claims C-code To SoC In 8-16 Weeks
eldavojohn writes "Details are really thin, but the EE Times is reporting that Algotochip claims to be sitting on the 'Holy Grail' of SoC design. From the article: '"We can move your designs from algorithms to chips in as little as eight weeks," said Satish Padmanabhan CTO and founder of Algotochip, whose EDA tool directly implements digital chips from C-algorithms.' Padmanabhan is the designer of the first superscalar digital signal processor. His company, interestingly enough, claims to provide a service that consists of a 'suite of software tools that interprets a customers' C-code without their having any knowledge of Algotochip's proprietary technology and tools. The resultant GDSII design, from which an EDA system can produce the file that goes to TSMC, and all of its intellectual property is owned completely by the customer—with no licenses required from Algotochip.' This was presented at this year's Globalpress Electronics Summit. Too good to be true? Or can we expect our ANSI C code to be automagically implemented in a SoC in such a short time?"
"Too good to be true?"
Perhaps not, if you don't mind patent-encumbered chips with the occasional bug in them.
But I do worry about how big that chip might end up being!
a) performance
b) time to market
c) cost
Pick any two.... I wonder how this solution performs on these three axes?
Why not? There is SystemC, a dialect of C++ which can be implemented in hardware (FPGA, for instance). What Algotochip is claiming is just one little more step forward.
After all, C to HDL has been around for awhile.
C code to SoC.
So, how is this offering from India any different? I could do it in less than 8 to 16 weeks if the customer supplies me the C code to be converted. As in, download/purchase any one of these utilities, run the customer's file through it, and mail it back to them.
Pretty simple.
Weaselmancer
rediculous.
Or can we expect our ANSI C code to be automagically implemented in a SoC in such a short time?
How about you tell us what SoC stands for first? Once again, editors, we don't all know everything about everything in the tech world. Some of us come here to learn new things, and you guys don't make it easy. TFS should at least leave me with an impression of whether or not I need to read the TFA.
systemd is Roko's Basilisk.
I'm not entirely clear on how it works though. If I give them this:
#include <stdio.h>
int main() {
printf("Hello world!\n");
}
they will convert it into a custom integrated circuit chip with Hello World! silkscreened on the top of it or does the chip actually display "Hello World!" on whatever it is connected to?
That's good. You didn't define or even expand SoC, GDSII, or TSMC. That's bad. I'm guessing SoC is "System on Chip" but I have no idea what the other two are.
Most SOC's do a lot more than a direct translation of the c coded alogrithm would suggest. I guess if you had a "wrapper" platform that was good enough for many applications you could streemline the process. My guess that this platform and the links to C synthesis is most of Algotochip's secret sauce.
C synthesis itself can't handle most programs writen in C. Essentially you need to write Verilog in C in order to make it work. Any dynamic allocation of memory, whether directly or indirectly, is a problem. IO can not be expected to work.
So it boils down to: If you C source is uncharacteristicly just right and your application fits a pre-defined mold then you can make it a chip real quick. ..as long as you don't ecounter any problems during place and route or timing closure...
The devil is in the details. It isn't a question as to whether a hardware device can be manufactured that runs your code, it is provably possible.
The issue is how cost-efficient is the SoC. How power efficient. How does it perform, does it do any more parallelism than a CPU would do if you just fed it the compiled code.
http://lkml.org/lkml/2005/8/20/95
Algorithms only work well if they fit well with the hardware they're targeting. You have to make certain assumptions, but depending on what your algorithm is, you should know which things you really need to think about (memory, branching, process communication, disk, ...)
Algorithms that get synthesised into hardware will only work well if they're written in such a way that lends itself to synthesis. There's going to be a huge heap of stuff that doesn't fit well, or doesn't work at all. Writing things like Verilog and even System C is very different to writing a piece of software. And let's not even mention the backend stuff like layout - stuff that can have a big impact on performance of the thing you're spending a lot of money fabricating (oh, I guess I /did/ mention it...)
So, maybe a bit ambitious, but if they've solved even some of the problems and helped bring software development and hardware design closer together, well, that's a good thing.
I can have hardware devoted to celebrating my mastery of the C language... #include main() { printf ("Hello World!\n"); }
Just feed it the Kernel ! :)
Most of these technologies 'C' to hardware technologies are overhyped and under-deliver.
* It is definitely not ANSI C. It might share some syntax elements but that is about it
* C programmers do not make good hardware designers (C programmers will disagree, HDL programmers won't)
* The algorithms used in software by software developers do not translate well into hardware
* If you want "good" hardware developed, use hardware design tools.
If you don't agree with me on these points, post how you would convert "short unsigned value" into ASCII in char digits[5] and I'll show you how to do the same if you were designing a chip...
Or you follow their SDK and let them do the work. Are you an engineer appropriate to make such statements?
"When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
Downmodded. How disingenuous of a site with so many programmers who know firsthand of the shit that comes out of India. They have a completely different culture than the US, and that is the cause of what we perceive as poor workmanship and poor management. Reputation doesn't seem to matter a lot to them. If that's not true, then please explain the apparent lack of quality. They memorize dumps to pass certification exams and then deliver poor product under poor management and get paid poor wages for it. And when pressed, they really genuinely don't seem to give a shit. Why?
I'm sure the typical Japanese worker considers US workers lazy with an inflated sense of entitlement. And as a US citizen with a job, I'd agree with that assessment compared to the typical Japanese work ethic.
hence the word "algorithm" in the "algorithm written in C" as opposed to "program written in C". Magic how that choosing the right word shit works. If you want a general purpose computer, you're barking up the wrong tree. However, if you've got an algorithm in C that you want to work without all the shit that comes with a CPU, use a DSP^H^H^H an FPGA^H^H^H^H^H^H^H an ASIC (this is an ASIC design house).
For those who are qualified to write comments -- when writing this, you probably better assume that this isn't a virtual memory machine. However, the folks who use this are probably competent instead of CS grads. You've also got to look at how many levels of recursion you expect to handle, and you better not assume any error handling routines. However, this isn't hard if you think about your code instead of point and click in your IDE. "How does this parallize" the ignorant ask? Well, it'll parallelize as much as you design in. This is where you communicate, both through comments and that dreaded beige 30 key input device that makes rude noises (telephone) with the folks who are trying to discombobulate your shitty code. For those who actually understand the concept properly, it'll parallelize as large as you're willing to bet on the foundry.
If you don't understand, it's okay. You'll be obsolete soon.
Ease of design, power consumption and performance. Pick any two.
It would be interesting to see how this compares with the work of competent designers with a/d and analog skillz.
#include <stdio.h>
int main(int argc, char **argv) {
printf("Hello SoC!\n");
}
The real question is how efficient it is.
What if Microsoft decides to compile their new Windows 8 into a SoC ?
Muchas Gracias, Señor Edward Snowden !
Sadly that is what the USofA has become these days.
Nothing more than a nations of lawyers filing suit against everyone else.
I know I exagerate but the plethora of frankly stupid law suits is going to kill what is left of US Business within 3-5 years.
The ONLY winners are the Patent Trolls and naturally the lawyers who take the lions share of any spoils awarded by the courts.
I'd rather be riding my '63 Triumph T120.
Why not just put the code onto high speed flash that goes on the SoC? Seems a whole lot easier, and I'm not clear why their solution is better. Really, I must be missing something, I'm curious.
We can finally get a hardware implementation of quake!
How about you tell us what USofA stands for first? Once again, posters, we don't all know everything about everything in the world. Some of us come here to learn new things, and you guys don't make it easy. TFP should at least leave me with an impression of whether or not I need to read, uh, the rest of TFP.
"We can move your designs from algorithms to chips in as little as eight weeks"
That's enough hints to know what's going on here. If you can't be bothered to Google "SoC" and see the "chip" reference on the first page, or heck, even read TFA which has the definition in it how could you muster the typing to complain about it?
Sorry if Slashdot isn't "newbie friendly," but this isn't "news for new guys, stuff to help you understand." If you don't understand it, maybe it doesn't matter to you. If it bothers you, educate yourself... by reading the article.
Or you follow their SDK and let them do the work. Are you an engineer appropriate to make such statements?
He probably is. I am, and I'd guess erice is right in everything he said. Granted, I don't have experience in writing such translation systems, but I have experience writing software, and I have more experience than that writing HDL code for hardware (FPGA and ASIC), which gives me a good feel for the difficulties in translation.
The C language is semantically oriented towards describing a sequential algorithm which manipulates the contents of a large, all-purpose memory (one which is shared for all tasks). This just isn't a very good model for how the optimal HW implementation of any given thing should work. The point of doing custom hardware is to avoid the power and clock speed overhead of turning your algorithm into a sequential program for a general purpose processor, after all!
Good HW design involves a ton of parallelism in computation, data movement, etc., and lots of private memories for small pieces of the system. (that is, the memories aren't even hooked up to a general purpose access bus, only the things directly attached can read or write.) If you've ever done any functional programming, that's a much closer match. (In fact, the two major HDLs or Hardware Description Languages -- VHDL and Verilog -- are both functional languages.)
The problem with translation from C to a HDL (which is almost certainly what these guys are doing, then using a normal ASIC synthesis flow to translate the HDL code into hardware) is that it's very difficult to extract enough semantic information from sequential C code to mechanically translate it to a good parallel HW oriented design, whatever the output language might be.
Now, maybe you don't need an optimal implementation, just good enough with labor savings compared to having a team do the design the normal way. But you're still likely to have to code in a carefully limited subset of the C language, with few or no standard libraries available. Like erice said, even something so apparently simple as dynamic memory allocation is probably not there.
What TSSE really means for SoC is BFAU. But the major advancement here is how it LQRTs.
Good job and HSFTF!
Those birds are going to be so much more angry now! We're doomed, I tell you -- DOOMED!
I dunno... I am just a programming hack.
But... given the underpowered nature of microcontrollers (and logic), I would either use a table of powers of ten, subtracting and counting, or a bcd table of powers of two, along with bcd add and adjust.
I would probably go for the bcd approach; guarantees that the job is done in 16 "cycles".
Is that what you were thinking?
Just another "Cubible(sic) Joe" 2 17 3061
This reminds me of Microsoft's 'Alchemy' Project.
http://research.microsoft.com/en-us/projects/alchemy/
--AC
Yes, as matter of fact, all that is required is to stick a soft-core into the chip ))
If that's not true, then please explain the apparent lack of quality.
What qualifies you to judge code quality? What quality code have you produced?
And when pressed, they really genuinely don't seem to give a shit. Why?
And why exactly should they give a fuck about you? If they "take your job" and put an asshole like you out of work, I'd put on a festive hat and eat some cake.
Oh wow.. they really care what you think. How will he sleep tonight?! :(
There are questions regarding performance, area-needs, etc. If all they do is compile the C-code, put it in ROM, supply RAM and a CPU to run it, the claim would be easy to fulfill, but the result would suck. Details do matter very much here. If they do not give detail, its best to assume the claim is overblown and what they can do is not nearly as good as some people would have it.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Try converting this into SoC.
They have zero reputation for creating junky hardware and code.
Really?
Muchas Gracias, Señor Edward Snowden !
Searching for 'Asic ESL' resulted in these list of tools and quite a few of them synthesize c/c++ There are other projects which translate Ruby, Python, Haskel etc to HDL code.
To Share Is To care
I'd be tempted to compile something much simpler:
char*f="char*f=%c%s%c;main()
{printf(f,34,f,34,10);}%c";
main(){printf(f,34,f,34,10);}
Downmodded. How disingenuous of a site with so many programmers who know firsthand of the shit that comes out of India.
I didn't know there is a Sunnyvale in India.
What is the point of creating characters from the set [0 1 2 3 4 5 6 7 8 9 : ; < = > ?] ?
Those aren't digits!
Yeah, that's a real problem with businesses like this one... based in Silicon Valley.
You racist/idiot* (delete as applicable. Or not, if applicable)
This is insightful? This is the guy you are insulting:
http://esummit12.globalpresspr.com/about/speaker-bios/
I conclude you ought to shut the fuck up.
This is the guy you are insulting:
http://esummit12.globalpresspr.com/about/speaker-bios/
Do you feel really really smart now?
Downmodded. How disingenuous of a site with so many programmers who know firsthand of the shit that comes out of India.
If I had any mod points I would mod you up as "insightful". Because I wasn't aware that "Sunnyvale, Calif." was in India. I thought it was in the US. Thanks for clearing that up.
Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
Hello guys i work with VHDL and C for a while (small company gotta do the SW and the HW) We are developing a product (embedded system) and some calculus were taking too much time doing it on software, so instead using a C program to do this calculus now we are using hardware. I developed a VHDL module responsible for doing FFT calculus that is an order of magnitude faster than the software equivalent plus it is real time by default (since it's hardware) Now we have a SoC with a FFT hardware attached to the CPU
Not sure if serious.
according to the moderation, "5, funny."
SoC has been emerging as a more common term in the last 5 or 6 years meaning System on a Chip.
Don't be silly. That would be SoaC. Clearly, if you acronymize the "on", you have to acronymify the "a" as well. The acronominalization standards demand it. Why, if you abandon all rules for acromynificationizing, there would be chaos!
http://www.geoffreylandis.com
They have zero reputation for creating junky hardware and code.
Really?
Whoosh?
Or can we expect our ANSI C code to be automagically implemented in a SoC in such a short time?
How about you tell us what SoC stands for first?
http://lmgtfy.com/?q=SoC
Slashdot, where searching for an abreviation's meaning has become the ultimate technical challenge.
Once again, editors, we don't all know everything about everything in the tech world.
News for nerds?. Ain't that supposed to mean something?
Some of us come here to learn new things
Bro, two words: Google and wikipedia. And one more word: 2012. You should consider a career/interest change if you don't grasp the meaning conveyed by these three words.
and you guys don't make it easy.
Not to be mean, but if you want easy, there is always hamburger flipping (which I did when I was in college) or pants folding at the GAP.
TFS should at least leave me with an impression of whether or not I need to read the TFA.
But you can make that determination by simply f* googling the SoC abbreviation. About 5/6 of the sentence already tells you that this is about translating C code into something. What that something means, you search it if you don't know it. The fact is that the mere idea of translating C into something, whatever that means, should constitute enough to warrant interest (or lack thereof) depending on your technical proclivities.
Also, if you really feel that a subject line should tell you whether or not you need to read something, you should not venture that much at all out of your comfort zone instead of demanding that stuff be made easy for you to digest. Technical fields are vast and complex, ergo the use of acronyms (and tools like google to find their meaning in seconds.)
You assume that because you didn't know the meaning of SoC, that people don't make it easy for you. In reality, it is a demonstration of your lack of an inquisitive mind with a proclivity of immediate satisfaction. Let me know how that works for you as you, and I quote you, "come here to learn new things."
You don't want learning. You want spood feeding of already masticated material.
With 14 different meanings in science and technology alone, according to Wikipedia. The point is that one person writes the summary and a huge number of people read it. Not all of them know everything. Just type few extra characters ("System on a Chip" instead of "SoC" the first time you use it) and by spending a few seconds you save others what probably adds up to quite a significant amount of time spent on figuring out what it means. That doesn't directly benefit the writer of the summary, of course, but there needs to be just one other person taking the trouble to type those few extra characters for a term the writer of this summary is not familiar with to more than compensate for the extra time spent.
It's efficient to be clear in what you write and not assume that everyone knows every acronym. What baffles me is how many geeks don't understand such a simple concept.
What baffles me is how many geeks can't do basic research. We are talking about software translation for Christ' sake. It is evident then that translation is either to another language, or compilation towards a specific platform. That right there gives you the context with which to narrow your search.
What is worse is seeing many geeks in /. who don't know what SoC means. What's next? You need an explanation of what CPU means as well? GPU? RAM? ALU? LED? IO?
Not that I really put any credence to geek street creed, but seriously, what the heck. Seriously, I would expect a sophomore CS/CE/EE student (a good one worth its salt, not an HTML dilettante) to know most of these, and to be capable of autonomously acquire knowledge for those he doesn't.
You are just looking for a reason to be upset about your inability to reach immediate information satisfaction, and your unjustified believe that shit needs to be readily digested just for precious snowflake you at every corner you lays eyes upon. That is all.
I've been hearing that kind of crap for more than 10 years now and have known several startups that claimed exactly that.
Some would claim they had some cool software and you would start thinking, "oh my, how did they do it? that's truly incredible. This might be worth even more than the 200ooo$ they charge for it". The truth was that the price tag was that high so that noone could buy the software (because it was not ready yet; and in fact never materialized).
Some companies had some technology, e.g. Celoxica that did Handle-C (C variant) synthesis to FPGA. They had large offices, their employees drew BMW's but finally the bubble burst; they moved to a more modest location; and then finally sold the C synthesis business to Catalytic, a company that claimed they could synthesize MATLAB to FPGA (haha); and finally all that crap was acquired for 80(?)k $ by Mentor Graphics.
The moment your project use floating point - these tools just crap out
and lots of private memories for small pieces of the system
It is called Virtual Memory. Get back with me when you catch up to this year (do you know what year it is?)
"When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
and lots of private memories for small pieces of the system
It is called Virtual Memory. Get back with me when you catch up to this year (do you know what year it is?)
Sigh. I've probably forgotten more about VM than you will ever know. I must repeat myself:
The C language is semantically oriented towards describing a sequential algorithm which manipulates the contents of a large, all-purpose memory (one which is shared for all tasks).
VM is just an abstraction layer on top of a large, all-purpose, shared global memory which provides the illusion (to a program executing sequentially on a CPU) that some of the memory is not shared. But the whole thing is shared in the sense that it's still a single memory with a single bus interface.
Chip designers tend to use lots of tiny private memories which are physically separate from each other. Not because of a need for information hiding, but because of a need for performance scaling. The private memories I speak of are not large banks of DRAM connected to a global bus. They're tiny amounts of SRAM (static RAM) directly connected to a hardware functional block, reducing latency and dedicating 100% of the bandwidth to that block.
See, this is the problem with application layer software guys like you who haven't ever thought about the underlying HW implementation. You know about one tool, a hammer (sequential instruction streams executing in a VM controlled address space), and when someone tells you that things are different in other domains you won't even let the information in, because as far as you're concerned everything is a nail.
See, this is the problem with application layer software guys like you who haven't ever thought about the underlying HW implementation. You know about one tool, a hammer (sequential instruction streams executing in a VM controlled address space), and when someone tells you that things are different in other domains you won't even let the information in, because as far as you're concerned everything is a nail.
I don't disagree with you at all. But when the hammer says "Microsoft"/"Intel" on it, I can make all of the holes in the wall that I want, so long as the end result "works". Don't hate the player. Hate the game.
"When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson