<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Team ESL Blog</title><link>http://www.cadence.com/Community/search/SearchResults.aspx?&amp;u=50026&amp;un=TeamESL&amp;Scope=Blogs</link><description>Search results by user ID 50026</description><dc:language>en-US</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/cadence/community/blogs/50026" /><feedburner:info uri="cadence/community/blogs/50026" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Search results by user ID 50026</itunes:subtitle><item><title>Creating SystemC TLM-2.0 Peripheral Models</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/50026/~3/nkyxX5HAMf8/creating-systemc-tlm-2-0-peripheral-models.aspx</link><pubDate>Thu, 14 Jul 2011 18:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1286033</guid><dc:creator>TeamESL</dc:creator><description>Over two years ago, I made some &lt;a href="http://www.cadence.com/Community/blogs/sd/archive/2009/02/26/esl-design-systemc-tlm2-ip-authoring-a-practical-experiment.aspx" target="_blank"&gt;experiments and raised some requirements&lt;/a&gt; for an effective Virtual Platform IP authoring tool. Even with the passage of time, some people seem to find it useful as I regularly get questions about it. It is more than time to give you an update, and the good news is that such a tool is now available as part of the new &lt;a href="http://www.cadence.com/products/sd/virtual_system/pages/default.aspx" target="_blank"&gt;Cadence Virtual System Platform (VSP)&lt;/a&gt; product. One of the capabilities provided by the Virtual System Platform is a tool to enable easy authoring of Virtual Platform IP models. &lt;p&gt;&lt;b&gt;Virtual Platform IP Authoring Requirements &lt;/b&gt;&lt;/p&gt;&lt;p&gt;One of the major challenges with peripheral IP authoring is to model and manage registers. Some IP may include tens of thousands of registers and hundreds of thousands of register fields, which can represent 80% to 90% of the model code. In addition, the IP developer may have to create multiple implementations of the model, each at different abstraction levels such as a TLM-2.0 model (LT and AT), a TLM synthesizable model or an RTL model.&lt;/p&gt;&lt;p&gt;All of these representations are likely to share the same set of registers, hence the need to have a unique, golden reference of the model registers from which the implementation models can be derived. For tool and IP interoperability reasons, this golden reference should be compliant to an existing standard. Hence the idea to use the &lt;a href="http://www.accellera.org/activities/ip-xact" target="_blank"&gt;IP-XACT&lt;/a&gt; (&lt;a href="http://standards.ieee.org/findstds/standard/1685-2009.html" target="_blank"&gt;IEEE 1685&lt;/a&gt;) as the golden model to represent registers. For more details on IP-XACT for TLM refer to a &lt;a href="http://www.cadence.com/community/blogs/ii/archive/2011/02/01/webinar-how-ip-xact-standard-supports-tlm-flow.aspx" target="_blank"&gt;recent Industry Insights article&lt;/a&gt; by Richard Goering.&lt;/p&gt;&lt;p&gt;IP-XACT supports all the major requirements for modelling IP register and memory banks. Its XML structure eases the processing of the metadata and the automation of the implementation code at various abstraction levels. SystemC Virtual Platform IP models are just one specific use case of IP-XACT, but it&amp;#39;s interesting to look into the details of the specific requirements for SystemC IP model creation. &lt;/p&gt;&lt;p&gt;TLM-2.0 defines the main infrastructure for IP interoperability, but one thing it lacks is a standard representation of registers. Until a standard register representation becomes available the Virtual System Platform provides a class called sc_register. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Overview of tlmgen&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The Virtual System Platform includes a TLM Generator, called &lt;i&gt;tlmgen&lt;/i&gt;, that saves time and coding effort by automating the generation of SystemC TLM code, mainly for defining and accessing the registers, both from the bus and from the internal behavior of the model. In addition tlmgen provides the following:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Automatic generation of a SystemC testbench (implementing all the appropriate read and write sanity checks for each register) and a simple system connecting the testbench to the SystemC model&lt;/li&gt;&lt;li&gt;Automatic generation of a C testbench (implementing all the appropriate read and write sanity checks for each register) to be executed on a processor running as part of a virtual platform&lt;/li&gt;&lt;li&gt;Automatic generation of a build script to generate a shared library for this IP (to be linked by the platform integrator instantiating this IP)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The &lt;i&gt;tlmgen&lt;/i&gt; solution is fully open. Not only you can get all of the above from an IP-XACT standard description, but the SystemC code that&amp;#39;s generated relies on a SystemC register class delivered as source code to all Virtual System Platform users. It can therefore simulate on the OSCI simulator, but if you use Virtual System Platform to simulate and debug your code, you will be able to visualize the register descriptions and content at runtime.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Hands On&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Let&amp;#39;s put our hands on the keyboard, and check how much code can be automatically generated and check how useful and how easy to update and maintain the code is. For this article, I propose to create a SystemC TLM-2.0 un-timed model for the &lt;a href="http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183g/DDI0183G_uart_pl011_r1p5_trm.pdf" target="_blank"&gt;PL011 UART&lt;/a&gt;, starting from the same ARM specification I used in my previous experiment.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Modelling the Registers&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The first step is to capture the registers. Virtual System Platform offers two options:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A simple Cadence proprietary format named Register Description Format (RDF) &lt;/li&gt;&lt;li&gt;An IP-XACT component XML description&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The Cadence RDF format is a simple ASCII file, with a very simple grammar to describe each register and its fields and to describe a bank of registers with the base address for each.&lt;/p&gt;&lt;p&gt;Below is an example of a register bank for for the UART.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/sd/Jason_Andrews/uart-bank.PNG"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/sd/Jason_Andrews/uart-bank.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Each register in the register bank also has a description. Below shows the description of the UART data register.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/sd/Jason_Andrews/uart-reg.PNG"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/sd/Jason_Andrews/uart-reg.PNG" border="0" height="346" width="580" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;One of the inputs for &lt;i&gt;tlmgen&lt;/i&gt; is the specification of callback hooks in the register input format. These hooks are called PREAMBLE and POSTAMBLE. They indicate to the code generator that the user may want to add a specific functionality before and/or after a register access. For example, when writing to the DR register, the model should also write to TX field of the RIS register. In IP-XACT format the PREAMBLE and POSTAMBLE hooks are defined as register vendor extensions.You can see the example of postamble = RW in the picture above for the UART Data Register. &lt;/p&gt;&lt;p&gt;Below is an IP-XACT representation showing the vspExtensions and the equivalent POSTAMBLE for the UART Data Register.&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/sd/Jason_Andrews/uartDMCCR_ipxact.bmp"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/sd/Jason_Andrews/uartDMCCR_ipxact.bmp" border="0" height="362" width="580" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Another nice feature of &lt;i&gt;tlmgen&lt;/i&gt; is the ability to generate IP-XACT output from an RDF input file, thus letting the user start with a simple text register description format and automate the translation to the verbose IP-XACT XML format. This IP-XACT output can then be used later for platform assembly.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Generating the SystemC TLM model&lt;/b&gt;&lt;/p&gt;&lt;p&gt;This step can be mostly automated by the execution of &lt;i&gt;tlmgen &lt;/i&gt;to take an IP-XACT (or RDF) input and generate the SystemC TLM output. The SystemC code generated includes a SystemC module skeleton that you can modify to add the specific functionality. This skeleton already includes the definition and implementation of registers, target socket, tlm transport methods and registers access functions.&lt;/p&gt;&lt;p&gt;Creating the HW IP is a two-step process:&lt;/p&gt;&lt;p&gt;1)&amp;nbsp; Run the command:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;% tlmgen -name uartPL011 -rdf uart_registers.rdl -simple &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Or for IP-XACT input:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;% tlmgen -name uartPL011 -ipxact uart_registers.xml -simple &lt;/p&gt;&lt;p&gt;This generates about 80% of the code for the UART. It includes the SystemC TLM-2.0 module skeleton for the model of the UART which derives from an automatically generated base class with all the registers defined, the target socket to access them and the implementation of the transport methods to access these registers.&lt;/p&gt;&lt;p&gt;2)&amp;nbsp; Update the generated HW template code to match the UART behavior. &lt;/p&gt;&lt;p&gt;Once the base model is generated it&amp;#39;s up to the model creator to add processes, add extra ports, and add the functionality inside the pre- and post-register access virtual methods. This completes the model functionality.&lt;/p&gt;&lt;p&gt;The advantage of using tlmgen is not only that you save writing code (and writing errors), but also that all the registers can be visualized at runtime.&lt;/p&gt;&lt;p&gt;Below is the register viewer which provides the values at runtime by automatically recognizing the sc_register class. This is very helpful for software engineers who spend much of their time reading, writing, shifting, ANDing, and ORing register bits to make the hardware do what it is supposed to do.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/sd/Jason_Andrews/uart-reg-viewer.PNG"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/sd/Jason_Andrews/uart-reg-viewer.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;ECO Support&lt;/b&gt;&lt;/p&gt;&lt;p&gt;One of the issues with code generation from a golden source is the ability to manage (not lose) user modifications when the golden source needs to be modified. Let&amp;#39;s assume one of the bit fields of the register of our UART IP needs to be modified. How should we propagate this change to the generated code? &lt;i&gt;tlmgen&lt;/i&gt; solves this problem by generating a hierarchy of classes and virtual methods where the user functional code is localized in the top-most inherited class. &lt;/p&gt;&lt;p&gt;Whenever a change occurs in the golden register representation (RDF or IP-XACT), all of the base classes can be re-generated without loosing the user code. Moreover, most if the time, the user code does not need to change or needs very little and localized modification to include the new register change. Such an inheritance hierarchy of classes and virtual methods allow the user functional code to be localized, hence allowing reuse if the user code when the base classes have to be re-generated.&lt;/p&gt;&lt;p&gt;The flexibility of tlmgen also allows the user to choose the type of target interface generated depending on its usage. It could be a TLM-2.0 &lt;i&gt;simple&lt;/i&gt; socket or &lt;i&gt;multi passthrough &lt;/i&gt;socket or it could be a TLM-1.0 &lt;i&gt;sc_export. &lt;/i&gt;In the &lt;i&gt;tlmgen&lt;/i&gt; usage example above, the -simple option specifies a TLM-2.0 simple target socket.&lt;/p&gt;&lt;b&gt;Packaging the Virtual Platform IP Model&lt;/b&gt; &lt;p&gt;Like any other IP, a virtual platform IP needs to be packaged to be delivered to other internal or external groups. Such a package should be self-contained, versioned, and easy to plug into a system and easy to verify. The IP should therefore be delivered as a kit including hardware verification, software verification, APIs, documentation, and scripts. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Next Steps&lt;/b&gt;&lt;/p&gt;&lt;p&gt;You have now an effective, standard, and reusable solution to ease the modeling and validation of TLM-2.0 peripheral IP using tlmgen&lt;i&gt; &lt;/i&gt;from VSP. &lt;/p&gt;&lt;p&gt;Many models created using &lt;i&gt;tlmgen &lt;/i&gt;have been integrated in various Virtual Platforms. It has proven to not only save a lot if development time but it also significantly helps the platform creator and the embedded software developer to debug and fine tune their hardware and software models. It overcomes the blank page syndrome when it&amp;#39;s time to create a new model and provides much of the needed structure and checking to help users learn TLM-2.0 very quickly. The good news is that it doesn&amp;#39;t try to hide the details of TLM-2.0 from the user, but instead generates clean code that users can learn from. &lt;/p&gt;&lt;p&gt;&lt;b&gt;So what else is needed to help the Virtual Platform Model creator&amp;#39;s life?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;More complex register specification should be supported. Some are already supported by IP-XACT, others need extensions to the standard, such as preamble and postamble, conditional registers, dependant registers. These are all being considered as IP-XACT enhancements within Accellera Working Groups. As with any automation there is always more code that can be automatically generated such as multiple target sockets (and multiple memory maps), initiator sockets, and reset or interrupt behaviour by further using the information recorded in IP-XACT.&lt;/p&gt;&lt;p&gt;Jean-Michel&lt;/p&gt;&lt;p&gt;&lt;i&gt;This &lt;b&gt;Team ESL&lt;/b&gt; article is provided by Jean-Michel Fernandez, Archtect for System Solutions. &lt;/i&gt;Jean-Michel has actively contributed to the definition of the TLM and IP-XACT standards.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/50026/~4/nkyxX5HAMf8" height="1" width="1"/&gt;</description><media:content url="http://feedproxy.google.com/~r/cadence/community/blogs/50026/~5/w2wxYSTYz04/DDI0183G_uart_pl011_r1p5_trm.pdf" fileSize="594069" type="application/pdf" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Over two years ago, I made some experiments and raised some requirements for an effective Virtual Platform IP authoring tool. Even with the passage of time, some people seem to find it useful as I regularly get questions about it. It is more than time to </itunes:subtitle><itunes:summary>Over two years ago, I made some experiments and raised some requirements for an effective Virtual Platform IP authoring tool. Even with the passage of time, some people seem to find it useful as I regularly get questions about it. It is more than time to give you an update, and the good news is that such a tool is now available as part of the new Cadence Virtual System Platform (VSP) product. One of the capabilities provided by the Virtual System Platform is a tool to enable easy authoring of Virtual Platform IP models. Virtual Platform IP Authoring Requirements One of the major challenges with peripheral IP authoring is to model and manage registers. Some IP may include tens of thousands of registers and hundreds of thousands of register fields, which can represent 80% to 90% of the model code. In addition, the IP developer may have to create multiple implementations of the model, each at different abstraction levels such as a TLM-2.0 model (LT and AT), a TLM synthesizable model or an RTL model. All of these representations are likely to share the same set of registers, hence the need to have a unique, golden reference of the model registers from which the implementation models can be derived. For tool and IP interoperability reasons, this golden reference should be compliant to an existing standard. Hence the idea to use the IP-XACT (IEEE 1685) as the golden model to represent registers. For more details on IP-XACT for TLM refer to a recent Industry Insights article by Richard Goering. IP-XACT supports all the major requirements for modelling IP register and memory banks. Its XML structure eases the processing of the metadata and the automation of the implementation code at various abstraction levels. SystemC Virtual Platform IP models are just one specific use case of IP-XACT, but it&amp;#39;s interesting to look into the details of the specific requirements for SystemC IP model creation. TLM-2.0 defines the main infrastructure for IP interoperability, but one thing it lacks is a standard representation of registers. Until a standard register representation becomes available the Virtual System Platform provides a class called sc_register. Overview of tlmgen The Virtual System Platform includes a TLM Generator, called tlmgen, that saves time and coding effort by automating the generation of SystemC TLM code, mainly for defining and accessing the registers, both from the bus and from the internal behavior of the model. In addition tlmgen provides the following:Automatic generation of a SystemC testbench (implementing all the appropriate read and write sanity checks for each register) and a simple system connecting the testbench to the SystemC modelAutomatic generation of a C testbench (implementing all the appropriate read and write sanity checks for each register) to be executed on a processor running as part of a virtual platformAutomatic generation of a build script to generate a shared library for this IP (to be linked by the platform integrator instantiating this IP) The tlmgen solution is fully open. Not only you can get all of the above from an IP-XACT standard description, but the SystemC code that&amp;#39;s generated relies on a SystemC register class delivered as source code to all Virtual System Platform users. It can therefore simulate on the OSCI simulator, but if you use Virtual System Platform to simulate and debug your code, you will be able to visualize the register descriptions and content at runtime. Hands On Let&amp;#39;s put our hands on the keyboard, and check how much code can be automatically generated and check how useful and how easy to update and maintain the code is. For this article, I propose to create a SystemC TLM-2.0 un-timed model for the PL011 UART, starting from the same ARM specification I used in my previous experiment. Modelling the Registers The first step is to capture the registers. Virtual System Platform offers two options:A simple Cadence proprietary format named Register Description Format (R</itunes:summary><feedburner:origLink>http://www.cadence.com/Community/blogs/sd/archive/2011/07/14/creating-systemc-tlm-2-0-peripheral-models.aspx</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/cadence/community/blogs/50026/~5/w2wxYSTYz04/DDI0183G_uart_pl011_r1p5_trm.pdf" length="594069" type="application/pdf" /><feedburner:origEnclosureLink>http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183g/DDI0183G_uart_pl011_r1p5_trm.pdf</feedburner:origEnclosureLink></item><item><title>Understanding Latency versus Throughput</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/50026/~3/8d0KB4phwxk/understanding-latency-vs-throughput.aspx</link><pubDate>Mon, 13 Sep 2010 17:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1178667</guid><dc:creator>TeamESL</dc:creator><description>One of the effects of
adopting a High Level Synthesis design methodology is that the barrier between
&amp;quot;Systems designers&amp;quot; and &amp;quot;Hardware designers&amp;quot; is substantially reduced if not
totally eliminated. Suddenly, both &amp;quot;Systems designers&amp;quot; and &amp;quot;Hardware designers&amp;quot;
are using not only the same input language to specify their models (C++ /
System C) but they are also exposed to the same terminology. For this reason,
&amp;quot;Hardware designers&amp;quot; are suddenly exposed to two terms to which they have had
little or no exposure in the past.



