Slashdot Mirror


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?"

205 comments

  1. "Too good to be true?" by Ironchew · · Score: 3, Insightful

    "Too good to be true?"

    Perhaps not, if you don't mind patent-encumbered chips with the occasional bug in them.

    1. Re:"Too good to be true?" by AK+Marc · · Score: 4, Funny

      Well then, fix it with your own open source chip printer. 8-16 weeks? 5 minutes is long enough. Compile, spool, print.

    2. Re:"Too good to be true?" by xQx · · Score: 0

      Buggered if I know, the poster didn't explain the acronyms.

      WTF is SoC?

    3. Re:"Too good to be true?" by solidraven · · Score: 4, Informative

      Any mistake in a SoC is expensive, especially if you go directly from design to wafer without extensive testing. Most of the time it's 1 week of actual writing a description in VHDL or Verilog and then spending a few weeks/months verifying the design and removing any bug. After you're done verifying you get to enjoy the trouble of mapping it. And since automation sucks for certain things, especially when the analogue signals are supposed to remain as noise free as possible, you then get to spend a few days doing the layout and verifying if the layout is actually the same as the netlist.
      While this sounds nice, it's not the first "C to Silicon" program out there (Cadence beat them to it). And it certainly won't be the last. The thing is, the reason to use VHDL and to some extent Verilog is to minimize the occurrence of errors. Even when you verify your design bugs can still slip through. But due to the overall design of the language this is far less likely in VHDL.

    4. Re:"Too good to be true?" by Darinbob · · Score: 3, Insightful

      Now the snag is trying to find any of these twenty something coders who know C.

    5. Re:"Too good to be true?" by risom · · Score: 1

      System On a Chip - the embedded equivalent of cpu, gpu, nortbridge, southbridge etc. combined in one package.

    6. Re:"Too good to be true?" by Half-pint+HAL · · Score: 1

      Any mistake in a SoC is expensive, especially if you go directly from design to wafer without extensive testing. Most of the time it's 1 week of actual writing a description in VHDL or Verilog and then spending a few weeks/months verifying the design and removing any bug.

      See, this is what's confusing me. Isn't a system-on-a-chip just CPU+GPU+soundset+RAM+flash on one chip? Is there any real hardware to implement? The whole summary makes it sound like they've implemented... a C compiler.....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    7. Re:"Too good to be true?" by Anonymous Coward · · Score: 1

      more realistically, they generate a tuned architecture. for example, GPUs weren't good for some applications because they lacked double support. Likewise CPU's were comparitively bad at encryption until special instructions were added.

      If you look at a C algorithm, an extract some of the parallel strucutres, and then look at the operations, you could determine what hardware accelleration would be a waste, and what would be a benefit. If there is a lot of parallel bulk-processing, the resulting die will look more like a GPU. If the design does a lot of networking, a TCP engine might be implemented. you can tailor the cache-size, associativity, the branch-prediction, etc... all for a given algorithm.

      They don't claim to beat out HDL optimized designs, just as HDL designs don't claim to beat out hand-crafted transistor level designs.

    8. Re:"Too good to be true?" by Anonymous Coward · · Score: 0

      A full answer to your astute question is available here.

    9. Re:"Too good to be true?" by solidraven · · Score: 1

      If it's just a program that decides what large blocks you should put in a SoC then it's just plain stupid really. The first step to proper design is hiring engineers who aren't retarded monkeys that are able to make such design decisions easily.

    10. Re:"Too good to be true?" by gtall · · Score: 1

      SoCs these days include a fair amount of FPGAs. So it is more likely they are just producing FPGA code. Xilinix has FPGAs with ARM chips on them, or you can use soft PPC processors, not sure if they have soft ARM processors yet but they are likely not far in the future if they do not have them already.

      Right now, you could produce FPGAs using soft processors to implement C code using Xilinix tools. However, like the gp says, that ain't all there is to it.

    11. Re:"Too good to be true?" by Half-pint+HAL · · Score: 1

      Aha, so the they're taking one monolithic source program, identifying what can be done in software, what standard components are required in order for the code to function properly, and what non-standard stuff has to be custom designed... and then designing it. ++nontrivial. Very cool tech.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    12. Re:"Too good to be true?" by Anonymous Coward · · Score: 0

      it's not the first "C to Silicon" program out there (Cadence beat them to it)

      Huh, so that's what the princess did after foalsitting. Neat.

    13. Re:"Too good to be true?" by luis_a_espinal · · Score: 1

      Buggered if I know, the poster didn't explain the acronyms. WTF is SoC?

      http://lmgtfy.com/?q=SoC

      Slashdot, where searching for an acronym's meaning is the next technical challenge.

    14. Re:"Too good to be true?" by rufty_tufty · · Score: 2

      "Isn't a system-on-a-chip just CPU+GPU+soundset+RAM+flash on one chip? Is there any real hardware to implement"
      Which CPU, Which GPU? How much pipelining is needed? Where is the best place in the FPU or in the individual multiplier to add a register stage to improve timing? Should you upsize the gate to improve timing, or duplicate the flop and logic to reduce loading? Is your problem caused by too large a gate and you need to shrink it?
      What bus architecture will you use? How do you patch between bus standards? How will you close top level timing? How do you implement your test infrastructure (JTAG LBIST etc)? What about power distribution, power islands? What about floorplanning, where is the best arrangement for each block? What about analogue IP, how are your clocks distributed? At this process node what are the power characteristics of different ram architectures and are you better doubling the width of your memory and accessing it half as often?
      How much cache is needed for the available system bandwidth, under congestion how do you flow control the intercommunicating block, how do you handle discard under congestion? How do you avoid and debug interlock and data loss?

      But apart from that, no there is no hardware to design if you are just gluing IP blocks together.

      --
      "The weirdest thing about a mind, is that every answer that you find, is the basis of a brand new cliche" -
    15. Re:"Too good to be true?" by Anonymous Coward · · Score: 0

      Wait a minute! You're not perfectly language agnostic! Unleash The Minions of Verilog! The HDL Wars have BEGUN!

    16. Re:"Too good to be true?" by unixisc · · Score: 1

      Isn't Verilog itself an HDL that's identical in syntax to C? C is not an HDL, so if someone writes a C program and it ultimately ends up as a netlist, how exactly is it different from Verilog? Just that it's not using Verilog's own simulation engines in order to build and run?

      I agree w/ the above - C would have to have some sort of error checking, as well as simulations of both static and behavioral models in order to be an HDL, and then the question would invariably arise - in what way would it be superior to verilog?

    17. Re:"Too good to be true?" by unixisc · · Score: 1

      An SoC to me sounds like a CPU + memory + I/O + whatever glue logic is needed for each of them to talk to each other. The glue logic's part of it would be converting the CPU outputs into inputs for the memory, I/O etc and the memory or I/O outputs into CPU inputs. That's the sort of thing that's achieved using combinational and sequential logic, or in other words, FPGAs. With FPGAs being as sophisticated as they are these days and even including CPU cores within them, it would seem that an FPGA could be converted into a custom SoC using normal HDL code, or in case of the Algotchip, C code.

    18. Re:"Too good to be true?" by unixisc · · Score: 1

      Are you designing the individual internals of the SoC components here, such as the CPU? How much pipelining is needed - that's something determined during CPU design, is it not? Same thing on where in the FPU to add a register stage to improve timing. But even if you are just gluing the IP blocks together, the design of the glue logic is itself considerable, given that it has to work within the limitations of the CPU, the memory and all other sub blocks.

    19. Re:"Too good to be true?" by unixisc · · Score: 1

      Well, since Bloomberg has discovered that a software career is a deadend, maybe all those C programmers can try and make SoCs out of their programs, and try and get fabs to build those. Next thing - spin their own raspberry piss.

    20. Re:"Too good to be true?" by rufty_tufty · · Score: 1

      "How much pipelining is needed - that's something determined during CPU design, is it not?"
      That depends on your design team and the Ip block providers - but chances are you have to analise it and give feedback to the Ip vendor. You may choose not to, but if you do you stand a good chance of beating your competitor.

      "same thing on where in the FPU to add a register stage to improve timing."
      again not really because that will depend on things like your clock tree layout and power grid. You may choose to not optimise these things yourself, but a good designer would (given the time and resource) adapt them to their specific system

      "But even if you are just gluing the IP blocks together, the design of the glue logic is itself considerable, given that it has to work within the limitations of the CPU, the memory and all other sub blocks."
      Agreed, I never ment to imply otherwise, I was just trying to say that assembling an SOC requires a heck of a lot of hardware implementation and it is certainly not just sticking blocks together even if you are just sticking blocks together.

      --
      "The weirdest thing about a mind, is that every answer that you find, is the basis of a brand new cliche" -
    21. Re:"Too good to be true?" by Rotag_FU · · Score: 2

      While the website of the company does claim that they can also use this technology for FPGA-based designs, their big claim is that they are going from unmodified ANSI C to GDS-II in 8-16 weeks. GDS-II is a file format that specifies the physical implementation of the design and is used in microelectronic foundry flows. GDS-II files are not used in FPGA design flows, although they do have a much more highly abstracted analogue. However it is possible that they are using a reconfigurable fabric that they have developed or bought rights to use and are simply hard wiring it in their foundry flow (effectively making it a mask programmable gate array instead of an FPGA), but that would seem to be unlikely if their power claims are to be believed.

      The biggest gap that I think they have is the lack of a decently defined verification flow. Their claim is that they use customer provided test vectors to validate the design. This seems too simplistic to me since exhaustive test vectors are infeasible for anything of modest complexity. Their flow could greatly benefit from some sort of formal verification basis proving that the SoC truly represents the same function as the C algorithm in order to be something that I'd be willing to gamble money on fabbing. At the very least, utilization of an extensive constrained random verification suite that is referenced back to the C model would be desirable for all but the simplest designs. That being said, either option would likely kick them out of the 8-16 week timeframe.

    22. Re:"Too good to be true?" by Anonymous Coward · · Score: 0

      the SOCs i work with are CPU/tons of RAM/DSP/high speed IO

      despite the fact that all the modules going into the chip are separate, integration/clock distribution and timing closure still stretches out over months at a minimum

    23. Re:"Too good to be true?" by Anonymous Coward · · Score: 0

      best........post......ever!!!!!!!

    24. Re:"Too good to be true?" by solidraven · · Score: 1

      Verilog is still quite different from C in many aspects at first glance. I'm not really familiar with Verilog to be honest, so might be mistaken.

    25. Re:"Too good to be true?" by Anonymous Coward · · Score: 0

      Isn't Verilog itself an HDL that's identical in syntax to C?

      No. It's similar to C in one narrow way: the set of math operators, and the precedence rules for evaluating expressions built from them. If you know C expressions, you (mostly) know Verilog expressions. (There are still very important differences, especially in that Verilog types and promotion are quite different from C.)

      The rest of the language? Not so much. The differences range from the trivial to the profound. Trivial example: Verilog uses "begin" and "end" to delineate blocks of code instead of curly braces. Profound example: if you showed this Verilog assignment statement to a C programmer:

        assign foo = bar;

      They'd think this meant that at the time the statement was evaluated, foo would get a copy of the value of bar, and that both represented memory locations. Not so in Verilog: this statement is a "continuous assignment" and literally means "connect wires between foo and bar, which are themselves wires". If the value of bar changes, so does foo.

      C is not an HDL, so if someone writes a C program and it ultimately ends up as a netlist, how exactly is it different from Verilog? Just that it's not using Verilog's own simulation engines in order to build and run?

      It's different in that C models a sequential Universal Turing Machine while Verilog models arbitrary parallel digital logic. Translating the moral equivalent of a UTM's sequential instruction tape into (good) digital logic is not easy. Historically (this is not the first time it's been tried) the results have never been as good as you'd get by writing in a HDL like Verilog in the first place. Also, C-to-HW translation systems almost always require significant coding style and library restrictions to work at all, and even then they're likely to reduce the quality of results.

      I agree w/ the above - C would have to have some sort of error checking, as well as simulations of both static and behavioral models in order to be an HDL, and then the question would invariably arise - in what way would it be superior to verilog?

      C will never be superior to Verilog in Verilog's problem domain (or vice versa).

  2. Linux on a chip! by Anonymous Coward · · Score: 0

    But I do worry about how big that chip might end up being!

    1. Re:Linux on a chip! by JustOK · · Score: 4, Funny

      It would be the size of a kernel

      --
      rewriting history since 2109
    2. Re:Linux on a chip! by cold+fjord · · Score: 1

      Popcorn?

      --
      much of left-wing thought is a kind of playing with fire by people who don't even know that fire is hot - George Orwell
    3. Re:Linux on a chip! by unixisc · · Score: 1

      While Minix would fit on a microchip, being a microkernel

  3. Choose two: by Anonymous Coward · · Score: 0

    a) performance
    b) time to market
    c) cost

    Pick any two.... I wonder how this solution performs on these three axes?

    1. Re:Choose two: by Anonymous Coward · · Score: 2, Interesting

      I'd be tempted to compile up a linux system with GNOME desktop into this... just to see the resulting chip!

    2. Re:Choose two: by TheDarkMaster · · Score: 1

      The moment you plug it in ant flip the switch, you will blow up the power grid of the neighborhood

      --
      Religion: The greatest weapon of mass destruction of all time
    3. Re:Choose two: by Anonymous Coward · · Score: 2, Funny

      It is no longer true. Now, you have to pick one.

    4. Re:Choose two: by lister+king+of+smeg · · Score: 1

      step one: compile gnu code licensed under gpl3
      step two: watch the lawsuits ensue while gnu demands the blueprint.

      or

      order a chip of qemu and get your own reverse engineered set of possessors see how many companies sue their asses off.

      --
      ---Saying gnome 3 is better than windows 8 not so much a compliment as it is damning with light praise.
    5. Re:Choose two: by sensei+moreh · · Score: 1

      I hope you're not talking GNOME-2 here and not GNOME-3 (or Unity)

      --
      Geology - it's not rocket science; it's rock science
    6. Re:Choose two: by Shoe+Puppet · · Score: 1

      step one: compile gnu code licensed under gpl3
      step two: watch the lawsuits ensue while gnu demands the blueprint.

      Nah, I the blueprints would be more akin to the intermediate assembly that gets created when compiling somethin.g

      --
      (+1, Disagree)
    7. Re:Choose two: by unixisc · · Score: 1

      step one: compile gnu code licensed under gpl3 step two: watch the lawsuits ensue while gnu demands the blueprint.

      Actually, no fab will ever agree to run such a simulation, since GPL3 will insist that they make available all their process details, and in the process (pun not intended), end up giving their competitors all details about their various process parameters, yields and so on. The FSF will have to make its own fab to run this. Maybe RMS might be able to get his hands on one of the old DEC fabs in MA, and get them to manufacture all GNU SoCs. Of course, he'll demand unionized workers, and it will be fun seeing him deal w/ the unions that he sets up to work in those fabs. There'll be no secrets, and as a result, he'll have to price every chip exhorbitantly in order to break even. Hopefully, the FSF or FHF will go out of business trying to run such an operation.

  4. SystemC by paugq · · Score: 5, Informative

    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.

    1. Re:SystemC by JoelDB · · Score: 5, Informative

      While SystemC does have a synthesizable subset, it's mainly used for simulations at a high level from what I've seen. Going from synthesizable SystemC to hardware is an order of magnitude easier than going from a complex language such as C++ or C down to hardware, which is what this company is claiming. From reading the article I believe Tensilica is using a very similar approach with ASIPs) for bringing high-level lanaguages to hardware, and they are much more established in this field. One of the up-and-comers is AutoESL which was recently acquired by Xilinx. I've played around with this tool and its ability to bring C down to hardware is very impressive.

    2. Re:SystemC by wiredlogic · · Score: 3, Informative

      SystemC is a C++ library and simulation kernel. It isn't a dedicated language. The synthesizable subset of SystemC is very limited. Because it's plain C++, you have to implement all low level logic with much more code overhead than the equivalent VHDL or Verilog.

      --
      I am becoming gerund, destroyer of verbs.
    3. Re:SystemC by Anonymous Coward · · Score: 0

      Using SystemC is absolutely nothing like automated translation of C code to a hardware design. SystemC is a set of templates and utility functions which makes it easier to write software models of hardware using C++, but it is still completely up to the human beings to actually write those algorithms in a way which is suitable for hardware implementation. You don't just #include and magically get shit that can go onto silicon.

    4. Re:SystemC by paugq · · Score: 1

      You don't just #include and magically get shit that can go onto silicon

      I never said so. The fact that is a dialect of C++, not pure C++, speaks volumes already.

    5. Re:SystemC by Anonymous Coward · · Score: 0

      Put MAME on the chip. That should be interesting :)

    6. Re:SystemC by davolfman · · Score: 2

      Last I heard from people who use it on a daily basis, SystemC's synthesis tools weren't really mature enough to use seriously. It IS great for building a model to test your simulations from a purpose-built HDL against though.

    7. Re:SystemC by jd · · Score: 4, Informative

      Presumably, though, you could use a source-to-source compiler to convert C (with certain restrictions) into SystemC.* From there, you could do source-to-source compilation to convert SystemC into Verilog or whatever. You'd end up with crappy hardware, but the claim says nothing about design quality only design capability.

      *The obvious restriction is that you can't translate something for which no translation exists, whether that's a function call or a particular class of solution.

      Going directly from C to hardware without intermediate steps would indeed be a lot harder. But again that's not what the startup promises. They only promise that they can convert C to hardware, they say nothing about how many steps it takes on their end, only what it seems like from your end.

      Having said that, a direct C to hardware compiler is obviously possible. A CPU plus software is just emulating a pure hardware system with the code directly built into the design. Instead of replacing bits of circuitry, you replace the instructions which say what circuitry is to be emulated. Since an OS is just another emulator, this time of a particular computer architecture, there is nothing to stop you from taking a dedicated embedded computer, compiling the software, OS and CPU architecture, and getting a single chip that performs the same task(s) entirely in hardware -- no "processor" per-se at all, a true System on a Chip. Albeit rather more complex than most SoC designs currently going, but hey. There's no fun in the easy.

      Although there are uses for direct-to-hardware compilers, direct-to-FPGA for pure C would seem better. Take hard drives as an example. You can already install firmware, so there's programmable logic there. What if you could upload the Linux VFS plus applicable filesystems as well? You would reduce CPU load at the very least. If the drive also supported DMA rather than relying on the CPU to pull-and-forward, you could reduce bus activity as well. That would benefit a lot of people and be worth a lot of money for the manufacturer.

      This, though, is not worth nearly as much. New hardware isn't designed that often and the number of people designing it is very limited. Faster conversion times won't impact customers, so won't be a selling point to them, so there's no profit involved. Further, optimizing is still a black art, optimizing C compiled into a hardware description language is simply not going to be as good as hand-coding -- for a long time. Eventually, it'll be comparable, just as C compilers are getting close to hand-turned assembly, but it took 30-odd years to get there. True, cheaper engineers can be used, but cheaper doesn't mean better. The issues in hardware are not simply issues of logic and corporations who try to cut corners via C-to-hardware will put their customers through worlds of hurt for at least the next decade to decade and a half.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    8. Re:SystemC by geoskd · · Score: 1

      Presumably, though, you could use a source-to-source compiler to convert C (with certain restrictions) into SystemC.* From there, you could do source-to-source compilation to convert SystemC into Verilog or whatever. You'd end up with crappy hardware, but the claim says nothing about design quality only design capability.

      The problem with compiling any high level language to hardware is that there are simple high level constructs that are prohibitively difficult to render in hardware. A good example is any procedural function like a loop with dependencies that prevent parallelization. Such loops can only be processed sequentially while the rest of the "program" can be rendered simultaneously. This leads to all kinds of synchronization problems. Hardware description Languages combat this problem by making non-synchronous constructs explicitly non-synthesizeable, or outright prohibited. As a good exercise for the reader, ask yourself how you would implement a divider coupled to an adder in hardware. The adder is a simple construct that can be fully paralleled into a SOP (Sum of Products). The divider would require an almost impossible number of gates to create as an SOP for any realistic number of bits, so the divider needs to be implemented as a sequence of repeating steps, Now how would you make the adder interact with the divider? The answer is not trivial, and all we tried to do is implement X = A + B/C. At its root, compiling any language to hardware is a massive exercise in dependency mapping. Some languages are designed for this (Verilog, VHDL), others are not (any non HDL language).

      -=Geoskd

      --
      I wish I had a good sig, but all the good ones are copyrighted
    9. Re:SystemC by rufty_tufty · · Score: 1

      Just because you can use the language to write synthesizable code does not mean all code is synthesizable.
      An easy example is a re-entrant function that in software would be repeatedly called to solve the input. Assuming for different inputs you call it a different number of times a translation into pure hardware would require an arbitrary sized piece of hardware. Now you could set a limit on the range of values the hardware can solve for, but it's a tricky problem.
      Likewise software would call new() and get a new function and associated dataypes including procedures and memory. Translating this into hardware would require you to get new memories and logic each time you reached a certain state. Not an option in a pure ASIC.
      Now I've been trying to work out for a few years how to do this in an FPGA. You could pre-layout a multiplier (for example) and effectively calculate your FPGA's routing on the fly and then re-program sub slices of your fpga as you go. But it's a very difficult problem, and I'm not ready to quit my job and form the startup on that idea just yet...

      --
      "The weirdest thing about a mind, is that every answer that you find, is the basis of a brand new cliche" -
    10. Re:SystemC by jd · · Score: 1

      Loops to prevent parallelization can be substituted for with triggers, provided they can be detected. Triggers are easy to do in hardware.

      Dividers can be implemented in four steps - a log-table lookup, an inverter, an adder and an inverse log-table lookup. No repeating steps. If you're programming a general-purpose maths core, you'll need a log table anyway. Since that's the only significant consumer of real-estate and it's already allocated for, you lose nothing by using it.

      Having the adder interact with the divider is also not very complicated

      Option 1: You have an instruction stack that stores one operation and three operands. The first two operands specify the source buffers* and the third operand specifies the target buffer. All three would probably be done as ring buffers and those are easy to do in hardware. The instruction stack would be triggered if and only if all* source buffers are non-empty. The instruction stack does not care if a previous instruction is complete or not, giving you the capacity for parallel execution where appropriate.

      *Where you've one input, the other operand would be null. To simplify logic, you'd specify that a null buffer always has content.

      Option 2: Each operation has its own independent logic, with the results going into buffers at the end. This time, it is the operations that have the lock and which wait until all the input buffers have content. So the adder will be called but will block because the second input buffer is currently empty. Once the division is complete, the results are copied into the second input buffer. This triggers the add.

      There will be others, but these are the two most basic forms. Incredibly simple, incredibly easy to implement. Triggers, latches and buffers take care of almost all the significant hardware-related issues. They are your friends. Well, except when they are your enemies.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    11. Re:SystemC by Anonymous Coward · · Score: 0

      From reading the article I believe Tensilica is using a very similar approach with ASIPs) for bringing high-level lanaguages to hardware, and they are much more established in this field.

      Tensilica is pretty cool but it isn't C-to-hardware translation. Their tech is actually about creating new special purpose CPU architectures. You give them the data format you'd like the CPU's ALU to work on, any special application accelerator instructions which you think will be useful, and a bunch of other parameters. They deliver a synthesizable RTL implementation of a CPU which has everything you wanted. They also generate a C-language toolchain (GCC, GDB, etc.) targeting your CPU.

      The neat thing is that this is mostly automated on their end -- they plug all your requests into their system, and it autogenerates the RTL, validates it, auto-mods GCC and other tools to target your brand new CPU architecture, and I think even autogenerates documentation. All you have to do is integrate it into your SoC and point your software team at the docs and toolchain.

      Tensilica cores are typically not in charge of the whole system, BTW. They're almost always used as companions to an ARM core in a SoC, tied to a specific system function. Think of it as a way of automating much of the drudgery of designing a new specialized DSP core. You can almost certainly design a better custom DSP core from scratch, but it'll take longer, require lots more labor, add more risk to the project, etc. etc.

    12. Re:SystemC by geoskd · · Score: 1

      Now implement a compiler that does all that, but for any arbitrary equation...

      Let me know how that turns out.

      -=Geoskd

      --
      I wish I had a good sig, but all the good ones are copyrighted
    13. Re:SystemC by jd · · Score: 1

      Still not hard*. Any sequence of multiplications and divisions can be kept in logarithmic notation. Any parentheses can be handled by an intermediate value buffer. Any barrier operation can be handled by having a 1-bit flag per result you're waiting on, where the barrier is cleared when the total value reaches 0 (assuming all flags start at 1 to mark that that operation is blocking). You can build that as a trigger by ORing the bits together and having the NOT of that as your input to a transistor's collector, where the transistor feeds into your trigger.

      Early computers (including some for doing computational fluid dynamics) were all hard-wired. They weren't etched into silicon, they were a rat's nest of wires, thermionic vaccuum tubes, mercury delay lines, relays and other such components. It can be done, for digital, analogue and mixed signal. Although mixed signal is a lot harder with the two top people in the field dying in car crashes.

      *Not being hard doesn't make it easy. This is a full spectrum, not a binary state. Furthermore, a compiler that can do the layout is very different from a compiler that can do a good layout. Software optimization is frequently demented and software is far easier to optimize. It is also very different from a compiler that can do a layout within specific constraints. Regular optimization is best-effort and a solution (even if not a good one) exists for any given method, but constraint-driven optimization need have no solution (the constraints may make it impossible to solve the problem given the optimization strategies known to the compiler) and you cannot know if that is definitely the case within finite time. You can use herustics and say that you can't guess at a solution within a time limit, but that's not the same as there being no solution.

      The problem with designing ASICs or other chips is that you're almost always working with a constraint-driven problem. Fab plants work with dies of fixed size on a wafer of fixed size, in a 2D space. Heat has to be dissipated as evenly as possible, to avoid hot-spots. Pin count is a major determinant of cost and there will be cost constraints. Die size also impacts costs - and rejection rates. Writing a compiler to generate a hardware description that technically works is trivial in comparison to the problem of writing a compiler that can generate a hardware description that you can build deployable hardware from - particularly at a lower cost than needed to just get a good chip designer to hand-craft the damn thing.

      That's the real hold-up. The compiler itself isn't the hard part, it's the writing of a compiler that can produce something worth producing at a cost that makes it worth producing that way.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
  5. Sounds plausible. by Anonymous Coward · · Score: 1

    After all, C to HDL has been around for awhile.

    1. Re:Sounds plausible. by TheRaven64 · · Score: 1

      There are lots of tools that do this, for varying levels of success. The problem is, translating C to hardware is not an especially difficult challenge. Translating algorithms that make sense running on a general purpose CPU to algorithms that make sense implemented in hardware is a very hard problem. C is intrinsically serial, hardware is intrinsically parallel (in two dimensions).

      The hard problem, and one that's the focus of a lot of research, is analysing C (or whatever) code and determining how to modify the hardware so that the software can run quickly.

      --
      I am TheRaven on Soylent News
  6. This is nothing new at all by Weaselmancer · · Score: 4, Interesting

    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.
    1. Re:This is nothing new at all by Anonymous Coward · · Score: 1

      Um...from the Algotochip home page. Emphasis mine.

      Algotochip is a Silicon Valley startup revolutionizing digital chip design. Algotochip dramatically...

      Don't know about the revolutionizing part though...

    2. Re:This is nothing new at all by geoskd · · Score: 1

      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.

      Dear Sir, please implement the following program in hardware:

      main(int argc, char* argv)
      {
      int niter=0;
      double x,y;
      int i,count=0; /* # of points in the 1st quadrant of unit circle */
      double z;
      double pi;

      printf("Enter the number of iterations used to estimate pi: ");
      scanf("%d",&niter);

      /* initialize random numbers */
      srand(SEED);
      count=0;
      for ( i=0; i x = (double)rand()/RAND_MAX;
      y = (double)rand()/RAND_MAX;
      z = x*x+y*y;
      if (z; }
      pi=(double)count/niter*4;
      printf("# of trials= %d , estimate of pi is %g \n",niter,pi);
      }


      Let me know how that turns out.

      -=Geoskd

      --
      I wish I had a good sig, but all the good ones are copyrighted
  7. A better question by wonkey_monkey · · Score: 5, Insightful

    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.
    1. Re:A better question by Anonymous Coward · · Score: 2, Informative

      system on a chip

    2. Re:A better question by Anonymous Coward · · Score: 1

      http://en.wikipedia.org/wiki/System_on_a_chip

    3. Re:A better question by Anonymous Coward · · Score: 0, Troll

      Do we need to start having a basic competency test before letting idiots like this post? Jesus fuck, you newtards are idiots. No wonder CmdrTaco left...

    4. Re:A better question by khellendros1984 · · Score: 4, Informative

      That would be "System on a Chip", a term which describes a complete system included on a single chip. An example I've seen used more often would be a phone's central chip; they tend to integrate the CPU, GPU, wireless chipsets, and part or all of the RAM on one chip. In this case, it looks like they're advertising the ability to quickly create a hardware chip that functions the same as an arbitrary chunk of C code; essentially, you can make a hardware chip that implements a specific algorithm.

      --
      It is pitch black. You are likely to be eaten by a grue.
    5. Re:A better question by LurkerXXX · · Score: 3, Insightful

      The point is, you shouldn't have to freaking google to find out what the heck an article is about. The brain-dead submitter, or brain-dead 'editor' should be clarifying anything that isn't very common everyday tech lingo/acronyms.

    6. Re:A better question by Geoffrey.landis · · Score: 4, Funny

      Yes, he shouldn't need to Google since he should know what a SoC is since this is supposed to be a site for technological literate people not reddit rejects.

      Indeed.

      "SoC" is short for "State of Charge," which is, basically, the status of a battery.

      I'm not sure what this has to do with C-code. Maybe these chips they're talking about are used to make battery controllers that use SoC monitoring.

      --
      http://www.geoffreylandis.com
    7. Re:A better question by Anonymous Coward · · Score: 0

      Thank you. If you hadn't said it, I would have.

      Not every nerd who reads Slashdot knows what SoC means. There is plenty of room for variety in the nerd diet and not everyone has to be an expert in embedded systems or chip design. A simple explanation of obscure acronyms would be greatly appreciated now and then.

    8. Re:A better question by JustOK · · Score: 5, Funny

      Salsa on Crotch

      --
      rewriting history since 2109
    9. Re:A better question by Anonymous Coward · · Score: 5, Funny

      Yeah! And what does 'C' stand for?

    10. Re:A better question by Caratted · · Score: 5, Informative

      Not sure if serious.

      SoC has been emerging as a more common term in the last 5 or 6 years meaning System on a Chip. The advantages are it uses less power to do more things, and a lot of low level functions (radios, gpu rendering, etc) have more direct access to on-board cache and memory, as well as a direct line to RAM. They're used in just about everything and are essentially equivalent to saying CPU (for anything other than a desktop or laptop w/o IGP), these days.

    11. Re:A better question by Anonymous Coward · · Score: 0

      Just assume that if you can't even understand the summary, the article is clearly not directed at you so you should just move on. It can work to weed out the people who have nothing to add to the conversation, such as yourself, provided your ego doesn't continue to demand further attention seeking now that you have been enlightened.

    12. Re:A better question by thammoud · · Score: 1

      Ah how I miss having some points. Real funny shit.

    13. Re:A better question by Belial6 · · Score: 1

      Perhaps you could explain what TFS and TFA mean every time you use them so that the editors understand what your asking for....

    14. Re:A better question by JoeMerchant · · Score: 1

      https://www.google.com/search?q=soc

      I believe you are looking for result #2.

    15. Re:A better question by Bucky24 · · Score: 2

      Yeah! And what does 'C' stand for?

      Just in case you're not trolling:
      C is a high-level programming language (yes I know I could give a better description but my brain is fried this late in the day).
      http://en.wikipedia.org/wiki/C_(programming_language)

      --
      All the world's a CPU, and all the men and women merely AI agents
    16. Re:A better question by Anonymous Coward · · Score: 0

      What does "/." stand for?

    17. Re:A better question by Anonymous Coward · · Score: 0

      Salsa on Crotch

      http://www.tumblr.com/tagged/i'm-gonna-put-salsa-on-my-crotch

      So we had grits for breakfast and burritos for lunch. What's for dinner?

      Oh, I know.

      Ladies, there is meat in my shorts.

    18. Re:A better question by EdIII · · Score: 3, Insightful

      Do we need to start having a basic competency test before letting idiots like this post? Jesus fuck, you newtards are idiots. No wonder CmdrTaco left...

      That's hugely unfair. I figured out what it was based on the context. Hmmmm... SoC.. moving algorithms to chips... might it be System-On-Chip?

      However, there are plenty of articles here about some pretty heavy physics, particle physics, medical advancements, etc. that are well outside of my own field. It would be nice to have some quality journalism where a term or concept is explained in the summary.

      It's not that hard. Another sentence at most. I don't have a problem searching for terms and concepts I don't fully grasp, but it would be nice to have some quality journalism again. Seriously.... grammar and spelling mistakes everywhere now, even at mainstream outlets like CNN. Just once I would like the impression that somebody with an English major was doing actual editing.

    19. Re:A better question by Anonymous Coward · · Score: 0

      Slashdot

    20. Re:A better question by Anonymous Coward · · Score: 0

      Long time ago, my dad was on a business trip with one of his colleagues and had gone to a book store to get me a book on C. His friend was annoyed that my dad had kept him waiting. My dad wanted to be funny.

      "I've just went to by a book for my son on C, it's real high tech stuff! Bet you don't know what C is!!"

      "Yes I do! C for Cat!!"

    21. Re:A better question by savuporo · · Score: 2, Insightful

      Friggin SoC has been in everyday tech lingo forever. If the crowd here doesn't get it, it just shows how far from the actual geek audience has slashdot gone.

      --
      http://validator.w3.org/check?uri=http%3A%2F%2Fwww.slashdot.org Errors found while checking this document as HTML5!
    22. Re:A better question by schlachter · · Score: 1

      People who work in the 'chip' business are familiar with SoC, or Salsa on Crotch.

      --
      My God can beat up your God. Just kidding...don't take offense. I know there's no God.
    23. Re:A better question by Anonymous Coward · · Score: 1

      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.

    24. Re:A better question by TheInternetGuy · · Score: 1

      Well I'll take this one, it is easy! C stands for Chip. Or was it Crinkle Cut? I forget.

      --
      If my comment didn't sound as good in your head as it did in mine, then I guess we all know who's to blame
    25. Re:A better question by Anonymous Coward · · Score: 0

      Well, combining Google and SoC you'd probably get Summer of Code

    26. Re:A better question by Anonymous Coward · · Score: 0

      The root directory of a Unix (or unix-like) filesystem hierarchy.

    27. Re:A better question by Anonymous Coward · · Score: 0

      With 14 different meanings in science and technology alone, according to Wikipedia

      Yes, and even including the other categories on that page only one makes sense in the context of the summary. This is a site for geeks/nerds; while it isn't a crime to come here not knowing what a SoC (or any other semi-common abbreviation) is, bitching about it is (or at least should be). As a geek/nerd you should be able to exercise your brain a little in the pursuit of new knowledge.

    28. Re:A better question by Half-pint+HAL · · Score: 1

      The point is that one person writes the summary and a huge number of people read it. Not all of them know everything.

      Exactly. Or to put it in a way any geek should understand...

      Your "source code" (= the summary) refers to an external source (= the definition of the abbreviation SoC). You could use the preprocessor to fetch that and insert it into the code as a string literal before running compilation (slashdot submission). As you didn't, this meant that the object code generated (= the slashdot summary) invoked a remote file access operation where the host operating system (= the slashdot reader's brain) didn't currently have the string literal "system on a chip" in local RAM.

      Substituting the literal at compile time would have removed the need for thousands of file reads at the cost of 13 * sizeof (char) bytes.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    29. Re:A better question by Half-pint+HAL · · Score: 1

      What does "/." stand for?

      It's a redundant alias for the system root directory. Assuming you're using a proper computer and not one of these modern toys.

      \me ducks

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    30. Re:A better question by geoskd · · Score: 1

      It's not that hard. Another sentence at most. I don't have a problem searching for terms and concepts I don't fully grasp, but it would be nice to have some quality journalism again. Seriously.... grammar and spelling mistakes everywhere now, even at mainstream outlets like CNN. Just once I would like the impression that somebody with an English major was doing actual editing.

      The only problem with that is that English majors are no longer qualified to understand the world around them. Once upon a time, a Liberal Arts degree came with enough STEM to be useful in many contexts, these days its just a very expensive credential that has no substance behind it, and the holders of these degrees are not qualified to speak to any subject outside their own very narrow view. These are not the people you want editing technical documents, because they would spell check the value right out of them. If you don't understand the acronyms, use Google until you do, or just give it up. Don't get mad at others because you have ill prepared yourself to understand the world around you, and for gods sake stop expecting anyone to feed you sanitized news because you might just be unlucky enough to get your wish.

      -=Geoskd

      --
      I wish I had a good sig, but all the good ones are copyrighted
    31. Re:A better question by luis_a_espinal · · Score: 1

      Yes, he shouldn't need to Google since he should know what a SoC is since this is supposed to be a site for technological literate people not reddit rejects.

      Indeed.

      "SoC" is short for "State of Charge," which is, basically, the status of a battery.

      I'm not sure what this has to do with C-code. Maybe these chips they're talking about are used to make battery controllers that use SoC monitoring.

      You might have a point if that were the sole entry in your google results page (alongside salsa on crotch or standard occupation classification).

      But, by golly, that is not the case. Guess f* what? Systems on a Chip is right at the f* top of a google page result, with two sentences describing what it means. By golly, wouldn't that be enough to guide the supposedly nerd mind towards?

      Oh, let me guess, if you don't find it on your first hit, right on the top with flashing colors and dancing monkeys on animated gifs, you give up? No concept of research, even of the most superficial kind? I think we need to write "Google for Dummies" then.

    32. Re:A better question by Jeng · · Score: 1

      If you can't understand TFS then read the TFA, if you still don't understand it then it should at least leave you with enough information to look up the portions you do not know.

      You learn more looking it up and finding out what you do not know rather than having someone spoon feed you the information.

      So basically if the submitter or editor had included the information then you would actually end up learning less.

      --
      Don't know something? Look it up. Still don't know? Then ask.
    33. Re:A better question by Anonymous Coward · · Score: 0

      Now, what is TFS and TFA? That's even less known than SoC

    34. Re:A better question by Anonymous Coward · · Score: 0

      I guessed software on a chip and with just a tad of reflection realize that system on a chip is more accurate, I got the gist.

    35. Re:A better question by Anonymous Coward · · Score: 0

      "The Fucking Scrotum" and "The Fucking Arsehole", geez I thought everybody knew that.

    36. Re:A better question by Geoffrey.landis · · Score: 1

      Ah, what does google know? Real nerds use DuckDuckGo.

      SOC = Special Operations Consulting - Security Management.

      Quack!

      --
      http://www.geoffreylandis.com
    37. Re:A better question by EdIII · · Score: 1

      Don't get mad at others because you have ill prepared yourself to understand the world around you, and for gods sake stop expecting anyone to feed you sanitized news because you might just be unlucky enough to get your wish

      Wow. You're completely and utterly missing the point.

      It would take another sentence at most to tie an explanation of SoC. This is not about anger, or being ill prepared. That is just ridiculous anyways. How do you prepare yourself for exposure to jargon from dozens of different fields? You can't. According to you, I am ill prepared to understand the world around me because I don't immediately recognize an acronym used in a very specific field? Really? Sorry, that is absurd.

      The point is about quality journalism and writing. Try picking up a good magazine once in awhile and reading an article written by a *real* journalist. You'll see the difference right away.

      It can be done. That's what I always liked about Stephen Hawking's books. They were written for people not in that field. Same thing here, the summary could have been written for people not in the field.

      I got system-on-chip right away, so your ridiculous statement about me being angry or ill prepared is amusing. I'm just supporting the poster's lamentation about the degrading state of journalism everywhere.

    38. Re:A better question by Anonymous Coward · · Score: 0

      BCPL minus BPL

    39. Re:A better question by geoskd · · Score: 1

      It would take another sentence at most to tie an explanation of SoC. This is not about anger, or being ill prepared. That is just ridiculous anyways. How do you prepare yourself for exposure to jargon from dozens of different fields?

      One word: Google

      There are two kinds of people on the planet right now. Those that know how to find the answer to any question humanity knows the answer to... and those that don't. I don't understand 3/4 of any technical jargon that I see in slashdot articles. When I find the topic interesting enough, I Google the things I am unfamiliar with. This approach serves as a good launching pad for learning about any unfamiliar topic. Anyone who whines that other people aren't doing their basic research for them deserve to remain ignorant of the world around them.

      That's what I always liked about Stephen Hawking's books.

      My mother reads hawking. She is ill equipped to understand Relativity or Quantum Mechanics, but believes that because whe has read hawking, she understands something about these fields. It is patently absurd, because if you don't understand the jargon, you don't understand the field. The jargon didn't just spring up to make people sound elitist, it is there to denote very specific things that normal language cant relay. Hawking explains some of the jargon, but without the math it is irrelevant. More importantly, Hawking is in the business of selling books to lay people. These articles (And slashdot's subsequent conversations are not intended for that same audience).

      -=Geoskd

      --
      I wish I had a good sig, but all the good ones are copyrighted
    40. Re:A better question by EdIII · · Score: 1

      You still don't get it.

      It's about quality journalism, NOT research or ignorance despite your baseless antagonism and character attacks.

      When you are writing a summary for people inside, and outside, of your field it is not impossible to explain the key concepts and acronyms in a quick manner. There is a crucial difference between a white paper prepared for your field (like say a RFC for Ethernet) and an explanation of Ethernet in a technical article for Slashdot, Reddit, etc.

      To explain them is not "sanitizing" the news, enabling their ignorance, or any other absurd pot shot you wish to throw at somebody because they did not understand an acronym right away.

      Sheesh. I think I have a Cluepon around here somewhere....

  8. Marvellous! by Anonymous Coward · · Score: 5, Interesting

    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?

    1. Re:Marvellous! by khellendros1984 · · Score: 0

      My guess is that their tool provides some language extensions, or some method of specifying the inputs and outputs of the chip's pins.

      --
      It is pitch black. You are likely to be eaten by a grue.
    2. Re:Marvellous! by Logger · · Score: 3, Funny

      The press release says the user doesn't need to know anything about how their tool works. So obviously it will infer the appropriate solution and implement that too.

      Actually the printf example is one of the easiest to implement. You'll receive a sheet of paper with "Hello World" printed on it in 6-8 weeks.

    3. Re:Marvellous! by Anonymous Coward · · Score: 0

      ...and if you do this:

      #include <stdio.h>
      int main() {
      exit(0);
      }

      It builds a door with brass knob!

    4. Re:Marvellous! by Anonymous Coward · · Score: 1

      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?

      It won't do anything. The above piece of code will not translate to synthesizable logic. The printf() statement is not synthesizable. For the tool to output something meaningful, the input has to be meaningful (to the tool).

    5. Re:Marvellous! by gtall · · Score: 1

      You can get chips with little neon signs on the top. So "Hello World" becomes a marquee marching across the top of the chip. In more sophisticated chips, it also synthesizes the words into speech.

    6. Re:Marvellous! by Half-pint+HAL · · Score: 1

      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?

      It won't do anything. The above piece of code will not translate to synthesizable logic. The printf() statement is not synthesizable. For the tool to output something meaningful, the input has to be meaningful (to the tool).

      But we're not just talking about FPGA imaging here -- we're talking system-on-a-chip with processor, RAM, Flash etc. So their system will generate a SoC from stock components with a processor, minimal Flash RAM and a very basic GPU. They won't need to generate any custom logic, but they'll still be generating a SoC to spec, one that will connect to some video display and show a single message.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    7. Re:Marvellous! by Anonymous Coward · · Score: 0

      But we're not just talking about FPGA imaging here -- we're talking system-on-a-chip with processor, RAM, Flash etc. So their system will generate a SoC from stock components with a processor, minimal Flash RAM and a very basic GPU. They won't need to generate any custom logic, but they'll still be generating a SoC to spec, one that will connect to some video display and show a single message.

      Their system would have to be really sophisticated to be able to select the stock components you have mentioned, and generate an SoC. I think it is more likely that the tool simply optimizes and generates the GDS-II netlist from the C-code. So the processor IP and the rest would also have to be supplied to the tool for it to make any sense of the display code.

    8. Re:Marvellous! by rufty_tufty · · Score: 1

      "The printf() statement is not synthesizable."
      Actually in a previous company we were experimenting with tools like this.
      We got it to wrap printf statements up as a trigger to a machine to read the string from memory and pipe it to a 8 bit stream. This 8 bit stream them went to a serial port and voila your RTl would print to the serial port.
      It even coped with concurrency, but if you hit error states one error code could swamp out the real error so it was far from perfect.

      Very cool though.

      --
      "The weirdest thing about a mind, is that every answer that you find, is the basis of a brand new cliche" -
    9. Re:Marvellous! by Asic+Eng · · Score: 1

      It will do the usual what every single one of these tools do: it will tell you that the printf statement is not supported.

      I don't remember how many of these bullshit claims I've heard in my career as an ASIC designer. Basically C is not a language suitable to describe chips, so none of these tools will work outside the niche they are intended for (DSP mostly, and yes they are good for that).

      C is closely mapped to the workings of a CPU, and it does a fine job for that. However if you write an algorithm which - e.g. allocates memory (pretty trivial for C isn't it?) you need to have that memory physically available on the chip. It's not a good idea to write an algorithm which allocates a lot of that, because your chip will become expensive. So you need to carefully think about the max amount.

      Also hardware is inherently parallel - every little piece can run independently. Using C you have just about no tools to make use of that. It is after all a language which is supposed to run optimally on a CPU, and that executes instructions sequencially. The compiler may take advantage of the fact that your algorithm runs better with three multiplier units rather than one, and will probably give you that. However ultimately: either you know what you have in mind when you write the algorithm, or at best you'll get a choice between crap performance or high cost.

      Now let's say you want a multi-core SOC sharing the same Flash memory and resetting itself if the operating voltage falls below a certain threshold. How do you describe that in C? It's possible, but it's not possible in the way you write software, and once it comes to writing C in that manner, you'll find it's not particularly suitable for the task. (Surprise, that's not what it's intended for - it's supposed to be executed by systems like that, not to build the systems.)

      This is usually the point where the "synthesize your C algorithm to an SOC" folkd start to add custom extensions. And this is also the point where you find that there are already specialized languages available for SOCs which understand what a signal is, which support gate-level simulation and clock-domain crossings which have tools available for doing logic equivalence checking, which are portable between tool vendors and are IEEE standardized. Why not use one which already works instead of going back to what we had decades ago? Because "synthesize your C algorithm" makes a great marketing slide.

  9. You provdided a link to define EDA by Chris+Mattern · · Score: 3, Informative

    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.

    1. Re:You provdided a link to define EDA by Anonymous Coward · · Score: 0

      maybe this article really isn't for you in that case. maybe you should head over to mit ocw if you want a free lesson in ee.

    2. Re:You provdided a link to define EDA by blind+biker · · Score: 4, Informative

      GDSII or GDS-2 is a layout format, used by microsystems designers. It's a 2D-only format, but you can have unlimited layers.

      TSMC (Taiwan Semiconductor Manufacturing Company) is the largest microsystems foundry in the world.

      You are correct about SoC.

      --
      "The agriculture ministry is not in charge of Gundam" - Japanese ministry official.
    3. Re:You provdided a link to define EDA by mk1004 · · Score: 1

      Well, TSMC is a foundry. Wikipedia says GDSII is the industry-standard way of exchanging data for PCB and IC layout.--I should have known that since I've worked in the IC industry. No reason for most software and IT people to know those terms. Technical writers generally know that you define the acronym the first time they use it and then use the acronym afterwards. /. articles don't follow that rule. I guess so the people who know those terms can flame those who don't.

      I'm guessing you could end up writing a lot of code to define how you want input and output to flow from the SoC.

      --
      I can mend the break of day, heal a broken heart, and provide temporary relief to nymphomaniacs.
    4. Re:You provdided a link to define EDA by Anonymous Coward · · Score: 0

      Correct me if I'm wrong about these statements.

      As mentioned, GDSII is a layout format. One such use is that it can describe an ASIC design with the "place-and-route" information. This representation of the hardware design can be sent off the foundry for fabrication.

      TSMC and UMC (United Microelectronics Corporation) are two major companies that the so-called "fabless" companies can use to get their hardware designs fabricated...

    5. Re:You provdided a link to define EDA by Freebirth+Toad · · Score: 1

      That's good. You didn't define or even expand SoC, GDSII, or TSMC. That's bad.

      The SoC contains potassium benzoate.

    6. Re:You provdided a link to define EDA by Your.Master · · Score: 1

      Yeah, on Myspace people define TMSC, UMC, GDSII, SoC, and EDA. All the time.

    7. Re:You provdided a link to define EDA by Anonymous Coward · · Score: 0

      News items are for those who find them interesting. I often find it interesting to read things outside my area of expertise. If you can't even judge if an item is interesting without going out of your way to decrypt the summary then it's a bad summary. It is efficient to be clear in what you write, the time you help others (many others in the case of ./) save with an understandable summary is repaid by even just an occasional summary that is understandable for you, and everyone benefits. The people who the article is for in your perception are perfectly able to understand summaries that spell out "System on a chip" the first time the term is used.

      If you use jargon to create an inaccessible little world of insiders who safeguard their status by preventing others to understand perfectly understandable concepts then by all means be as cryptic as you can. If you think knowledge should be accessible then use accessible language when possible.

      You may respond by explaining how wonderful jargon is for efficient communication. That is partly true. But in 20+ years of system development I've been in numerous meetings with programmers and end users in which the programmers were talking language the end users couldn't follow. I've often interrupted and clarified the terms in a few words of plain language, and I started wondering why we need a specialized term at all if a few words are enough to explain it. If you get into a habit of using plain language where possible, even among peers, it becomes much easier to communicate with your clients. I've been in meetings with techies from different companies where it turned out the same terms had subtly different meanings within the different companies. Sometimes the two sides didn't notice differences that had an important impact on the solution. And sometimes someone feels stupid about not knowing a term everybody else seems to be familiar with and is afraid to ask what it means, thereby missing a lot. In cases like this jargon results in inefficient communication. I developed a habit of giving short explanations of what *I* mean by the terms I use in such meetings. It just takes a few extra words, and it prevents a lot of miscommunication.

  10. Depends on the source code and what the chip needs by erice · · Score: 3, Insightful

    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...

  11. so it compiles, drops down a CPU core and a ROM by YesIAmAScript · · Score: 1

    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
    1. Re:so it compiles, drops down a CPU core and a ROM by tomhath · · Score: 1

      Exactly. Is there really any benefit to burning the program into nanocode ROM over normal compiling into a RISC instruction set? In theory, maybe. Burroughs used to do this a few decades ago and gave up on the idea.

    2. Re:so it compiles, drops down a CPU core and a ROM by thoughtspace · · Score: 1

      Same thing happened to CPLDs. Once FPGAs were cheap - we all jumped to FPGAs.
      Why lock yourself down - or even finish design before turning a PCB.

  12. Algorithms vs. hardware by unts · · Score: 1

    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.

  13. Finally... by RevSpaminator · · Score: 1

    I can have hardware devoted to celebrating my mastery of the C language... #include main() { printf ("Hello World!\n"); }

    1. Re:Finally... by unixisc · · Score: 1

      Wonder what an SoC will look like. Except, that how would look like in HDL? What exactly would the headers be?

  14. Kernel-on-a-chip by Anonymous Coward · · Score: 0

    Just feed it the Kernel ! :)

  15. I hope not, but my money is on overhyped. by hamster_nz · · Score: 5, Informative

    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...

    1. Re:I hope not, but my money is on overhyped. by Anonymous Coward · · Score: 1

      Even though interpreted languages are less efficient than C, they are good enough for so many tasks that they have taken off.

      We are probably at or near the point where inefficient C translated to SoC is good enough for a large number of tasks.

      There will always be room for C devs in the programming world and HDL programmers in the hardware world, but with the power of newer hardware not all tasks will require them.

    2. Re:I hope not, but my money is on overhyped. by Anonymous Coward · · Score: 0

      The algorithms used in software by software developers do not translate well into hardware

      Of course. This should really go without saying.

      Software is very iterative and progressive. This is easy because it's stored in RAM and each instruction can be loaded and processed.

      Hardware is tiered but relatively flat by comparison. It runs on clock ticks and making more happen in one clock tick requires more tiers of gates in the hardware. And it will take longer due to the propagation delay.

      Software is serial, hardware is parallel.

      I'm curious, though... how would you convert unsigned to ASCII on chip?

    3. Re:I hope not, but my money is on overhyped. by Anonymous Coward · · Score: 0

      Software is serial, hardware is parallel.

      I though that statement needs to be emphasized...although I would of went
      with the word "sequential" in describing software.

      From what I know there's no main in any of the HDLs...

    4. Re:I hope not, but my money is on overhyped. by DeadCatX2 · · Score: 1

      I doubt we've reached the point where there are so many excess gates lying around that you can use shitty C-to-HDL converters. There is a large excess of CPU cycles but not nearly as much of an excess of gates. You really have to be conscious of how your design will be synthesized because it's very easy for a C-to-HDL converter to really screw up implementation and do terrible things that will bloat the netlist. I've used such a converter before for a small piece of an FPGA program, and I ended up re-writing half of it in HDL anyway because the result wouldn't fit in the FPGA I was using.

      Besides, OP is right, C programmers are terrible hardware designers. C is a sequential language that jumps through hoops to be parallel. HDLs are parallel languages that jump through hoops to be sequential. If you want to be a C programmer in a world where HDL is king, your best bet is to implement a soft-core processor like MicroBlaze or Nios, and then have the C code run on that.

      --
      :(){ :|:& };:
    5. Re:I hope not, but my money is on overhyped. by hamster_nz · · Score: 4, Interesting

      // Make value 17 bits long
        for(i = 0; i != 5 ; i++)
        {
            digit[i] = '0';
            if(value >= 80000) { value -= 80000; digit[i] |= 8; } // Extract the bits for the current digit - In 'C' I' need to use the |= operator as I never did get the hang of addressing bits in 'C'
            if(value >= 40000) { value -= 40000; digit[i] |= 4; }
            if(value >= 20000) { value -= 20000; digit[i] |= 2; }
            if(value >= 10000) { value -= 10000; digit[i] |= 1; }
            value = value*8 + value*2; // Prepare for extracting next digit. - the *4 and *2 would be implement by the wiring into the adder
        }

      Advantages:
      * No divide/mod operator
      * Extracts digits from most significant to least significant (if you want to stream out the digits)
      * Can be unrolled or pipelined to meet timing / throughput requirements

      Sorry about any syntax/typos/errors in the code... it is a comment!

    6. Re:I hope not, but my money is on overhyped. by DeadCatX2 · · Score: 3, Insightful

      I'm curious, though... how would you convert unsigned to ASCII on chip?

      I think OP's point is that your average C programmer would just start doing all kinds of dividing; most of the time there is very little hardware support for division, and so if you fed this into a C->HDL converter it would generate massive bloat as it imported some special library to handle division.

      My first brute-force guess would involve a state machine (FSM), a comparator (16-bit), two adders (one 4-bit, one 16 bit), two muxes (16-bit and 4-bit, four input), a 16-bit register with clock enable and an associated input mux, and four 4-bit registers with clock enable. The FSM would control the 16-bit mux which selects a constant from four powers of 10 (10,000 to 10), and the output of the mux is connected to the 16-bit adder and the comparator. The other input is the 16-bit register, which also needs a mux for selecting between the argument and the adder's output. This register output is also a comparator input. The comparator is configured for "less than" and its output goes to the FSM so it can make decisions. The FSM also controls a 4-bit wide mux which connects four 4-bit registers that represent the various 10s digits (10,000 to 10) to an adder with the other input set to "1".

      1) If the number is greater than 10,000 then inc the "ten-thousands" digit, subtract 10,000 from the argument, and repeat this step.
      2) Once it is less than 10,000 then the state machine would walk forward to the thousands digit
      3) If the number is greater than 1000, inc the thousands digit, subtract 1000 from the argument, and repeat this step.
      4) Once it is less than 1000... (you can extrapolate some here) ...
      n) Once the tens digit has been processed, the remaining argument is the ones digit

      This would give you a series of 4-bit numbers. Once the FSM is done (it's important for it to finish first and change all bits simultaneously, so that downstream logic doesn't see glitches), it would append 0x3 to the front of each 4-bit number, turning them into ASCII.

      Note that this approach requires very little in terms of hardware resources, at the expense of requiring a variable amount of time to process its inputs. Consider that 00000 would take 6 clock cycles to produce (need a cycle to load the input), while 29,999 would require like 33 clock cycles (no need to do subtractions on the ones digit)

      There are other approaches that may be faster in exchange for requiring more hardware. Consider if you had 9 comparators, one for each digit (except 0), and an adder with a 9-input mux; every input would require 6 clock cycles. But this took an extra 8 comparators (and a significantly bigger mux too); size for speed (interestingly, the divider still only gets you 6 clock cycles, and probably takes up many more resources than 9 comparators. But if you could find other work for the divider then time-sharing might make it worth your while, maybe). You could even go all the way and use 32,000+ comparators, if fan-out wouldn't spell doom for such an approach, and then you could always calculate every possible value in 1 clock cycle...but this would require MASSIVE resources. Now if you only needed, say, from 0 to 1000, that might be slightly less unreasonable (perhaps within fanout limitations but probably still unreasonably large).

      OPs point is that a good hardware engineer knows about these tradeoffs and handles them appropriately, while a C programmer isn't trained to think about these issues and their language doesn't even naturally express the structures that it will be mapped on to. Writing the kind of C code that you need to properly synthesize what you want feels like saying the alphabet backwards while jumping up and down on one foot while rubbing your belly and patting your head. And that's if you can even figure out how to tell the C synther that since your values only go from 0 to 1000 that it doesn't need all 16-bits of that unsigned short and it could really get away with only 10 bit support.

      --
      :(){ :|:& };:
    7. Re:I hope not, but my money is on overhyped. by O('_')O_Bush · · Score: 1

      Looks like it lacks the byte->char conversion (he did say ascii, and what's the point if the result is garbage ops?).

      --
      while(1) attack(People.Sandy);
    8. Re:I hope not, but my money is on overhyped. by hamster_nz · · Score: 3, Informative

      Looks like you failed to spot the character constant in digit[i] = '0'; - it is already a character....

    9. Re:I hope not, but my money is on overhyped. by hamster_nz · · Score: 1

      Google just found me cunning way to implement binary to BCD conversion that works by using modified shift registers.

      Very slick, Wouldn't be found by a 'C' to hardware process or 'C' programmer.

    10. Re:I hope not, but my money is on overhyped. by DrFalkyn · · Score: 1

      But if you need to fairly complex things like convert strings, aren't you just better off sticking a CPU on whatever you're designing?

    11. Re:I hope not, but my money is on overhyped. by Anonymous Coward · · Score: 0

      BCD conversion is a really evil question. There's an established technique called "double dabble", and it falls squarely in the head-twister category. The general idea is that it will take n cycles to convert a bit binary number from binary to decimal using a bcd "x2 multiplier" (0b1000 == (1<<3) == (2<<2) == (4<<1) == 8). The carry is the fun part. The final step is to just jam all the bits into the pipeline.

      So the final result: a completely serial 16 bit BCD needs something like a 20 bit working register, 5x4-bit adders, 5x4-bit LUT's (magnitude comparators), and maybe a 5 bit counter over 20 cycles. parallelizing this could reduce the cycle count, etc.

      And this is why us hardware guys look so frazzled.

    12. Re:I hope not, but my money is on overhyped. by hamster_nz · · Score: 3, Interesting

      We all know that it is stupid, but one the "next big thing" ideas for FPGA technology will be using them for ultra-low latency high frequency share trading.

      The idea being that if you can bypass switches, routers, NICs, buffers, IRQs, CPU contet switches and so on you will be able to issue your trade requests before the whole data packet has finished coming off the wire, allowing you to get a big jump on your competitors.

      One assumes that the "buy, buy, buy" or "sell, sell, sell" packets will need to be generated in the finial formats needed by the market, which will most probably need something to be converted from bInary to ASCII characters.

      High frequency traders dream that it would be possible to turn a trade around within a few nano-seconds of the market data arriving.

    13. Re:I hope not, but my money is on overhyped. by DeadCatX2 · · Score: 1

      Well yeah, if you have a CPU lying around on your PCB, and if it has division hardware, then it's easier to use the CPU for a task like that. But another part of designing hardware is knowing how to partition the design space such that you can make the most effective use of computing resources that are available.

      The other side of the coin is that the algorithm I outlined above could reasonably compute a 5-digit binary-to-BCD conversion in six clock cycles. Your average embedded CPU would still be handling the first division by the time I have results (assuming it even has division hardware). Digital logic also scales much better than processor clock speeds, so if you needed to do a 20 or more digit conversion, the digital logic solution will be MUCH faster.

      --
      :(){ :|:& };:
    14. Re:I hope not, but my money is on overhyped. by Anonymous Coward · · Score: 1

      >High frequency traders...

      High fequency traders are scumbags.

    15. Re:I hope not, but my money is on overhyped. by Anonymous Coward · · Score: 0

      I guess it depends upon how much real-estate is available. I would probably implement it as a latched ROM. It would require 5*64k without any kind of optimization. That eliminates the extra clock cycles and microcode needed in the loop. If you are not grabbing existing intellectual property (IP), even that can be optimized. For example, the least significant digit only depends upon the low order 4 bits and can be implemented in 16 bytes instead of a full 64kb chip. Furthermore, the output is really only in the range of 0x30 to 0x39. Thus you can reduce the memories to a width of 4 bits instead of 8 bits and hard wire the upper 4 bits.

      I do not believe the ability to make a SoC from C is all that great, but it probably has a niche.

    16. Re:I hope not, but my money is on overhyped. by unixisc · · Score: 1

      BCD? Just convert the world into an Octal system, which is the closest to decimal. Or even hexadecimal will work, but use something else other than A-F.

  16. Re:Depends on the source code and what the chip ne by TheRealMindChild · · Score: 2

    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
  17. Re:Satish? by Anonymous Coward · · Score: 1, Insightful

    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.

  18. Re:Depends on the source code and what the chip ne by Anonymous Coward · · Score: 0

    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.

  19. Design automation tradeoffs by WaffleMonster · · Score: 1

    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.

    1. Re:Design automation tradeoffs by Anonymous Coward · · Score: 0

      It would also be interesting to compare the costs and the time to produce something usable

    2. Re:Design automation tradeoffs by Anonymous Coward · · Score: 0

      no portion of the article makes me think they are doing any analog-heavy aspects in 8-16 weeks. It really looks more like a tuned CPU architecture, hardware accellerators, and other digital peripherals. the article shows an example of a possibly multi-core CPU with some DSP functions and an FFT engine.

      that said, what is the C function for "power amplifier"?

  20. Okay, here is my C code!!! by Anonymous Coward · · Score: 0

    #include <stdio.h>

    int main(int argc, char **argv) {
    printf("Hello SoC!\n");
    }

  21. Translating C to hardware shouldn't be that hard by Hentes · · Score: 1

    The real question is how efficient it is.

  22. What if .. by Taco+Cowboy · · Score: 1

    What if Microsoft decides to compile their new Windows 8 into a SoC ?

    --
    Muchas Gracias, Señor Edward Snowden !
    1. Re:What if .. by Anonymous Coward · · Score: 3, Funny

      Then you could have a BSOD in hardware. Or in windows 8, Multiple Coloured Squares of Death.

    2. Re:What if .. by rufty_tufty · · Score: 1

      I'd love to see them malloc a new piece of hardware.

      --
      "The weirdest thing about a mind, is that every answer that you find, is the basis of a brand new cliche" -
    3. Re:What if .. by unixisc · · Score: 1

      Then you'll have fabs like TSMC, GSMC, UMC, Global Foundries, Vanguard all start making Windows 8 SoCs

  23. 8-16 weeks for the SOC 8-16 years for the lawsuits by RotateLeftByte · · Score: 0

    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.
  24. I have a great idea by caywen · · Score: 1

    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.

    1. Re:I have a great idea by hamster_nz · · Score: 1

      I don't know the details of this product, but in most cases 'C' to hardware tools are used to optimize the inner-most portion of critical loops,

      One way is to build either a custom CPU instruction - for example a programmable "bitshuffle" for use in crypto.

      Another is to build a custom on-chip peripheral where "my_code(arg1, arg2)" maps to "start arg1 in port X, store arg2 in port Y, read answer from port Z" and the custom logic transforms X and Y into Z. The ports might even have FIFOs allowing many operations to be queued or in flight at the same time.

      One other common configuration to have the custom logic interface with the DMA subsystem and few control registers (e.g. for an RAID XOR engine).

      Usually all these systems have a generic CPU to do the generic stuff - the idea is that the whole design implemented in the same (or almost the same) toolset.

    2. Re:I have a great idea by Asic+Eng · · Score: 1

      Well, let's say you want to make a calculation like this:

      y =( a+b ) - c*8 + e/2 (operand size is 74 bits, for division we ignore the remainder, values are such that there is no overflow)

      Building specialized hardware you can do that in a single clock cycle at basically negligible costs. Serializing this into a CPU, execution takes a lot longer and implementation (i.e. the CPU cost) is relatively expensive. Just reading from flash typically takes several clock cycles on an SOC. (High speed flash is still slow in comparison to ordinary logic.)

      Let's say you have a few hundred expressions like in the example - if you don't mind adding more adders and subtractors you can run all of these in parallel if you use custom hardware.

  25. Alright! by shadowrat · · Score: 1

    We can finally get a hardware implementation of quake!

  26. Re:8-16 weeks for the SOC 8-16 years for the lawsu by mevets · · Score: 1

    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.

  27. maybe turn in your "nerd" card? by ashpool7 · · Score: 1

    "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.

  28. Re:Depends on the source code and what the chip ne by Anonymous Coward · · Score: 0

    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.

  29. IDRMIWSBS in NNA! by Anonymous Coward · · Score: 0

    What TSSE really means for SoC is BFAU. But the major advancement here is how it LQRTs.
    Good job and HSFTF!

  30. Hitchcock had it right! by Tumbleweed · · Score: 1

    Those birds are going to be so much more angry now! We're doomed, I tell you -- DOOMED!

  31. Dude, don't leave us hanging... by ratboy666 · · Score: 1

    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
    1. Re:Dude, don't leave us hanging... by Anonymous Coward · · Score: 0

      It was a typical jab from a member of the hardware community. They enjoy poking at software developers, it's sort of like masturbation for them.

    2. Re:Dude, don't leave us hanging... by Anonymous Coward · · Score: 1

      I posted the code up in another comment.... but you extract bits once at a time, starting with the "40,000" bit, then the "20,000" bit, then "10,000" and so io

      Here's something that aproaches the idea...
          long int temp = value;
          digit[4] = '0';
          if(temp >= 80000) { temp -= 80000; set bit 3 in digit [4];}
          if(temp >= 40000) { temp -= 40000; set bit 2 in digit [4];}
          if(temp >= 20000) { temp -= 20000; set bit 1 in digit [4];}
          if(temp >= 10000) { temp -= 10000; set bit 0 in digit [4];}

      You then have the option to either step down to 8000, 4000.... digit[3], or to multiply 'temp' by 10 and reuse the same logic to extract digit[3].

    3. Re:Dude, don't leave us hanging... by ratboy666 · · Score: 1

      Got it, a combination of the two - subtract off highest powers of ten, but in bcd binary digits to fill in the lower bits of each display digit.

      Good solution.

      --
      Just another "Cubible(sic) Joe" 2 17 3061
  32. MSFT Research had this first. by Anonymous Coward · · Score: 0

    This reminds me of Microsoft's 'Alchemy' Project.
    http://research.microsoft.com/en-us/projects/alchemy/

    --AC

  33. Re:Translating C to hardware shouldn't be that har by Anonymous Coward · · Score: 0

    Yes, as matter of fact, all that is required is to stick a soft-core into the chip ))

  34. Re:Satish? by Anonymous Coward · · Score: 0

    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.

  35. Re:Satish Padmanabhan by Anonymous Coward · · Score: 0

    Oh wow.. they really care what you think. How will he sleep tonight?! :(

  36. How good is it actually? by gweihir · · Score: 1

    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.
  37. Ha! They can't do it. by Anonymous Coward · · Score: 0

    Try converting this into SoC.

  38. Re:lol indian junky shit by Taco+Cowboy · · Score: 1

    They have zero reputation for creating junky hardware and code.

    Really?

    --
    Muchas Gracias, Señor Edward Snowden !
  39. They are not the first. by Vijaysj · · Score: 1

    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
  40. Quine anyone ? by Guignol · · Score: 1

    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);}

  41. Re:Satish? by Anonymous Coward · · Score: 0

    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.

  42. Excuse me? by Anonymous Coward · · Score: 0

    What is the point of creating characters from the set [0 1 2 3 4 5 6 7 8 9 : ; < = > ?] ?

    Those aren't digits!

  43. Re:Satish? by Anonymous Coward · · Score: 0

    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)

  44. Re:Satish? by Anonymous Coward · · Score: 0

    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.

  45. Re:lol indian junky shit by Anonymous Coward · · Score: 0

    This is the guy you are insulting:

    http://esummit12.globalpresspr.com/about/speaker-bios/

    Do you feel really really smart now?

  46. Re:Satish? by Half-pint+HAL · · Score: 1

    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'
  47. Real World Example by aprdm · · Score: 2

    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

  48. acronymification [Re:A better question] by Geoffrey.landis · · Score: 3, Funny

    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
    1. Re:acronymification [Re:A better question] by Caratted · · Score: 1

      Don't joke about acromynificationizing. Chaos doesn't even begin to describe the ramifications of such a move in the name of "5, funny."

  49. Re:lol indian junky shit by Anonymous Coward · · Score: 0

    They have zero reputation for creating junky hardware and code.

    Really?

    Whoosh?

  50. learning != being spoon-fed by luis_a_espinal · · Score: 2

    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.

    1. Re:learning != being spoon-fed by wonkey_monkey · · Score: 1

      "SoC", to me, was utterly without meaning. For the want of half a second of typing, an editor could have given those of us who don't know all the acronyms under the Sun at least an inkling of what the article was about. If "SoC" was a secondary term in a quote from a source, or something (such as "ANSI C" in the summary), I'd be less peeved, but when it's exactly what the article is about, I don't think it's too much to ask.

      Just take a look at the Sport pages on the BBC News website - not as niche as Slashdot, but you'd tend not to go there unless you had an interest in sport. And yet we see snippets such as this all around:

      Chelsea striker Fernando Torres
      Premier League footballer Steven Pienaar
      Liverpool's Luis Suarez

      I wouldn't have the first idea of who these people played for out of context, but the BBC have made it simple and clear with just a few extra words.

      It just seems obvious to me that it would be good journalistic style to go that little extra millimetre to make something which you want people to read easy to read, rather than turning one's nose up at anyone too dumb to understand an article about an unexplained acronym.

      Also, if you really feel that a subject line should tell you whether or not you need to read something

      As a matter of fact, that is exactly what I feel a good subject line should tell you.

      --
      systemd is Roko's Basilisk.
  51. dilettante by luis_a_espinal · · Score: 1

    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.

    1. Re:dilettante by Anonymous Coward · · Score: 0

      What baffles me is how many geeks can't do basic research. [...] 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.

      You're too lazy to put a few extra seconds of work in your communications to improve clarity and accuse your readers of being lazy instead.

      On a more reasonable tone: I'm quite capable of doing basic research. I didn't start this thread and I wouldn't have started it because of the SoC acronym, although I did look it up to confirm that it means what I suspected from the context. But I do recognise wonkey_monkey's complaint: I have had my moments of being irritated by the same thing. And I really do think that someone who wants to communicate to a crowd shouldn't put the burden of getting the message across on each individual in the crowd, but take responsibility for it himself. It is, and that was my point, much more efficient for one person who knows the subject to take that trouble than for every reader who doesn't to repeat the same effort. And we're really talking about nothing more than typing a few words.

  52. Emperor's New Clothes anyone? by eminencja · · Score: 1

    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.

  53. Floating point by Anonymous Coward · · Score: 0

    The moment your project use floating point - these tools just crap out

  54. Re:Depends on the source code and what the chip ne by TheRealMindChild · · Score: 1

    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
  55. Re:Depends on the source code and what the chip ne by Anonymous Coward · · Score: 0

    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.

  56. Re:Depends on the source code and what the chip ne by TheRealMindChild · · Score: 1

    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