Tim Davis's blog https://aspenlogic.com/drupal7/blog/6 Aspen Logic site feed en Hit the Road(map) Jack https://aspenlogic.com/drupal7/fpga-development-road-map <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p><img alt="" src="/drupal7/sites/default/files/default_images/aspenlogic_red_or_logic_gate_86x72.png" style="float:left; height:72px; margin:10px 10px 10px 10px; width:86px" /></p> <p>First, with apologies to the awesome Ray Charles and his hit song, <a href="https://youtu.be/CyVuYAHiZb8">Hit the Road Jack</a>, from which I borrowed this blog's catchy title, I want to introduce the idea of creating a <em>roadmap</em> for your next FPGA development project as a simple way to keep every project team's eye-on-the-target(s).</p> <p>Now some will immediately respond with, "We have a formal project schedule that defines our roadmap". Just as quickly, I offer my snappy response, "Your project schedule reaks of greatness. Congratulations on producing it but can you show me the roadmap in it?"</p> <p>Really, a project schedule does not replace a roadmap. (And certainly not vice versa!) But how can this be?</p> <h2>FPGA Development Roadmaps and Schedules</h2> <p>According to <a href="https://www.merriam-webster.com/dictionary/road%20map">Merriam-Webster</a>, a "road map (n)" is a detailed plan to guide progress toward a goal. I could not disagree more. I also do not want to incur the overarching process behind a <a href="https://en.wikipedia.org/wiki/Technology_roadmap">technology roadmap</a>. The Webster definition invokes more of a schedule connotation especially in regards to <em>detail</em>.</p> <p>A schedule gives every task, duration, resource and dependency all in one handy <a href="https://youtu.be/VIm8yWpBxFA">Gantt chart</a>. <s>The</s> A problem with a Gantt chart stems from the requirement for some poor soul to be pretty good at <a href="https://en.wikipedia.org/wiki/Microsoft_Project">Microsoft Project</a> to make changes to the project data and the distinct possibility that doing so is only allowed by one person who controls the document. It captures the <a href="https://www.google.com/search?rlz=1C1PRFB_enUS455US458&amp;ei=eFOsWqv-C4rojwPB-rHgAQ&amp;q=dictionary%3A+exquisite&amp;oq=dictionary%3A+exquisite&amp;gs_l=psy-ab.3..0j0i22i30k1l3.45417.49582.0.50005.21.19.0.2.2.0.121.1770.12j7.19.0....0...1c.1.64.psy-ab..1.20.1657...0i131k1j0i67k1.0.WlJi5qT91ig">exquisite </a>detailed planning for reaching some goal, deliverable, or outcome. As the dictionary definition alludes, it is beautiful but delicate. So, not something you want to mess with lightly.</p> <p>An FPGA development roadmap (just roadmap from here on), only requires experience with paper and pencil, a white board or perhaps Microsoft OneNote and does not have the rigidity and delicatness of a full on project schedule. Instead it strives to communicate where your FPGA design will potentially end up <em>many releases in the future</em>. Perhaps it is more like Horace Greeley's exultation, "<a href="https://en.wikipedia.org/wiki/Go_West,_young_man">Go west young man</a>" -- which was less about an exact geographic destination then a suggestion of where success could be found.</p> <p>The roadmap is the place where you <em>deposit </em>your ideas about features, capabilities, bug fixes, and in general any <em>future modification</em> of the design. It innoculates agains the ever present feature creep virus by providing an outlet and storage location for great ideas. It is the chilling air that keeps the current development effort frozen and therefore focused on a fixed set of features.</p> <p>It should not be a place where ideas are discarded. Using the road map in this way promotes team unity by explicitly valuing all ideas as keepers.</p> <p>The roadmap contains multiple parts:</p> <ol> <li>Prototype Design</li> <li>Past Released design(s)</li> <li>Frozen Development Design (in progress)</li> <li>Future Design(s)</li> <li>Idea Pile</li> <li>Codename List</li> <li> </li> </ol> <p>Each page (yeah you only get one) in the roadmap contains the codename for the design, the version number string, the short descriptive goal of this design and an ordered list or table of features. I use the term feature generically here -- they could be bug fixes, enhancements to functionality, possibly removal of unused capabilities, you name it. The feature ordering is by rough priority the further down the list of roadmap pages you are. However, the Frozen Development Design page should have a very formal priority. Items at the end of the list are fair game for movement at the last moment into the next-in-line Future Design pile.</p> <h2>Rules for Adding Features to the FPGA Development Roadmap</h2> <ol> <li>New ideas are always placed in the Idea Pile prior to roadmap discussions. They need to age there for a time prior to movement into any of the Future Design pages.</li> <li>The Frozen Development  Design page needs to have the names of all the participants and principles recorded on it to signify their acceptance of the frozen state.</li> </ol> <h2>Prototypes</h2> <h2>Freezer</h2> <p>Often times FPGA projects suffer from feature creap or scope creap. </p> <p>The urge to fix things that are not broken yet.</p> <h2>Future</h2> <h2>Idea Pile</h2> <h2>Codename List</h2> <p>I like project codenames. They help to associate an easily discussed name for what is probably a complicated set of features.The name probably has nothing even remotely remenisicant of the actual features so the arbitraryness may seem like an empediment. In actual practice I have found it easy to use when a roadmap document is present to help qualify the features associated with the name. Also, if you choose a name set with ascending, alphabetically sequenced names, you add a simple sense of history for where you are at.</p> <p>"Hafnium was a total failure, but Iodine has saved the day".</p> <p>There are probably good name sets and bad based on ease of pronunciation and length in characters. Here are ones to consider:</p> <ul> <li><a href="http://www.typesofflowers.co.uk/flower-list">Flowers</a> (21 unique letters) Some are hard to pronouce though.</li> <li><a href="https://www.lenntech.com/periodic/name/alphabetic.htm">Elements of the periodic table</a> (23 unique letters)</li> <li><a href="https://state.1keydata.com/">United States</a> (19 unique letters)</li> </ul> <h2>Summary</h2> <p>An FPGA development roadmap helps you to document and agree upon a nice evenly sequenced set of design milestones. It helps prevent feature creap by acting as a respository for ideas which do not all require implementation immediately. It provides a discussion vehicle as everything is written down. It can help non subject matter experts (nSME) like managers get a grip on incremental progress milestones.</p> <h2>Postscript</h2> <p>As to whether, <a href="https://www.proofreadnow.com/blog/bid/29024/New-Compounds-When-Two-Become-One"><em>roadmap </em>or <em>road map</em> </a>is the proper sequence of characters, I defer to history but prefer roadmap for its memory saving footprint.</p> </div></div></div> Sat, 17 Mar 2018 01:25:29 +0000 Tim Davis 67 at https://aspenlogic.com/drupal7 https://aspenlogic.com/drupal7/fpga-development-road-map#comments The Transistor Effect https://aspenlogic.com/drupal7/just-an-opinion/transistors <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p><img alt="" src="/drupal7/sites/default/files/default_images/aspenlogic_red_or_logic_gate_86x72.png" style="float:left; height:72px; margin:10px 10px 10px 10px; width:86px" /> </p><p>Who knew that transistors would have such a transformative power over our daily lives? We carry billions of them around in our pocket, on our wrist, in our computers. They are ubiquitous but also invisible.</p> <p>Gordon Moore, the co-founder of Fairchild Semiconductor, established the observation that number of transistors in integrated circuits doubles about every two years. They call it <a href="https://en.wikipedia.org/wiki/Moore%27s_law">Moore's law</a>.</p> <p>To reach the monumental number of transistors packed into our every day lives, engineers, scientists and visionaries had to cook up new ways to make the little devils. And they are devilishly difficult to produce in such large quanities on those very perfectly concocted slabs of purified beach sand called silicon wafers.</p> <p>All from the observation that when you cross a wire over a specially doped area of silicon you get a small electronic switch. Hook those transistor switches into a logic gate, assemble those gates into CPU's and you get a revolution.</p> <p>A revolution that eventually brought us to the Field Programmable Gate Array.</p> </div></div></div> Fri, 02 Mar 2018 05:20:18 +0000 Tim Davis 33 at https://aspenlogic.com/drupal7 https://aspenlogic.com/drupal7/just-an-opinion/transistors#comments Bugs? Not in my schedule please. https://aspenlogic.com/drupal7/node/16 <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><hr /> <p>I<img alt="" src="/drupal7/sites/default/files/default_images/aspenlogic_red_or_logic_gate_86x72.png" style="float:left; height:72px; width:86px; margin:10px 10px 10px 10px" /> have rescued a few designs during my 25+ years at the helm of Aspen Logic's FPGA/ASIC contracting business. Reasons abound for the causes of the failures but there are three areas that need consistent focus:</p> <ol> <li>Designers give little up front thought to logic reset which leads to insidious, hard to find bugs</li> <li>Management typically assigns a cost of $0 to bugs because FPGA devices are re-programmable so no time is allocated in the schedule for squishing them</li> <li>Lack of a road map for features and fixes which makes decision making on large design efforts difficult</li> </ol> <p><!--break--></p> <h2>Reset Logic</h2> <p>#1 just requires an up front process to recognize the significance of this rather boring chore followed up by design review coverage. Pay special attention to 3rd party intellectual property cores and ask your vendor how their block is reset. If it contains a mixture of asynchronous and synchronous resets along with multiple clock domains -- run for the hills, pick a new vendor or demand to see a detailed explanation of how those are all implemented!</p> <h2>Zap Zap Zap (Go the Bugs)</h2> <p>Most of this post covers #2 as it requires <strong>zapping</strong> project management to wake them up. You like the idea of <strong>zapping</strong> your <del>boss, task-master, Voldemort</del> project manager (PM) but not necessarily getting fired am I right? </p> <p>A quick way to <strong>zap</strong> is to <u>insist </u>on adding line items to your next project plan for fixing bugs and then assign outrageous $$$ signs to them. For example, tell the PM to budget for removal of 50 simple bugs, 20 hard bugs and 5 wicked bugs. (Scale the numbers with the complexity of the project). Make each wicked bug take 40-80 days to solve, hard bug 10-15 days and simple bug 1-2 days. Explain that wicked bugs occur because of requirement creep impacting the implementation with no way to regression test new feature code, poor or non-existent design reviews and schedule driven code creation with little or no up front design effort. Hard bugs occur when engineers do not get time for writing block/module/unit test benches. Easy bugs occur because engineers race to meet artificial deadlines, miss simple details and make bonehead mistakes. (This is just a concrete way of starting a discussion -- bugs are a result of many things including the items mentioned.)</p> <p>Note that <strong>every</strong> project manager on the planet prohibits bug removal as one big line item in their schedules because the duration is impossible to predict and therefore their delivery date becomes impossible to predict. Writing HDL code delivers something concrete they can measure so schedules are always built around those tasks with a fixation bordering on mania.</p> <p>Many could not write a line of code to save their mothers but they know, conveniently, it will only take <strong>you</strong> 11.5 days to code (meaning design, write HDL, test, debug, document) block #1! After checking off the coding tasks, everybody is goosed to delivery a bug free design through long hours and overtime which unfortunately just makes for tired engineers and more bugs. PM's always assume free overtime effort will cure any schedule deficiency and frequently state, "By the way, I thought it was free to re-program FPGAs. Isn't that why we bought them?" :-)</p> <p>Do not fall into the gaping maw of this trap. Insist on predicting bug killing time up front, <u>and separately from design</u>, then you can have a <del>fist fight</del> discussion how to spend time and money effectively to reduce (but not entirely eliminate) it. Negotiate the time needed to fix bugs, <em>but not the number of them</em>, by insisting that design, verification and review will reduce the severity of each class of defect. Educate them that controllability and observability are key to defect diagnosis and that having the proper tools (hardware and/or software) and resources (50% unused LUTs/memory/routing for internal FPGA logic analyzers) are critical so they must be considered early in the budgeting process.</p> <h2>Road Map (to salvation)</h2> <p>Lastly, from now on, I am insisting that customers prepare configuration management plans up front that contain a malleable road map document which identifies the build versions that will contain new features and bug fixes. That keeps the pressure and the creep down as people can at least sit in a room and make rational decisions about the costs and priorities based on a <strong>written, high-level</strong> plan that evolves as the project progresses. Try these ideas on your next project and let me know how they go.</p> </div></div></div> Fri, 24 Feb 2017 17:44:00 +0000 Tim Davis 16 at https://aspenlogic.com/drupal7 https://aspenlogic.com/drupal7/node/16#comments Verifying Validation and Validating Verification https://aspenlogic.com/drupal7/just-an-opinion/verification-validation <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p><img alt="" src="/drupal7/sites/default/files/default_images/aspenlogic_red_or_logic_gate_86x72.png" style="float:left; height:72px; margin:10px 10px 10px 10px; width:86px" /></p> <p>People (I guess we classify engineers as people) have always talked about verification and the "testing" of a piece of hardware to see if it works as the "same thing". Unfortunately for us there is a movement within international standards bodies (dating back centuries) to have us believe that there are really two types of testing: verification and validation.</p> <p>Is your head spinning?</p> <p>Validation is often defined as "checking if you built the <em>right thing</em>". Verification, in just as catchy a way, is defined as "checking if you built the <em>thing right</em>."</p> <p>What is the <em>right thing?</em> Why that is the <em>thing</em> the customer wanted. So I can go with that. Who wants to build stuff the customer doesn't want? (Frequently many companies do this and go out of business. Others build things the customers don't want but convince them that they want it anyway -- that is worth a whole blog!)</p> <p>In the book "Exploring Requirements Quality Before Design" by Gause &amp; Weinberg (ISBN 0-932633-137-7 (C) 1989)  a particularly brilliant comment is expressed in the preface:</p> <blockquote><p>If people don't know what they want, no development process -- no matter how exact, how clever, or how efficient -- will satisfy them. And that's why we do requirements work -- <em>so we don't design systems that people don't want.</em></p></blockquote> <p>Boiled down: The <em>right thing</em> is the requirements!</p> <p>My argument is that requirements exist everywhere in a system, at every level of abstraction and between every component. The customer is not just the entity that "buys" your system but is anybody or anything that express a requirement. You must satisfy the requirement then <em>verify</em> that you did so. The entity responsible for the requirement does not factor into the equation so I believe the distinction between "validating" and "verifying" as used in international standards is just confusing. (I see this all the time in the work I'm doing right now. The documentation is rife with confusion w.r.t. the usage of these very similar "v" words.)</p> <p>Also, the idea of checking if you built (past tense) the right thing seems economically tenuous at best. Why build something then ask if it is the right thing? That seems awfully expensive. So, really what needs to happen is to <em>validate</em> the <em>requirements</em> themselves before the race starts, before the chicken hatches, before the horses get out of the barn, etc., etc., etc.</p> <p>In my dictionary I would define <strong>validation</strong> as the art and science of confirming, checking, testing, and verifying that the <em>requirements</em> are correct. Correct in the sense that you know they properly specify what is <em>needed</em>. If you build the requirements right, the right thing will get built -- not as cute and catchy but a better statement of what needs to be done me thinks!</p> <p>So, I require the phone number of the ISO President, Secretariat General, or head dude so I can let him in on the secret. If you have it drop me a line. Thanks!</p> <p>Copyright (C) 2010 Aspen Logic, Inc. All Rights Reserved.</p> </div></div></div> Fri, 22 Oct 2010 04:22:00 +0000 Tim Davis 24 at https://aspenlogic.com/drupal7 https://aspenlogic.com/drupal7/just-an-opinion/verification-validation#comments FPGA Mezzanine Card (FMC) Standard https://aspenlogic.com/drupal7/just-an-opinion/fpga-mezzanine-card-standard <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p><img alt="" src="/drupal7/sites/default/files/default_images/aspenlogic_red_or_logic_gate_86x72.png" style="float:left; height:72px; margin:10px 10px 10px 10px; width:86px" /></p> <p>You of course know it by ANSI/VITA 57 since you are an engineer. Or maybe you do not get regular updates from the VMEBus International Trade Association and just know that Xilinx and their board makers, like Tokyo Electron Device, use FMC connectors.</p> <p>But what's in it for me?</p> <ul> <li>For starters you get a high performance interconnect standard that supports up to 10 Gb/s transmission with adaptively equalized I/O (think Xilinx RocketIO) and singled ended | differential signaling up to 2 Gb/s.</li> </ul> <ul> <li>Secondly the connector supports a wealth of connections. The standard connector, organized as 40 columns of 10 rows, populates with 400 contacts (HPC - high pin count) or 160 contacts (LPC - low pin count). The standard specifies Samtec brand connectors (or equivalent) with a variety of stacking heights from 10mm down to 8.5mm.</li> </ul> <ul> <li>There are other features of the standard that are interesting: double width modules, conduction cooled thermal interface, ruggedized modules, etc.</li> <li>Fixed supply voltage pins</li> <li>I2C based card identification and geographical card addressing</li> <li>JTAG pins</li> <li>Dual reference voltage supplies for BANK A and BANK B signaling standards.</li> <li>VADJ (adjustable means user selectable) voltage pin, 3P3V and 12P0V and 3P3VAUX supplies</li> <li>Fixed pin assignments for clock distribution (from carrier card to module and from module to carrier card) with defined skew specifications</li> <li>10 pairs (tx + rx) multi-gigabit transceiver pins (40 pins total) plus two gigabit I/O reference clocks (one for each direction -- carrier to module and module to carrier)</li> <li>User defined pins: 34 pairs of differential I/O on LPC bank A, 24 pairs diff I/O on HPC bank A, 22 Pairs diff I/O on HPC bank B.</li> </ul> <p>Wow! So what's in it for me?<br /><br /> Investment preservation - both engineering effort and money. Now, that expensive evaluation board you bought for project X-Factor has usefulness on your next project Y-Phase. Simply remove the mezzanine card (daughter card) and replace it with one useful for project Y-phase.<br /><br /> Board vendors have caught on. For example, inrevium evaluation boards from Tokyo Electron Device, like the <a href="http://www.xilinx.com/products/devkits/TB-6S-CVK.htm" target="_blank" title="TB-6S-150T-IMG baseboard part of the inrevium Consumer Video Kit">TB-6S-150T-IMG</a>, sport multiple HPC and LPC connectors.<br /><br /> Their Consumer Video Kit (CVK) leverages this with mezzanine cards that provide DisplayPort, HDMI, LVDS and V-by-1 interfaces. However, if you bought the card for video algorithm experimentation today, you can use it for audio next week with a different set of mezzanine modules -- from TED or any other vendor.<br /><br /> So, "what's in it for me" is answered simply as flexibility and cost savings. Talk your boss into an FMC solution and your own bottom line will be improved!<br /><br /> Copyright © 2010 Aspen Logic, Inc. All Rights Reserved.</p> </div></div></div> Fri, 05 Mar 2010 09:48:00 +0000 Tim Davis 21 at https://aspenlogic.com/drupal7 https://aspenlogic.com/drupal7/just-an-opinion/fpga-mezzanine-card-standard#comments A Font Of Wisdom For You https://aspenlogic.com/drupal7/just-an-opinion/font-of-wisdom <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p><img alt="" src="/drupal7/sites/default/files/default_images/aspenlogic_red_or_logic_gate_86x72.png" style="float:left; height:72px; margin:10px 10px 10px 10px; width:86px" /></p> <p>If you have a penchant for reading intense journal quality articles at the cutting edge of new research then the <a href="http://arxiv.org/" rel="noopener noreferrer" target="_blank" title="Cornell University Library e-Print archive @ arXiv.org">Cornell University Library e-Print archive @ arXiv.org</a> is for you. From Physics to Biology to Computer Science -- it is all covered.<br /><br /> The computer science section alone has dozens of interesting categories including:</p> <ul> <li><a href="http://arxiv.org/list/cs.LO/recent">Logic in Computer Science</a></li> <li><a href="http://arxiv.org/list/cs.PL/recent">Programming Languages</a></li> <li><a href="http://arxiv.org/list/cs.DC/recent">Distributed, Parallel, and Cluster Computing</a></li> <li><a href="http://arxiv.org/list/cs.NE/recent">Neural and Evolutionary Computing</a></li> </ul> <p>and many more.<br /><br /> I found the article <a href="http://arxiv.org/abs/0911.2034" title="Abstract">arXiv:0911.2034</a> on expressing the behavior of concurrent systems interesting.<br /><br /> Copyright © 2009 Aspen Logic, Inc. All Rights Reserved.</p> </div></div></div> Wed, 18 Nov 2009 08:41:00 +0000 Tim Davis 20 at https://aspenlogic.com/drupal7 https://aspenlogic.com/drupal7/just-an-opinion/font-of-wisdom#comments ASIC Prototyping: Is it design or verification? https://aspenlogic.com/drupal7/just-an-opinion/asic-prototyping <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p><img alt="" src="/drupal7/sites/default/files/default_images/aspenlogic_red_or_logic_gate_86x72.png" style="float:left; height:72px; margin:10px 10px 10px 10px; width:86px" /></p> <p>Why does the ASIC developer need ASIC prototyping? Is it to learn how their existing design will function with a new interface -- say to DDR3 memory? Is it to completely verify their ASIC design prior to tapeout?</p> <p>The wiktionary provides one definition of a prototype: An early <a href="http://en.wiktionary.org/wiki/sample" title="sample">sample</a> or <a href="http://en.wiktionary.org/wiki/model" title="model">model</a> built to test a <a href="http://en.wiktionary.org/wiki/concept" title="concept">concept</a> or <a href="http://en.wiktionary.org/wiki/process" title="process">process</a>.</p> <p>The idea that the prototype is <em>early </em>suggests that ASIC prototyping is part of the design activity when the design space is being explored.</p> <p>Yet, if a prototype is built primarily for testing (verification) then how will you track coverage? I can see the manager, newly trained in understanding the significance of coverage metrics asking, "Did you test everything in the ASIC prototype?" Simulation seems to rule in this area but how long will the simulation take for a big SOC? (My first ASIC prototyping experience was with a wire-wrapped mass of TTL dips on 4 very large prototyping cards soldered together at the edges and held in a very large oak frame. Decidedly unsophisticated versus today's standards but effective.)</p> <p>Considering the complex environment that ASICs operate in perhaps the prototype serves the purpose of an at-speed bus functional model to be used with the surrounding system hardware. For example, such a model could provide meaningful interaction with PCIe driver firmware on the host prior to the availability of the actual device.</p> <p>What ever the underlying goal I'm sure that ASIC prototyping is necessary. It just isn't clear to me how it is defined. I don't know of a formal definition of the term. But when I find it I'll publish it at <a href="http://www.asicprototyping.com/" target="_blank" title="Find your answers at ASICPrototyping.COM">ASICPROTOTYPING.COM</a>.</p> <p>Copyright © 2009 ASPEN LOGIC, INC. ALL RIGHTS RESERVED.</p> </div></div></div> Wed, 11 Nov 2009 04:37:00 +0000 Tim Davis 19 at https://aspenlogic.com/drupal7 https://aspenlogic.com/drupal7/just-an-opinion/asic-prototyping#comments