&lt;p&gt;The purpose of this
post is to clarify two &amp;quot;systems&amp;quot; terms that are usually confused and sometimes
used interchangeably: latency and throughput.&lt;/p&gt;



&lt;p&gt;&lt;b&gt;Definition of terms&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Let us attempt to
define those two terms:&lt;/p&gt;



&lt;p&gt;&lt;i&gt;Latency&lt;/i&gt; is the time required to perform some action
or to produce some result. Latency is measured in units of time -- hours, minutes,
seconds, nanoseconds or clock periods.&lt;/p&gt;



&lt;p&gt;&lt;i&gt;Throughput&lt;/i&gt; is the number of such actions executed or
results produced per unit of time. This is measured in units of whatever is
being produced (cars, motorcycles, I/O samples, memory words, iterations) per
unit of time. The term &amp;quot;memory bandwidth&amp;quot; is sometimes used to specify the
throughput of memory systems.&lt;/p&gt;



&lt;p&gt;&lt;b&gt;A simple example&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The following manufacturing
example should clarify these two concepts:&lt;/p&gt;



&lt;p&gt;An
assembly line is manufacturing cars. It takes eight
hours to manufacture a car and that the factory produces one hundred and twenty
cars per day.&lt;/p&gt;



&lt;p&gt;The latency is: 8
hours.&lt;/p&gt;

