<?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: Deep Agile Embedded Panel Questions &#8211; Hardware</title>
	<atom:link href="http://www.renaissancesoftware.net/blog/archives/42/feed" rel="self" type="application/rss+xml" />
	<link>http://www.renaissancesoftware.net/blog/archives/42</link>
	<description>Blogging about Agile Development, especially embedded.  Follow me on twitter: jwgrenning</description>
	<lastBuildDate>Thu, 02 Feb 2012 07:09:14 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Gerard Meszaros</title>
		<link>http://www.renaissancesoftware.net/blog/archives/42/comment-page-1#comment-606</link>
		<dc:creator>Gerard Meszaros</dc:creator>
		<pubDate>Wed, 17 Jun 2009 22:54:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.renaissancesoftware.net/blog/?p=42#comment-606</guid>
		<description>It sounds like you are using a very similar approach to what in software we call the walking skeleton wherein we define a very early implementation of the architect. All the components of the architecture exist but are typically hard-coded inside each component to satisfy one or two key user stories (transactions.) We drive this effort using automated acceptance tests.

Building the walking skeleton helps us focus on the interfaces early in the project and to verify that the components will be able to interact to achieve the overall goal. Then teams can go off and add capabilities (muscles) inside each of the components to handle more user stories. Since the architecture is already integrated and running, we have a lot fewer integration problems later on. We can still evolve the interfaces but these are relatively small changes in the context of the overall architecture.

