<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: What&#8217;s the Obsession with C in EDA?</title>
	<atom:link href="http://jakob.engbloms.se/archives/165/feed" rel="self" type="application/rss+xml" />
	<link>http://jakob.engbloms.se/archives/165?&#038;owa_medium=feed&#038;owa_sid=</link>
	<description>Computer Technology: Simulation, Virtualization, Virtual Platforms, Embedded, Multicore and Multiprocessing (by Jakob Engblom)</description>
	<lastBuildDate>Thu, 12 Jan 2012 21:54:16 -0800</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Jakob</title>
		<link>http://jakob.engbloms.se/archives/165/comment-page-1#comment-1697</link>
		<dc:creator>Jakob</dc:creator>
		<pubDate>Mon, 04 Aug 2008 18:07:30 +0000</pubDate>
		<guid isPermaLink="false">http://jakob.engbloms.se/?p=165#comment-1697</guid>
		<description>Just found a pretty good online critique of C++, see http://yosefk.com/c++fqa/defective.html ... thanks to http://x86vmm.blogspot.com/2008/08/why-i-am-not-c-programmer-ten-years-on.html for the tip.</description>
		<content:encoded><![CDATA[<p>Just found a pretty good online critique of C++, see <a href="http://yosefk.com/c++fqa/defective.html" rel="nofollow">http://yosefk.com/c++fqa/defective.html</a> &#8230; thanks to <a href="http://x86vmm.blogspot.com/2008/08/why-i-am-not-c-programmer-ten-years-on.html" rel="nofollow">http://x86vmm.blogspot.com/2008/08/why-i-am-not-c-programmer-ten-years-on.html</a> for the tip.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jakob</title>
		<link>http://jakob.engbloms.se/archives/165/comment-page-1#comment-1680</link>
		<dc:creator>Jakob</dc:creator>
		<pubDate>Sun, 27 Jul 2008 07:45:42 +0000</pubDate>
		<guid isPermaLink="false">http://jakob.engbloms.se/?p=165#comment-1680</guid>
		<description>Thanks Amir!

Excel is definitely something that I have overlooked as a &quot;compute model&quot;, even if to me Excel + VBA sounds pretty horrible to analyze and do some kind of static analysis on :)  Also interesting since Excel would seem to have a very opaque type system for data.  I will look it up!

/jakob</description>
		<content:encoded><![CDATA[<p>Thanks Amir!</p>
<p>Excel is definitely something that I have overlooked as a &#8220;compute model&#8221;, even if to me Excel + VBA sounds pretty horrible to analyze and do some kind of static analysis on <img src='http://jakob.engbloms.se/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Also interesting since Excel would seem to have a very opaque type system for data.  I will look it up!</p>
<p>/jakob</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Amir</title>
		<link>http://jakob.engbloms.se/archives/165/comment-page-1#comment-1678</link>
		<dc:creator>Amir</dc:creator>
		<pubDate>Sun, 27 Jul 2008 05:04:07 +0000</pubDate>
		<guid isPermaLink="false">http://jakob.engbloms.se/?p=165#comment-1678</guid>
		<description>Hi Jakob,

C to Hardware is also intended to target the FPGA Accelerated Computing space. For legacy HPC applications this is much less painful than hand conversion to Verilog.

I&#039;ve argued on my blog that the spreadsheet should be the primitive model for parallel computing to replace von Neumann instruction streams. If you look back to last September, you&#039;ll find a similar rant on the use of C for parallel programming. Excel+VBA is by far the most widely understood combined data-flow and control-flow environment. I think that because Excel+VBA dominates this programming model by so much that it&#039;s overlooked by most experts and rarely considered in the same breath as Matlab+Simulink or Labview.

We posted code for a Python-Excel interpreter that performs non-blocking assignments and synchronizes data with your visible range in Excel (see the blog for info). We can only do trivial Excel to Verilog conversions currently so nothing terribly cool on the FPGA side.</description>
		<content:encoded><![CDATA[<p>Hi Jakob,</p>
<p>C to Hardware is also intended to target the FPGA Accelerated Computing space. For legacy HPC applications this is much less painful than hand conversion to Verilog.</p>
<p>I&#8217;ve argued on my blog that the spreadsheet should be the primitive model for parallel computing to replace von Neumann instruction streams. If you look back to last September, you&#8217;ll find a similar rant on the use of C for parallel programming. Excel+VBA is by far the most widely understood combined data-flow and control-flow environment. I think that because Excel+VBA dominates this programming model by so much that it&#8217;s overlooked by most experts and rarely considered in the same breath as Matlab+Simulink or Labview.</p>
<p>We posted code for a Python-Excel interpreter that performs non-blocking assignments and synchronizes data with your visible range in Excel (see the blog for info). We can only do trivial Excel to Verilog conversions currently so nothing terribly cool on the FPGA side.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Grant Martin</title>
		<link>http://jakob.engbloms.se/archives/165/comment-page-1#comment-1676</link>
		<dc:creator>Grant Martin</dc:creator>
		<pubDate>Fri, 25 Jul 2008 15:44:50 +0000</pubDate>
		<guid isPermaLink="false">http://jakob.engbloms.se/?p=165#comment-1676</guid>
		<description>Excellent point!    A lot of implementation code and reference standard code is pointer-full, irregular, and indeed has to be cleaned up for high level synthesis (HLS).  Very little of it was written with HLS in mind.  However, let&#039;s also remember that even for new algorithms that an embedded architect or application expert might write for HLS directly, taking care ref. pointers, aliasing and access regularities for array structures, etc., is still likely to be written in C/C++, because that is what the developers are familiar with and trust.   Thus shifting to new input mechanisms is a long term project of education, experience and trust.

So the gain in using C/C++ may be more the &quot;mental reuse&quot; by the developers of their worldview, than the actual reuse of the code (although even badly written code can serve as a reference model for rewritten HLS-friendly code, to confirm that it implements the same algorithm).

I also see moves to other languages for control, but control has also not been the forte (pun intended) of HLS, which has concentrated on dataflow oriented signal and media processing algorithms more.   Bluespec seems to be an exception here, although its current most natural form is in an HDVL, SystemVerilog.</description>
		<content:encoded><![CDATA[<p>Excellent point!    A lot of implementation code and reference standard code is pointer-full, irregular, and indeed has to be cleaned up for high level synthesis (HLS).  Very little of it was written with HLS in mind.  However, let&#8217;s also remember that even for new algorithms that an embedded architect or application expert might write for HLS directly, taking care ref. pointers, aliasing and access regularities for array structures, etc., is still likely to be written in C/C++, because that is what the developers are familiar with and trust.   Thus shifting to new input mechanisms is a long term project of education, experience and trust.</p>
<p>So the gain in using C/C++ may be more the &#8220;mental reuse&#8221; by the developers of their worldview, than the actual reuse of the code (although even badly written code can serve as a reference model for rewritten HLS-friendly code, to confirm that it implements the same algorithm).</p>
<p>I also see moves to other languages for control, but control has also not been the forte (pun intended) of HLS, which has concentrated on dataflow oriented signal and media processing algorithms more.   Bluespec seems to be an exception here, although its current most natural form is in an HDVL, SystemVerilog.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jakob</title>
		<link>http://jakob.engbloms.se/archives/165/comment-page-1#comment-1673</link>
		<dc:creator>Jakob</dc:creator>
		<pubDate>Thu, 24 Jul 2008 18:26:14 +0000</pubDate>
		<guid isPermaLink="false">http://jakob.engbloms.se/?p=165#comment-1673</guid>
		<description>Thanks for confirming my suspicion that the idea behind using C and C++ was to make use of existing code bases... 

That embedded programmers are by and large wedded to C/C++ is well-known, but I see a very strong trend to move to Javam and UML in the control plane and model-driven architectures in control algorithms.  Most such high-level tools generate C (and occasionally Java) to be able to compile to something executable, that is the best way to do it. 

But what I am uncertain about is whether the code provided by embedded developers, generated from domain-specific languages, or obtained as reference implementation is a actually a useful start for synthesis.  In my experience, it would likely not be, as all that code is not designed to fit a restricted easy-to-manipulate subset of C.  

To me it would look like you would have to at the very least go through the code and do a lot of rewriting and fixing to make it fit for synthesis.  Negating most of the gain of reusing &quot;existing&quot; code.</description>
		<content:encoded><![CDATA[<p>Thanks for confirming my suspicion that the idea behind using C and C++ was to make use of existing code bases&#8230; </p>
<p>That embedded programmers are by and large wedded to C/C++ is well-known, but I see a very strong trend to move to Javam and UML in the control plane and model-driven architectures in control algorithms.  Most such high-level tools generate C (and occasionally Java) to be able to compile to something executable, that is the best way to do it. </p>
<p>But what I am uncertain about is whether the code provided by embedded developers, generated from domain-specific languages, or obtained as reference implementation is a actually a useful start for synthesis.  In my experience, it would likely not be, as all that code is not designed to fit a restricted easy-to-manipulate subset of C.  </p>
<p>To me it would look like you would have to at the very least go through the code and do a lot of rewriting and fixing to make it fit for synthesis.  Negating most of the gain of reusing &#8220;existing&#8221; code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Grant Martin</title>
		<link>http://jakob.engbloms.se/archives/165/comment-page-1#comment-1668</link>
		<dc:creator>Grant Martin</dc:creator>
		<pubDate>Wed, 23 Jul 2008 20:43:32 +0000</pubDate>
		<guid isPermaLink="false">http://jakob.engbloms.se/?p=165#comment-1668</guid>
		<description>Jakob

Just about everything you say is true and easy to agree with.    (Other domain-oriented specification languages such as the family of actor-oriented dataflow notations - Mathworks Simulink, Ptolemy, CoWare SPW are also worth a mention).  However, the decision to use C is much easier to understand than by looking at the EDA companies marketing literature and the rationalisations about abstraction levels and productivity.  Stated pure and simply, C (and C++) IS the market for ESL synthesis, and IS the market for a lot of embedded code writing.   Most embedded software developers developing application code for media type applications use C/C++.  Many of the standards being implemented start with reference implementations in C/C++.   Most of the legacy code for embedded systems is in C/C++.  And all this legacy and current practice shows a reluctance to consider alternatives and a persistence in continuing to use C/C++ that is both surprising and not-surprising at the same time.   I do know that if there was a concerted and visible movement by embedded systems developers to move to other languages or input notations in a serious way, then it would garner a lot more attention.  Periodically there is interest in trying to do something more directly with Matlab and the dataflow actor-oriented languages such as Simulink.   However, since most of these toolsets generate C or C++ as an intermediate form, it is all too easy to rely on our old friends of C-based languages and keep building them into the flow.

Those who build flows and tools based on other languages share the optimism of &quot;if we build it, they will come&quot;.   But too often in the past the new edifice is built and no-one has shown up!   I fondly expect that at some time there will be a sea change and something new will become the new new thing and receive wide adoption.    But I recommend that no-one hold their breath waiting for that to happen.

Grant</description>
		<content:encoded><![CDATA[<p>Jakob</p>
<p>Just about everything you say is true and easy to agree with.    (Other domain-oriented specification languages such as the family of actor-oriented dataflow notations &#8211; Mathworks Simulink, Ptolemy, CoWare SPW are also worth a mention).  However, the decision to use C is much easier to understand than by looking at the EDA companies marketing literature and the rationalisations about abstraction levels and productivity.  Stated pure and simply, C (and C++) IS the market for ESL synthesis, and IS the market for a lot of embedded code writing.   Most embedded software developers developing application code for media type applications use C/C++.  Many of the standards being implemented start with reference implementations in C/C++.   Most of the legacy code for embedded systems is in C/C++.  And all this legacy and current practice shows a reluctance to consider alternatives and a persistence in continuing to use C/C++ that is both surprising and not-surprising at the same time.   I do know that if there was a concerted and visible movement by embedded systems developers to move to other languages or input notations in a serious way, then it would garner a lot more attention.  Periodically there is interest in trying to do something more directly with Matlab and the dataflow actor-oriented languages such as Simulink.   However, since most of these toolsets generate C or C++ as an intermediate form, it is all too easy to rely on our old friends of C-based languages and keep building them into the flow.</p>
<p>Those who build flows and tools based on other languages share the optimism of &#8220;if we build it, they will come&#8221;.   But too often in the past the new edifice is built and no-one has shown up!   I fondly expect that at some time there will be a sea change and something new will become the new new thing and receive wide adoption.    But I recommend that no-one hold their breath waiting for that to happen.</p>
<p>Grant</p>
]]></content:encoded>
	</item>
</channel>
</rss>