&lt;p&gt;The throughput is:
120 cars / day or 5 cars / hour.&lt;/p&gt;



&lt;p&gt;&lt;b&gt;A design example &lt;/b&gt;&lt;/p&gt;&lt;p&gt;Now that these two
concepts are clear, let us apply these concepts to a problem &amp;quot;closer to home.&amp;quot;&amp;nbsp; &lt;/p&gt;A designer is given the task to create hardware for a communications device that
has the following characteristics:



&lt;blockquote&gt;&lt;p&gt;Clock frequency: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;100MHz&lt;/p&gt;&lt;p&gt;Time available to
perform the computation:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1000ns&lt;/p&gt;&lt;p&gt;Throughput of the
device:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 640 Mbits / second&lt;/p&gt;&lt;p&gt;Word width of each output:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 64 bits&lt;/p&gt;&lt;/blockquote&gt;









&lt;p&gt;Let us translate
these requirements into latency and throughput measurements that are more
meaningful from the point of view of the hardware designer.&lt;/p&gt;



&lt;p&gt;Latency: 1000 ns =
1000 ns * (1 s / 10^9 ns ) * ( 100 * 10^6 clock periods/ 1s) = 10^11/10^9 = 100
clock periods.&lt;/p&gt;



&lt;p&gt;Throughput = 640
Mbits / s = (640 * 10^6 bits/s) * (1 word / 64 bits) * ( 1 s / 100 * 10^6 clock
periods) =&amp;nbsp; 640 * 10^6 / 64 * 100 * 10^6
= 10 * 10 / 100 = 1 / 10 = 0.1 words / clock period.&lt;/p&gt;



&lt;p&gt;The throughput could be
read more conveniently as follows: &amp;quot;one word every 10 clock periods&amp;quot;&lt;/p&gt;