Does this sound similar to what you are doing in hardware?</description>
		<content:encoded><![CDATA[<p>It sounds like you are using a very similar approach to what in software we call the walking skeleton wherein we define a very early implementation of the architect. All the components of the architecture exist but are typically hard-coded inside each component to satisfy one or two key user stories (transactions.) We drive this effort using automated acceptance tests.</p>
<p>Building the walking skeleton helps us focus on the interfaces early in the project and to verify that the components will be able to interact to achieve the overall goal. Then teams can go off and add capabilities (muscles) inside each of the components to handle more user stories. Since the architecture is already integrated and running, we have a lot fewer integration problems later on. We can still evolve the interfaces but these are relatively small changes in the context of the overall architecture.</p>
<p>Does this sound similar to what you are doing in hardware?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gary Stringham</title>
		<link>http://www.renaissancesoftware.net/blog/archives/42/comment-page-1#comment-592</link>
		<dc:creator>Gary Stringham</dc:creator>
		<pubDate>Fri, 15 May 2009 20:53:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.renaissancesoftware.net/blog/?p=42#comment-592</guid>
		<description>Yes, there is still a big emphasis on verification. In fact, the verification industry is very prominent, providing many tools, experts, and conferences in that area.

Usually when I see &quot;collaboration&quot; mentioned it is in context of having the same types collaborating together, such as two sw engineers doing pair programming, or one sw engineer practicing continuous integration so their sw is quickly made available to other sw engineers. In my workshop, I focus on the interface between hw and sw, which means my collaboration focus is on getting hw engineers to collaborate with sw engineers. Things like co-simulations and virtual prototypes are excellent tools to get the two sides working together.

Much of what I discuss in the workshop is focused on defect prevention by correct design. I&#039;ve dealt with many defects over the years that simply would have been avoided had some design practices been followed. This is hard at the hw/sw boundary because hw engineers do not understand sw nuances. This is why collaboration is so important.

I do talk about continuous improvement but in the silicon world, it is 12 to 18 months (maybe) before you see improvement from one version to the next. Automated testing is not an area I cover.

&quot;First-time-right&quot; efforts have been underway for a few years. Ten years ago, companies had the money and time to do three, four, or five respins to get the chip right. But with the business emphasis on shortening time-to-market and minimizing development costs (one respin these days can cost up to three months and a million dollars,) much has been done to reduce respins. The numbers that I have seen lately are that an average chip requires 1.5 to 3 respins. That is really good considering that the leading process technology today is 45nm, which is one sixth of the 250nm process used to make chips 10 years ago. Because of the smaller geometries, chips now come with millions of gates, making for a very complex part to design and verify.

ESL (Electronic System Level) design is big in the industry right now where design efforts start at the system level. The hw/sw boundary is fuzzy at this time. Models are used to emulate components. Simulations help refine the models and designs. Once things are decided at the system level, then detailed design can progress. This helps cut out waste from designing the wrong building blocks or putting in the wrong features (i.e. lean and agile techniques.)

As far as practices to get it right the first time, several are mentioned in my &lt;a href=&quot;http://www.garystringham.com/newsletter.shtml&quot; rel=&quot;nofollow&quot;&gt;newsletters&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>Yes, there is still a big emphasis on verification. In fact, the verification industry is very prominent, providing many tools, experts, and conferences in that area.</p>
<p>Usually when I see &#8220;collaboration&#8221; mentioned it is in context of having the same types collaborating together, such as two sw engineers doing pair programming, or one sw engineer practicing continuous integration so their sw is quickly made available to other sw engineers. In my workshop, I focus on the interface between hw and sw, which means my collaboration focus is on getting hw engineers to collaborate with sw engineers. Things like co-simulations and virtual prototypes are excellent tools to get the two sides working together.</p>
<p>Much of what I discuss in the workshop is focused on defect prevention by correct design. I&#8217;ve dealt with many defects over the years that simply would have been avoided had some design practices been followed. This is hard at the hw/sw boundary because hw engineers do not understand sw nuances. This is why collaboration is so important.</p>
<p>I do talk about continuous improvement but in the silicon world, it is 12 to 18 months (maybe) before you see improvement from one version to the next. Automated testing is not an area I cover.</p>
<p>&#8220;First-time-right&#8221; efforts have been underway for a few years. Ten years ago, companies had the money and time to do three, four, or five respins to get the chip right. But with the business emphasis on shortening time-to-market and minimizing development costs (one respin these days can cost up to three months and a million dollars,) much has been done to reduce respins. The numbers that I have seen lately are that an average chip requires 1.5 to 3 respins. That is really good considering that the leading process technology today is 45nm, which is one sixth of the 250nm process used to make chips 10 years ago. Because of the smaller geometries, chips now come with millions of gates, making for a very complex part to design and verify.</p>
<p>ESL (Electronic System Level) design is big in the industry right now where design efforts start at the system level. The hw/sw boundary is fuzzy at this time. Models are used to emulate components. Simulations help refine the models and designs. Once things are decided at the system level, then detailed design can progress. This helps cut out waste from designing the wrong building blocks or putting in the wrong features (i.e. lean and agile techniques.)</p>
<p>As far as practices to get it right the first time, several are mentioned in my <a href="http://www.garystringham.com/newsletter.shtml" rel="nofollow">newsletters</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jwgrenning</title>
		<link>http://www.renaissancesoftware.net/blog/archives/42/comment-page-1#comment-590</link>
		<dc:creator>jwgrenning</dc:creator>
		<pubDate>Fri, 15 May 2009 15:41:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.renaissancesoftware.net/blog/?p=42#comment-590</guid>
		<description>Thanks for adding to the discussion.

It sounds like the self-preservation techniques, which you call non-agile, are very important.  I assume it&#039;s similar today, as days gone by, where there is an emphasis on test and simulation.  In the olden days in the 80&#039;s we would spend lots of effort on test vectors for custom gate arrays.  We would not dream of sending the design to fab without them.  You get to toss one golden horse shoe, you want to aim true.

So, when you commit to a design, you want to be pretty darn sure that it has a good chance of working.  In the lean world they call that waiting for the last responsible moment.  You also design in flexibility.  It sounds like you hedge your bets by designing in design alternatives and probably some programability.  

I see from your &lt;a href=&quot;http://www.garystringham.com/workshop.shtml&quot; rel=&quot;nofollow&quot;&gt;workshop&lt;/a&gt; that you value some of the same things agile software developers value: collaboration, practices, principles, post mortem (we call them retrospectives).  I don&#039;t see defect prevention, automated test or continuous improvement, but I suspect they are there.

I bet there are efforts underway to reduce the time from design submission to first silicon.  Is it better today than 10 years ago?  How many spins of silicon are typical?  What are the practices to get it right the first time?  What are the lean/agile techniques for silicon design?

I don&#039;t know these answers but I am interested.</description>
		<content:encoded><![CDATA[<p>Thanks for adding to the discussion.</p>
<p>It sounds like the self-preservation techniques, which you call non-agile, are very important.  I assume it&#8217;s similar today, as days gone by, where there is an emphasis on test and simulation.  In the olden days in the 80&#8242;s we would spend lots of effort on test vectors for custom gate arrays.  We would not dream of sending the design to fab without them.  You get to toss one golden horse shoe, you want to aim true.</p>
<p>So, when you commit to a design, you want to be pretty darn sure that it has a good chance of working.  In the lean world they call that waiting for the last responsible moment.  You also design in flexibility.  It sounds like you hedge your bets by designing in design alternatives and probably some programability.  </p>
<p>I see from your <a href="http://www.garystringham.com/workshop.shtml" rel="nofollow">workshop</a> that you value some of the same things agile software developers value: collaboration, practices, principles, post mortem (we call them retrospectives).  I don&#8217;t see defect prevention, automated test or continuous improvement, but I suspect they are there.</p>
<p>I bet there are efforts underway to reduce the time from design submission to first silicon.  Is it better today than 10 years ago?  How many spins of silicon are typical?  What are the practices to get it right the first time?  What are the lean/agile techniques for silicon design?</p>
<p>I don&#8217;t know these answers but I am interested.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gary Stringham</title>
		<link>http://www.renaissancesoftware.net/blog/archives/42/comment-page-1#comment-589</link>
		<dc:creator>Gary Stringham</dc:creator>
		<pubDate>Fri, 15 May 2009 15:11:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.renaissancesoftware.net/blog/?p=42#comment-589</guid>
		<description>When you discussed hardware, you twice mentioned boards but never mentioned chips. Chips (of the non-FPGA type) take two to three months to make. Before sending the design off to be made into chips, hardware and software engineers can work together using agile techniques on FPGAs, virtual prototypes, and co-simulation. However, those techniques have their limitations, preventing the full system from being tested. At some point, the chip design has to be frozen and sent off to be fabricated. During the intervening two or three months, hardware is no longer agile. After the chips come back, then the full and complete system testing can be done with hardware and software integrated.
As you pointed out, if there is a problem with the board, you can get an overnight turn for a hefty fee. But no amount of money can respin a chip in less than two months (six weeks if you&#039;re lucky.) 
In order to increase the likelihood of a successful chip fabrication, many non-agile techniques must be used, such as designing for the future, putting in more features than you need right now, and adding lots of hooks to mitigate defects that will show up. And that creates a problem on the software side because now they have to provide support for it.
In addition to the agile techniques on the software side, focusing on and following design guidelines and best practices for the interface between hardware and software will give the product a better chance of a successful hardware/software integration and succeeding in the market.</description>
		<content:encoded><![CDATA[<p>When you discussed hardware, you twice mentioned boards but never mentioned chips. Chips (of the non-FPGA type) take two to three months to make. Before sending the design off to be made into chips, hardware and software engineers can work together using agile techniques on FPGAs, virtual prototypes, and co-simulation. However, those techniques have their limitations, preventing the full system from being tested. At some point, the chip design has to be frozen and sent off to be fabricated. During the intervening two or three months, hardware is no longer agile. After the chips come back, then the full and complete system testing can be done with hardware and software integrated.<br />
As you pointed out, if there is a problem with the board, you can get an overnight turn for a hefty fee. But no amount of money can respin a chip in less than two months (six weeks if you&#8217;re lucky.)<br />
In order to increase the likelihood of a successful chip fabrication, many non-agile techniques must be used, such as designing for the future, putting in more features than you need right now, and adding lots of hooks to mitigate defects that will show up. And that creates a problem on the software side because now they have to provide support for it.<br />
In addition to the agile techniques on the software side, focusing on and following design guidelines and best practices for the interface between hardware and software will give the product a better chance of a successful hardware/software integration and succeeding in the market.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alandd</title>
		<link>http://www.renaissancesoftware.net/blog/archives/42/comment-page-1#comment-580</link>
		<dc:creator>alandd</dc:creator>
		<pubDate>Wed, 06 May 2009 17:38:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.renaissancesoftware.net/blog/?p=42#comment-580</guid>
		<description>Great stuff.  Thanks for sharing it!

These are good points.  We have discussed some of these before with our hardware people.  The problem is one of &quot;seeing is believing&quot; and they don&#039;t believe enough to try to see.  Meaning, they hear the above arguments, declare them fantasy and refuse to try.

Other than calling in a management edict, I have not been successful getting over such flat dismissals of these agile hardware development benefits.  Do you have any suggestions on providing the hard skeptics with a positive experience?</description>
		<content:encoded><![CDATA[<p>Great stuff.  Thanks for sharing it!</p>
<p>These are good points.  We have discussed some of these before with our hardware people.  The problem is one of &#8220;seeing is believing&#8221; and they don&#8217;t believe enough to try to see.  Meaning, they hear the above arguments, declare them fantasy and refuse to try.</p>
<p>Other than calling in a management edict, I have not been successful getting over such flat dismissals of these agile hardware development benefits.  Do you have any suggestions on providing the hard skeptics with a positive experience?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

