<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>XJTAG Blog &#187; Bob Storey</title>
	<atom:link href="http://blog.xjtag.com/author/bob/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xjtag.com</link>
	<description>XJTAG boundary scan solutions for the whole product lifecycle</description>
	<lastBuildDate>Mon, 09 Jan 2012 08:00:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>XJTAG version 2.6</title>
		<link>http://blog.xjtag.com/2011/11/xjtag-version-2-6/</link>
		<comments>http://blog.xjtag.com/2011/11/xjtag-version-2-6/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 08:00:13 +0000</pubDate>
		<dc:creator>Bob Storey</dc:creator>
				<category><![CDATA[Releases]]></category>
		<category><![CDATA[Support]]></category>

		<guid isPermaLink="false">http://blog.xjtag.com/?p=817</guid>
		<description><![CDATA[A new major version of XJTAG &#8211; version 2.6 &#8211; is now available from our website for users who are in maintenance. Main features Device library/auto-categorisation XJTAG 2.6 brings an update to the way devices are categorised in XJDeveloper. XJDeveloper can now use its installed library of devices to make suggestions for how to categorise [...]]]></description>
			<content:encoded><![CDATA[<p>A new major version of XJTAG &#8211; version 2.6 &#8211;  is now available from our website for users who are in maintenance.<span id="more-817"></span></p>
<h2>Main features</h2>
<h3>Device library/auto-categorisation</h3>
<p>XJTAG 2.6 brings an update to the way devices are categorised in XJDeveloper.  XJDeveloper can now use its installed library of devices to make suggestions for how to categorise devices. This uses information from the BOM and other information to make the suggestions. The user can then accept some or all of the suggestions.</p>
<p>Updates to the device library will be made available and automatically detected through XJDeveloper so long as the software remains in maintenance. It requires your customer support login to the XJTAG website &#8211; if you do not have one or have lost it please contact <a title="XJTAG Support" href="http://http://www.xjtag.com/contact-support-form.php" target="_blank">XJTAG Support</a>. Likewise if you feel we are lacking support for particular devices in the library, please let us know.</p>
<h3>New XJRunner Integration API</h3>
<p>XJTAG version 2.6 has a new integration interface using  .NET,  and reworked LabVIEW VIs, which make it easier to integrate XJTAG  into other test solutions or into your own programs. These new interfaces also make it possible to use formatted XJEase text output and to access the Layout Viewer.</p>
<h3>XJDeveloper enhancements</h3>
<p>In particular the Netlist Explorer has been enhanced. The window is now non-modal, which is to say that it can now be left open whilst other operations are performed, and other enhancements have been made to improve usability.</p>
<h3>Chain Debugger</h3>
<p>The output formatting has been improved and a debug option has been added to allow you to view the raw data returned from the JTAG chain.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xjtag.com/2011/11/xjtag-version-2-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Safe bitstream</title>
		<link>http://blog.xjtag.com/2011/07/the-safe-bitstream/</link>
		<comments>http://blog.xjtag.com/2011/07/the-safe-bitstream/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 07:00:57 +0000</pubDate>
		<dc:creator>Bob Storey</dc:creator>
				<category><![CDATA[XJEase]]></category>

		<guid isPermaLink="false">http://blog.xjtag.com/?p=740</guid>
		<description><![CDATA[The Safe bitstream gets mentioned occasionally in our documentation and warning/error messages and this blog post attempts to shed some light on what it is and what it&#8217;s used for. What is the Safe bitstream? The Safe bitstream is the default binary data that is shifted into the JTAG devices. The aim of the safe [...]]]></description>
			<content:encoded><![CDATA[<p>The Safe bitstream gets mentioned occasionally in our documentation and warning/error messages and this blog post attempts to shed some light on what it is and what it&#8217;s used for.<span id="more-740"></span></p>
<h3>What is the Safe bitstream?</h3>
<p>The Safe bitstream is the default binary data that is shifted into the JTAG devices.  The aim of the safe bitstream is to disable as much of the board as possible. This means that in general, logic devices that have a chip enable pin will be disabled, and pins on the JTAG devices will be setup as input pins wherever possible.</p>
<h3>How is it generated?</h3>
<p>The Safe bitstream is generated automatically by XJEase, and derives first of all from the BSDL files in the project.  Part of the description of the boundary scan register includes the values needed to disable pins, and what the resulting disabled value will be, so the starting point for the Safe bitstream is one which disables all possible outputs. This starting point is then modified to take account of any constant pins or disable values where signals need to be driven in order to keep other parts of the circuit disabled. For example, the nOE pin on a RAM device would be set to be driven high (by the disable values in the device busses) to stop the data bus becoming active.</p>
<p>In addition to this, XJTAG&#8217;s safe bitstream will drive pins which need to be driven in order to prevent logic devices outputting, e.g the enable pin on a buffer chip.</p>
<h3>When is it used?</h3>
<p>The Safe bitstream is automatically applied on two occasions:</p>
<ol>
<li>Before the first test that accesses the boundary scan registers.</li>
<li>At both the beginning and end of the Connection Test.</li>
</ol>
<p>The user can also cause the Safe bitstream to be applied at any time during device testing by using the in-built <span style="color: #0000ff;">SAFE</span> statement.</p>
<address><strong>Note:</strong> If you have a standard setup where Checkchain is the  first function in your test list this would mean that the Safe bitstream would be applied after Checkchain and before the next function,  because the Checkchain function does not use the boundary scan  registers.</address>
<h3>Warnings and Errors</h3>
<p>The most common problem to see relating to the Safe bitstream is a Warning that two conflicting disable values have been set on the same net.  In this case XJEase will pick one of the two values.  The warning message states which value has been chosen.  As with all warnings the project can be run with the warning present but it is best practice to resolve these Safe bitstream conflicts so that the disable values for a net are uniform. It is not safe to rely on the same value always being chosen &#8211; updates to XJTAG or modifications to the project may cause it to change.</p>
<p>Calculating the Safe bitstream can also cause an error when you try to run the project (typically at the start, when the safe bitstream is calculated) and testing will stop at this point. The most common cause for the errors is a mistake when defining logic devices in the circuit, causing XJTAG to default the net to a value which is unreachable.  If this happens then the error message will list the pins involved in the error and the values they are being set to, so that you can track down the source of the error.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xjtag.com/2011/07/the-safe-bitstream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programming the TI MSP430 Microcontroller</title>
		<link>http://blog.xjtag.com/2011/07/programming-the-ti-msp430-microcontroller/</link>
		<comments>http://blog.xjtag.com/2011/07/programming-the-ti-msp430-microcontroller/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 07:00:18 +0000</pubDate>
		<dc:creator>Bob Storey</dc:creator>
				<category><![CDATA[Electronics Tips]]></category>
		<category><![CDATA[Support]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.xjtag.com/?p=774</guid>
		<description><![CDATA[Although it has a JTAG port, the TI MSP430 microcontroller is not a boundary scan capable device. Instead of the standard boundary scan registers there is a set of registers that allow the various functions of the device to be accessed and configured. To program the device the TAP controller is used to interact with [...]]]></description>
			<content:encoded><![CDATA[<p>Although it has a JTAG port, the TI MSP430 microcontroller is not a boundary scan capable device. Instead of the standard boundary scan registers there is a set of registers that allow the various functions of the device to be accessed and configured.<span id="more-774"></span> To program the device the TAP controller is used to interact with the flash controller registers.  The RAW JTAG commands in XJEase can be use to access these registers and allow the device to be programmed.</p>
<p>The process of programming the internal flash memory uses the IR path of the JTAG state machine to select or address specific registers in the flash controller and then uses the DR path to read or write the selected register.</p>
<p>The programming algorithm for a MSP430 does have one extra complication.  It uses the TDI pin to perform two different functions depending on which state the TAP controller state machine is in.</p>
<p>In all but the Run Test Idle state the TDI pin performs its normal function, allowing 1s and 0s to be shifted into the DR and IR registers, but in the Run Test Idle state the TDI input  becomes the TCLK input.  The TCLK input is used to clock the internal flash controller, causing data to be written to memory, and should not be confused with the standard TCK input used to clock the JTAG state machine.</p>
<p>The TCLK input has another restriction in that it has to be clocked at 350 kHz.  This can be achieved by setting the JTAG system&#8217;s TCK frequency to 700 kHz. Any pin on the XJLink can only be changed once per TCK period so this results in a 350 kHz TCLK signal.</p>
<p>If you are interested in using the MSP430 code we have developed, please, contact <a href="mailto:support@xjtag.com">support@xjtag.com</a> for more information.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xjtag.com/2011/07/programming-the-ti-msp430-microcontroller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XJTAG version 2.5</title>
		<link>http://blog.xjtag.com/2011/04/xjtag-version-2-5/</link>
		<comments>http://blog.xjtag.com/2011/04/xjtag-version-2-5/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 07:00:19 +0000</pubDate>
		<dc:creator>Bob Storey</dc:creator>
				<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://blog.xjtag.com/?p=748</guid>
		<description><![CDATA[The latest version of XJTAG, version 2.5, is now available to customers who are in maintenance. Main features Layout Viewer New in version 2.5 is our Layout Viewer tool. Instead of providing a simple text netlist, you can use an ODB++ job exported from a CAD tool; this contains both netlist and layout information.  If [...]]]></description>
			<content:encoded><![CDATA[<p>The latest version of XJTAG, version 2.5, is now available to customers who are in maintenance.<span id="more-748"></span></p>
<h2>Main features</h2>
<h3>Layout Viewer</h3>
<p>New in version 2.5 is our Layout Viewer tool. Instead of providing a simple text netlist, you can use an ODB++ job exported from a CAD tool; this contains both netlist and layout information.  If you&#8217;re using an ODB++ job, then wherever XJDeveloper has the option to use its Netlist Explorer you can now also choose to view the layout graphically. You can also superimpose that layout view on a photo of the relevant side of the board if you wish to.</p>
<p>XJRunner users are not left out &#8211; when you pack a project which has layout information in it, you can choose to include an embedded version of the Layout Viewer, so that the user running tests can click on Connection Test errors and be shown the exact locations of faults.</p>
<h3>Categorising Devices</h3>
<p>XJTAG no longer requires all JTAG-accessible devices to be categorised before you can start running tests. This change in behaviour means you can dive much quicker into board bring-up. Don&#8217;t forget to finish the board setup properly later though &#8211; as obviously until you do you don&#8217;t get full test coverage.</p>
<h3>Test Summary</h3>
<p>XJRunner now includes a brief summary of the test results at the end of testing in an easy-to-read table. It&#8217;s a small feature but we&#8217;re getting lots of positive comments about it!</p>
<h3>Usability Enhancements</h3>
<p>We&#8217;re constantly listening to our customers about their experiences using XJTAG. Based on this feedback we fixed a long list of requested usability issues and minor enhancements. As always, we welcome your feedback on using XJTAG. Please feel free to <a href="mailto:support@xjtag.com">contact us</a> to let us know where you feel we could improve the tools.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xjtag.com/2011/04/xjtag-version-2-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Categorising devices in XJDeveloper &#8211; 10 rules of thumb</title>
		<link>http://blog.xjtag.com/2010/10/categorising-devices-in-xjdeveloper-10-rules-of-thumb/</link>
		<comments>http://blog.xjtag.com/2010/10/categorising-devices-in-xjdeveloper-10-rules-of-thumb/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 07:00:35 +0000</pubDate>
		<dc:creator>Bob Storey</dc:creator>
				<category><![CDATA[Support]]></category>
		<category><![CDATA[XJDeveloper]]></category>

		<guid isPermaLink="false">http://blog.xjtag.com/?p=593</guid>
		<description><![CDATA[We asked one of the guys in-house who works with XJDeveloper most of the time to give some tips from his experience of setting up projects, and here is what he came up with: (These tips assume the JTAG chain is already configured) Start from the bottom of the Unassigned Devices list, i.e. with the [...]]]></description>
			<content:encoded><![CDATA[<p>We asked one of the guys in-house who works with XJDeveloper most of the time to give some tips from his experience of setting up projects, and here is what he came up with:<span id="more-593"></span></p>
<p>(These tips assume the JTAG chain is already configured)</p>
<ol>
<li>Start from the bottom of the Unassigned Devices list, i.e. with the series resistors, and work your way up.</li>
<li>As components are categorised and more are discovered go back to the bottom and work your way up again.</li>
<li>Once you have classified the first batch of series resistors it is worth checking any new Suggested Series Resistors that appear immediately.  It is unusual to have multiple series resistors on the same net.  If you get lots of new series resistors for classification is it likely that a power net has not been correctly categorised.</li>
<li>Classify all Suggested Resistor Packs as pull resistor packs and then use the errors to identify which ones should really be classified as series resistor packs.</li>
<li>In general capacitors go in the ignore list.  The only time they do not is if they happen to be on a net between two 1149.6 devices.</li>
<li>Unused connectors and headers go in the ignore list.</li>
<li>When classifying a Suggested Device use the Explorer to check there is enough access to a device to test it before spending the time locating the right XJEase script.</li>
<li>Test points go in the Unfitted category.  This stops them having an effect on the DFT coverage report.  Uncheck &#8220;Only Show Accessible Devices&#8221; to make sure they are all found.</li>
<li>Classify any fuses, ferrite bead, or inductors with a PDD file so that all the power nets on the board are correctly identified.  Again, uncheck &#8220;Only Show Accessible Devices&#8221; to make sure they are all found.</li>
<li>Make sure you read any BSDL file warnings (before you disable warnings on those devices). Reading them is likely to explain why the JTAG chain didn&#8217;t run the first time you tried it&#8230;</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.xjtag.com/2010/10/categorising-devices-in-xjdeveloper-10-rules-of-thumb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using CONNECT vs PULL in PDD files</title>
		<link>http://blog.xjtag.com/2010/09/using-connect-vs-pull-in-pdd-files/</link>
		<comments>http://blog.xjtag.com/2010/09/using-connect-vs-pull-in-pdd-files/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 07:00:06 +0000</pubDate>
		<dc:creator>Bob Storey</dc:creator>
				<category><![CDATA[XJDeveloper]]></category>
		<category><![CDATA[Connection Test]]></category>
		<category><![CDATA[XJEase]]></category>

		<guid isPermaLink="false">http://blog.xjtag.com/?p=612</guid>
		<description><![CDATA[Why use CONNECT not PULL for low-value pull resistors? When a resistor is specified as a pull resistor the XJTAG system will expect two things: First, it will expect one end of the resistor to be attached to a net that has been classified as a Power or Ground net. Second, during the Connection Test [...]]]></description>
			<content:encoded><![CDATA[<p>Why use CONNECT not PULL for low-value pull resistors? When a resistor is specified as a pull resistor the XJTAG system will expect two things:<span id="more-612"></span></p>
<p>First, it will expect one end of the resistor to be attached to a net that has been classified as a Power or Ground net.</p>
<p>Second, during the Connection Test it will expect to be able to drive the non-power/ground side of the resistor to the opposing value.  So, if it is a pull-down resistor the connection test will check that it can drive the non-power side of the resistor high.</p>
<p>If you have a strong pull resistor, say 50 Ω, then it is not unusual that the JTAG device will be unable to supply enough current to oppose the pull resistor.  In these cases where it is not intended for the pull of the resistor to be opposed, e.g. configuration strapping resistors, the resistor should be classified as a series resistor.  The non-power net will still be covered by the connection test but instead of driving the net it will be checked that at no point does the net take the opposite value to its pulled value.</p>
<p>If a BOM is imported as part of the setup or if the net list contains the resistor values, e.g. the net list is in the RINF format, then the XJTAG system will not suggest low ohmic value resistors as pull resistors but instead will put them in the &#8220;Other Resistors&#8221; category so the user can assign them appropriately.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xjtag.com/2010/09/using-connect-vs-pull-in-pdd-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XJTAG Boundary Scan Testing with OMAP 35xx devices</title>
		<link>http://blog.xjtag.com/2010/09/xjtag-boundary-scan-testing-with-omap-35xx-devices/</link>
		<comments>http://blog.xjtag.com/2010/09/xjtag-boundary-scan-testing-with-omap-35xx-devices/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 07:00:44 +0000</pubDate>
		<dc:creator>Bob Storey</dc:creator>
				<category><![CDATA[Board Design]]></category>
		<category><![CDATA[Electronics Tips]]></category>
		<category><![CDATA[Support]]></category>

		<guid isPermaLink="false">http://blog.xjtag.com/?p=608</guid>
		<description><![CDATA[Texas Instruments&#8217; OMAP processors are becoming more and more popular.  We have seen quite a few come through the office recently. The good news is that the OMAP processors do support boundary scan testing. The bad news is that it does not work straight out of the tin. TI do provide the instructions that are [...]]]></description>
			<content:encoded><![CDATA[<p>Texas Instruments&#8217; OMAP processors are becoming more and more popular.  We have seen quite a few come through the office recently.</p>
<p>The good news is that the OMAP processors do support boundary scan testing.<span id="more-608"></span> The bad news is that it does not work straight out of the tin.</p>
<p>TI do provide the instructions that are required to enable the boundary scan registers:</p>
<p><a href="http://e2e.ti.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.10.29.73/OMAP343_5F00_BSDL.pdf">http://e2e.ti.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.10.29.73/OMAP343_5F00_BSDL.pdf</a></p>
<p><a href="http://processors.wiki.ti.com/index.php/Boundary_Scan_on_OMAP35x">http://processors.wiki.ti.com/index.php/Boundary_Scan_on_OMAP35x</a></p>
<p>Unfortunately these do not give the whole story and the boundary scan register still will not function correctly:</p>
<p><a href="http://e2e.ti.com/support/dsp/omap_applications_processors/f/447/p/35977/130644.aspx">http://e2e.ti.com/support/dsp/omap_applications_processors/f/447/p/35977/130644.aspx</a></p>
<p>If you need to do boundary scan testing with a OMAP 35xx contact XJTAG Support (<a href="mailto:support@xjtag.com">support@xjtag.com</a>) and we will complete the story for you.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xjtag.com/2010/09/xjtag-boundary-scan-testing-with-omap-35xx-devices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging faults: always remember XJAnalyser!</title>
		<link>http://blog.xjtag.com/2010/09/debugging-faults-always-remember-xjanalyser/</link>
		<comments>http://blog.xjtag.com/2010/09/debugging-faults-always-remember-xjanalyser/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 07:00:58 +0000</pubDate>
		<dc:creator>Bob Storey</dc:creator>
				<category><![CDATA[Electronics Tips]]></category>
		<category><![CDATA[XJAnalyser]]></category>
		<category><![CDATA[Electronics]]></category>

		<guid isPermaLink="false">http://blog.xjtag.com/?p=559</guid>
		<description><![CDATA[The traditional technique for debugging printed circuit boards is to &#8220;observe&#8221; the state using oscilloscopes or multi-meters and deduce a fault. This method actually suppresses a very powerful engineering instinct that would help us a lot if we could only give it a better chance. Let me illustrate the point with an example:- Did you [...]]]></description>
			<content:encoded><![CDATA[<p>The traditional technique for debugging printed circuit boards is to &#8220;observe&#8221; the state using oscilloscopes or multi-meters and deduce a fault. This method actually suppresses a very powerful engineering instinct that would help us a lot if we could only give it a better chance.<span id="more-559"></span> Let me illustrate the point with an example:-</p>
<p>Did you ever attempt to diagnose, understand or repair a mechanical or electro-mechanical mechanism (perhaps a toaster that won’t toast or even a gearbox from a car or motorbike)? Once you’ve removed the covers and are able to look at what you have, if you are lucky you may immediately see a broken component, but more than likely it will be hidden from immediate view. That’s when the engineers’ instinct to start moving the parts of the mechanism will become difficult to resist. Say you turn an input shaft and it gets stuck, you can use that as a starting point and ask “why is it stuck?” That’s a new track that may well lead to the answer you are looking for. Interacting with a problem, not simply observing is much more powerful as a problem solving method.</p>
<p>XJAnalyser is an ideal engineers’ tool that will allow you not only to observe, but also to interact with your board to debug or fault-find problems. Because it’s a “plug and play” tool, it’s always there when you need to explore board level issues in an intelligent, interactive and inspirational way. It won’t hold back your natural problem solving instincts by requiring a lengthy set-up.</p>
<p>The tool allows you to make use of the inbuilt JTAG test access. XJAnalyser allows you to not only to control circuit nets with a click of the mouse, but also show you the result on a clean graphical view.  Just like the mechanical fault analogy, you are able not only to observe, but also to manipulate.</p>
<p>You can quickly put your circuit into a state that will test your hunch. This might be impossible (or just very time consuming to achieve) within the “mission mode” operation of the circuit, perhaps requiring board mods or even special fault finding software to be written. Just like being able to turn the shaft of a gearbox to answer instinctive curiosity, with XJAnalyser you can either provoke some aspect of the problem or eliminate one of a number of possible explanations.</p>
<p>In fact, the analogy with mechanical systems understates the full power of XJAnalyser because it gives you visibility (and control) of circuit nodes which increasingly in modern electronics are entirely hidden from view and physical access. Once used XJAnalyser will quickly take its place alongside oscilloscope, logic analyser and multi-meter as an indispensable part of your work bench.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xjtag.com/2010/09/debugging-faults-always-remember-xjanalyser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging the Connection Test &#8211; part 4 (Logic errors)</title>
		<link>http://blog.xjtag.com/2010/08/debugging-the-connection-test-part-4-logic-errors/</link>
		<comments>http://blog.xjtag.com/2010/08/debugging-the-connection-test-part-4-logic-errors/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 07:00:36 +0000</pubDate>
		<dc:creator>Bob Storey</dc:creator>
				<category><![CDATA[Connection Test]]></category>

		<guid isPermaLink="false">http://blog.xjtag.com/?p=571</guid>
		<description><![CDATA[With the new Logic support in XJTAG, the connection test can find more errors XJTAG now keeps an internal representation of each logic gate which you define, and where necessary it combines them so that it can keep track of the state of large logic blocks consisting of multiple individual gates. During the connection test, [...]]]></description>
			<content:encoded><![CDATA[<p>With the new Logic support in XJTAG, the connection test can find more errors<span id="more-571"></span><br />
XJTAG now keeps an internal representation of each logic gate which you define, and where necessary it combines them so that it can keep track of the state of large logic blocks consisting of multiple individual gates. During the connection test, the logic blocks are manipulated to test their connections.</p>
<h2>Logic between JTAG devices</h2>
<p>In some scenarios both input and output of the logic gate/combination-of-gates can be read from JTAG. In this situation the connection test has it easy &#8211; it can ensure that the logic always ouputs the expected value given the state of the inputs. If one of the pins is shorted to another JTAG-controlled net, we will report that. In the event of an open-circuit error or a pin shorted to power/ground the connection test will detect an error but will probably not be able (currently) to diagnose the exact problem. However, it will say that an &#8220;unexpected value&#8221; was recorded on a net with logic on it, and output the data it has for the block. More on that below&#8230;</p>
<h2>Logic only partially accessible from JTAG</h2>
<p>We see a lot of logic in the situation where one side is driven from a JTAG-enabled device, and the other side goes to a Test Device.  Perhaps the obvious example is a buffer device going from a processor or FPGA to the address bus on a memory chip. Typically in XJEase projects, the chip select of the memory will be held high during the connection test. If this is the case, then the connection test will be free to drive the address bus. So during the logic part of the connection test it will do just that. In this case it will not pick up shorts between the (buffer-driven) address bus lines during the connection test &#8211; these will be picked up as failures by your RAM tests. But the buffers will be driven in the connection test, which will pick up any shorts to other JTAG-readable/writeable nets.</p>
<p>If you don&#8217;t wish the connection test to drive your bus via logic, you can set disable values on the test device as  in previous versions of XJTAG. In the example above, this would typically mean that the connection test will then hold the buffer&#8217;s *EN pin high, so that it can test the buffer inputs for shorts, without driving anything to the test device.</p>
<p>Once again in this situation, shorts are easy to diagnose &#8211; other unexpected errors will often get picked up as an &#8220;unexpected value&#8221; on a logic net.</p>
<h2>Interpreting &#8220;unexpected value on logic net&#8221; errors</h2>
<p>This error simply means that the values read back during the connection test did not match what XJTAG was expecting to read, given its calculations of the state of the logic blocks in the circuit.If you expand the error details on the output screen, generally you will be able to see in one or more of the rows that a pin has different values in its read and write columns (and the row should be highlighted in blue). This difference in value is what caused XJTAG to report the error.</p>
<p>The next step is to determine (possibly meaning you have to look at the state of all the OTHER pins in the block) whether that pin should be outputting or inputting in the state described by that row of the output text.  <strong>And here is the important bit</strong>: If the pin is an output in the row you&#8217;re looking at, the value in the W (write) column is the value that XJTAG expects the logic block to be driving. It&#8217;s not the value driven by JTAG. However, all R (read) values in the data are values actually read by JTAG devices.</p>
<p>Now, if the pin in question is an input, then the &#8220;write&#8221; value is set from a  JTAG device, so the fault is most likely to be on that pin&#8217;s net &#8211;  perhaps an open circuit on one of the JTAG pins or  links/resistors/connections, perhaps a short to power/ground.</p>
<p>However, if the pin in question is an output, the &#8220;write&#8221; value on that net is an assumption because that value is assumed to be driven by the logic block &#8211; we have no direct observation of it. So, the fault may be on that net (open circuit, short to power/ground&#8230;) but it is also possible that the block is <em>not</em> driving the expected value (ie there&#8217;s a fault on one of the input nets or the wrong chip is fitted, etc). I&#8217;m afraid at this point XJTAG can&#8217;t tell you any more, you&#8217;ll have to figure it out! Some of the possibilities are easier to check than others, so go for those first.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xjtag.com/2010/08/debugging-the-connection-test-part-4-logic-errors/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Logic in XJTAG &#8211; capabilities and limitations</title>
		<link>http://blog.xjtag.com/2010/08/logic-in-xjtag-capabilities-and-limitations/</link>
		<comments>http://blog.xjtag.com/2010/08/logic-in-xjtag-capabilities-and-limitations/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 07:00:56 +0000</pubDate>
		<dc:creator>Bob Storey</dc:creator>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[XJDeveloper]]></category>
		<category><![CDATA[XJEase]]></category>
		<category><![CDATA[Connection Test]]></category>

		<guid isPermaLink="false">http://blog.xjtag.com/?p=574</guid>
		<description><![CDATA[We see a lot of logic components used on boards that come through our office. Most often we see buffers, bus transceivers and devices of that nature, but also plenty of the usual discrete logic chips &#8211; simple gates, decoders, encoders etc. We decided a long time ago that XJTAG should support &#8220;simple&#8221; logic devices [...]]]></description>
			<content:encoded><![CDATA[<p>We see a lot of logic components used on boards that come through our office. Most often we see buffers, bus transceivers and devices of that nature, but also plenty of the usual discrete logic chips &#8211; simple gates, decoders, encoders etc.<span id="more-574"></span></p>
<p>We decided a long time ago that XJTAG should support &#8220;simple&#8221; logic devices in such a way that the logic is handled transparently when it comes to XJEase code, thus allowing the Test Device code to remain device-centric. We also decided that the built-in connection test had to support logic devices to the same extent. The work was on-going behind the scenes here at XJTAG for some time, and is a major part of the version 2.4 release.</p>
<p>So, in previous versions of XJEase if you had a memory chip with a data bus which was accessed through a buffer, you had to modify the chip&#8217;s device file so that the data bus pins were actually the buffer inputs rather than the chip&#8217;s own data pins. This will still work&#8230; but it&#8217;s no longer necessary &#8211; XJTAG will now realise (for example) that if you want to write to a particular pin on that data bus then it means setting the appropriate buffer direction, enable and input pins, and that if you later want to read the pin, XJTAG will stop driving the buffer, change the buffer&#8217;s direction and then read the value through from the memory.</p>
<h2>Limitations</h2>
<h3>No Logic with State</h3>
<p>XJTAG  version 2.4 does not support logic with state.  This does not only apply to individual gates &#8211; we also do not support the situation where blocks are combined to store state, for example constructing a flip-flop from NAND gates. XJTAG will attempt to spot such situations and object to them&#8230; but if you manage to be more cunning than our compile-time state detection algorithms it still won&#8217;t work correctly at runtime!</p>
<h3>Wind-up of logic blocks</h3>
<p>When you make <span style="color: #0000ff;">SET </span>statements in XJEase you are asking XJTAG to put the circuit in a state and leave it that way until told to do otherwise.  And with logic that gets complicated. For example, imagine a logic device with 2 outputs and a truth table set up such that they can&#8217;t both output a 1 (ie valid output states are 00, 01, 10 only). The user makes a <span style="color: #0000ff;">SET</span> statement that sets the first one high. Fine so far. But then later the user <span style="color: #0000ff;">SET</span>s the 2nd one high. Now we have a dilemma. Should we refuse? Or should we set the first one back low in order to comply with the 2nd request? The problem would be worse if there were 3 outputs and any two could be high &#8211; which one should we set back low in order to set the 3rd one high?</p>
<p>Because we can&#8217;t know what the user actually wants, we will stop and show an error if this situation arises. In general that&#8217;s easy for you to get around because having <span style="color: #0000ff;">SET </span>a value on a pin, you can always <span style="color: #0000ff;">SET </span>a different value on it &#8211; so you can <span style="color: #0000ff;">SET </span>the first pin back low once you&#8217;re done with it (or as you <span style="color: #0000ff;">SET </span>the 2nd one high)</p>
<p>If the situation gets far too complicated for you to work out what is causing the conflict, which may mean the <span style="color: #0000ff;">SET</span> causing the problem was made in some other test a long way from where you are, then we do have a (slightly drastic) get-out, which is to make a  <span style="color: #0000ff;">SAFE</span><span style="color: #0000ff;">;</span> statement in your code. This resets all pins (and logic blocks) in the circuit to their default state.</p>
<p>We hope that the new logic features in XJTAG are useful to you &#8211; please give us feedback if you feel you have a situation that we should support and don&#8217;t, or if you have further suggestions as to how we can improve the products.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xjtag.com/2010/08/logic-in-xjtag-capabilities-and-limitations/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