&lt;p&gt;Latency expressed in
clock periods, and throughput expressed in number of available clock cycles
between words, are parameters that a designer can use to create the desired
hardware according to the performance specifications.&lt;/p&gt;



&lt;p&gt;&lt;b&gt;A final
clarification&lt;/b&gt;&lt;/p&gt;



&lt;p&gt;Some tools do not
express the throughput in units per unit of time but in clock periods. This is
incorrect but commonly used because of convenience. Therefore some tools would
report the throughput of our communication algorithm as 10.&lt;/p&gt;

&lt;p&gt;&lt;span id="anormal_12" class="Cadence_CS_BlogDetail_BlogText"&gt;&lt;span id="anormal_12" class="Cadence_CS_BlogDetail_BlogText"&gt;&lt;i&gt;This &lt;b&gt;Team ESL&lt;/b&gt;
posting is provided by Dr. Sergio Ramirez, Sr Staff Product Engineer
for the C-to-Silicon Compiler high level synthesis product. &lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/50026/~4/8d0KB4phwxk" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cadence.com/Community/blogs/sd/archive/2010/09/13/understanding-latency-vs-throughput.aspx</feedburner:origLink></item><item><title>Webinar by XtremeEDA on system realization on September 8th</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/50026/~3/9h8oRjt2bbY/1178373.aspx</link><pubDate>Mon, 06 Sep 2010 05:20:16 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1178373</guid><dc:creator>TeamESL</dc:creator><description>&lt;p&gt;The first webinar in the series of webinars organized by Cadence with the System Realization Alliance partners is by XtremeEDA on September 8th at 10AM&amp;nbsp;Pacific time. To register click &lt;a target="_blank" href="http://www.secure-register.net/cadence.php?product=188" title="here."&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;About the Webinar&lt;/strong&gt;&lt;/p&gt;Designing integrated circuits from RTL brought about a revolution in semiconductor design about 15 years ago. It was much simpler than assembling transistors by hand. The new methodology made it possible to hire people with less transistor/logic experience and qualifications to do the job of designing semiconductors. It also made it possible to use off-the-shelf IPs to reduce development overall effort. EDA companies provided tools that could read and write standardized languages and formats. All this gave a boost to the number of semiconductors available to system integrators and opened up a portal for creative devices.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;However, design sizes have become so large now, that RTL based design approach has become cumbersome and time consuming. The need for increasing processing power and reducing form factor is forcing semiconductor design houses to integrate a lot of IPs in a single device. RTL based approach doesn&amp;#39;t yield itself very well to early architectural analysis for such designs. How do you know you are not over-designing or under-designing your chip? Over-designing would mean more than necessary time and resources required to verify and implement the design. Under-designing would mean lost customer! How do you know that an algorithm should be in software or hardware and what would be the impact of such decisions? &lt;br /&gt;&amp;nbsp;&lt;br /&gt;Cadence&amp;#39;s EDA360 Vision paper discusses the fact that semiconductor design is increasingly a software application driven process. Instead of designing the best possible product that works for everyone, we are increasingly moving to an era where SoCs are being designed to handle particular applications exceptionally well. This will increasingly require a System Realization or Electronic System Level (ESL) platform that allows you to create virtual prototypes of your systems and lets you do hw/sw trade-offs before you commit yourself to the hardware creation writing process, whether using an RTL approach, or more recently emerging high level synthesis.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;XtremeEDA is our System Realization Alliance partner with extensive experience in providing ESL model development and verification services. XtremeEDA will be presenting their experiences with ESL in the first of the series of webinars on System Realization. You will get to hear why ESL has only recently begun to take off and how a good ESL methodology can make adoption of ESL techniques easier. By attending the webinar you will be qualified to win a copy of a book on SystemC and TLM Design and Verification that XtremeEDA is giving out.&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/50026/~4/9h8oRjt2bbY" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cadence.com/Community/forums/p/16719/1178373.aspx#1178373</feedburner:origLink></item><item><title>More Details on Post Silicon Embedded Software Verification With ISX</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/50026/~3/2Ehne7vlCwc/more-details-on-post-silicon-embedded-software-verification-with-isx.aspx</link><pubDate>Tue, 18 Aug 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:20190</guid><dc:creator>TeamESL</dc:creator><description>&lt;p&gt;&lt;i&gt;Please welcome back Joerg Simon and Markus Winterholer, both from the ISX team in&amp;nbsp;Germany, to the TeamESL blog for the next installment on post-silicon embedded software verification with ISX.&lt;/i&gt; &lt;/p&gt;&lt;p&gt;This post is a discussion featuring Markus and Joerg talking to Malte Henzelmann and Ernst Zwingenberger of &lt;a href="http://www.elcamino.de/indexe.html" target="_blank"&gt;El Camino GmbH&lt;/a&gt;. It builds on the&amp;nbsp;introduction that was provided in June titled &lt;a href="http://www.cadence.com/Community/blogs/sd/archive/2009/06/17/metric-driven-verification-with-an-fpga-based-design.aspx" target="_blank"&gt;OVM Metric Driven Verification with an FPGA-based Design&lt;/a&gt;.&lt;/p&gt;

&lt;b&gt;&lt;i&gt;You guys built a cool demo connecting ISX to a FPGA board for post-silicon software verification. Congratulations on getting this set up and working. Why did you want to&amp;nbsp;build a system like this?&lt;/i&gt;&lt;/b&gt; 

&lt;p&gt;In various projects where we were using ISX for HW/SW co-verification it turned out that the coverage driven verification approach is very powerful for SW verification as well. Due to our expertise in both worlds, FPGA and Coverage Driven Verification, we already liked the idea of bringing both worlds together. Finally, a customer request was the impetus to do it. &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;This project sounds like a lot of fun. Tell&amp;nbsp;us something about yourselves and your background. &lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Malte was working as scientific assistant from 2001 to 2006 doing research in the area of formal verification, particularly abstraction techniques.&amp;nbsp; Since 2007 he has been a verification engineer at El Camino doing verification of a display controller and a PCIe to AXI bridge with Specman and Incisive Formal Verifier. He also worked on the test utilization of ISX in combination with a FPGA board. &lt;/p&gt;&lt;p&gt;Ernst is currently head of verification at El Camino. From 2004 to 2006 Ernst was System-On-Chip Verification Engineer responsible for Coverage Driven Verification Methodology and Verification Concepts&amp;nbsp;at Micronas GmbH in Munich. Prior to that, he was a Verification Consulting Engineer at El Camino focused on Coverage Driven Verification and design of reusable Verification Components. &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;You have been&amp;nbsp;working for El Camino as &lt;a href="http://www.cadence.com/Alliances/verificationalliance/pages/default.aspx" target="_blank"&gt;Cadence Verification Alliance&lt;/a&gt;&amp;nbsp;Partner for many years. What are the main areas you are working on? &lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The main areas of focus for El Camino&amp;nbsp;are engineering and verification services around FPGA, ASIC, and Embedded Systems/Software as well as board layout. &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;Tell us more details about the Altera board (CPU types, max. design size) &lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;One of the really cool characteristics of this interface is the fact that it uses the standard JTAG port together with the standard Altera download hardware. This means that virtually every Altera based FPGA board can be used. Also in terms of CPU types there&amp;rsquo;s no real limitation. All that needs to be done is to instantiate a special on-chip dual-port memory function from El Camino. One port is automatically connected to the JTAG interface of the FPGA while the other port has to be connected to the CPU. This can be setup on off-the-shelf FPGA boards but also on application specific platforms. The biggest FPGA that&amp;rsquo;s currently available from Altera is the EP4SGX530, which has 530,000 Logic Elements, plenty of room for complex, embedded systems. &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;What tools did you use in your verification flow? &lt;/i&gt;&lt;/b&gt;&lt;/p&gt;Altera Nios&lt;font size="1"&gt;&amp;reg; &lt;/font&gt;&lt;font size="2"&gt;II Embedded Design Suite (EDS) &lt;/font&gt;&lt;font size="2"&gt;Altera Quartus&lt;/font&gt;&lt;font size="1"&gt;&amp;reg; &lt;/font&gt;&lt;font size="2"&gt;II Design Software &lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;Cadence Incisive Enterprise Specman Elite Testbench with the Enterprise System-Level (ESL) Option &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;&lt;i&gt;What about visibility of the hardware and debug options? &lt;/i&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;Internal hardware nodes are visible through Altera&amp;rsquo;s SignalTap embedded Logic Analyzer. Furthermore there&amp;rsquo;s SignalProbe which allows us to route individual nodes to test pins or the Logic Analyzer Interface, which allows the multiplexing of internal groups of signals to a set of test pins. &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;The software debugging options depend on the CPU used. For example, there&amp;rsquo;s the &amp;mu;Vision Debugger for the ARM Cortex-M1 or the GNU based NIOS II IDE debugger or for the NIOS II CPU. Such debuggers can simultaneously use the very same JTAG Interface and download hardware as ISX in order to control the CPU. &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;&lt;i&gt;What group of users&amp;nbsp;are you targeting for ISX on the Altera FPGA Board? &lt;/i&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;We&amp;rsquo;re targeting engineers verifying a System-on-Chip&amp;nbsp;design or some IP modules integrated as a HW/SW package. Also, embedded&amp;nbsp;software developers could use ISX on an FPGA board to apply coverage driven verification to their software.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;&lt;i&gt;What is the ideal use model for your post silicon verification solution? &lt;/i&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;Nowadays SoCs or IP modules always require a significant amount of software drivers or protocol stacks. We believe that high quality SoC&amp;nbsp;and&amp;nbsp;IP module (HW+SW) packages are perfect candidates. &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;&lt;i&gt;Are you able to reuse the pre-silicon testbench? &lt;/i&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;Yes, the&amp;nbsp;software e Verification Component (eVC) can be used throughout the whole verification flow. Starting with Virtual Platforms, RTL simulation/acceleration and finally on the FPGA board. With ISX you can run your&amp;nbsp;software encapsulated in an eVC on all of these representations of the hardware.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;Thank you for your time and thank you to all the readers out there on cadence.com.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;Jason Andrews&lt;/font&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/50026/~4/2Ehne7vlCwc" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cadence.com/Community/blogs/sd/archive/2009/08/18/more-details-on-post-silicon-embedded-software-verification-with-isx.aspx</feedburner:origLink></item><item><title>A Classification of ESL - High Level Synthesis Tools</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/50026/~3/eGhUpPPYKPw/A-Classification-of-ESL-_2D00_-High-Level-Synthesis-Tools.aspx</link><pubDate>Thu, 06 Aug 2009 17:47:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:19898</guid><dc:creator>TeamESL</dc:creator><description>&lt;p&gt;These days, there is a lot of talk of what the next design methodology for Digital Systems will be and how this methodology will be the replacement of RTL Synthesis. The term ESL (Electronic System Level) is used as a general term for the new wave of  modeling and synthesis for digital systems.
&lt;/p&gt;

&lt;p&gt;
We have noticed that the term ESL is a very different concept for different people. It might mean a modeling approach, a design approach or a combination of both. In this blog we are not attempting to define what ESL is, but we are trying to provide a brief classification of the different types of ESL / High Level Synthesis tools.
&lt;/p&gt;
&lt;p&gt;
Before, we attempt to classify the different types of ESL / High Level Synthesis tools, let us, for the purpose of this blog, define an ESL / High Level Synthesis tool as follows:
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&lt;i&gt;&amp;ldquo;An ESL / High Level Synthesis Tool is a software tool that takes a high level description of a digital system and transforms this description into an RTL (Register Transfer Language) description in a language such as VHDL or Verilog.&amp;rdquo;
&lt;/i&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;
Additionally
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&lt;i&gt;&amp;ldquo;The RTL description synthesized by the ESL / High Level Synthesis tool must be synthesizable into a gate level netlist by an RTL Synthesis tool such as Cadence&amp;rsquo;s RC&amp;rdquo;.
&lt;/i&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;
Currently, there are three kinds of ESL Synthesis tools being marketed as follows:
&lt;/p&gt;
&lt;p&gt;
	The first kind are tools which take a graphical / data-flow description of the system and usually translate this description into &amp;ldquo;structural RTL&amp;rdquo; (a netlist of synthesizable block instances) which have been originally written in a parameterizable way.
&lt;/p&gt;
&lt;p&gt;
	The second kind are tools which take a single threaded computer programming language (usually C or C++ without support for threads) and translate this description into either a single synthesizable RTL block or into a structural pipeline of RTL blocks.
&lt;/p&gt;
&lt;p&gt;
	The thrid kind are tools which take a multi-threaded computer programming language (usually &lt;a href="http://www.systemc.org/home" target="_blank"&gt;SystemC&lt;/a&gt;) and translate this description into a &amp;ldquo;structural RTL&amp;rdquo; description which can be an arbitrary netlist of synchronous state machines.
&lt;/p&gt;
&lt;p&gt;
	Cadence&amp;rsquo;s &lt;a href="https://www.cadence.com:443/products/sd/silicon_compiler/Pages/default.aspx" target="_blank"&gt;C-to-Silicon Compiler&lt;/a&gt; is an example of the third kind of ESL / High Level Synthesis tools. As said before, the basic characteristic of this kind of tools is support of multiple threads in a similar fashion that support for multiple processes (threads) is an inherent characteristic of RTL based synthesis tools and Hardware Description Languages.
&lt;/p&gt;
&lt;p&gt;
	Supporting multiple threads brings the following advantages:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
Support of multiple clock environment in a similar way that RTL synthesis tools support multiple clocks.
&lt;/li&gt;&lt;li&gt;Support of multiple concurrently executing blocks in a similar way that RTL synthesis tools support multiple processes (always blocks in Verilog or Process block in VHDL).
&lt;/li&gt;&lt;li&gt;Support of multiple instances in a similar way that RTL synthesis tools support &amp;ldquo;structural&amp;rdquo; code.
&lt;/li&gt;&lt;li&gt;Support of reactive blocks. This is usually not possible single threaded approaches.
&lt;/li&gt;&lt;li&gt;Support of feedback loops. This is usually not possible, or difficult to implement in single threaded approaches.
&lt;/li&gt;&lt;li&gt;Support of control structures. This is not usually possible in single threaded approaches or in graphics based approaches. 
&lt;/li&gt;&lt;li&gt;Support of non-sample based interfaces. Burst transfers and other type of interfaces usually require the implementation of reactive blocks such as DMAs. This is not possible in single threaded environments.
&lt;/li&gt;&lt;li&gt;Support of Mealy style state machines. Mealy type state machines usually require two threads (one for the combinational logic and one for the registers), therefore they cannot be implemented in a single threaded environment.
&lt;/li&gt;&lt;li&gt;Support of non-blocking constructs. All statements in a single threaded environment are blocking.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;
These advantages are what makes the third kind of ESL / High Level Synthesis tools the only viable alternative to RTL synthesis. Single threaded environments or graphics based data flow entry tools cannot, and probably never will, be able to describe a complete digital system as it is currently done with RTL based tools&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;i&gt;This &lt;b&gt;Team ESL&lt;/b&gt; posting is provided by Dr. Sergio Ramirez, &lt;/i&gt;&lt;i&gt;Core Comp Architect&lt;/i&gt;&lt;i&gt;&lt;/i&gt;&lt;i&gt; for the C-to-Silicon Compiler high level
synthesis product.&lt;/i&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/50026/~4/eGhUpPPYKPw" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cadence.com/Community/blogs/sd/archive/2009/08/06/A-Classification-of-ESL-_2D00_-High-Level-Synthesis-Tools.aspx</feedburner:origLink></item><item><title>Full System vs Sub-system Virtual Prototyping</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/50026/~3/Iu3DZSHM7qk/full-system-vs-sub-system-virtual-prototyping.aspx</link><pubDate>Thu, 06 Aug 2009 17:45:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:19897</guid><dc:creator>TeamESL</dc:creator><description>&lt;p&gt;There is a strong movement in the industry to move to create Virtual Prototypes of systems, prior to RTL coding. These Virtual Prototypes are being used for early software development and architectural analysis. Since there are typically many blocks in a design, the development of a Virtual Prototype can be unwieldy. While you might have a goal of creating one, you may be dazed at the number of components that need to be created or acquired (multiple CPU&amp;#39;s, DSP&amp;#39;s, MPEG engines, multiple memory sub-systems, DMA&amp;#39;s, etc.). Companies are realizing that they can successfully achieve productivity gains y working with sub-systems instead of full systems. After all, this is how many high-level design and verification tasks are done today (ie sub-system simulation on emulators, sub-system c models created for reference models, etc.). But what is the difference between a sub-system and a full system? 
&lt;/p&gt;
&lt;p&gt;
 

A sub-system generally is a well defined entity in your design. There are CPU sub-systems, memory sub-systems, disk sub-systems, etc. This systems are very complex in their own right and usually contain some form of processing unit (CPU, DSP, micro-controller, etc.). Below is a table that suggests some characteristics of a a sub-system vs a full-system:
&lt;/p&gt;
&lt;p&gt;

&lt;a href="http://www.flickr.com/photos/36223644@N04/3798584836/" title="Picture4 by cadencedesign, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3472/3798584836_ba9e1849d1.jpg" alt="Picture4" width="500" height="212" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;

The first advantage to creating a sub-system is that there are a smaller number of blocks to create or acquire. Looking at the table, you can see there are other advantages. Typically minimum performance requirements are lower then a full system. That is because lower level software is being executed, meaning less instructions, allowing reasonable simulation speeds will lower performance. Secondly, you will probably model sub-systems that you are most concerned about, which are the ones that you are creating. Therefore most of the models will be created rather then acquired. If you are using a TLM Driven flow (in which TLM models are the golden source for synthesis), then the TLM  models for the platform need to be created anyway. If you aren&amp;#39;t, then you should look at the productivity that such a flow provides.

&lt;/p&gt;
&lt;p&gt; 

Full system Virtual Platforms provide the ability to exercise complete functionality of a system. Creating one can take time in acquiring models, porting operating systems, developing applications, and making sure simulations speeds are fast enough to be productive. Sub-systems Virtual Platforms require less effort to create (less blocks, reuse TLM Design models), address a smaller problem (sub-system programming or analysis), and are less demanding on performance. 

&lt;/p&gt;
&lt;p&gt; 

Leonard Drucker

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/50026/~4/Iu3DZSHM7qk" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cadence.com/Community/blogs/sd/archive/2009/08/06/full-system-vs-sub-system-virtual-prototyping.aspx</feedburner:origLink></item><item><title>Intel vs ARM - Did the Embedded Systems Conference India Shed Light on the Battle?</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/50026/~3/TITSXr8WVoc/intel-vs-arm-did-the-embedded-systems-conference-india-shed-light-on-the-battle.aspx</link><pubDate>Wed, 05 Aug 2009 16:34:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:19837</guid><dc:creator>TeamESL</dc:creator><description>&lt;p&gt;Being a Brit, Cricket is never very far from my thoughts especially when travelling to India, the biggest cricket mad nation in the world. There is a saying in cricket that you should always think of doing what the opposition would least like, a statement that applies in business too. I was on my way to present a session on Verifying Embedded SW Power Management&amp;rdquo; at the &lt;a href="http://www.esc-india.com/" target="_blank"&gt;Embedded System Conference in Bangalore&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt; 
With the recent activity by &lt;a href="http://www.intel.com/pressroom/archive/releases/20090302corp_a.htm" target="_blank"&gt;Intel firstly joining forces with TSMC&lt;/a&gt; to deliver licensed Atom IP and also &lt;a href="http://www.intel.com/pressroom/archive/releases/20090604corp.htm" target="_blank"&gt;acquiring WindRiver&lt;/a&gt;, I was interested to see if there was further evidence of Intels mooted ambition to go head to head with ARM on deeply embedded systems at the conference. The Atom was well represented on the Microsoft Stand with local firm iWave displaying for the first time in public a fully integrated battery powered in-car Windows system running on Atom at 1.1/1.6GHz. Whilst this is an exciting step forward in terms of the physical profile of Atom systems the power consumption still pitches it someway above the top-end ARM Cortex A9. 
&lt;/p&gt;
&lt;p&gt;  
I then headed into the Intel presentation itself and while mention was made of Atom there was a definite emphasis on the higher-end processors and especially the Virtualization technologies being incorporated to the server line. So is the predicted war between Intel and ARM a journalists wish to whip up a media storm or are the battlelines being drawn behind closed doors as Intel prepares an orchestrated attack? 
&lt;/p&gt;
&lt;p&gt;  
As an outsider it would appear there are at least two barriers for Intel, the first is power consumption, no doubt technology shrinks will progressively improve this, however the Atom is unlikely to challenge for very low power designs. Secondly, there is a lack of a lower-end family to bootstrap embedded customers. Whilst ARM is winning customers on it&amp;rsquo;s Application Processor offerings, most SoCs have multiple processors of varying degrees of complexity; this is ARMs stronghold. Most deeply embedded products are evolutions of previous designs and integrations of sub-systems. For most customers their previous product offerings used a lower end ARM7 or ARM9 processor they can easily migrate or even incorporate an entire system as a sub-system inside a much bigger SoC. 
&lt;/p&gt;
&lt;p&gt;  
I was pondering Intel&amp;rsquo;s lack of low power, lower-end licenseable processor IP last week when I returned from India only to hear the news that ARC is in discussions with a takeover candidate. 
&lt;/p&gt;
&lt;p&gt;  
Could this be Intel bowling ARM a googly (curve-ball for all those who&amp;rsquo;d rather a baseball metaphor) ?
&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;  
 
&lt;i&gt;This TeamESL blog was provided by Nick Heaton, a Senior Solution Architect within the Cadence Front-End R&amp;amp;D organization, with specific responsibility for the Incisive Verification Kit. Nick is an industry veteran based in the UK with more than 25 years of SoC design and verification experience.

&lt;/i&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/50026/~4/TITSXr8WVoc" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cadence.com/Community/blogs/sd/archive/2009/08/05/intel-vs-arm-did-the-embedded-systems-conference-india-shed-light-on-the-battle.aspx</feedburner:origLink></item><item><title>Customer Questions About TLM-driven Design and Verification</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/50026/~3/cgHzvmH09fY/customer-questions-about-tlm-driven-design-and-verification.aspx</link><pubDate>Mon, 27 Jul 2009 14:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:19576</guid><dc:creator>TeamESL</dc:creator><description>&lt;p&gt;
In the latest blog published by &lt;a href="http://www.edn.com/blog/1690000169/post/1270046727.html" target="_blank"&gt;Ron Wilson&lt;/a&gt; there were two &lt;a href="http://www.edn.com/blog/1690000169/post/1270046727.html#comments" target="_blank"&gt;questions&lt;/a&gt; about our &lt;a href="http://www.cadence.com/Community/blogs/sd/archive/2009/07/15/tlm-driven-design-and-verification-solution.aspx?postID=19138" target="_blank"&gt;TLM-driven design and verification solution&lt;/a&gt; introduction. We would like to respond to these comments here: 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;1.      &amp;quot;&lt;i&gt;one line of SystemC generates three lines of RTL&lt;/i&gt;&amp;quot;
&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
During our interview with Ron, we showed an example of one of our customers who wrote in parallel SystemC and RTL code. In this case the number of RTL code lines was 3X of the number of &lt;a href="http://www.systemc.org/home" target="_blank"&gt;SystemC&lt;/a&gt; code lines and was based on control-centric design.  Many customers report a much higher ratio. The SystemC source will mostly be untimed and not detail many of the low-level RTL requirements such as resource sharing and specific state machine. As such, it could be as small as 1/10th the size of the equivalent hand-written RTL (in the extreme cases, even smaller) for datapath-centric designs and 1/4th the size for control-centric designs.  Abstracting away signals to use a TLM interface will also increase these ratios. 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;2.     &amp;quot;&lt;i&gt;Is the RTL OVM SystemVerilog or Verilog. Do we get to choose?&lt;/i&gt;&amp;quot; 
&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
It&amp;#39;s not 100% clear whether you are asking &amp;quot;What language is the DUT that&amp;#39;s output by C-to-Silicon?&amp;quot;; or based on your mention of &lt;a href="http://www.cadence.com/products/fv/Pages/ovm_flow.aspx" target="_blank"&gt;OVM&lt;/a&gt;, whether you are asking about how testbenches relate to the code output by &lt;a href="http://www.cadence.com/products/sd/silicon_compiler/Pages/default.aspx" target="_blank"&gt;C-to-Silicon&lt;/a&gt;.  Thus, allow us to provide answers from both a DUT and testbench angle -- let us know if we address your original question.   First, from a DUT angle, The primary output of C-to-Silicon is IEEE-compliant synthesizable RTL Verilog. [Note the question is asking if this RTL is Verilog-95 or SystemVerilog --the answer is that it is v2k Verilog since it has to work on all downstream tools]. C-to-Silicon also can automatically wrap that RTL so it can be easily plugged-and-played into the higher-level design and/or testbench.  W.r.t. to the testbench aspect of C-to-Silicon output: the architecture of OVM verification components is replicated across e, SV, and SystemC.  Additionally, Cadence&amp;#39;s IES-XL simulator supports e, SV, and SystemC -- and hence OVM -- so the choice of testbench for your C-to-Silicon created DUT is really up to you.  
&lt;/p&gt;
&lt;p&gt;
Team ESL
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/50026/~4/cgHzvmH09fY" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cadence.com/Community/blogs/sd/archive/2009/07/27/customer-questions-about-tlm-driven-design-and-verification.aspx</feedburner:origLink></item><item><title>OVM Metric Driven Verification With an FPGA-based Design</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/50026/~3/Lei44miE3a4/metric-driven-verification-with-an-fpga-based-design.aspx</link><pubDate>Wed, 17 Jun 2009 19:30:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18532</guid><dc:creator>TeamESL</dc:creator><description>&lt;p&gt;
During the last 2 years I have enjoyed the opportunity to work with the &lt;a href="http://www.cadence.com/products/sd/isx/Pages/default.aspx" target="_blank"&gt;Incisive Software Extensions&lt;/a&gt; (ISX) with many customers. I learned a lot about software/hardware co-verification and we reached the point were we started to see beyond one&amp;rsquo;s own nose.
&lt;/p&gt;
&lt;p&gt; 
One of the substantial concepts of ISX is the generic software adapter. The accentuation here is the attribute &amp;#39;generic&amp;#39;. The generic approach guaranties the freedom to connect almost everything that somehow drives embedded software. From this point of view it&amp;#39;s very easy to build up a library of supported devices and reuse proven and customized adapters out of the box for convenience.
&lt;/p&gt;
&lt;p&gt;  
Is the generic concept a really proven one, mature enough to document a step by step approach? What are potential areas of using the ISX technology with the metric driven verification methodology apart from the simulation based mainstream?
&lt;/p&gt;
&lt;p&gt;  
The ISX installation explains, with the help of examples, the connection to the OpenRisc processor ork1 (&lt;a href="http://www.opencores.org/openrisc/" target="_blank"&gt;http://www.opencores.org/openrisc&lt;/a&gt;) driven in a simulation environment, and the integration of Palladium and Xtreme boxes. There is an open question remaining: what is the effort and benefit to connect it to an arbitrary FPGA prototype board? This question comes up during our engagements with customers, and we looked for a chance to find a practical answer to it instead of the theoretical explanations we used so far.
&lt;/p&gt;
&lt;p&gt;  
In 2008 we embarked upon an ISX activity together with ElCamino (&lt;a href="http://www.elcamino.de" target="_blank"&gt;http://www.elcamino.de&lt;/a&gt;), a consulting company and partner of Cadence for many years. During our discussions we selected a ElCaminos FPGA training board and integrated it into a metric driven verification environment using ISX. The hardware was a low-cost, low-power Cyclone III FPGA from Altera combined with a LCD color touch panel for visualization driven by Specman testbench. The result was a small eyecatcher we &lt;a href="http://www.cadence.com/Community/blogs/sd/archive/2009/05/18/esl-verification-news-from-cdnlive-emea.aspx?postID=17683" target="_blank"&gt;introduced first time on CDNlive! in Munich&lt;/a&gt; this year. 
&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt; 

&lt;a href="http://www.flickr.com/photos/35555661@N08/3636273606/" title="altera_fpga_demo by teamcdnsesl, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3640/3636273606_e7045cb9ae.jpg" alt="altera_fpga_demo" height="375" width="500" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;i&gt;Figure 1 - Altera FPGA Board &lt;/i&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt; 
The demo vehicle proves that the generic adapter concept provides significant flexibility, and is a solid base to extend ISX into embedded software verification strategy.The integration effort for the selected board was not higher than the standard ISX simulation based project and no additional functionality needed to be added to the ISX tool itself to make this happen. The benefit of such an integration is the post silicon verification with existing fundamental verification methodology and the expected high reuse factor of any existing metric driven verification environment (MDV).
 &lt;/p&gt;
&lt;p&gt; 
And finally the generic FPGA board support of ISX enables the introduction of MDV to the software verification world, which is revolutionary thinking from the software testing perspective.
&lt;/p&gt;
&lt;p&gt;  
More background information about this engagement will be provided in an upcoming blog interview with the ElCamino engineers, Ernst Zwingenberge and Malte Henzelmann, who supervised both the project at ElCamino.
&lt;/p&gt;
&lt;p&gt; 

&lt;i&gt;This TeamESL posting was provided by Joerg Simon who is a CoreComp Verification Engineer at Cadence Design Systems where he is responsible for ESL product deployment, including hardware/software co-verifciation products and TLM methodology.
&lt;/i&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/50026/~4/Lei44miE3a4" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cadence.com/Community/blogs/sd/archive/2009/06/17/metric-driven-verification-with-an-fpga-based-design.aspx</feedburner:origLink></item><item><title>Way Worse Than The Real Thing</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/50026/~3/Z45_cmxN9dQ/way-worse-than-the-real-thing.aspx</link><pubDate>Tue, 19 May 2009 04:05:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:17475</guid><dc:creator>TeamESL</dc:creator><description>&lt;p&gt;
This week Cadence and &lt;a href="http://www.virtutech.com/" target="_blank"&gt;Virtutech&lt;/a&gt; announced a collaborative effort to bring together the &lt;a href="http://www.virtutech.com/getting_started/learn.html" target="_blank"&gt;Virtutech Simics&lt;/a&gt; virtual platform with the Cadence &lt;a href="http://www.cadence.com/products/sd/isx/pages/default.aspx" target="_blank"&gt;ISX&lt;/a&gt; software testing system.  This is a very interesting combination of technologies, clearly demonstrating how virtual platforms make it possible to test software in ways that are plain impossible on physical hardware. With a virtual platform, it is possible to systematically subject a system software stack to extreme (and normal) working conditions, trying to provoke errors and find conditions where the software breaks.
&lt;/p&gt;
&lt;p&gt;
We are not just doing regular automated software testing as you would do any host, but also changing parameters for the hardware on which the software runs. In this particular example we are showing at &lt;a href="http://www.cadence.com/cdnlive/eu/2009/pages/default.aspx" target="_blank"&gt;CDNLive! EMEA&lt;/a&gt;, we have a time-to-result latency parameter that determines the time it takes for the hardware to issue an interrupt to the software.  The software behaviors demonstrated with latencies at 1 ns and 1 s are quite different... in the fast case, the driver software needs to ensure it can handle an interrupt immediately after starting an operation. In the slow case, the driver has to put the calling process to sleep and wake it up later so that the rest of the system can go on working while we wait for the hardware unit to complete.  Try doing that on hardware...
&lt;/p&gt;
&lt;p&gt; 
Some other obvious examples of how hardware can be controlled to stress software is to vary the number of processors, the speed of the processors, or the size of memory in a system.  Isn&amp;#39;t it interesting to find out what REALLY happens if you have 2^64 bytes of physical RAM? Will the OS suffer an integer overflow and report -2^63 bytes? Or if all processors run at different clock frequencies?  It tends to reveal all kinds of bad assumptions in code.  If you add in the ability to inject known bad results from hardware, or turning off units to simulate local hardware failures, you have a very powerful tool to exercise software correctness and robustness.  Putting a space-bound computer board in a radiation chamber to check robustness for transient errors is not quite as easy as injecting a sprinkle of memory errors in a simulation. 
&lt;/p&gt;
&lt;p&gt; 
Thinking about it... this is how hardware testing has always been done: create controlled experiments, often looking for corner cases.  For software, that has not really been possible since the execution hardware was always fundamentally uncontrollable.  But with a virtual platform, suddently the hardware becomes controllable. And the possibilities become boundless.
The Cadence ISX integration with Virtutech Simics is just a first step, and we have only scratched the surface of a very exiting topic.  The software that was used to have a nice and cushy environment to run needs to wake up and realize that it will be subject to something worse, way worse, than the real thing.
&lt;/p&gt;
&lt;p&gt; 
&lt;i&gt;This &lt;b&gt;Team ESL&lt;/b&gt; posting is provided by &lt;a href="http://jakob.engbloms.se/" target="_blank"&gt;Dr. Jakob Engblom&lt;/a&gt;, Technical Marketing Manager for Virtutech. He holds an MSc in Computer Science and a PhD in Computer Systems from Uppsala University. He has been with Virtutech since 2002, and has worked with embedded software, real-time programming, and computer systems simulation for the past decade.


&lt;/i&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/50026/~4/Z45_cmxN9dQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cadence.com/Community/blogs/sd/archive/2009/05/18/way-worse-than-the-real-thing.aspx</feedburner:origLink></item><media:rating>nonadult</media:rating></channel></rss>
