<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2651974529547771461</id><updated>2011-11-27T23:24:19.358Z</updated><category term='Visual Studio'/><category term='GRMON'/><category term='DesignKits'/><category term='admin'/><category term='N95 8GB'/><category term='C'/><category term='Rocket IO'/><category term='ARM'/><category term='OpenSPARC'/><category term='Mythtv'/><category term='projects'/><category term='MSc'/><category term='EVE'/><category term='altera'/><category term='Cadence'/><category term='marking'/><category term='ML403'/><category term='DVB-T'/><category term='duties'/><category term='Digital'/><category term='Part III'/><category term='Routers'/><category term='LINUX'/><category term='SoC'/><category term='OpenWRT'/><category term='STMicroelectronics'/><category term='Conference'/><category term='fcal'/><category term='sun'/><category term='e3500'/><category term='Imagination Technologies'/><category term='IDESA'/><category term='encounter'/><category term='FPGA'/><category term='AMBA'/><category term='teaching'/><category term='Snapgear'/><category term='angstrom'/><category term='PowerPC'/><category term='RAL'/><category term='SpiNNaker'/><category term='amanda'/><category term='cyclone'/><category term='designware'/><category term='boot'/><category term='OpenZaurus'/><category term='CAD'/><category term='Exams'/><category term='Modelsim'/><category term='XILINX'/><category term='System C'/><category term='CMP'/><category term='Perl'/><category term='synopsys'/><category term='ASIC'/><category term='mpxio'/><category term='OSX'/><category term='Disksuite'/><category term='sparc'/><category term='ASM'/><category term='DDR'/><category term='SATA'/><category term='Firefox'/><category term='Hardware/Software Codesign'/><category term='XUP'/><category term='GRLIB'/><category term='gcc'/><category term='AVR'/><category term='LEON3'/><category term='JTAG'/><category term='ML505'/><category term='DATE'/><category term='OpenEmbedded'/><category term='university'/><category term='CMOS'/><title type='text'>Matthew's Mumblings</title><subtitle type='html'>... all comments here are not (necessarily) those of my employer. If in doubt, email.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mattaw.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>92</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-9024220819073079302</id><published>2011-08-08T23:18:00.004+01:00</published><updated>2011-08-09T01:28:40.110+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='ARM'/><title type='text'>Mapping the Absolute Addresses of Registers from a C Header</title><content type='html'>Why am I doing this, you may ask? Doesn't the microcontroller manufacturer provide the absolute addresses of the registers? Well in this case, no they don't and I need them to complete the plugin for the &lt;a href="http://www.keil.com/uvision/debug.asp"&gt;Keil µVision debugger&lt;/a&gt; which will make them visible and editable via human readable names.&lt;br /&gt;&lt;br /&gt;There are a number of ways of mapping hardware into C but due to the limitations of the &lt;tt&gt;const&lt;/tt&gt; keyword [did you know you can cast the &lt;tt&gt;const&lt;/tt&gt; away? add it to the list of things in C like &lt;tt&gt;=&lt;/tt&gt; actually being assign, declare a pointer with &lt;tt&gt;*&lt;/tt&gt; and then deference it's content with &lt;tt&gt;*&lt;/tt&gt;, etc., etc.] most microcontroller manufacturers end up using &lt;tt&gt;#define&lt;/tt&gt; statements as they can be made to result in fixed numeric constants that can then be optimized. &lt;br /&gt;&lt;br /&gt;[For a quick counter example create a function that accesses a global &lt;tt&gt;const&lt;/tt&gt; pointer, call it and then look at the ASM. Does that look optimal to you? But don't blame the compiler - it can't assume you haven't messed with the const pointer with casts! A good discussion is &lt;a href="http://gotw.ca/gotw/081.htm"&gt;here&lt;/a&gt;.]&lt;br /&gt;&lt;br /&gt;Anyway the normal way is to begin with several layers of &lt;tt&gt;#define&lt;/tt&gt;s. The reason is for maintainability and portability. Typically the registers for a microcontroller peripheral are created at a fixed offset from a base and typically they will want to use the peripheral in several micros. So this is how they arrange things for the USB module in the &lt;a href="http://www.fujitsu.com/global/services/microelectronics/product/micom/roadmap/industrial/fm3/"&gt;Fujitsu MB9BF506R&lt;/a&gt;, an &lt;a href="http://www.arm.com/products/processors/cortex-m/index.php"&gt;ARM Cortex M3&lt;/a&gt; based microcontroller:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#define FM3_PERIPH_BASE    (0x40000000UL)&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;#define FM3_USB0_BASE      (FM3_PERIPH_BASE + 0x42100UL)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So the USB peripheral is actually to be found starting at address &lt;tt&gt;0x40042100UL&lt;/tt&gt;. However the actual device registers are laid out by a C struct. The struct creates the offsets for the individual registers internally and maps them to the human readable names.&lt;br /&gt;&lt;br /&gt;Structs have several rules imposed on them by the C standard and also have a few gotchas so please treat these header files with great care when used with a different compiler UNTIL you have verified it. The rules are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The named elements of a &lt;tt&gt;struct&lt;/tt&gt; will be in the same order as declared in C&amp;nbsp;&lt;a href="http://www.eventhelix.com/RealtimeMantra/ByteAlignmentAndOrdering.htm"&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Suitable padding may be included between elements to speed access to the data.&lt;/li&gt;&lt;/ol&gt;For more information refer to this article: &lt;a href="http://www.eventhelix.com/RealtimeMantra/ByteAlignmentAndOrdering.htm"&gt;http://www.eventhelix.com/RealtimeMantra/ByteAlignmentAndOrdering.htm.&lt;/a&gt; &lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;[If you don't want suitable padding to be added then consider using the pack attribute, e.g. in gcc &lt;tt&gt;#pragma pack&lt;/tt&gt;. This can have terrible performance consequences so as always, know what you are trying to achieve.]&lt;br /&gt;&lt;br /&gt;Here is a fragment of C from the &lt;tt&gt;mb9bf506r.h&lt;/tt&gt; header file which creates the C symbols for the appropriate registers:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;typedef struct&lt;br /&gt;{&lt;br /&gt;  union {&lt;br /&gt;    union {&lt;br /&gt;      __IO uint16_t HCNT;&lt;br /&gt;      stc_usb_hcnt_field_t HCNT_f;&lt;br /&gt;    };&lt;br /&gt;    struct {&lt;br /&gt;      union {&lt;br /&gt;        __IO  uint8_t HCNT0;&lt;br /&gt;        stc_usb_hcnt0_field_t HCNT0_f;&lt;br /&gt;      };&lt;br /&gt;      union {&lt;br /&gt;        __IO  uint8_t HCNT1;&lt;br /&gt;        stc_usb_hcnt1_field_t HCNT1_f;&lt;br /&gt;      };&lt;br /&gt;    };&lt;br /&gt;  };&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So following the rules of struct's in C we have the first element being an unsigned, 16 bit long register called &lt;tt&gt;HCNT&lt;/tt&gt; at the first address of this &lt;tt&gt;struct, 0x40042100UL&lt;/tt&gt;. Note the use of &lt;tt&gt;union&lt;/tt&gt;s to allow the same address in memory to be accessed several different ways. In this case it is enabling &lt;tt&gt;HCNT&lt;/tt&gt; to be accessed as a 16 bit wide register and as two separate 8 bit ones called &lt;tt&gt;HCNT0&lt;/tt&gt; and &lt;tt&gt;HCNT1&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;Lets look at the same piece but with the next register's definition included:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;...&lt;br /&gt;  union {&lt;br /&gt;    union {&lt;br /&gt;      __IO uint16_t HCNT;&lt;br /&gt;      stc_usb_hcnt_field_t HCNT_f;&lt;br /&gt;    };&lt;br /&gt;    struct {&lt;br /&gt;      union {&lt;br /&gt;        __IO  uint8_t HCNT0;&lt;br /&gt;        stc_usb_hcnt0_field_t HCNT0_f;&lt;br /&gt;      };&lt;br /&gt;      union {&lt;br /&gt;        __IO  uint8_t HCNT1;&lt;br /&gt;        stc_usb_hcnt1_field_t HCNT1_f;&lt;br /&gt;      };&lt;br /&gt;    };&lt;br /&gt;  };&lt;br /&gt;        uint8_t RESERVED0[2];&lt;br /&gt;  union {&lt;br /&gt;    __IO  uint8_t HIRQ;&lt;br /&gt;    stc_usb_hirq_field_t HIRQ_f;&lt;br /&gt;  };&lt;br /&gt;  union {&lt;br /&gt;    __IO  uint8_t HERR;&lt;br /&gt;    stc_usb_herr_field_t HERR_f;&lt;br /&gt;  };&lt;br /&gt;        uint8_t RESERVED1[2];&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The line of real interest is &lt;tt&gt;uint8_t RESERVED0[2];&lt;/tt&gt; between the two 16 bit registers. ARM devices' memory map is byte addressing, i.e. each byte attracts a unique address number. So the 16 bit variable is sitting across two 8 bit numbers (which the union allows individual access to). However the main memory of an ARM system is typically organized on 32 bit words, i.e. two 12 bit words and four 8 bit words. The &lt;tt&gt;uint8_t RESERVED0[2];&lt;/tt&gt; array of two 8 bit words 'pushes' the next register (the 8 bit &lt;tt&gt;HIRQ&lt;/tt&gt;) to the start of the next 32 bit word. This means that the &lt;tt&gt;HCNT&lt;/tt&gt; is at &lt;tt&gt;0x40042100UL&lt;/tt&gt; while the &lt;tt&gt;HIRQ&lt;/tt&gt; is at  &lt;tt&gt;0x40042104UL&lt;/tt&gt;, 4 bytes offset from the USB peripheral base.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-9024220819073079302?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/9024220819073079302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/9024220819073079302'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2011/08/mapping-absolute-addresses-of-registers.html' title='Mapping the Absolute Addresses of Registers from a C Header'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-4049227592861283702</id><published>2011-07-24T04:24:00.002+01:00</published><updated>2011-07-26T02:26:19.614+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARM'/><category scheme='http://www.blogger.com/atom/ns#' term='university'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>The External Memory Interface as an Educational Tool</title><content type='html'>In a recent email conversation with an engineer I ended up discussing the advantages of an external memory interface (EMI) over general purpose I/O (GPIO) on a microcontroller for the purposes of education. This short piece comes from that discussion. &lt;br /&gt;&lt;br /&gt;The question posed was this:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;"What advantages does an external memory interface have over driving a peripheral with GPIO?"&lt;/i&gt;&lt;/blockquote&gt;... which immediately brings out the question, what do I mean by an external memory interface and what do I mean by GPIO?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;General Purpose Input Output (GPIO)&lt;/b&gt;&lt;br /&gt;This typically refers to a pin of the chip which is not necessary for any of the operations of the chip but is available to a system designer using the chip. Put another way if none of the GPIO are used then the chip will function just fine. The pins are under software control and can be turned into either inputs allowing data to be read from the outside world or outputs pushing data to the outside world.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;External Memory Interface&lt;/b&gt;&lt;br /&gt;In modern digital computer architecture the standard method of connecting a processor core to the outside world is with a memory interface. This is typically formed from an address bus, a data bus (either bi-directional or two uni-directional ones) and some control lines to indicate whether data is being written or read.&lt;br /&gt;&lt;br /&gt;Normally this is present inside the chip but forever hidden from the designer inside and only a few designs allow it to be exposed. Those that do allow extra RAM or ROM memory to be added to the fixed amount of a normal microcontroller design.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Engineering Advantages of EMI&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Direct memory mapped busses has a couple of advantages over GPIO so, as usual, it depends what you are doing as to whether you care (typical engineers comment!). Here are the two main differences:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Native machine code access. Grants speed, reduced code size and I would guess lower power? No extra instructions to drive the GPIO and turn the bus around to slow you down. Simply create pointers and data structures as usual and prod the linker to place them in the external chips. Or use explicit addresses.&lt;/li&gt;&lt;li&gt;Code execution from external memory. Related to the above. &lt;/li&gt;&lt;/ol&gt;1. is only an issue when speed is at stake, really. Code size isn't that big a problem most of the time and the software wrapper around GPIO won't be very large. Certain ADC's and DAC's (usually video or software radio) pretend to be SRAM for extremely quick access and would really require this method of access to function effectively.&lt;br /&gt;&lt;br /&gt;2. only matters if you have run out of on-chip non-volatile memory and have to move sections of your program off chip.&lt;br /&gt;&lt;br /&gt;[Just speculating re. 2. code execution: you could change the compiler  to emit instructions to drive a GPIO for data memory accesses in a  certain range. However I can't work out how to do a native instruction  fetch from the external memory without a little code in internal flash  copying it to an area of RAM first. Perhaps a block copy strategy held  in flash as a bootloader type thing could minimize the pain of this if  it was invoked as appropriate by a compiler or linker? Note that in the  world of computers I have discovered that someone has always built an  implementation of just about every whacky idea. If you know of a system  that uses this paradigm then please let me know. PC's don't count.]&lt;br /&gt;&lt;br /&gt;In a final summary if you are accessing a data storage area or a peripheral occasionally and don't care about 1. or 2. then a simple software wrapper around GPIO would do just fine and be relatively efficient. I would guess 3 to 5 times slower?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Educational Advantages of EMI&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;From an educators point of view when teaching computer architecture and interfacing and EMI is gold in terms of hammering what is happening inside all general purpose computers into the heads of students. I mean simply this basic idea:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;"A CPU issues an address onto the bus with control signals and writes or reads data."&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;This very basic idea is surprisingly poorly understood by many students as it is completely hidden from them inside micros or PCs. In many EE or even CompE courses the students never actually physically observe it in action or build their own peripheral and code software to drive it. As long as it remains a mental exercise a substantial portion of the students will not really understand it and without understanding it their ability to understand computers and software suffers.&lt;br /&gt;&lt;br /&gt;Myself and colleagues (past and present) have gone to great lengths to try to give them some practical experience at it - I first encountered a softcore PIC in an FPGA used to expose its pipeline and memory and databusses for the students to observe and extend. We moved to an &lt;a href="http://www.atmel.com/"&gt;Atmel&lt;/a&gt; part (an &lt;a href="http://atmel.com/dyn/products/product_card.asp?part_id=2018"&gt;ATmega128&lt;/a&gt;) with a real external memory interface instead when it became available. Multiplexed address + data but designed so it could drive an 74 series 8 bit latch to generate the full bus. Much improved from our softcore PIC! We would set them the task of mapping an 8k SRAM and an 8 bit input and 8 bit latched output into the memory map of the microcontroller.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-E2-PCJBm09c/TiuPGO2T1RI/AAAAAAAAAWQ/avx9Sv-ogI0/s1600/mb9bf506r.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img alt="Picture of a FM3 MB9BF506R Microcontroller. Property of Fujitsu Global." border="0" src="http://4.bp.blogspot.com/-E2-PCJBm09c/TiuPGO2T1RI/AAAAAAAAAWQ/avx9Sv-ogI0/s1600/mb9bf506r.jpg" /&gt;&lt;/a&gt;I am looking forward to developing similar exercises with a more advanced external memory interface (called the EBI, external bus interface) found on &lt;a href="http://www.fujitsu.com/global/services/microelectronics/product/micom/roadmap/industrial/fm3/"&gt;Fujitsu FM3 ARM Cortex M3&lt;/a&gt; based microcontrollers. It has the following neat features, and is really designed to drive FLASH memories transparently which is no mean feat:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It does have an external wait input which could prove very useful&lt;br /&gt;for custom peripherals.&lt;/li&gt;&lt;li&gt;It has a basic SRAM mode with configurable timing for read and write strobes. &lt;/li&gt;&lt;li&gt;It can transparently split and rebuild data from 32 bit to bus widths 8 bits (or 16)&lt;br /&gt;on the fly by issuing the correct sequential addresses.&lt;/li&gt;&lt;li&gt;It can natively drive various types of FLASH memory including &lt;a href="http://www.micron.com/products/nand_flash/nandcom.html"&gt;NAND&lt;/a&gt; block erase and &lt;a href="http://www.samsung.com/global/business/semiconductor/products/flash/Products_NORFlash.html"&gt;NOR&lt;/a&gt; page reads etc. while pretending to be normal memory to the software.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-4049227592861283702?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4049227592861283702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4049227592861283702'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2011/07/external-memory-interface-as.html' title='The External Memory Interface as an Educational Tool'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-E2-PCJBm09c/TiuPGO2T1RI/AAAAAAAAAWQ/avx9Sv-ogI0/s72-c/mb9bf506r.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-6617775557349846825</id><published>2011-07-12T03:30:00.006+01:00</published><updated>2011-07-24T02:42:06.651+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARM'/><category scheme='http://www.blogger.com/atom/ns#' term='university'/><category scheme='http://www.blogger.com/atom/ns#' term='teaching'/><title type='text'>Supporting a Microcontroller Course with Hardware</title><content type='html'>If you have come to this article for a prescription then I am afraid you are in the wrong place. I have structured this piece as a list of questions you need to answer to obtain the microcontroller that really suits your wants and needs. I have included the answers that work for me at the end to show how I have answered my needs.&lt;br /&gt;&lt;br /&gt;Teaching microcontrollers always starts with the architecture. Sadly this is hardly ever a process that starts with a clean sheet. Each university or company typically has historical investments in a few preferred architectures and sticks to them like glue. Opportunities to change existing courses should always be carefully weighed for the costs and benefits.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-fR_N-Ht3uqs/Thuk_L1C2SI/AAAAAAAAAWA/AL-XwTwOGvo/s1600/arm_logo.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img alt="ARM Logo" border="0" src="http://2.bp.blogspot.com/-fR_N-Ht3uqs/Thuk_L1C2SI/AAAAAAAAAWA/AL-XwTwOGvo/s1600/arm_logo.gif" /&gt;&lt;/a&gt;If you are starting from a clean sheet, or reconsidering existing teaching let me urge you to consider the ARM architecture for one incredibly good reason: the prediction that &lt;a href="http://www.eetimes.com/electronics-news/4195984/Analyst-sees-One-ARM-per-Person-per-year-by-2014"&gt;one ARM processor will be manufactured per person per year by 2014 (EE Times)&lt;/a&gt;. There are already billions out there in the world. If you are not teaching ARM consider very carefully whether you are doing the right thing by your students by leaving this very valuable training out of their studies. If you want other reasons consider you can get ARM powered chips for the same prices as 8 and 16 bit microcontrollers with comparable peripherals that have 32 bit datapaths and high clock speeds from many manufacturers! Access to development kits mounting ARM Cortex-M devices with programmers/debuggers can cost as little as $12.&lt;br /&gt;&lt;br /&gt;[It should be no secret that I am an admirer of ARM cores and have  been working with ARM for some time now]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;What are the course choices?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Excluding budget constraints and existing equipment and if the number of hours in the course is fixed then we can classify courses into three types. These types are based on where the weight of the learning outcomes are placed as well as the existence of suitable hardware and software support. The three categories are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;"Bare metal"&lt;/b&gt; (bare chips and a  programmer/debugger) - This is one of the best ways of achieving  learning outcomes that include basic hardware requirements of  microcontrollers i.e. clocks, resets, capacitive decoupling, etc. Coding will consider the booting of the microcontroller as well as code to support any peripherals.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Interfacing &lt;/b&gt;(a PCB with a  few LEDs and switches, probably a clock crystal) - Learning outcomes  mainly consist of building interfaces to other peripherals and hardware and advanced coding to support the peripherals.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Embedded Software &lt;/b&gt;(a loaded  PCB where every interface or IO connected to an appropriate demonstration  peripheral) - This emphasizes coding, probably including a suitable RTOS or algorithms development for embedded systems.&lt;/li&gt;&lt;/ul&gt;No matter what level of course you decide to support there is one basic point that I think needs to be addressed right now: &lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;On Chip Debugging.&lt;/b&gt; Can the actual ASM code and data in RAM be observed while the microprocessor is executing software?&lt;/blockquote&gt;It can be very easy to end up with hardware that will not support any visibility into the microprocessor/microcontroller as its executes software. In my opinion this damages and interferes with your student's ability to understand and experiment with code inside the microcontroller. In my opinion on chip debugging is a basic pedagogic requirement for any course, not a "value added extra"  [NB It is possible to design courses around this limitation but, really, in the 21&lt;sup&gt;st&lt;/sup&gt; century why should you have to? And why should your students be limited in this way?]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Practical considerations when choosing a course&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The main point when considering the three main levels of microcontroller courses you are thinking of teaching is whether you have any electronic laboratory capability, i.e. lab equipment (PC, oscilloscope, function generator, power supply and parts) and trained teaching and support staff or not.&lt;br /&gt;If you have a lab then you can look at implementing any of the levels. If not then go for&lt;b&gt; Embedded Software&lt;/b&gt; straight away or establish the lab later. &lt;b&gt;"Bare Metal"&lt;/b&gt; and &lt;b&gt;Interfacing &lt;/b&gt;are not for you!&lt;br /&gt;As a practical point for &lt;b&gt;"Bare Metal"&lt;/b&gt; courses if chips are not available or convertible to a DIP package choose another architecture to teach.&lt;br /&gt;If you have the lab then the investment in development kits may be a factor. The fully featured kits necessary for &lt;b&gt;Embedded Software&lt;/b&gt; are the most expensive, and the least effective at supporting the &lt;b&gt;Interfacing &lt;/b&gt;course. At best a few GPIO are available for your students to play with.&lt;br /&gt;Homebrew hardware/Custom hardware or commercial? This is always a tricky one and best left to your judgment. A few points to consider are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Have you used the micro before? If not a commercial kit may help, at least for the first few years.&lt;/li&gt;&lt;li&gt;Do you really need a custom system? If you are doing something specialist or have an existing investment in expansion hardware then a custom system can be a part of a really interesting and challenging course. &lt;/li&gt;&lt;li&gt;Custom hardware needs designing and then supporting i.e. repairing, updating, etc. and often proves much more expensive over time than commercial kit.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Which architecture should be taught?&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;Bear in mind the three "levels" of course I have just discussed then we can seriously look at which architecture we should support from two points of view: Pedagogic (teaching) and Practical.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: medium;"&gt;Pedagogic&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Are the functions of the CPU core easy to separate into a simple subset? All real cores tend to have advanced features and blend certain activities due to the need for speed but for training purposes can you keep them separate?&lt;/li&gt;&lt;li&gt;Memory access. This is pretty important and in my opinion it should be a single memory space not paged and the ability to directly execute on data in the memory should be limited - i.e. register math&lt;/li&gt;&lt;li&gt;Is the architecture RISC or CISC? Teaching any CISC architecture is typically only sensible from a software programmers point of view and even then it doesn't lend itself to a structured course. I would firmly suggest that a RISC form the basis of your courses&lt;/li&gt;&lt;/ul&gt;Basically I am a RISC fan from a teaching point of view. As I have to teach fundamentals of hardware structure and design as well as software starting from a RISC is a huge help to my students. [As a cheeky point most CISC designs these days suggest a limited subset of functionality be used for speed so teaching that subset is a great idea.]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: medium;"&gt;Practical&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Confidence/Experience - If you have had success with a design or device then a new device represents a big unknown in terms of software and hardware. Remember those unexpected Errata?&lt;/li&gt;&lt;li&gt;Documentation - Typically for a university a huge amount of existing documentation and notes that have built up around the architecture. Think of all the tutorials and lectures that need rewriting!&lt;/li&gt;&lt;li&gt;Staff training - Your lab helpers have to know how things work, i.e. does the debugger connect every time? Do you have to reboot the PC if the thing hangs? Does the software have any quirks? (perhaps what quirks does the software have)&lt;/li&gt;&lt;/ul&gt;These reasons are also very true for companies but I would suggest that the documentation point would be replaced with code libraries when a commercial client is involved.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;What hardware?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Here are the factors that I think are most important in choosing a development kit. This is where ARM technologies really score - compared to proprietary architectures there is a real diversity of choice of chip manufacturer with about every possible peripheral included:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cost - labs full of development kit adds up pretty pricey&lt;/li&gt;&lt;li&gt;Programmer/debugger cost - see above. Don't forget that many programmer/debuggers are NOT bundled with the development boards. Also if you want your own students to have their own personal boards they are going to need programmer/debuggers.&lt;/li&gt;&lt;li&gt;Software - how easy is it to access the compilers and debuggers&lt;/li&gt;&lt;li&gt;Robustness - students are pretty hard on kit. How much work are you going to have to do to harden the boards electronically and physically?&lt;/li&gt;&lt;li&gt;On chip peripherals - if you are going to teach standard peripherals like USARTs or I&lt;sup&gt;2&lt;/sup&gt;C then make sure they are included in your micro&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: medium;"&gt;What software?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;We then need to consider the programming environment. Again ARM has a real breadth of choice of IDEs and compilers for ARM based microcontrollers. The following points should be born in mind: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Is there a free version for students, and if so how limited is it?&lt;/li&gt;&lt;li&gt;Is the full version terribly expensive and under what conditions can it be accessed? Hardware companies have an easier choice when software than purely software companies as for them the software is not their core business.&lt;/li&gt;&lt;li&gt;How easy is it to support? There are plenty of development IDEs that require Administrator access to run or access the debugger and are often very unstable or full of bugs*. &lt;/li&gt;&lt;/ul&gt;[*IDEs with bugs can be a problem for a professional engineer but for students this can be a showstopper. It is often hard enough for them to grasp the correct operation of an IDE/micro/debugger system let alone diagnose a faulty one. Also imagine a whole lab full of machines  with full admin access in the hands of students? Note I am painfully experienced in getting  limited admin access for certain programs, but really, why would I want  to?]  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;My choices&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;[These choices are influenced by my relationship with ARM but they may help you work through your own choices. It is important to declare interests.]&lt;br /&gt;&lt;br /&gt;The two courses I am planning to support are two &lt;b&gt;Interfacing&lt;/b&gt; courses. I also have an eye on project work which involves microcontrollers. Both courses are established and apply different requirements on the hardware that is going to be used.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: medium;"&gt;What architecture?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Looking at ARM architectures for what I wish to achieve it is clear that we should be looking at the current generation of cores, i.e. the &lt;a href="http://www.arm.com/products/processors/cortex-m/index.php"&gt;Cortex M&lt;/a&gt; or &lt;a href="http://www.arm.com/products/processors/cortex-a/index.php"&gt;A series&lt;/a&gt;. The M stands for microcontroller or mixed signal and A for application. From an architectural point of view the simpler M series are clearly preferable. We are looking at &lt;b&gt;Interfacing&lt;/b&gt; and the available M series parts are much more suited to that goal in terms of their peripherals. For &lt;b&gt;Embedded Software&lt;/b&gt; high end M parts or A parts would be just fine. For bare metal work there are some small pin count M parts which can be adapted to a DIP pinouts but it is more challenging to use ARM for that type of course.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: medium;"&gt;IDE, compiler &amp;amp; debugger&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I am looking at using the &lt;a href="http://www.keil.com/"&gt;uVision IDE from Keil&lt;/a&gt; (owned by &lt;a href="http://www.arm.com/"&gt;ARM&lt;/a&gt;) because: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;It is compatible with a very wide range of devices from many manufacturers so you are not tied to any one single company. This will allow a lot of reuse of notes if the target microcontroller is withdrawn or updated&lt;/li&gt;&lt;li&gt;It has compilers, assemblers, and on chip debugging facilities&lt;/li&gt;&lt;li&gt;There is the essential free version for anyone with code size limits which are well under anything you are likely to need - 32kb of code max (&lt;a href="http://www.keil.com/arm/mdk.asp"&gt;MDK-ARM Lite&lt;/a&gt;). [ARM typically have always supported universities strongly so a donation of the full version for internal use in teaching and research may be very possible - talk to them]&lt;/li&gt;&lt;li&gt;Keil tools are also pretty well behaved as windows programs and receive regular updates to fix bugs. Other IDEs I have used don't even regard some problems as bugs at all!&lt;/li&gt;&lt;li&gt;Keil donations are accessible via ARM which doesn't have the sale of development software as its core business with the implications for donations.&lt;/li&gt;&lt;/ul&gt;This IDE will support both courses quite happily as well as scaling to include larger student projects. This will reduce the amount of repeated documentation needed across the two courses as we will be supporting one IDE.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: medium;"&gt;Development kits&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The two courses have quite different requirements. One course needs two boards:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;One for the students to own by themselves - cost is a very important consideration&lt;/li&gt;&lt;li&gt;One with a large amount of IO for the labs and direct access to a memory mapped IO space&lt;/li&gt;&lt;li&gt;Both should not have too many built in demonstration hardware (it pushes up the cost and wastes valuable IO capability)&lt;/li&gt;&lt;/ul&gt;The other course needs a board with native USB connectivity and as much raw access to IO as possible. Both courses need all the boards to be compatible with the Keil uVision IDE/compiler/debugger suite.&lt;br /&gt;Resources to help find suitable &lt;a href="http://www.arm.com/support/university/development-platforms/index.php"&gt;ARM development platforms&lt;/a&gt; can be found on the &lt;a href="http://www.arm.com/support/university/"&gt;university program section&lt;/a&gt; of ARM's website. Here are the highlights of the development boards I have considered:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Low cost student owned development board&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-pX5AVvSXXvE/ThuZ4_EWAxI/AAAAAAAAAV0/hGcA9tELEDA/s1600/board_stm32vl_discovery.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img alt="ST STM32VL-Discovery" border="0" src="http://4.bp.blogspot.com/-pX5AVvSXXvE/ThuZ4_EWAxI/AAAAAAAAAV0/hGcA9tELEDA/s1600/board_stm32vl_discovery.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;The winner: &lt;a href="http://www.st.com/internet/evalboard/product/250863.jsp"&gt;&lt;i&gt;ST STM32VL-Discovery &lt;/i&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Micro is the &lt;a href="http://www.st.com/internet/mcu/product/216841.jsp#DATASHEET"&gt;ST STM32F100RB&lt;/a&gt;, a Cortex-M3 running at 24MHz with 128kb of flash and 8kb of RAM&lt;/li&gt;&lt;li&gt;On chip peripherals: 1x ADC, 2x DAC, Timers, 2x I2C, 3x USART, 2x SPI and something called CEC. There is also a DMA unit&lt;/li&gt;&lt;li&gt;The programmer/debugger is an &lt;a href="http://www.st.com/internet/evalboard/product/219866.jsp"&gt;ST-Link&lt;/a&gt; built onto the top section of the board. It can also be used to program and debug other &lt;a href="http://www.st.com/internet/mcu/class/1734.jsp"&gt;ST STM32&lt;/a&gt; ARM based microcontrollers using the &lt;a href="http://www.arm.com/products/system-ip/debug-trace/coresight-soc-components/serial-wire-debug.php"&gt;ARM Serial Wire Debug (SWD) bus&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The ST-Link is Keil uVision compatible for programming and on chip debugging&lt;/li&gt;&lt;li&gt;$12 as of the 11&lt;sup&gt;th&lt;/sup&gt; of July from &lt;a href="http://search.digikey.com/scripts/DkSearch/dksus.dll?pname?name=497-10633-ND"&gt;DigiKey&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-L_pKpA8oRRQ/Thuh7kQBTEI/AAAAAAAAAV8/YqWVdX6OfVc/s1600/lpcxpresso_board.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img alt="NXP LPCXpresso" border="0" height="181" src="http://2.bp.blogspot.com/-L_pKpA8oRRQ/Thuh7kQBTEI/AAAAAAAAAV8/YqWVdX6OfVc/s200/lpcxpresso_board.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Honourable mention: &lt;i&gt;&lt;a href="http://ics.nxp.com/lpcxpresso/"&gt;NXP LPCXpresso&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;LPCXpresso is both an IDE (powered by &lt;a href="http://www.code-red-tech.com/"&gt;code_red&lt;/a&gt; technology) and a set of development boards for &lt;a href="http://ics.nxp.com/lpcxpresso/#Products"&gt;NXP's LPC ARM&lt;/a&gt; based microcontrollers &lt;/li&gt;&lt;li&gt;Supports various LPC families of microcontrollers based on the ARM Cortex-M3 and simpler Cortex-M0&lt;/li&gt;&lt;li&gt;Built onto a (one time detachable) NXP LPC-Link programmer/debugger that is supported by the code_red based IDE&lt;/li&gt;&lt;li&gt;$29.95 as of the 11&lt;sup&gt;th&lt;/sup&gt; of July from &lt;a href="http://search.digikey.com/scripts/DkSearch/dksus.dll?Cat=2621773&amp;amp;k=LPCXpresso"&gt;DigiKey&lt;/a&gt;. Note the variety of parts available as well as more complex and higher cost LPCXpresso compatible boards&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://3.bp.blogspot.com/-MSiEhVda7mU/ThudcyNIE1I/AAAAAAAAAV4/UjsiGtGG4YA/s1600/mbedMicrocontroller.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img alt="ARM NXP mbed" border="0" src="http://3.bp.blogspot.com/-MSiEhVda7mU/ThudcyNIE1I/AAAAAAAAAV4/UjsiGtGG4YA/s1600/mbedMicrocontroller.jpg" /&gt;&lt;/a&gt;For consideration: &lt;i&gt;&lt;a href="http://mbed.org/"&gt;ARM NXP mbed&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Needs no special programming hardware or any locally installed software as it is programmed from the mbed website using a web browser. Appears to the PC as a USB stick where if you place a file on it and press a button it programs itself&lt;/li&gt;&lt;li&gt;Seriously limited for my purposes by the lack of On Chip Debugging and simplified programming system [NB not due to the NXP micro but due to the requirement to not need locally  installed software]&lt;/li&gt;&lt;li&gt;This was not a serious candidate for the level of education that I wish to engage in however is a very serious player for courses in high school or the first year of University&lt;/li&gt;&lt;li&gt;Does not come with a "standard" programmer/debugger &lt;/li&gt;&lt;li&gt;$60 as of the 11&lt;sup&gt;th&lt;/sup&gt; of July from &lt;a href="http://search.digikey.com/scripts/DkSearch/dksus.dll?pname?name=568-4916-ND"&gt;DigiKey&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Lab board with native USB connectivity and external memory interface&lt;/b&gt;&lt;br /&gt;[NB This board is a Keil product due to my relationship with ARM, not that there are not excellent candidates from other providers.]&lt;br /&gt;[NNB Keil does make excellent boards though!] &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-_o9ydIex_M8/ThuoztseqtI/AAAAAAAAAWE/1UOYpUrFkGA/s1600/mcb9b500.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img alt="Keil MCB9B500 Evaluation Board" border="0" height="101" src="http://1.bp.blogspot.com/-_o9ydIex_M8/ThuoztseqtI/AAAAAAAAAWE/1UOYpUrFkGA/s200/mcb9b500.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;The winner: &lt;i&gt;&lt;a href="http://www.keil.com/arm/mcb9b500/"&gt;Keil MCB9B500 Evaluation Board&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Micro is the Fujitsu FM3 &lt;a href="http://www.fujitsu.com/us/services/edevices/microelectronics/microcontrollers/datalib/fm3/"&gt;MB9BF506&lt;/a&gt;, a Cortex-M3 running at 80MHz with 512kb of flash and 64kb of RAM&lt;/li&gt;&lt;li&gt;Full physical access to each and every pin on the device &lt;/li&gt;&lt;li&gt;On chip peripherals:&amp;nbsp; USB2.0 Device and Host, 2x CAN, 8 channel DMA, External Bus IF supporting 8/16 bit SRAM, NOR and NAND flash with up to 8 chip selects, 8x USART/CSIO/LIN/I2C Serial ports, 8x Timers, 2x Multi-Function Timers, CRC Accelerator and 3x 16 channel ADCs&lt;/li&gt;&lt;li&gt;Apart from a few LEDs, switches, one potentiometer and the USB device and host port all the rest of the IO is accessible via the two fantastic 0.1" pitch dual row sockets. 0.1" pitch headers are the best educational header being sufficiently small to be convenient but strong to take abuse and rough handling&lt;/li&gt;&lt;li&gt;Programmed and debugged by the &lt;a href="http://www.keil.com/ulinkme/"&gt;ULINK-ME&lt;/a&gt; programmer from Keil (not shown). [NB This is not available for general purchase, only with new kits so be sure to make sure it is included]&lt;/li&gt;&lt;li&gt;Compatible with uVision IDE from Keil [NB Obvious, perhaps]&lt;/li&gt;&lt;li&gt;$100 as of the 11&lt;sup&gt;th&lt;/sup&gt; of July from DigiKey (I haven't linked it here as DigiKey doesn't seem to sell the version with the bundled ULINK-ME but I can't be sure. Buyer Beware)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;span style="font-size: x-small;"&gt;[All pictures are copyright their respective owners and are reproduced here for convenience. For owner information consult the images ALT text. ARM, Cortex, Keil, uVision, mbed, LPC, ST-Link, LPC-Link, Fujitsu FM3 and ST Discovery are probably all trademarks of their respective companies.]&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-6617775557349846825?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6617775557349846825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6617775557349846825'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2011/07/what-microcontroller-course-should-i.html' title='Supporting a Microcontroller Course with Hardware'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-fR_N-Ht3uqs/Thuk_L1C2SI/AAAAAAAAAWA/AL-XwTwOGvo/s72-c/arm_logo.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-7816239948148991151</id><published>2011-03-16T20:37:00.002Z</published><updated>2011-03-16T20:37:51.855Z</updated><title type='text'>I have moved to Purdue in the USA!</title><content type='html'>Following on from a madly busy time at Southampton, UK, I am now working for Purdue University in the USA, which should be a lot of fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-7816239948148991151?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7816239948148991151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7816239948148991151'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2011/03/i-have-moved-to-purdue-in-usa.html' title='I have moved to Purdue in the USA!'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-7015909849524031632</id><published>2010-06-29T22:41:00.011+01:00</published><updated>2010-09-06T12:15:47.341+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoC'/><category scheme='http://www.blogger.com/atom/ns#' term='SpiNNaker'/><title type='text'>The future of computing? The SpiNNaker million processor computer</title><content type='html'>The future of computing is a very big claim. However if anything the future of computing does not lie in a common time, unified shared memory system - this pretty well describes every multicore computer made at the moment. The trouble is once you go to more than a few thousand cores the shared  memory - shared time concept falls to bits. It just doesn't scale. Where then should we look for a new model other than biology? The brains of living creatures are capable of phenomenal processing power and yet have almost none of the features of the computers we build today. Don't you find this odd?&lt;br /&gt;&lt;br /&gt;Lets look at how brains do it:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Does each neuron have a sense of the passage of time? &lt;b&gt;Not in the traditional sense and maybe not at all. If it does it will probably only be only vague ordering.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Does a neuron share a memory space with every other neuron? &lt;b&gt;No. The closest concept is an area effect of diffusion of chemicals which affect neighbours (which may not be synaptically connected) but that is very far from a shared memory concept.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Is each neuron connected to every other neuron? T&lt;b&gt;hey have many connections to close neurons and some connections to neurons further away best described by a statistical distribution but otherwise, again, no.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;So clearly modern computing bears as relation to a brain as &lt;a href="http://www.websudoku.com/"&gt;sudoku&lt;/a&gt; does to &lt;a href="http://en.wikipedia.org/wiki/Quantum_mechanics"&gt;quantum mechanics&lt;/a&gt;. The closest we get are the datacenters of a company such as Google but they enjoy far too much connectivity to be a good model.&lt;br /&gt;&lt;br /&gt;Enter the world of academia because no commercial company would be stupid enough to commit the resources we can into a project like this (and all the ones before it which make it possible) - it is unlike anything that has come before and it is risky (i.e. it may not work!).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://intranet.cs.man.ac.uk/apt/projects/SpiNNaker/"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Project SpiNNaker&lt;/span&gt;&lt;/b&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;This revolutionary idea is nothing less than a plan to put together a computer of approximately 1 million cores with no common clock or shared memory and which can route messages with a model that approximates a neurological system.&lt;br /&gt;&lt;br /&gt;Born in the &lt;a href="http://www.manchester.ac.uk/"&gt;University of Manchester&lt;/a&gt;'s &lt;a href="http://intranet.cs.man.ac.uk/apt/"&gt;Advanced Processor Technologies Group&lt;/a&gt; the &lt;a href="http://intranet.cs.man.ac.uk/apt/projects/SpiNNaker/"&gt;SpiNNaker project&lt;/a&gt; has taken shape in collaboration with the &lt;a href="http://www.soton.ac.uk/"&gt;University of Southampton&lt;/a&gt;'s &lt;a href="http://www.ecs.soton.ac.uk/"&gt;School of Electronics and Computer Science&lt;/a&gt; (where I work), the &lt;a href="http://www.epsrc.ac.uk/"&gt;Engineering and Physical Science Research Council&lt;/a&gt; and two enlightened commercial companies: &lt;a href="http://www.arm.com/"&gt;ARM&lt;/a&gt; (for the processor IP) and &lt;a href="http://www.silistix.com/"&gt;Silístix&lt;/a&gt; (for their Network on Chip expertise).&lt;br /&gt;&lt;br /&gt;SpiNNaker is a child of many parents, each a vital step on the path to it's genesis:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://intranet.cs.man.ac.uk/apt/projects/galaxy/"&gt;AsipIDE GALS Design and Co-Simulation Framework&lt;/a&gt; - A hardware/software co-design and debugging framwork&lt;/li&gt;&lt;li&gt;&lt;a href="http://intranet.cs.man.ac.uk/apt/projects/TM/"&gt;Transactional Memory&lt;/a&gt; - A new locking strategy which massively simplifies the ability to lock data to pass information between processes&lt;/li&gt;&lt;li&gt;&lt;a href="http://teraflux.eu/"&gt;TERAFLUX: Exploiting Dataflow Parallelism in Teradevice Computing&lt;/a&gt; - A pan-european project looking at computers with massive numbers of cores&lt;/li&gt;&lt;li&gt;&lt;a href="http://intranet.cs.man.ac.uk/apt/projects/tools/balsa/"&gt;The Balsa Asynchronous Synthesis System&lt;/a&gt; - A language and compiler targetting asynchronous, handshake driven logic design&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;The main centrepiece of the SpiNNaker project is a special System on Chip, the &lt;a href="http://intranet.cs.man.ac.uk/apt/projects/SpiNNaker/spin_chip.php"&gt;SpiNNaker SoC&lt;/a&gt;. Inside are 18 processors asynchronously connected via a blindingly fast network-on-chip and communicating with the other SoCs via hundreds of megabit links to the other SpiNNaker SoCs. With these SoCs it will take only 56,000 chips to reach the target of 1 million. The cores are ARM968 series processors capable of significant independent computation while communicating with their neighbours or the 1GBbit DDR SDRAM available to each SoC. Even within a SoC the cores do not share a common clock and communicate by passing messages which are routed to each other or outside to another SpiNNaker SoC.&lt;br /&gt;&lt;br /&gt;A seriously ambitious project you say? Absolutely right. Vapourware or a dream? Hell no! Feast your eyes on this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pX0Mn43CzOw/TCplZbcvE7I/AAAAAAAAAJY/a6Bk8kVIatE/s1600/IMG_0730.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="428" src="http://1.bp.blogspot.com/_pX0Mn43CzOw/TCplZbcvE7I/AAAAAAAAAJY/a6Bk8kVIatE/s640/IMG_0730.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This is the first generation of SpiNNaker SoCs on a test board - there are four dual processor SoCs on this board each next to its accompanying 1Gbit ram chip (click on the picture for a very high resolution version). This board already holds 8 processors asynchronously interconnected with all the necessary debug hardware to perfect the design of the next generation.&lt;br /&gt;&lt;br /&gt;Who ever said British Science was dull?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;BIG DISCLAIMER:&lt;/span&gt; I am not one of the great minds trying to change the world with this project. At best I have helped a couple of people around the edges. I am a very big fan, however!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-7015909849524031632?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7015909849524031632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7015909849524031632'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2010/06/future-of-computing-spinnaker-million.html' title='The future of computing? The SpiNNaker million processor computer'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_pX0Mn43CzOw/TCplZbcvE7I/AAAAAAAAAJY/a6Bk8kVIatE/s72-c/IMG_0730.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-4669978715177371650</id><published>2010-04-22T13:54:00.000+01:00</published><updated>2010-04-22T13:54:10.547+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSPARC'/><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><title type='text'>A fixed OpenSPARC T2 build for Design Compiler 2009....</title><content type='html'>Just a very quick note to say that we have fixed the compile problems for the OpenSPARC T1 processor when building it with modern versions of Design Compiler (any &amp;gt; 2007).&lt;br /&gt;&lt;br /&gt;More information, including sizes and speeds on the Synopsys 90nm EDK to follow. Bear in mind it is missing the PLL and a couple of other small modules.&lt;br /&gt;&lt;br /&gt;We will, of course, push this upstream.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-4669978715177371650?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4669978715177371650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4669978715177371650'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2010/04/fixed-opensparc-t2-build-for-design.html' title='A fixed OpenSPARC T2 build for Design Compiler 2009....'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-6205817688458658919</id><published>2010-03-31T17:46:00.000+01:00</published><updated>2010-03-31T17:46:18.753+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoC'/><category scheme='http://www.blogger.com/atom/ns#' term='sparc'/><category scheme='http://www.blogger.com/atom/ns#' term='LEON3'/><category scheme='http://www.blogger.com/atom/ns#' term='EVE'/><category scheme='http://www.blogger.com/atom/ns#' term='teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='Snapgear'/><title type='text'>Current activity with the EVE ZeBu Hardware/Software Co-Verification Environment</title><content type='html'>The title is a fancy way of referring to the EVE ZeBu accelerators (&lt;a href="http://www.eve-team.com/products/index.php"&gt;much more information on their website&lt;/a&gt;). I previously&lt;a href="http://mattaw.blogspot.com/2009/08/modding-hp-proliant-dl585.html"&gt; posted on our acquisition of a UF-2&lt;/a&gt; (I should mention we liked it so much we now have 2!) so I am taking a moment to show what we are up to with this wonderful technology. I have broken it into research and teaching topics.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Research&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Behavioural Simulation and Synthesis of Biological Neuron Systems using VHDL&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;The investigation of neuron structures is an incredibly difficult and complex task that yields relatively low rewards in terms of information from biological forms (either animals or tissue). The structures and connectivity of even the simplest invertebrates are almost impossible to establish with standard laboratory techniques, and even when this is possible it is generally time consuming, complex and expensive. Recent work has shown how a simplified behavioural approach to modelling neurons can allow “virtual” experiments to be carried out that map the behaviour of a simulated structure onto a hypothetical biological one, with correlation of behaviour rather than underlying connectivity. The problems with such approaches are numerous. The first is the difficulty of simulating realistic aggregates efficiently, the second is making sense of the results and finally, it would be helpful to have an implementation that could be synthesised to hardware for acceleration. In this paper we present a VHDL implementation of Neuron models that allow large aggregates to be simulated. The models are demonstrated using a synthesizable system level VHDL model of the C. Elegans locomotory system.&lt;br /&gt;The role of the EVE in this specific project is verifying and executing the largest of the neural net models functionality using your cosimulation replacing previous, limited, technology based around a FPGA board using a probe program.&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Publications&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Bailey, J., Wilson, P., Brown, A. and Chad, J. (2008) &lt;a href="http://eprints.ecs.soton.ac.uk/16668/"&gt;Behavioural Simulation and Synthesis of Biological Neuron Systems using VHDL&lt;/a&gt;. In: BMAS. (In Press)  &lt;br /&gt;Bailey, J., Wilson, P. R., Brown, A. D. and Chad, J. (2007) &lt;a href="http://eprints.ecs.soton.ac.uk/14910/"&gt;Behavioural Simulation of Biological Neuron Systems using VHDL and VHDL-AMS&lt;/a&gt;. In: IEEE Behavioural Modeling and Simulation, Sep 2007, San Jose, USA. pp. 153-158.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Architectures for Numerical Computation&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Since the 1960s, the observation that has become known as Moore’s Law has become a self-fulfilling prophecy. Processing power doubles every two years because of the advances in CMOS technology. There are clear signs, however, that these technological advances are coming to an end. The eco- nomics of pushing CMOS technology to its physical limits will eventually halt further development.&lt;br /&gt;If it is no longer feasible to increase computing power through smaller, faster transistors, the al- ternative is massive parallelism. This progression is already apparent. Multi-core and multi-threaded processors are now common. Although modern operating systems are able to use multiple cores, with few exceptions, programs are confined to single cores. The challenge facing software engineers is to make best use of multiple cores.&lt;br /&gt;A significant amount of processing power is concerned with numerical computation. Consumer applications, such as image and audio processing are fundamentally numerical. Similarly, engineering applications, such as simulation and optimization rely on numerical calculations. At this point, we should distinguish between consumer and desktop applications and High-Performance Computing (HPC) tasks that rely on clusters of dedicated processors. It is not our intention to move into the HPC world at this time.&lt;br /&gt;While using multiple cores can accelerate many numerical algorithms, far greater speed-up would be possible using more specialized forms of hardware, such as GPUs and FPGAs. A further consideration is power consumption (and the related problem of heat dissipation). Custom hardware can reduce power consumption by an order of magnitude or more. The key, of course, is to use the resources in the best possible way. In the context of the work proposed here, there are two aspects to this problem. First, we need to make the best division between hardware and software and second, we need to design an appropriate overall architecture.&lt;br /&gt;The obvious role of the EVE platform in this research field is to support the research into specific computing pipelines, fine grain computation blocks and architectures as well as enabling the development of some 16 lane PCIe computation accelerators.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Teaching&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Hosting a Complex SoC on the EVE Platform&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;This project was a proof of concept and de-risking of the EVE transactor flow using a large SoC. The SoC in question was chosen to be the Gaisler-Aeroflex LEON3 (http://www.gaisler.com). The LEON3 SoC is based around a SPARC v8 compatible CPU and is written in VHDL. The minimal LEON3 SoC was built using the EVE support for memory to model the processor cache along with the transactors for DRAM and UARTs. This work will be extended to include the VGA, Ethernet and USB transactors on the hardware side it and include support for the Snapgear Linux version for the LEON3.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Verification of a highly integrated ASIC&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;A large masters level project framework will produce a heterogeneous multicore ASIC to perform processing on HD video data streams. It will bundle an 32 bit microcontroller core, on chip SRAM, our custom geometric processor along with a multilayer AMBA bus architecture optimised for power and contention. The EVE will be an invaluable support to the simulation and verification of the final design before it is sent for manufacture.&lt;br /&gt;&lt;br /&gt;So there you have it - quite a lot going on, all of which is really fascinating and fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-6205817688458658919?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6205817688458658919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6205817688458658919'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2010/03/current-activity-with-eve-zebu.html' title='Current activity with the EVE ZeBu Hardware/Software Co-Verification Environment'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1223719170107896528</id><published>2010-03-17T11:44:00.000Z</published><updated>2010-03-17T11:44:02.452Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><title type='text'>EWME2010 and Synopsys' EDK</title><content type='html'>Firstly &lt;a href="http://www.mes.tu-darmstadt.de/conf/ewme2010/index.en.jsp"&gt;EWME 2010&lt;/a&gt; is coming in May. It is the European Workshop on Microelectronic Education which along with its sister conference in the USA, &lt;a href="http://www.mseconference.org/"&gt;Microelectronic Systems Education (MSE)&lt;/a&gt;, is pretty much unique in the world.&lt;br /&gt;&lt;br /&gt;If you need help or advice on starting a programme at your institution then this is a great opportunity to meet a very cohesive, dedicated group of educators.&lt;br /&gt;&lt;br /&gt;EWME and MSE are characterised by fair and honest discussions on the challenges and tools available to educators in this sphere, along with a showcase of our best student projects and modules. Papers detail how to run the course administratively as well as the practical aspects. We also get a few vendors who are always pleased to get you into contact with the appropriate University Programmes.&lt;br /&gt;&lt;br /&gt;Secondly the &lt;a href="http://www.synopsys.com/Community/UniversityProgram/Pages/Library.aspx"&gt;Synopsys 90nm EDK&lt;/a&gt; and our experiences with it. We have been users of this EDK for about a year now and it forms a great basis for working with our students. Partially because of the&lt;a href="http://www.synopsys.com/Community/UniversityProgram/Pages/Curriculum.aspx"&gt; established notes and curriculum resources&lt;/a&gt; make it very quick to get off the ground with several complex areas. Compared to the&lt;a href="http://www.mtc-online.be/mtc/idesa/Docs/Flyer-Advanced-DIF.pdf"&gt; IDESA Advanced Digital Physical Implementation Flow&lt;/a&gt; course which promotes the TSMC 90nm deisgn kit this one is far more student friendly with a lower startup cost (it also doesn't require attendance to get the notes and access to the labs). [However for research the &lt;a href="http://www.idesa-training.org/"&gt;IDESA &lt;/a&gt;course is a fantastic introduction to 90nm and below.]&lt;br /&gt;&lt;br /&gt;See you at EWME 2010 in Darmstadt!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1223719170107896528?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1223719170107896528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1223719170107896528'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2010/03/ewme2010-and-synopsys-edk.html' title='EWME2010 and Synopsys&apos; EDK'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-4822197992854766145</id><published>2010-01-27T22:21:00.000Z</published><updated>2010-01-27T22:21:50.173Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cadence'/><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerPC'/><title type='text'>IBM PowerPC™ 405-S: Verification of the Gate Level Netlist with the supplied Artisan SRAMs</title><content type='html'>[Please note that these instructions reference the 1.00a version of the Synopsys PowerPC™ 405-S coreKit which is the version provided in the University IP package from IBM. There are updated versions available from Synopsys.]&lt;br /&gt;&lt;br /&gt;This is the fourth article in this series (&lt;a href="http://mattaw.blogspot.com/2009/11/getting-started-with-synthesizable-ibm.html"&gt;click here for the series index&lt;/a&gt;) describing the IBM PowerPC™ 405 synthesizable core and peripherals and will cover functionally and formally verifying the synthesized gate-level structural Verilog netlist.&lt;br /&gt;&lt;br /&gt;Firstly let us look at the two main classes of verification:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Formal Verification&lt;/li&gt;&lt;li&gt;Functional Verification&lt;/li&gt;&lt;/ol&gt;In a sentence, &lt;b&gt;functional&lt;/b&gt; verification tests if a circuit executes one or more testcase(s) correctly while &lt;b&gt;formal&lt;/b&gt; verification attempts to show that two circuits are mathematically equivalent (for a certain value of equivalent).&lt;br /&gt;&lt;br /&gt;Luckily for us the coreKit provides scripts and support for automating both activities. The completed netlist (with scan chains, more on their importance later) can be put into the same simulation framework that verifies the RTL is fully functional. The completed netlist can also be formally verified against the source RTL by using Synopsys Formality™.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Formal Verification&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The relevant part of the instruction manual (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;docs/405_ivug.pdf&lt;/span&gt;) is:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Chapter 9: Gate-Level Verification&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;So for the following process assume you have used this series of articles to synthesize a PowerPC™ 405-S core with scan chains using the Artisan PDK and the files in the list below are in their correct locations.&lt;br /&gt;&lt;br /&gt;You will need the following:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A synthesized gate level netlist in structural verilog (typically &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;./dc/netlist/PPC405F5V1_dft.v&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Your technology library in Synopsys DB form (if you are following the supplied Artisan flow with SRAMs it is &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;./tech_lib/artisan_13lvfsg/syn/slow.db&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.synopsys.com/tools/verification/formalequivalence/pages/formality.aspx"&gt;Synopsys Formality™&lt;/a&gt;, Synopsys' premier formal equivalence checker&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Command:&lt;/b&gt;&lt;br /&gt;From the ./fm directory in the current workspace:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;./run_fm.gate ../src/ ../tech_lib/artisan_13lvfsg/syn/slow.db ../dc/netlist/PPC405F5V1_dft.v $SYNOPSYS&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Output:&lt;/b&gt;&lt;br /&gt;Assuming you entered the command correctly Formality™ should start and the process will begin by synthesising the original RTL. This will produce a large number of warnings but in this case this is normal and expected.&lt;br /&gt;&lt;br /&gt;It then sets a few constants disabling the scan mode in the design:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;set_constant ref:/WORK/$MODULE/TESTC405SCANENABLE -type port 0&lt;br /&gt;Set 'ref:/WORK/PPC405F5V1/TESTC405SCANENABLE' to constant 0&lt;br /&gt;1&lt;br /&gt;set_constant impl:/WORK/$MODULE/TESTC405SCANENABLE -type port 0&lt;br /&gt;Set 'impl:/WORK/PPC405F5V1/TESTC405SCANENABLE' to constant 0&lt;br /&gt;1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It now checks the designs and issues warnings for the RAM models. &lt;br /&gt;[A “black box” is the term for a section or module of the circuit that is not visible to the tool so it is warning that it cannot verify the contents.]&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Status:  Checking designs...&lt;br /&gt;    Warning: Design ref:/DATARAM_64X34/dataram_64X34 is a black box and there are cells referencing it (FM-160)&lt;br /&gt;    Warning: Design ref:/SRAM256X46/sram256x46 is a black box and there are cells referencing it (FM-160)&lt;br /&gt;    Warning: Design ref:/SRAMBYTWR512X128/sramBytWr512x128 is a black box and there are cells referencing it (FM-160)&lt;br /&gt;    Warning: Design ref:/SRAM512X8/sram512x8 is a black box and there are cells referencing it (FM-160)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And finally compares the design at the matching points, producing this worrying looking output:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Status:  Verifying...&lt;br /&gt;....&lt;br /&gt;    Compare point C405TESTSCANOUT0 failed (is not equivalent)&lt;br /&gt;    Compare point C405TESTSCANOUT1 failed (is not equivalent)&lt;br /&gt;    Compare point C405TESTSCANOUT2 failed (is not equivalent)&lt;br /&gt;    Compare point C405TESTSCANOUT3 failed (is not equivalent)&lt;br /&gt;    Compare point C405TESTSCANOUT4 failed (is not equivalent)&lt;br /&gt;    Compare point C405TESTSCANOUT5 failed (is not equivalent)&lt;br /&gt;    Compare point C405TESTSCANOUT6 failed (is not equivalent)&lt;br /&gt;.&lt;br /&gt;    Compare point C405TESTSCANOUT7 failed (is not equivalent)&lt;br /&gt;.&lt;br /&gt;&lt;br /&gt;********************************* Verification Results *********************************&lt;br /&gt;Verification FAILED&lt;br /&gt;   ATTENTION: RTL interpretation messages were produced during link&lt;br /&gt;              of reference design.&lt;br /&gt;              Verification results may disagree with a logic simulator.&lt;br /&gt;   ATTENTION: 8 failing compare points have unmatched undriven signals in their&lt;br /&gt;                reference fan-in.  To report such failing points, use&lt;br /&gt;                "report_failing_points -inputs unmatched -inputs undriven".&lt;br /&gt;              8 such failing compare points are directly undriven primary output ports.&lt;br /&gt;              To report directly undriven failing primary output ports, use&lt;br /&gt;                "report_failing_points -point_type directly_undriven_output".&lt;br /&gt;              To suppress verification of directly undriven primary output ports, use&lt;br /&gt;                "set_dont_verify_point -directly_undriven_output".&lt;br /&gt;              To read about undriven signal handling, use&lt;br /&gt;                "man verification_set_undriven_signals".&lt;br /&gt;----------------------------------------------------------------------------------------&lt;br /&gt; Reference design: ref:/WORK/PPC405F5V1&lt;br /&gt; Implementation design: impl:/WORK/PPC405F5V1&lt;br /&gt; 16662 Passing compare points&lt;br /&gt; 8 Failing compare points&lt;br /&gt; 0 Aborted compare points&lt;br /&gt; 0 Unverified compare points&lt;br /&gt;----------------------------------------------------------------------------------------&lt;br /&gt;Matched Compare Points     BBPin    Loop   BBNet     Cut    Port     DFF     LAT   TOTAL&lt;br /&gt;----------------------------------------------------------------------------------------&lt;br /&gt;Passing (equivalent)        1204       0       0       0     578   14679     201   16662&lt;br /&gt;Failing (not equivalent)       0       0       0       0       8       0       0       8&lt;br /&gt;Not Compared&lt;br /&gt;  Clock-gate LAT                                                               1       1&lt;br /&gt;****************************************************************************************&lt;br /&gt;Info:  Formality Guide Files (SVF) can improve verification success by automating setup.&lt;br /&gt;0&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;However, don't be downhearted! All Formality™ has done is its job and spotted a difference: the scan chains you inserted during the compile are not present in the source RTL. So ignoring the scan chains, as far as the tool can tell, this is the design you wanted the synthesis tool to manufacture!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Functional Verification&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is described in the same section of the manual as Formal Verification. The prerequisite is a fully functioning RTL verification environment - if it didn't work on the RTL it isn't going to on the netlist.&lt;br /&gt;&lt;br /&gt;The relevant files are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sim/testbench/p405s_test_top.v&lt;/span&gt; - this is the Verilog file containing the top level testbench. It contains a very useful parameter: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;parameter simulation_cycle = 100;&lt;/span&gt; near the top of the file which sets the whole simulation speed in terms of the clock applied to the CPU (not the PLB). It is also sensitive to a parameter called &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;GATE_SIM&lt;/span&gt;. This changes the behavior of the testbench to accommodate the gate-level netlist&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sim/scripts/run405.config&lt;/span&gt; - this file contains the parameters of the simulation "run" about to take place and needs editing to support the gate-level netlist simulation&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Modifications to &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;scripts/run405.config&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is the key script which needs a couple of modifications to simulate the netlist and not the RTL. It is a list of parameters organised into blocks which are read by the Perl script &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;scripts/runTB&lt;/span&gt;. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;scripts/runTB&lt;/span&gt; then builds and executes the correct command line to run a particular simulation in your chosen simulator.&lt;br /&gt;&lt;br /&gt;Open the script &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;scripts/run405.config&lt;/span&gt; in your favourite text editor and look for the second block:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;searchpath&lt;br /&gt;./../src/rtl&lt;br /&gt;./../src/mem_models&lt;br /&gt;$SYNOPSYS/packages/gtech/src_ver&lt;br /&gt;$SYNOPSYS/dw/sim_ver&lt;br /&gt;./testbench&lt;br /&gt;./vera/ver_shell&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As you can see a 'block' has a header identifying it and is closed by an &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;end&lt;/span&gt; keyword. The modification to this block is to comment out the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;./../src/rtl&lt;/span&gt; by adding a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#&lt;/span&gt; in front of the line like so:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;searchpath&lt;br /&gt;#./../src/rtl&lt;br /&gt;./../src/mem_models&lt;br /&gt;$SYNOPSYS/packages/gtech/src_ver&lt;br /&gt;$SYNOPSYS/dw/sim_ver&lt;br /&gt;./testbench&lt;br /&gt;./vera/ver_shell&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;By doing this we exclude the unsynthesised RTL from being discovered by the simulator which is what we want. The netlist should contain the complete circuit.&lt;br /&gt;&lt;br /&gt;Take a look at the third block:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;differentfile&lt;br /&gt;./../src/rtl/p405s_params.v&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In this block we need to explicitly tell the simulator to compile the simulation models for the Artisan PDK cells from the technology library, the synthesised netlist itself and a wrapper called &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PPC405F5V1_soft.v&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;differentfile&lt;br /&gt;./../src/rtl/p405s_params.v&lt;br /&gt;./../src/rtl/PPC405F5V1_soft.v&lt;br /&gt;./../dc/netlist/PPC405F5V1_dft.v&lt;br /&gt;./../tech_lib/artisan_13lvfsg/verilog/tsmc13_hs_modified_new.v&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and finally we need to add the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;GATE_SIM&lt;/span&gt; variable already mentioned above. This makes the testbench behave slightly differently. When simulating the RTL the testbench forces the state of certain internal registers to 0 at the start of every run. With a gate-level netlist those registers may no longer exist, and certainly may not exist with the same name or hierarchy. To achieve the same effect when the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;GATE_SIM&lt;/span&gt; variable is defined at the start of each run the testbench places the chip into scan mode and clocks 0's through the scan chains forcing all flops to have a starting value of 0.&lt;br /&gt;&lt;br /&gt;The correct place to set &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;GATE_SIM&lt;/span&gt; depends on your simulator so have a look at the blocks in the bottom of this file:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;# This is a string appended to the MTI invocations&lt;br /&gt;mtioptions&lt;br /&gt;+define+UNITSIM +nospecify +define+GATE_SIM&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;# This is a string appended to the NC invocations&lt;br /&gt;ncoptions&lt;br /&gt;+define+UNITSIM +define+SYN_RTL +nospecify&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;These two example blocks (there are others) refer to Mentor Graphic's ModelSim (mtioptions) and Cadence's NC Verilog (ncoptions). To add the define change the line to read as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;# This is a string appended to the NC invocations&lt;br /&gt;ncoptions&lt;br /&gt;+define+UNITSIM +define+SYN_RTL +nospecify +define+GATE_SIM&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You should now be ready to fire up coreConsultant and begin.&lt;br /&gt;&lt;br /&gt;[Note: You can run the tests outside of coreConsultant but it won't generate the nice, navigable HTML reports. To do this use the command &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;runtest&lt;/span&gt; from the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sim&lt;/span&gt; directory.] &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Changes in coreConsultant&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1) Run core consultant by running the command coreConsultant in a terminal window.&lt;br /&gt;&lt;br /&gt;2) Open the workspace you created to run the RTL functional verification from the previous article and you should see the window below:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pX0Mn43CzOw/Sx_dCgssQWI/AAAAAAAAAEA/egXWS5kr8-s/s1600-h/Screen+shot+2009-12-09+at+17.22.08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pX0Mn43CzOw/Sx_dCgssQWI/AAAAAAAAAEA/egXWS5kr8-s/s400/Screen+shot+2009-12-09+at+17.22.08.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Don't press 'Apply'&lt;/b&gt; until the last step at the bottom or it will start the simulation immediately and there are other settings to change!&lt;br /&gt;&lt;br /&gt;3) Ensure the settings are correct in the 'Simulator' selection before moving on to 'Select Test Options'&lt;br /&gt;&lt;br /&gt;4) In 'Select Test Options' choose Run_Gate_Sims. Move onto 'Select Testsuite'.&lt;br /&gt;&lt;br /&gt;5) In 'Select Testsuite' set the path to the Netlist and the simulation library:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pX0Mn43CzOw/Sx_eHibcT1I/AAAAAAAAAEI/CG6lVpohT80/s1600-h/Screen+shot+2009-12-09+at+17.27.38.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pX0Mn43CzOw/Sx_eHibcT1I/AAAAAAAAAEI/CG6lVpohT80/s400/Screen+shot+2009-12-09+at+17.27.38.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;6) You are all done. Click 'Apply' to start the simulations&lt;br /&gt;&lt;br /&gt;The results of the running simulations are visible in the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;test.log&lt;/span&gt; file which can be monitored in realtime by executing the following command in a terminal window from the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sim&lt;/span&gt; directory:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;tail -f test.log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Studying this file you should see the following (for NC Verilog but each simulator will issue warnings of this kind):&lt;br /&gt;&lt;br /&gt;During the compilation you will get a lot of complaints about unconnected nets. This is only sensible as the individual cells from the cell library have a fixed number of outputs, especially the flops, that cannot be removed. They come with the cell:&lt;br /&gt;&lt;pre&gt;TLATNX8HS LOCKUP1 ( .D(dp_scReg_icuStatus1_regL2[5]), .GN(sc), .Q(scan_out2)&lt;br /&gt;                  |&lt;br /&gt;ncelab: *W,CUVWSP (../dc/netlist/PPC405F5V1_dft.v,123147|18): 1 output port was not connected:&lt;br /&gt;ncelab: (../tech_lib/artisan_13lvfsg/verilog/tsmc13_hs_modified_new.v,28144): QN&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After the compilation things should settle down into a format similar to this, one per test:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;ncsim: 08.10-s006: (c) Copyright 1995-2008 Cadence Design Systems, Inc.&lt;br /&gt;Loading snapshot worklib.p405s_test_top:v .................... Done&lt;br /&gt;=== Verilog with Synopsys Vera ===&lt;br /&gt;ncsim&amp;gt; source /home/esdcad/software/cadence/linux/ius81/tools/inca/files/ncsimrc&lt;br /&gt;ncsim&amp;gt; run&lt;br /&gt; ++---------------------------------------------------------------------++&lt;br /&gt; ||                     VERA System Verifier (TM)                       ||&lt;br /&gt; ||        Version: A-2007.12 () -- Wed Dec  9 17:15:27 2009            ||&lt;br /&gt; ||             Copyright (c) 1995-2004 by Synopsys, Inc.               ||&lt;br /&gt; ||                      All Rights Reserved                            ||&lt;br /&gt; ||                                                                     ||&lt;br /&gt; ||      For support, send email to vera-support@synopsys.com           ||&lt;br /&gt; ||                                                                     ||&lt;br /&gt; ||  This software and the associated documentation are confidential    ||&lt;br /&gt; ||  and proprietary to Synopsys Inc.  Your use or disclosure of this   ||&lt;br /&gt; ||  software is subject to the terms and conditions of a written       ||&lt;br /&gt; ||  license agreement between you, or your company, and Synopsys, Inc. ||&lt;br /&gt; ++---------------------------------------------------------------------++&lt;br /&gt;Vera: Loading main "p405s_top_vera" (path = "p405s_test_top.top_vera")&lt;br /&gt;Vera: Loading ../../vera/lib/p405s_top.vro..&lt;br /&gt;Vera: Loading ../../vera/lib/p405s_memory.vro..&lt;br /&gt;Vera: Loading ../../vera/lib/p405s_slave.vro..&lt;br /&gt;Vera: Loading main "p405s_dcrmon" (path = "p405s_test_top.dcrmon_model")&lt;br /&gt;Vera: Loading ../../vera/lib/p405s_dcrmon.vro..&lt;br /&gt;Vera: Loading main "p405s_dcr" (path = "p405s_test_top.dcr_model")&lt;br /&gt;Vera: Loading ../../vera/lib/p405s_dcr.vro..&lt;br /&gt;Vera: Loading main "p405s_isocm" (path = "p405s_test_top.isocm_model")&lt;br /&gt;Vera: Loading ../../vera/lib/p405s_isocm.vro..&lt;br /&gt;Vera: Loading main "p405s_dsocm" (path = "p405s_test_top.dsocm_model")&lt;br /&gt;Vera: Loading ../../vera/lib/p405s_dsocm.vro..&lt;br /&gt;Vera: Loading main "p405s_intr_ctrl" (path = "p405s_test_top.intr_controller")&lt;br /&gt;Vera: Loading ../../vera/lib/p405s_intr_ctrl.vro..&lt;br /&gt;Vera: Loading main "p405s_jtag" (path = "p405s_test_top.jtag_controller")&lt;br /&gt;Vera: Loading ../../vera/lib/p405s_jtag.vro..&lt;br /&gt;Vera: Loading main "p405s_monitor" (path = "p405s_test_top.monitor_slave_side")&lt;br /&gt;Vera: Loading ../../vera/lib/p405s_monitor.vro..&lt;br /&gt;&amp;gt;&amp;gt; Setting TEST_c405ScanEnable = 1 &amp;lt;&amp;lt;&lt;br /&gt;Entering the PLB Initialization sequence time=0&lt;br /&gt;Entering Reset delay sequence time=1000&lt;br /&gt;Completing Reset delay sequence time=2999000&lt;br /&gt;&amp;gt;&amp;gt; Setting TEST_c405ScanEnable = 0 &amp;lt;&amp;lt;&lt;br /&gt;&amp;gt;&amp;gt; Forcing Reset of D-CACHE Tags &amp;lt;&amp;lt;&lt;br /&gt;3002000 info: Slave0: is in Reset&lt;br /&gt;&lt;br /&gt;3003000 info: Slave0: is in Reset&lt;br /&gt;&lt;br /&gt;3004000 info: Slave0: is in Reset&lt;br /&gt;&lt;br /&gt;3005000 info: Slave0: is in Reset&lt;br /&gt;&lt;br /&gt;3006000 info: Slave0: is in Reset&lt;br /&gt;&lt;br /&gt;3007000 info: Slave0: is in Reset&lt;br /&gt;&lt;br /&gt;3008000 info: Slave0: is in Reset&lt;br /&gt;&lt;br /&gt;3009000 info: Slave0: is in Reset&lt;br /&gt;&lt;br /&gt;3010000 info: Slave0: is in Reset&lt;br /&gt;&lt;br /&gt;3011000 info: Slave0: is in Reset&lt;br /&gt;&lt;br /&gt;3012000 info: Slave0: is in Reset&lt;br /&gt;&lt;br /&gt;3013000 info: Slave0: is in Reset&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt; Forcing Reset of D-CACHE Tags &amp;lt;&amp;lt;&lt;br /&gt;DCRMON (3797000): DCR Write : Addr = 44 WData = bfff0000&lt;br /&gt;DCRMON (3907000): DCR Write : Addr = 0 WData = 0&lt;br /&gt;DCRMON (3922000): DCR Write : Addr = 11 WData = 0&lt;br /&gt;DCRMON (3977000): DCR Write : Addr = 8 WData = 0&lt;br /&gt;DCRMON (3997000): DCR Write : Addr = 1 WData = 0&lt;br /&gt;DCRMON (4001000): DCR Write : Addr = 9 WData = 0&lt;br /&gt;DCRMON (4005000): DCR Write : Addr = a WData = 0&lt;br /&gt;DCRMON (4014000): DCR Write : Addr = 20 WData = 0&lt;br /&gt;DCRMON (4028000): DCR Write : Addr = 3 WData = 0&lt;br /&gt;DCRMON (4109000): DCR Write : Addr = b WData = 0&lt;br /&gt;DCRMON (4113000): DCR Write : Addr = c WData = 0&lt;br /&gt;6488000 info: Slave0:  MasterId=1  Request for Write addr=00000010&lt;br /&gt;&lt;br /&gt;6488000 info: Slave0: 1 to MultiByte Write&lt;br /&gt;&lt;br /&gt;TESTCASE took 3474 Clocks&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;TESTCASE "addfvt" PASSED&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Vera: finish encountered at time 6493000 cycle    6494&lt;br /&gt;        total       mismatch: 0&lt;br /&gt;                   vca_error: 0&lt;br /&gt;              fail(expected): 0&lt;br /&gt;                       drive: 10739&lt;br /&gt;                      expect: 0&lt;br /&gt;                      sample: 49891&lt;br /&gt;                        sync: 16493&lt;br /&gt;Vera: finish encountered at time 6494000 cycle    6495&lt;br /&gt;        total       mismatch: 0&lt;br /&gt;                   vca_error: 0&lt;br /&gt;              fail(expected): 0&lt;br /&gt;                       drive: 6493&lt;br /&gt;                      expect: 0&lt;br /&gt;                      sample: 3199836&lt;br /&gt;                        sync: 607518&lt;br /&gt;Vera: finish encountered at time 6494000 cycle    6495&lt;br /&gt;        total       mismatch: 0&lt;br /&gt;                   vca_error: 0&lt;br /&gt;              fail(expected): 0&lt;br /&gt;                       drive: 19494&lt;br /&gt;                      expect: 0&lt;br /&gt;                      sample: 64898&lt;br /&gt;                        sync: 32462&lt;br /&gt;Vera: finish encountered at time 6494000 cycle    6495&lt;br /&gt;        total       mismatch: 0&lt;br /&gt;                   vca_error: 0&lt;br /&gt;              fail(expected): 0&lt;br /&gt;                       drive: 6517&lt;br /&gt;                      expect: 0&lt;br /&gt;                      sample: 32469&lt;br /&gt;                        sync: 19482&lt;br /&gt;Vera: finish encountered at time 6494000 cycle    6495&lt;br /&gt;        total       mismatch: 0&lt;br /&gt;                   vca_error: 0&lt;br /&gt;              fail(expected): 0&lt;br /&gt;                       drive: 3882&lt;br /&gt;                      expect: 0&lt;br /&gt;                      sample: 56947&lt;br /&gt;                        sync: 12987&lt;br /&gt;Vera: finish encountered at time 6494000 cycle    6495&lt;br /&gt;        total       mismatch: 0&lt;br /&gt;                   vca_error: 0&lt;br /&gt;              fail(expected): 0&lt;br /&gt;                       drive: 11903&lt;br /&gt;                      expect: 0&lt;br /&gt;                      sample: 43549&lt;br /&gt;                        sync: 12987&lt;br /&gt;Vera: finish encountered at time 6494000 cycle    6495&lt;br /&gt;        total       mismatch: 0&lt;br /&gt;                   vca_error: 0&lt;br /&gt;              fail(expected): 0&lt;br /&gt;                       drive: 6737&lt;br /&gt;                      expect: 0&lt;br /&gt;                      sample: 33265&lt;br /&gt;                        sync: 13564&lt;br /&gt;Vera: finish encountered at time 6494000 cycle    6495&lt;br /&gt;        total       mismatch: 0&lt;br /&gt;                   vca_error: 0&lt;br /&gt;              fail(expected): 0&lt;br /&gt;                       drive: 1&lt;br /&gt;                      expect: 0&lt;br /&gt;                      sample: 140&lt;br /&gt;                        sync: 108&lt;br /&gt;TESTCASE "addfvt" PASSED&lt;br /&gt;&lt;/pre&gt;You can see the Vera banner at the top, the individual Vera modules loading. The only difference to the RTL simulations are the following two lines:  &lt;br /&gt;&lt;pre&gt;&amp;gt;&amp;gt; Setting TEST_c405ScanEnable = 1 &amp;lt;&amp;lt;&lt;br /&gt;&lt;/pre&gt;and  &lt;br /&gt;&lt;pre&gt;&amp;gt;&amp;gt; Setting TEST_c405ScanEnable = 0 &amp;lt;&amp;lt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;which are found after the last Vera module loads at the start of the simulation. This is the effect of the GATE_SIM define added earlier and is showing the activation of the scan chains to zero the flops internally.&lt;br /&gt;&lt;br /&gt;And finally you should be greeted with a report in coreConsultant that looks like this:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pX0Mn43CzOw/Ss3FFjnlpNI/AAAAAAAAADU/5yuFRMOjd_I/s1600/Picture%2B6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_pX0Mn43CzOw/Ss3FFjnlpNI/AAAAAAAAADU/5yuFRMOjd_I/s400/Picture%2B6.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;There, you have now formally and functionally verified your very own PowerPC™ 405-S netlist. All it needs is to be placed and routed (and finally functionally and formally verified again) and you are good to go!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Published with permission from IBM and Synopsys&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-4822197992854766145?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4822197992854766145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4822197992854766145'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2010/01/ibm-powerpc-405-s-verification-of-gate.html' title='IBM PowerPC™ 405-S: Verification of the Gate Level Netlist with the supplied Artisan SRAMs'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pX0Mn43CzOw/Sx_dCgssQWI/AAAAAAAAAEA/egXWS5kr8-s/s72-c/Screen+shot+2009-12-09+at+17.22.08.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1405661077125576867</id><published>2010-01-15T22:29:00.002Z</published><updated>2010-03-04T09:31:21.841Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='university'/><category scheme='http://www.blogger.com/atom/ns#' term='teaching'/><title type='text'>A word from a Lecturer on the use Wikipedia to students everywhere</title><content type='html'>The use of Wikipedia as a reference is a depressingly common crime committed by students but it is spreading to professional areas as well.&lt;br /&gt;&lt;br /&gt;Wikipedia is an excellent introduction to a topic, but never a reference source. I often look up things on Wikipedia but I &lt;b&gt;never&lt;/b&gt; use it as a reference or for something important without confirming it by some real, named, published and reviewed document.&lt;br /&gt;&lt;br /&gt;The best summation of the structural issues of Wikipedia come from the Sheldon cartoon by Dave Kellett&amp;nbsp; (with the authors permission, &lt;a href="http://www.sheldoncomics.com/archive/071213.html"&gt;http://www.sheldoncomics.com/archive/071213.html):&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.sheldoncomics.com/strips/sd071213.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="432" src="http://www.sheldoncomics.com/strips/sd071213.gif" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;(... and outside academia, God help you if your boss has found you have bet the company or a product on data gathered from Wikipedia that you haven't confirmed via other research.)&lt;br /&gt;&lt;br /&gt;Real life works on named sources that are reliable, not ephemera.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1405661077125576867?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1405661077125576867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1405661077125576867'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2010/01/word-from-lecturer-on-use-wikipedia-to.html' title='A word from a Lecturer on the use Wikipedia to students everywhere'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-4651965030013113545</id><published>2009-12-04T14:44:00.002Z</published><updated>2011-07-27T15:26:20.642+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cadence'/><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerPC'/><title type='text'>IBM PowerPC™  405-S: Synthesis of the RTL with the supplied Artisan Cell Library</title><content type='html'>[Please note that these instructions reference the 1.00a version of the Synopsys PowerPC™ 405-S coreKit which is the version provided in the University IP package from IBM. There are updated versions available from Synopsys that address several of the issues outlined below. These are specifically commented on where known.]&lt;br /&gt;&lt;br /&gt;This is the third article in this series (&lt;a href="http://mattaw.blogspot.com/2009/11/getting-started-with-synthesizable-ibm.html"&gt;click here for the series index&lt;/a&gt;) describing the IBM PowerPC™ 405 synthesizable core and peripherals and will cover taking the IP through RTL synthesis and scan chain insertion with the modern versions of the Synopsys tools using the supplied Artisan Library. Integrating a custom library will be addressed in a future article.&lt;br /&gt;&lt;br /&gt;This article assumes you have used the previous articles to unpack and install the software to create a functioning simulation environment.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Getting Started: Understanding the Problem&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The relevant part of the instruction manual (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;docs/405_ivug.pdf&lt;/span&gt;) is:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Chapter 6: RTL-to-Gates Synthesis&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In this chapter we are going to assume that the default Core clock of 250MHz and PLB clock of 125MHz are acceptable, along with the 130nm Artisan library designed for TSMC processes.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Synthesis Scripts&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Entering the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dc&lt;/span&gt; subdirectory of the workspace shows the files in place however a little more digging and we can see that the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dc/scripts&lt;/span&gt; directory is missing. Using an identical technique to the previous article we can create and populate it.&lt;br /&gt;[Note, in a similar vein to the last article all of the changes will be summarised in a script and instructions at the end]&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd dc&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mkdir scripts&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd scripts&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ln -s ../../../DW_ppc405-FS_iv_1.0a_AV/dc/scripts/* ./&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The script system automates the flow from RTL, Constraints and Cell Library to a gate level netlist:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;run_compile.csh&lt;/span&gt; - as the "master" script it sets environment variables and then executes the desired tool, sourcing the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;setup.tcl&lt;/span&gt; script and the appropriate stage script where the stages are "elaboration", "synthesis" and "design for test"&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;scripts/p405s_elab.tcl&lt;/span&gt; - reads the environment variables set and executes Design Compiler to elaborate the design and save it in a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.db&lt;/span&gt; file&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;scripts/p405s_compile.tcl&lt;/span&gt; - reads the environment variables set and executes Design Compiler on the elaborated design to synthesize the design and save the resulting netlist, reports and other useful outputs&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;scripts/p405s_dft.tcl&lt;/span&gt; - reads the environment variables set and executes Design Compiler on the synthesized design to stitch the scan chains together and enable design for test strategies&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Constraints&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;This scripting system relies on reading design constraints held in another directory: &lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dc/constraints&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;A design without appropriate constraints is basically useless as RTL is insufficient to create a functional circuit. The constraints for this processor are complex due to the presence of 3 clock domains (core, peripheral bus and JTAG) and two test modes. The constraint files contain the following information:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PPC405F5V1_capture.cons&lt;/span&gt; - This is responsible for creating environment variables containing data on the various clock speeds and parameters. It also identifies the clock ports in the design. It also specifies some of the different clock domains.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PPC405F5V1_clock.cons&lt;/span&gt; - This file uses the variables calculated in the constraint file &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PPC405F5V1_capture.cons&lt;/span&gt; to apply constraints to the clocks in the design.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PPC405F5V1_compile_directives.cons&lt;/span&gt; - Instructs Design Compiler to fix multiple port nets, optimise a group of paths at a time for slack as opposed to one path at a time. It also enables a check on clock gating.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PPC405F5V1_drc.cons&lt;/span&gt; - This file constrains the fanouts of the nets and sets attributes on some of the clock control logic so it will pass DRC.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PPC405F5V1_functional.cons&lt;/span&gt; - Creates false paths and multicycle paths through the RAM BIST and Debug sections of the design to allow efficient synthesis.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PPC405F5V1_group_paths.cons&lt;/span&gt; – Only two constraints are added here grouping all the inputs and all the outputs together for efficient synthesis.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PPC405F5V1_in_out.cons&lt;/span&gt; – This applies driving gates to all inputs and loads to all outputs, again to improve the synthesis and increase the accuracy of the reporting Design Compiler is able to achieve. Importantly the characteristics of the clocks are further constrained in this file. Finally more false paths are assigned to the BIST structures, JTAG and test ports.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PPC405F5V1_shift.cons&lt;/span&gt; – This sets the period on the various clock lines of the design when the design is in one of its test modes.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PPC405F5V1_test.cons&lt;/span&gt; - This contains the complex constraints which drive Test Compiler when it inserts scan chains and test modes automatically. It includes defining the scan in/out ports and the state of the various pins in test mode. This presents a particular issue which will be addressed later as the syntax and capabilities of Deign Compiler have changed very significantly.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Getting Started: Planning the Solution&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The first priority for us is that Design Compiler no longer supports saving the design in &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.db&lt;/span&gt; form so we need to repurpose the scripts to store the design in a more modern database. Design Compiler has also changed clock gating and operand isolation commands and compilation to accomodate modern 90nm and below CMOS. Considering that a major rebuild is necessary I am going to show you how to synthesis the design preparing for the use of Milkyway Databases and the Design Compiler Topographical feature. This will enable the porting of this design to 90nm CMOS and below in the future.&lt;br /&gt;&lt;br /&gt;In the current system each tool is setup to use files from the Artisan library in the synthesis flow by a single Tcl script which detects what tool is running the script and then configures variables appropriately. This script is called at the start of each specific tool script. There is a lot of useful help in the current scripts as the series of improvements to Design Compiler rely on physical information from the cell library to improve its decisions. The major improvement for sub 90nm CMOS is done by the logic synthesis tool performing a quick preliminary cell placement so it can better model delay, capacitance and power costs of the design during synthesis (&lt;a href="http://www.synopsys.com/Tools/Implementation/RTLSynthesis/Pages/DCUltra.aspx"&gt;topographical mode&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;In the following sections the updates required to each individual script are discussed.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Primary Stage Scripts &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The main changes to all scripts was a change to save and load the design using the more modern &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.ddc&lt;/span&gt; database format.&lt;br /&gt;[A normal Synopsys flow would store the design in the Milkyway database alongside physical data from the Cell Library but this version of the IP was not designed for this.]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Control Script: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;run_compile.csh&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The master control script parses flags given to it on the command line and then executes Design Compiler in the tcl shell mode running the appropriate stage script. The only change to this script is:&lt;br /&gt;&lt;br /&gt;Added a flag &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-topo&lt;/span&gt; to run Design Compiler in topological mode which will enable the use of Milkyway databases in Design Compiler.&lt;br /&gt;&lt;br /&gt;[That being said if you are going to use the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-ultra&lt;/span&gt; flag or the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-topo&lt;/span&gt; flag you might want to edit the line &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dc_shell-t -topo -f ./scripts/p405s_compile.tcl | tee logs/p405s_compile.log &lt;/span&gt;to include the correct &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-num_cpus X&lt;/span&gt; where X matches the number of processors and licenses you have for faster compiles. This isn't trivial to add as an option to the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.csh&lt;/span&gt; script without introducing a dependency on the getopts binary so I have left it undone.] &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Setup: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;scripts/setup.tcl&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The setup script is run at the start of each and every stage. It pulls in the libraries and sets up a few global variables.&lt;br /&gt;&lt;br /&gt;The main changes needed to bring this script into line with modern tools is to include information that would normally be used by Physical Compiler in Design Compiler to support its Topological mode when the -topo mode is specified. This is necessary to manage the shift of importance away from gates (in 130nm and above) to wire lengths (in 90nm and below) which begin to dominate the performance of a design. The physical information is used to perform a rough placement allowing wireloads to be estimated much more accurately. It also has allowed the introduction of novel features such as congestion aware routing which will attempt to address routing issues at a netlist level.&lt;br /&gt;&lt;br /&gt;This information is already in there as it was used by the static timing analyses and power estimation tools, but it needs to be enabled when the new topological flag is asserted.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Elaboration: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;scripts/p405s_elab.tcl&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Elaboration consists of reading in HDL files and constructing a representation of the design using components from the cell libraries, i.e. parsing the source code into a generic technology (GTECH) gate-level netlist which is then saved.&lt;br /&gt;&lt;br /&gt;The main improvements to the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p405_elab.tcl&lt;/span&gt; scripts are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Removal of obsolete commands&lt;/li&gt;&lt;li&gt;Conversion of the HDL commands from &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;acs&lt;/span&gt; type to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;analyze&lt;/span&gt; types&lt;/li&gt;&lt;li&gt;Rewriting of the scan chain insertion script section to remove obsolete commands &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;set_scan_signal&lt;/span&gt; with &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;set_dft_signal&lt;/span&gt; and moving them into the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p405s_compile.tcl&lt;/span&gt; script&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Compilation: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;scripts/p405s_compile.tcl&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This stage reads in the gate netlist created in the previous elaboration phase and maps it to the specific gates from the chosen cell library, applies constraints and synthesizes an actual working gate level netlist using the target technology.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Replacement of the -ultra flag with the compile_ultra command&lt;/li&gt;&lt;li&gt;Force the use of the compile_ultra command when in topographical mode&lt;/li&gt;&lt;li&gt;Modification of the compile command to insert the scan flops&lt;/li&gt;&lt;li&gt;Removal of nested if's by building a compile string which is evaluated&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Design for Test: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;scripts/p405s_dft.tcl&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In this phase the scan chains are built from the scan flops inserted into the design in the previous script. The design is then incrementally recompiled to minimize the scan logic and the appropriate reports and the test strategies are generated. Note that while few changes were needed to this script the scan constraints and options were completely replaced.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The script now preserves the use of the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-high&lt;/span&gt; flag from synthesis to increase the effort of the incremental recompile&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Constraints &lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;There were only two constraint files that needed updating but one needed a complete rebuild to support the new syntax of Test Compiler.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;constraints/PPC405F5V1_functional.cons&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This file requires a slight modification to cope with a change in Design Compiler's internal bus naming style from &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;signal[0]&lt;/span&gt; to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;signal&amp;lt;0&amp;gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;constraints/PPC405F5V1_test.cons&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This file required a complete rebuild to manage the syntax changes in the new version of Test Compiler. The major changes are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Replacement of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;create_test_clock, set_scan_signal, set_signal_type&lt;/span&gt; and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;set_test_hold&lt;/span&gt; with appropriate &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;set_dft_signal&lt;br /&gt;&lt;/span&gt; declarations&lt;/li&gt;&lt;li&gt;Replacement of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;set_dft_optimization_configuration&lt;/span&gt; with &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;set_dft_insertion_configuration&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Reworking of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;set_scan_configuration&lt;/span&gt; flags&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;Synthesis: Solved&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There is one script to link the needed files and one unified patch file which will update all the relevant tool scripts and constraint files to work correctly.&lt;br /&gt;&lt;br /&gt;1) Open your favorite text editor and paste in the following script:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# fix_dc_dir.sh&lt;br /&gt;#&lt;br /&gt;#Copyright Matthew Swabey (matthew@swabey.org).&lt;br /&gt;#&lt;br /&gt;#You are licensed to use this file in conjunction with the IBM PowerPC 405 coreKit and to make modifications as needed to this script as long as this copyright notice is kept.&lt;br /&gt;&lt;br /&gt;#This script should be executed from the the new workspace after you have installed it with coreConsultant.&lt;br /&gt;&lt;br /&gt;UNPACKED_COREKIT_DIR=/export/fastcad/disktmp/mas/IBM_PUB3/DW_ppc405-FS_iv_1.0a_AV&lt;br /&gt;&lt;br /&gt;#Link the script files needed to synthesise the PPC405 into the workspace from the installed coreKit&lt;br /&gt;cd dc&lt;br /&gt;mkdir scripts&lt;br /&gt;cd scripts&lt;br /&gt;ln -s $UNPACKED_COREKIT_DIR/dc/scripts/* ./&lt;br /&gt;cd ..&lt;br /&gt;&lt;br /&gt;cd ..&lt;br /&gt;&lt;br /&gt;#Apply the unified patch to update the build scripts and constraint scripts&lt;br /&gt;patch -u -p0 &amp;lt; `dirname $0`/fix_dc.diff&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2) Edit the top variable, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;UNPACKED_COREKIT_DIR&lt;/span&gt; to have the absolute path to the unpacked coreKit directory. There should be no spaces in the paths.&lt;br /&gt;&lt;br /&gt;3) Save this file with a suitable name (e.g. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;fix_dc_dir.sh&lt;/span&gt;) in the new workspace you have created. Make the script executable using the command &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;chmod u+x "filename"&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;4) Open a new blank file and paste in the following unified diff:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;diff -ru ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/constraints/PPC405F5V1_functional.cons ./dc/constraints/PPC405F5V1_functional.cons&lt;br /&gt;--- ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/constraints/PPC405F5V1_functional.cons 2005-10-17 16:31:05.000000000 +0100&lt;br /&gt;+++ ./dc/constraints/PPC405F5V1_functional.cons 2009-11-09 18:18:07.608824678 +0000&lt;br /&gt;@@ -3,6 +3,9 @@&lt;br /&gt; #&lt;br /&gt; #  Copyright (c) International Business Machines Corporation, 2005.&lt;br /&gt; #&lt;br /&gt;+#  Modified by Dr Matthew Swabey matthew@swabey.org to support the modern&lt;br /&gt;+#  synopsys design tools and techniques.&lt;br /&gt;+#&lt;br /&gt; #  This file contains trade secrets and other proprietary and confidential&lt;br /&gt; #  information of International Business Machines Corporation which are&lt;br /&gt; #  protected by copyright and other intellectual property rights and shall&lt;br /&gt;@@ -49,9 +52,9 @@&lt;br /&gt; #core|cpu_topSch|exe_topSch|loadSteeringSch|ocmData_NEG[*]  I _ _ * GPRWT+R&lt;br /&gt; #core|cpu_topSch|exe_topSch|gprLpIn[*]  I DC DC GPRWT+R _&lt;br /&gt; set DCU_DATA_NEG_PINS  [remove_from_collection [get_pins core/cacheMMUSch/DCU_data_NEG*] \&lt;br /&gt;-                                               [get_pins "core/cacheMMUSch/DCU_data_NEG[16] \&lt;br /&gt;-                                                          core/cacheMMUSch/DCU_data_NEG[17] \&lt;br /&gt;-                                                          core/cacheMMUSch/DCU_data_NEG[18]"]]&lt;br /&gt;+                                               [get_pins "core/cacheMMUSch/DCU_data_NEG&amp;lt;16&amp;gt; \&lt;br /&gt;+                                                          core/cacheMMUSch/DCU_data_NEG&amp;lt;17&amp;gt; \&lt;br /&gt;+                                                          core/cacheMMUSch/DCU_data_NEG&amp;lt;18&amp;gt;"]]&lt;br /&gt; set OCMDATA_NEG_PINS [get_pins core/cpu_topSch/exe_topSch/loadSteeringSch/OCM_dsData*]&lt;br /&gt;&lt;br /&gt; set_false_path -through $DCU_DATA_NEG_PINS -through [get_pins core/cpu_topSch/exe_topSch/loadSteeringSch/gprLpIn*]&lt;br /&gt;@@ -83,11 +86,11 @@&lt;br /&gt; # Input of the mux(s) are DCU_data_NEG*&lt;br /&gt; #&lt;br /&gt; for {set x 0} {$x&amp;lt;32} {incr x} {&lt;br /&gt;-  set_false_path -through core/cpu_topSch/exe_topSch/loadSteeringSch/DCU_data_NEG[$x] \&lt;br /&gt;+  set_false_path -through core/cpu_topSch/exe_topSch/loadSteeringSch/DCU_data_NEG&amp;lt;$x&amp;gt; \&lt;br /&gt;                         -through [get_pins core/cpu_topSch/exe_topSch/loadSteeringSch/dRegBypass*]&lt;br /&gt; }&lt;br /&gt; for {set x 0} {$x&amp;lt;32} {incr x} {&lt;br /&gt;-  set_false_path -through core/cpu_topSch/exe_topSch/loadSteeringSch/DCU_data_NEG[$x] \&lt;br /&gt;+  set_false_path -through core/cpu_topSch/exe_topSch/loadSteeringSch/DCU_data_NEG&amp;lt;$x&amp;gt; \&lt;br /&gt;                        -through [get_pins core/cpu_topSch/exe_topSch/loadSteeringSch/gprLpIn*]&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;diff -ru ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/constraints/PPC405F5V1_test.cons ./dc/constraints/PPC405F5V1_test.cons&lt;br /&gt;--- ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/constraints/PPC405F5V1_test.cons       2005-10-17 16:31:05.000000000 +0100&lt;br /&gt;+++ ./dc/constraints/PPC405F5V1_test.cons       2009-11-10 23:17:36.560210767 +0000&lt;br /&gt;@@ -3,6 +3,9 @@&lt;br /&gt; #&lt;br /&gt; #  Copyright (c) International Business Machines Corporation, 2005.&lt;br /&gt; #&lt;br /&gt;+#  Modified by Dr Matthew Swabey matthew@swabey.org to support the modern&lt;br /&gt;+#  synopsys design tools and techniques.&lt;br /&gt;+#&lt;br /&gt; #  This file contains trade secrets and other proprietary and confidential&lt;br /&gt; #  information of International Business Machines Corporation which are&lt;br /&gt; #  protected by copyright and other intellectual property rights and shall&lt;br /&gt;@@ -17,13 +20,17 @@&lt;br /&gt; #&lt;br /&gt; # This file sets up the scan constraints&lt;br /&gt; #&lt;br /&gt;+&lt;br /&gt; #============================================================================&lt;br /&gt; # Create Test Clocks&lt;br /&gt; #============================================================================&lt;br /&gt;-create_test_clock CPMC405CLOCK        -waveform {60.0 70.0} -period 100.0&lt;br /&gt;-create_test_clock CPMC405PLBSYNCCLOCK -waveform {60.0 70.0} -period 100.0&lt;br /&gt;-create_test_clock JTGC405TCK          -waveform {60.0 70.0} -period 100.0&lt;br /&gt;-create_test_clock TESTC405BISTCE0STCLK -waveform {60.0 70.0} -period 100.0&lt;br /&gt;+&lt;br /&gt;+set_dft_signal -view existing_dft -type ScanClock -port CPMC405CLOCK -timing [list 60.0 70.0]&lt;br /&gt;+set_dft_signal -view existing_dft -type ScanClock -port CPMC405PLBSYNCCLOCK -timing [list 60.0 70.0]&lt;br /&gt;+set_dft_signal -view existing_dft -type ScanClock -port JTGC405TCK -timing [list 60.0 70.0]&lt;br /&gt;+set_dft_signal -view existing_dft -type ScanClock -port TESTC405BISTCE0STCLK -timing [list 60.0 70.0]&lt;br /&gt;+&lt;br /&gt;+#set_dft_equivalent_signals [list CPMC405CLOCK CPMC405PLBSYNCCLOCK JTGC405TCK TESTC405BISTCE0STCLK]&lt;br /&gt;&lt;br /&gt; #============================================================================&lt;br /&gt; #    Define scan ports&lt;br /&gt;@@ -33,20 +40,14 @@&lt;br /&gt; set test_scan_in_port_naming_style "scan_in%s"&lt;br /&gt; set test_scan_out_port_naming_style "scan_out%s"&lt;br /&gt;&lt;br /&gt;-## DFT DRC currently (2003.12) has a problem infering resets, so do it explicitly&lt;br /&gt;-#if {[get_ports -quiet test_async_rst_n] == ""} {create_port test_async_rst_n}&lt;br /&gt;-#set_signal_type test_async_inverted test_async_rst_n&lt;br /&gt;+set_dft_signal -view existing_dft -type TestMode -port [get_port TESTC405TESTMODE] -active_state 1&lt;br /&gt;+set_dft_signal -view existing_dft -type ScanEnable -port [get_port TESTC405SCANENABLE] -active_state 1&lt;br /&gt;+set_dft_signal -view spec -type ScanEnable -port [get_port TESTC405SCANENABLE] -active_state 1&lt;br /&gt;&lt;br /&gt;-set_dft_signal  test_mode        -port TESTC405TESTMODE&lt;br /&gt;-set_scan_signal test_scan_enable -port TESTC405SCANENABLE&lt;br /&gt; for {set x 0} {$x&amp;lt;8} {incr x} {&lt;br /&gt;-       set_scan_signal test_scan_in     -port TESTC405SCANIN${x}&lt;br /&gt;-       set_scan_signal test_scan_out    -port C405TESTSCANOUT${x}&lt;br /&gt;+       set_dft_signal -view spec -type ScanDataIn -port [get_port TESTC405SCANIN${x}]&lt;br /&gt;+       set_dft_signal -view spec -type ScanDataOut -port [get_port C405TESTSCANOUT${x}]&lt;br /&gt; }&lt;br /&gt;-#for {set x 0} {$x&amp;lt;32} {incr x} {&lt;br /&gt;-#      set_scan_signal test_scan_in     -port TESTC405SCANIN${x} -chain scan${x}&lt;br /&gt;-#      set_scan_signal test_scan_out    -port C405SCANOUT${x} -chain scan${x}&lt;br /&gt;-#}&lt;br /&gt;&lt;br /&gt; #============================================================================&lt;br /&gt; #    Set up test protocol&lt;br /&gt;@@ -68,16 +69,16 @@&lt;br /&gt; set_scan_element false [get_cell core/cacheMMUSch/icu_topSch/icuRamDataFlow/tagArray_Sch/icu_tag/tagSram]&lt;br /&gt;&lt;br /&gt; # Assert these input ports to specified values during test mode&lt;br /&gt;-set_signal_type "test_asynch" RSTC405RESETCORE&lt;br /&gt;-set_test_hold 1 TESTC405BISTCE1MODE&lt;br /&gt;-set_test_hold 1 TESTC405BISTCE1ENABLE&lt;br /&gt;-set_test_hold 1 TIEC405CLOCKENABLE&lt;br /&gt;-set_test_hold 1 TIEC405DUTYENABLE&lt;br /&gt;-set_test_hold 1 TESTC405TESTMODE&lt;br /&gt;-set_test_hold 1 JTGC405TRSTNEG&lt;br /&gt;-set_test_hold 1 CPMC405CPUCLKENCCLK&lt;br /&gt;-set_test_hold 1 CPMC405TIMERCLKENCCLK&lt;br /&gt;-set_test_hold 1 CPMC405JTAGCLKENCCLK&lt;br /&gt;+set_dft_signal -view existing_dft -type Reset -port -active_state 1 [get_port RSTC405RESETCORE]&lt;br /&gt;+set_dft_signal -view existing_dft -type Constant -active_state 1 -port [get_port TESTC405BISTCE1MODE]&lt;br /&gt;+set_dft_signal -view existing_dft -type Constant -active_state 1 -port [get_port TESTC405BISTCE1ENABLE]&lt;br /&gt;+set_dft_signal -view existing_dft -type Constant -active_state 1 -port [get_port TIEC405CLOCKENABLE]&lt;br /&gt;+set_dft_signal -view existing_dft -type Constant -active_state 1 -port [get_port TIEC405DUTYENABLE]&lt;br /&gt;+set_dft_signal -view existing_dft -type Constant -active_state 1 -port [get_port TESTC405TESTMODE]&lt;br /&gt;+set_dft_signal -view existing_dft -type Constant -active_state 1 -port [get_port JTGC405TRSTNEG]&lt;br /&gt;+set_dft_signal -view existing_dft -type Constant -active_state 1 -port [get_port CPMC405CPUCLKENCCLK]&lt;br /&gt;+set_dft_signal -view existing_dft -type Constant -active_state 1 -port [get_port CPMC405TIMERCLKENCCLK]&lt;br /&gt;+set_dft_signal -view existing_dft -type Constant -active_state 1 -port [get_port CPMC405JTAGCLKENCCLK]&lt;br /&gt;&lt;br /&gt; ## Set the default test parameters&lt;br /&gt; set test_default_period        100&lt;br /&gt;@@ -88,19 +89,21 @@&lt;br /&gt;&lt;br /&gt; set test_stil_netlist_format verilog&lt;br /&gt;&lt;br /&gt;-set_dft_optimization_configuration -preserve_design_name true&lt;br /&gt;+set_dft_insertion_configuration -preserve_design_name true&lt;br /&gt; set_scan_configuration -style multiplexed_flip_flop&lt;br /&gt;-set_scan_configuration -methodology full_scan&lt;br /&gt;-set_scan_configuration -dedicated_scan_ports true&lt;br /&gt;+set_scan_configuration -create_dedicated_scan_out_ports true&lt;br /&gt; set_scan_configuration -add_lockup true&lt;br /&gt; set_scan_configuration -clock_mixing mix_clocks&lt;br /&gt;-set_scan_configuration -rebalance false&lt;br /&gt;-set_scan_configuration -internal_clocks false&lt;br /&gt;+set_scan_configuration -internal_clocks none&lt;br /&gt; set_scan_configuration -hierarchical_isolation false&lt;br /&gt; set_scan_configuration -create_test_clocks_by_system_clock_domain false&lt;br /&gt;-set_scan_configuration -disable true&lt;br /&gt;-set_scan_configuration -bidi input&lt;br /&gt;-set_scan_configuration -insert_end_of_chain_lockup_latch true&lt;br /&gt;+#set_scan_configuration -disable true&lt;br /&gt;+set_dft_configuration -fix_bidirectional enable&lt;br /&gt;+set_dft_configuration -fix_clock enable&lt;br /&gt;+set_dft_configuration -fix_reset enable&lt;br /&gt;+set_dft_configuration -fix_bus enable&lt;br /&gt;+#set_scan_configuration -insert_end_of_chain_lockup_latch true&lt;br /&gt;+set_scan_configuration -insert_terminal_lockup true&lt;br /&gt;&lt;br /&gt; ## Need to specify the number of chains.&lt;br /&gt; set_scan_configuration -chain_count 8&lt;br /&gt;@@ -108,5 +111,5 @@&lt;br /&gt;&lt;br /&gt; # set the latches in the design to transperent mode&lt;br /&gt; # Make sure that your latch variable is set in the setup.tcl file&lt;br /&gt;-set_scan_transparent true ${LIBRARY_NAME}/$LATCH_NAMES -existing&lt;br /&gt;+#set_scan_transparent true ${LIBRARY_NAME}/$LATCH_NAMES -existing&lt;br /&gt;&lt;br /&gt;diff -ru ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/run_compile.csh ./dc/run_compile.csh&lt;br /&gt;--- ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/run_compile.csh        2005-10-17 16:31:05.000000000 +0100&lt;br /&gt;+++ ./dc/run_compile.csh        2009-11-09 18:08:54.904611366 +0000&lt;br /&gt;@@ -3,6 +3,9 @@&lt;br /&gt; # **************************************************************************&lt;br /&gt; #&lt;br /&gt; #  Copyright (c) International Business Machines Corporation, 2004.&lt;br /&gt;+#&lt;br /&gt;+#  Modified by Dr Matthew Swabey matthew@swabey.org to support the modern&lt;br /&gt;+#  synopsys design tools and techniques.&lt;br /&gt; #&lt;br /&gt; #  This file contains trade secrets and other proprietary and confidential&lt;br /&gt; #  information of International Business Machines Corporation which are&lt;br /&gt;@@ -43,6 +46,7 @@&lt;br /&gt; setenv scan_switch true&lt;br /&gt; setenv bist_switch false&lt;br /&gt; setenv ultra_switch false&lt;br /&gt;+setenv topo_switch false&lt;br /&gt; setenv high_switch false&lt;br /&gt; setenv Test_lic true&lt;br /&gt; setenv Power_lic true&lt;br /&gt;@@ -55,6 +59,7 @@&lt;br /&gt;    echo "  -synth       : synthesize; will elaborate if elab switch is on or no elab db exists"&lt;br /&gt;    echo "  -dft         : Stitches scan chain; valid only if a synthesis is completed first"&lt;br /&gt;    echo "  -ultra       : use Ultra options that require an Ultra-Opt license"&lt;br /&gt;+   echo "  -topo        : use Topographical synthesis"&lt;br /&gt;    echo "  -high        : high effort compile"&lt;br /&gt;    echo "  -bist        : Add Memory BIST to the design"&lt;br /&gt;    echo "  -no_scan     : Do not use -scan with the compile options that require a Test-Compiler license"&lt;br /&gt;@@ -100,6 +105,9 @@&lt;br /&gt;        case x-ultra:&lt;br /&gt;            setenv ultra_switch true&lt;br /&gt;            breaksw&lt;br /&gt;+       case x-topo:&lt;br /&gt;+           setenv topo_switch true&lt;br /&gt;+           breaksw&lt;br /&gt;        case x-high:&lt;br /&gt;            setenv high_switch true&lt;br /&gt;            breaksw&lt;br /&gt;@@ -115,6 +123,7 @@&lt;br /&gt;            echo "  -bist               : Add Memory BIST to the design"&lt;br /&gt;            echo "  -no_scan            : Do not use -scan with the compile options that require a Test-Compiler license"&lt;br /&gt;            echo "  -ultra              : use Ultra options that require an Ultra-Opt license"&lt;br /&gt;+           echo "  -topo               : use Topographical synthesis"&lt;br /&gt;            echo "  -no_scan            : Do not use -scan with the compile options that require an Test-Compiler license"&lt;br /&gt;            echo "  -no_power           : Do not use Power Compiler to add clock gating to the design"&lt;br /&gt;            echo "  -clean_all          : Deletes all reports and dbs in the pass directories"&lt;br /&gt;@@ -125,6 +134,7 @@&lt;br /&gt;            echo "  -synth              : synthesize; will elaborate if elab switch is on or no elab db exists"&lt;br /&gt;            echo "  -dft                : Stitches scan chain; valid only if a synthesis completed first"&lt;br /&gt;            echo "  -ultra              : use Ultra options that require an Ultra-Opt license"&lt;br /&gt;+           echo "  -topo               : use Topographical synthesis"&lt;br /&gt;            echo "  -bist               : Add Memory BIST to the design"&lt;br /&gt;            echo "  -no_scan            : Do not use -scan with the compile options that require an Test-Compiler license"&lt;br /&gt;            echo "  -no_power           : Do not use Power Compiler to add clock gating to the design"&lt;br /&gt;@@ -167,7 +177,11 @@&lt;br /&gt;      echo "Elaborating Design"&lt;br /&gt;      echo "##########################################################"&lt;br /&gt;      echo ""&lt;br /&gt;+  if ($topo_switch == true) then&lt;br /&gt;+     dc_shell-t -topo -f ./scripts/p405s_elab.tcl | tee logs/p405s_elab.log&lt;br /&gt;+  else&lt;br /&gt;      dc_shell-t -f ./scripts/p405s_elab.tcl | tee logs/p405s_elab.log&lt;br /&gt;+  endif&lt;br /&gt;      echo ""&lt;br /&gt;      echo "##########################################################"&lt;br /&gt;      echo "Finished Elaboration"&lt;br /&gt;@@ -182,7 +196,11 @@&lt;br /&gt;      echo "Synthesizing Design"&lt;br /&gt;      echo "##########################################################"&lt;br /&gt;      echo ""&lt;br /&gt;+  if ($topo_switch == true) then&lt;br /&gt;+     dc_shell-t -topo -f ./scripts/p405s_compile.tcl | tee logs/p405s_compile.log&lt;br /&gt;+  else&lt;br /&gt;      dc_shell-t -f ./scripts/p405s_compile.tcl | tee logs/p405s_compile.log&lt;br /&gt;+  endif&lt;br /&gt;      echo ""&lt;br /&gt;      echo "##########################################################"&lt;br /&gt;      echo "Finished Synthesis"&lt;br /&gt;@@ -197,7 +215,11 @@&lt;br /&gt;      echo "Stitching scan chains"&lt;br /&gt;      echo "##########################################################"&lt;br /&gt;      echo ""&lt;br /&gt;+  if ($topo_switch == true) then&lt;br /&gt;+     dc_shell-t -topo -f ./scripts/p405s_dft.tcl | tee logs/p405s_dft.log&lt;br /&gt;+  else&lt;br /&gt;      dc_shell-t -f ./scripts/p405s_dft.tcl | tee logs/p405s_dft.log&lt;br /&gt;+  endif&lt;br /&gt;      echo ""&lt;br /&gt;      echo "##########################################################"&lt;br /&gt;      echo "Finished Stitching scan chains"&lt;br /&gt;@@ -214,6 +236,7 @@&lt;br /&gt; unsetenv scan_switch&lt;br /&gt; unsetenv bist_switch&lt;br /&gt; unsetenv ultra_switch&lt;br /&gt;+unsetenv topo_switch&lt;br /&gt; unsetenv high_switch&lt;br /&gt; unsetenv Test_lic&lt;br /&gt; unsetenv Power_lic&lt;br /&gt;diff -ru ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/scripts/p405s_compile.tcl ./dc/scripts/p405s_compile.tcl&lt;br /&gt;--- ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/scripts/p405s_compile.tcl      2005-10-17 16:31:05.000000000 +0100&lt;br /&gt;+++ ./dc/scripts/p405s_compile.tcl      2009-11-20 20:04:16.248225918 +0000&lt;br /&gt;@@ -3,6 +3,9 @@&lt;br /&gt; #&lt;br /&gt; #  Copyright (c) International Business Machines Corporation, 2005.&lt;br /&gt; #&lt;br /&gt;+#  Modified by Dr Matthew Swabey matthew@swabey.org to support the modern&lt;br /&gt;+#  synopsys design tools and techniques.&lt;br /&gt;+#&lt;br /&gt; #  This file contains trade secrets and other proprietary and confidential&lt;br /&gt; #  information of International Business Machines Corporation which are&lt;br /&gt; #  protected by copyright and other intellectual property rights and shall&lt;br /&gt;@@ -22,6 +25,7 @@&lt;br /&gt; set scan_switch  [getenv scan_switch]&lt;br /&gt; set high_switch  [getenv high_switch]&lt;br /&gt; set ultra_switch [getenv ultra_switch]&lt;br /&gt;+set topo_switch  [getenv topo_switch]&lt;br /&gt;&lt;br /&gt; set SCRIPT compile&lt;br /&gt;&lt;br /&gt;@@ -49,9 +53,9 @@&lt;br /&gt; # Read in elaborated design&lt;br /&gt; #&lt;br /&gt; #=================================================================================&lt;br /&gt;-       set INPUT_DB "./db/${TOPDESIGN}_elab.db"&lt;br /&gt;+       set INPUT_DB "./db/${TOPDESIGN}_elab.ddc"&lt;br /&gt;         if { [file readable $INPUT_DB ] == 1} {&lt;br /&gt;-          read_db $INPUT_DB&lt;br /&gt;+          read_ddc $INPUT_DB&lt;br /&gt;         } else {&lt;br /&gt;           puts "FAILURE: Failed to find $INPUT_DB"&lt;br /&gt;           exit 0&lt;br /&gt;@@ -94,6 +98,7 @@&lt;br /&gt; # At this point we no longer need to suppress the non-unate clock warning&lt;br /&gt; # and we want to know if it happens after the compile.&lt;br /&gt; set suppress_errors {CMD-041 TIM-134}&lt;br /&gt;+&lt;br /&gt; #=================================================================================&lt;br /&gt; #&lt;br /&gt; # Uniquify&lt;br /&gt;@@ -101,7 +106,7 @@&lt;br /&gt; #=================================================================================&lt;br /&gt;         uniquify&lt;br /&gt;        link&lt;br /&gt;-       write_file -format db -hier -o ./db/${FILENAME_PREFIX}_pre_compile.db&lt;br /&gt;+       write_file -format ddc -hier -o ./db/${FILENAME_PREFIX}_pre_compile.ddc&lt;br /&gt;&lt;br /&gt; #=================================================================================&lt;br /&gt; #&lt;br /&gt;@@ -129,28 +134,29 @@&lt;br /&gt; # Compile&lt;br /&gt; #&lt;br /&gt; #=================================================================================&lt;br /&gt;-       if {$ultra_switch == "true"} {&lt;br /&gt;-               set_ultra_optimization true -force&lt;br /&gt;+       set COMPILE_STRING ""&lt;br /&gt;+        if {($Power_lic == "true")} {&lt;br /&gt;+          append $COMPILE_STRING " -gate_clock"&lt;br /&gt;+       }&lt;br /&gt;+       if {$scan_switch == "true"} {&lt;br /&gt;+          append $COMPILE_STRING " -scan"&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;-       if {$high_switch == "true"} {&lt;br /&gt;-               if {$scan_switch == "true"} {&lt;br /&gt;-                       echo "** compile -scan -map_effort high **"&lt;br /&gt;-                       compile -scan -map_effort high -boundary_optimization&lt;br /&gt;-               } else {&lt;br /&gt;-                       echo "** compile -map_effort high **"&lt;br /&gt;-                       compile -map_effort high -boundary_optimization&lt;br /&gt;-               }&lt;br /&gt;+       if {$ultra_switch == "true" | $topo_switch == "true"} {&lt;br /&gt;+          set COMPILE_STRING "compile_ultra ${COMPILE_STRING} "&lt;br /&gt;+          echo "** " ${COMPILE_STRING} " **"&lt;br /&gt;+          eval ${COMPILE_STRING}&lt;br /&gt;        } else {&lt;br /&gt;-               if {$scan_switch == "true"} {&lt;br /&gt;-                       echo "** compile -scan **"&lt;br /&gt;-                       compile -scan -effort medium -boundary_optimization&lt;br /&gt;-               } else {&lt;br /&gt;-                       echo "** compile  **"&lt;br /&gt;-                       compile -effort medium -boundary_optimization&lt;br /&gt;-               }&lt;br /&gt;+          if {$high_switch == "true"} {&lt;br /&gt;+            set COMPILE_STRING "compile ${COMPILE_STRING} -map_effort high -boundary_optimization"&lt;br /&gt;+            echo "** " ${COMPILE_STRING} " **"&lt;br /&gt;+            eval ${COMPILE_STRING}&lt;br /&gt;+          } else {&lt;br /&gt;+            set COMPILE_STRING "compile ${COMPILE_STRING} -map_effort medium -boundary_optimization"&lt;br /&gt;+            echo "** " ${COMPILE_STRING} " **"&lt;br /&gt;+            eval ${COMPILE_STRING}&lt;br /&gt;+          }&lt;br /&gt;        }&lt;br /&gt;-&lt;br /&gt;         current_design ${TOPDESIGN}&lt;br /&gt;         link&lt;br /&gt;&lt;br /&gt;@@ -163,9 +169,8 @@&lt;br /&gt;                source ./scripts/verilog_name_rules.tcl&lt;br /&gt;                verilog_name_rules&lt;br /&gt;                change_names -rule verilog_name_rule -hierarchy -verbose&lt;br /&gt;-               change_names -rule verilog_name_rule -hierarchy -verbose&lt;br /&gt;        }&lt;br /&gt;-       write_file -format db -hier -o ./db/${FILENAME_PREFIX}.db&lt;br /&gt;+       write_file -format ddc -hier -o ./db/${FILENAME_PREFIX}.ddc&lt;br /&gt;        write -f verilog -hier -o ./netlist/${FILENAME_PREFIX}.v&lt;br /&gt;&lt;br /&gt; #=================================================================================&lt;br /&gt;diff -ru ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/scripts/p405s_dft.tcl ./dc/scripts/p405s_dft.tcl&lt;br /&gt;--- ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/scripts/p405s_dft.tcl  2005-10-17 16:31:05.000000000 +0100&lt;br /&gt;+++ ./dc/scripts/p405s_dft.tcl  2009-11-20 20:58:02.696428891 +0000&lt;br /&gt;@@ -3,6 +3,9 @@&lt;br /&gt; #&lt;br /&gt; #  Copyright (c) International Business Machines Corporation, 2005.&lt;br /&gt; #&lt;br /&gt;+#  Modified by Dr Matthew Swabey matthew@swabey.org to support the modern&lt;br /&gt;+#  synopsys design tools and techniques.&lt;br /&gt;+#&lt;br /&gt; #  This file contains trade secrets and other proprietary and confidential&lt;br /&gt; #  information of International Business Machines Corporation which are&lt;br /&gt; #  protected by copyright and other intellectual property rights and shall&lt;br /&gt;@@ -17,6 +20,7 @@&lt;br /&gt; #=================================================================================&lt;br /&gt; # This script inserts scan&lt;br /&gt; #=================================================================================&lt;br /&gt;+set high_switch  [getenv high_switch]&lt;br /&gt;&lt;br /&gt; #=================================================================================&lt;br /&gt; #&lt;br /&gt;@@ -43,9 +47,9 @@&lt;br /&gt; # Read in elaborated design&lt;br /&gt; #&lt;br /&gt; #=================================================================================&lt;br /&gt;-       set INPUT_DB ./db/${TOPDESIGN}_compile.db&lt;br /&gt;+       set INPUT_DB ./db/${TOPDESIGN}_compile.ddc&lt;br /&gt;         if { [file readable $INPUT_DB ] == 1} {&lt;br /&gt;-          read_db $INPUT_DB&lt;br /&gt;+          read_ddc $INPUT_DB&lt;br /&gt;         } else {&lt;br /&gt;           puts "Error: Failed to find $INPUT_DB"&lt;br /&gt;           exit 0&lt;br /&gt;@@ -53,7 +57,7 @@&lt;br /&gt;&lt;br /&gt;         current_design ${TOPDESIGN}&lt;br /&gt;         link&lt;br /&gt;-        echo "INFO: Elaborated DB file for ${TOPDESIGN} linked at [exec date]"&lt;br /&gt;+        echo "INFO: Elaborated DDC file for ${TOPDESIGN} linked at [exec date]"&lt;br /&gt;&lt;br /&gt;         # Check the design&lt;br /&gt;         echo "INFO: link and check_design output for module ${TOPDESIGN}\n" &amp;gt; \&lt;br /&gt;@@ -82,6 +86,10 @@&lt;br /&gt; # Insert DFT&lt;br /&gt; #=================================================================================&lt;br /&gt;&lt;br /&gt;+if {$high_switch == "true"} {&lt;br /&gt;+    set_dft_insertion_configuration -map_effort high&lt;br /&gt;+}&lt;br /&gt;+&lt;br /&gt; insert_dft&lt;br /&gt; # check_dft  -verbose  &amp;gt; ./reports/${FILENAME_PREFIX}.check_dft.post.rpt&lt;br /&gt; dft_drc -verbose &amp;gt; ./reports/${FILENAME_PREFIX}.dft_drc.post.rpt&lt;br /&gt;@@ -97,7 +105,7 @@&lt;br /&gt;                change_names -rule verilog_name_rule -hierarchy -verbose&lt;br /&gt;                change_names -rule verilog_name_rule -hierarchy -verbose&lt;br /&gt;        }&lt;br /&gt;-       write_file -format db -hier -o ./db/${FILENAME_PREFIX}.db&lt;br /&gt;+       write_file -format ddc -hier -o ./db/${FILENAME_PREFIX}.ddc&lt;br /&gt;        write -f verilog -hier -o ./netlist/${FILENAME_PREFIX}.v&lt;br /&gt;&lt;br /&gt; #=================================================================================&lt;br /&gt;@@ -126,5 +134,6 @@&lt;br /&gt;&lt;br /&gt; date&lt;br /&gt;&lt;br /&gt;+&lt;br /&gt; exit&lt;br /&gt;&lt;br /&gt;diff -ru ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/scripts/p405s_elab.tcl ./dc/scripts/p405s_elab.tcl&lt;br /&gt;--- ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/scripts/p405s_elab.tcl 2005-10-17 16:31:05.000000000 +0100&lt;br /&gt;+++ ./dc/scripts/p405s_elab.tcl 2009-11-09 18:17:58.598880874 +0000&lt;br /&gt;@@ -3,6 +3,9 @@&lt;br /&gt; #&lt;br /&gt; #  Copyright (c) International Business Machines Corporation, 2005.&lt;br /&gt; #&lt;br /&gt;+#  Modified by Dr Matthew Swabey matthew@swabey.org to support the modern&lt;br /&gt;+#  synopsys design tools and techniques.&lt;br /&gt;+#&lt;br /&gt; #  This file contains trade secrets and other proprietary and confidential&lt;br /&gt; #  information of International Business Machines Corporation which are&lt;br /&gt; #  protected by copyright and other intellectual property rights and shall&lt;br /&gt;@@ -21,9 +24,7 @@&lt;br /&gt; set bist_switch  [getenv bist_switch]&lt;br /&gt;&lt;br /&gt; set template_naming_style "%s_%p"&lt;br /&gt;-set hdlin_enable_vpp TRUE&lt;br /&gt;-set hdlin_preserve_vpp_files true&lt;br /&gt;-set compile_delete_unloaded_sequential_cells false&lt;br /&gt;+#set compile_delete_unloaded_sequential_cells false&lt;br /&gt;&lt;br /&gt; sh rm -rf ./ppc405&lt;br /&gt; define_design_lib ppc405 -path ./ppc405&lt;br /&gt;@@ -48,16 +49,26 @@&lt;br /&gt; set TOPDESIGN $design_name&lt;br /&gt; set FILENAME_PREFIX ${TOPDESIGN}_${SCRIPT}&lt;br /&gt;&lt;br /&gt;+&lt;br /&gt; #=================================================================================&lt;br /&gt; #&lt;br /&gt; # Read in design files&lt;br /&gt; #&lt;br /&gt; #=================================================================================&lt;br /&gt; # read all files in ppc_405s_cpu directory except the following behavioral models&lt;br /&gt;-set acs_exclude_list [concat $acs_exclude_list "PPC405F5V1_soft.v SRAM_256wordsX44bits.v"]&lt;br /&gt;+set RTL_SRC_PATH ../src/rtl/&lt;br /&gt;+set RTL_SRC_LIST [list]&lt;br /&gt;+foreach FILE [glob -nocomplain -type f -directory $RTL_SRC_PATH -tails *.v] {&lt;br /&gt;+  lappend RTL_SRC_LIST $FILE&lt;br /&gt;+}&lt;br /&gt;+&lt;br /&gt;+set RTL_SRC_LIST [ lsearch -all -inline -not -exact $RTL_SRC_LIST PPC405F5V1_soft.v ]&lt;br /&gt;+set RTL_SRC_LIST [ lsearch -all -inline -not -exact $RTL_SRC_LIST SRAM_256wordsX44bits.v ]&lt;br /&gt;&lt;br /&gt; # if bist enabled&lt;br /&gt; if {($bist_switch == "true")} {&lt;br /&gt;+       echo "NOT UPDATED YET"&lt;br /&gt;+       exit&lt;br /&gt;        echo "** BIST ENABLED **"&lt;br /&gt;        set acs_exclude_list [concat $acs_exclude_list "p405s_DCU_parityRAM.v"]&lt;br /&gt;        set acs_exclude_list [concat $acs_exclude_list "p405s_DCU_ram16K.v"]&lt;br /&gt;@@ -79,9 +90,10 @@&lt;br /&gt; # if the User Specific RAMs option is set in the Configure Activity&lt;br /&gt; set memory_wrappers " "&lt;br /&gt; set memory_wrappers [concat ../src/mem_models/p405s_dataram_64X34_wrapper.v  ../src/mem_models/p405s_sram256x46_wrapper.v ../src/mem_models/p405s_sram256x48_wrapper.v ../src/mem_models/p405s_sram512x128_wrapper.v ../src/mem_models/p405s_sram512x32_wrapper.v ../src/mem_models/p405s_sram512x8_wrapper.v ../src/mem_models/p405s_sramBytWr512x128_wrapper.v]&lt;br /&gt;-set acs_hdl_source [concat $memory_wrappers ../src/rtl/p405s_params.v $acs_hdl_source "../src/rtl"]&lt;br /&gt;+set RTL_SRC_LIST [concat $memory_wrappers ../src/rtl/p405s_params.v $RTL_SRC_LIST]&lt;br /&gt;&lt;br /&gt;-acs_read_hdl -recurse -format verilog -library ppc405 -verbose $TOPDESIGN -no_elaborate&lt;br /&gt;+lappend search_path ../src/rtl&lt;br /&gt;+analyze -library ppc405 -format verilog $RTL_SRC_LIST&lt;br /&gt;&lt;br /&gt; #=================================================================================&lt;br /&gt; #&lt;br /&gt;@@ -133,28 +145,14 @@&lt;br /&gt; # Elaborate the design&lt;br /&gt; #&lt;br /&gt; #=================================================================================&lt;br /&gt;-if {($Power_lic == "true")} {&lt;br /&gt;-  elaborate -library ppc405 -gate_clock $TOPDESIGN&lt;br /&gt;-} else {&lt;br /&gt;-  elaborate -library ppc405 $TOPDESIGN&lt;br /&gt;-}&lt;br /&gt;&lt;br /&gt;-#=================================================================================&lt;br /&gt;-#&lt;br /&gt;-# Connect the scan enable port to control the gated clock cells&lt;br /&gt;-#&lt;br /&gt;-#=================================================================================&lt;br /&gt;-if {($Power_lic == "true")} {&lt;br /&gt;-   set_scan_signal test_scan_enable -port [get_port TESTC405SCANENABLE]&lt;br /&gt;-   set_dft_signal test_mode         -port [get_port TESTC405TESTMODE]&lt;br /&gt;-   hookup_testports -verbose&lt;br /&gt;-}&lt;br /&gt;+elaborate -library ppc405 $TOPDESIGN&lt;br /&gt;&lt;br /&gt; #=================================================================================&lt;br /&gt; #&lt;br /&gt; # Write out elaborated design&lt;br /&gt; #&lt;br /&gt; #=================================================================================&lt;br /&gt;-write -f db -hier -o $acs_work_dir/db/${FILENAME_PREFIX}.db&lt;br /&gt;+write -f ddc -hier -o ./db/${FILENAME_PREFIX}.ddc&lt;br /&gt;&lt;br /&gt; exit&lt;br /&gt;diff -ru ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/scripts/p405s_zerowlm.tcl ./dc/scripts/p405s_zerowlm.tcl&lt;br /&gt;--- ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/scripts/p405s_zerowlm.tcl      2005-10-17 16:31:05.000000000 +0100&lt;br /&gt;+++ ./dc/scripts/p405s_zerowlm.tcl      2009-11-20 20:04:35.505970139 +0000&lt;br /&gt;@@ -45,9 +45,9 @@&lt;br /&gt; # Read in elaborated design&lt;br /&gt; #&lt;br /&gt; #=================================================================================&lt;br /&gt;-       set INPUT_DB "./db/${TOPDESIGN}_elab.db"&lt;br /&gt;+       set INPUT_DB "./db/${TOPDESIGN}_elab.ddc"&lt;br /&gt;         if { [file readable $INPUT_DB ] == 1} {&lt;br /&gt;-          read_db $INPUT_DB&lt;br /&gt;+          read_ddc $INPUT_DB&lt;br /&gt;         } else {&lt;br /&gt;           puts "FAILURE: Failed to find $INPUT_DB"&lt;br /&gt;           exit 0&lt;br /&gt;@@ -55,7 +55,7 @@&lt;br /&gt;&lt;br /&gt;         current_design ${TOPDESIGN}&lt;br /&gt;         link&lt;br /&gt;-        echo "INFO: Elaborated DB file for ${TOPDESIGN} linked at [exec date]"&lt;br /&gt;+        echo "INFO: Elaborated DDC file for ${TOPDESIGN} linked at [exec date]"&lt;br /&gt;&lt;br /&gt;         # Check the design&lt;br /&gt;         echo "INFO: link and check_design output for module ${TOPDESIGN}\n" &amp;gt; \&lt;br /&gt;@@ -104,7 +104,7 @@&lt;br /&gt; #=================================================================================&lt;br /&gt;         uniquify&lt;br /&gt;        link&lt;br /&gt;-       write_file -format db -hier -o ./db/${FILENAME_PREFIX}_pre_compile.db&lt;br /&gt;+       write_file -format ddc -hier -o ./db/${FILENAME_PREFIX}_pre_compile.ddc&lt;br /&gt;&lt;br /&gt; #=================================================================================&lt;br /&gt; #&lt;br /&gt;@@ -159,7 +159,7 @@&lt;br /&gt;                change_names -rule verilog_name_rule -hierarchy -verbose&lt;br /&gt;        }&lt;br /&gt;        write -f verilog -hier -o ./netlist/${FILENAME_PREFIX}.v&lt;br /&gt;-       write_file -format db -hier -o ./db/${FILENAME_PREFIX}.db&lt;br /&gt;+       write_file -format ddc -hier -o ./db/${FILENAME_PREFIX}.ddc&lt;br /&gt;&lt;br /&gt; #=================================================================================&lt;br /&gt; #&lt;br /&gt;diff -ru ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/scripts/setup.tcl ./dc/scripts/setup.tcl&lt;br /&gt;--- ../../IBM/DW_ppc405-FS_iv_1.0a_AV/dc/scripts/setup.tcl      2005-10-17 16:31:05.000000000 +0100&lt;br /&gt;+++ ./dc/scripts/setup.tcl      2009-11-09 18:17:58.609879585 +0000&lt;br /&gt;@@ -3,6 +3,9 @@&lt;br /&gt; #&lt;br /&gt; #  Copyright (c) International Business Machines Corporation, 2005.&lt;br /&gt; #&lt;br /&gt;+#  Modified by Dr Matthew Swabey matthew@swabey.org to support the modern&lt;br /&gt;+#  synopsys design tools and techniques.&lt;br /&gt;+#&lt;br /&gt; #  This file contains trade secrets and other proprietary and confidential&lt;br /&gt; #  information of International Business Machines Corporation which are&lt;br /&gt; #  protected by copyright and other intellectual property rights and shall&lt;br /&gt;@@ -10,7 +13,7 @@&lt;br /&gt; #  or used for any purpose except as specifically authorized in writing by&lt;br /&gt; #  International Business Machines Corporation. This notice must be&lt;br /&gt; #  contained as part of this text at all times.&lt;br /&gt;-#&lt;br /&gt;+#&lt;br /&gt; # **************************************************************************&lt;br /&gt; #&lt;br /&gt; #===========================================================================&lt;br /&gt;@@ -128,30 +131,46 @@&lt;br /&gt; #  create the MilkyWay database.&lt;br /&gt; #----------------------------------------------------------------------------&lt;br /&gt; set lib_path ../tech_lib&lt;br /&gt;-#set MW_REF_LIB [list ${lib_path}/artisan_13lvfsg/astro/artisan_13lvfsg_mdb \&lt;br /&gt;-#                     ${lib_path}/artisan_13lvfsg/syn/dataram_64X34 \&lt;br /&gt;-#                     ${lib_path}/memories/artisan_13lvfsg/mdb/sram256x46 \&lt;br /&gt;-#                     ${lib_path}/memories/artisan_13lvfsg/mdb/sram256x48 \&lt;br /&gt;-#                     ${lib_path}/memories/artisan_13lvfsg/mdb/sram512x128 \&lt;br /&gt;-#                     ${lib_path}/memories/artisan_13lvfsg/mdb/sram512x32 \&lt;br /&gt;-#                     ${lib_path}/memories/artisan_13lvfsg/mdb/sram512x8 \&lt;br /&gt;-#                     ${lib_path}/memories/artisan_13lvfsg/mdb/sramBytWr512x128 ]&lt;br /&gt;+set MW_REF_LIB [list ${lib_path}/artisan_13lvfsg/astro/artisan_13lvfsg_mdb \&lt;br /&gt;+                     ${lib_path}/artisan_13lvfsg/syn/dataram_64X34 \&lt;br /&gt;+                     ${lib_path}/memories/artisan_13lvfsg/mdb/sram256x46 \&lt;br /&gt;+                     ${lib_path}/memories/artisan_13lvfsg/mdb/sram256x48 \&lt;br /&gt;+                     ${lib_path}/memories/artisan_13lvfsg/mdb/sram512x128 \&lt;br /&gt;+                     ${lib_path}/memories/artisan_13lvfsg/mdb/sram512x32 \&lt;br /&gt;+                     ${lib_path}/memories/artisan_13lvfsg/mdb/sram512x8 \&lt;br /&gt;+                     ${lib_path}/memories/artisan_13lvfsg/mdb/sramBytWr512x128 ]&lt;br /&gt; set MW_TECH_FILE ${lib_path}/artisan_13lvfsg/apollo/tf/tsmc13fsg_hs_6lm.tf&lt;br /&gt;-set MAX_TLUPLUS ${lib_path}/star-rc/t013s6ml_lowklv.tluplus&lt;br /&gt;-set NOM_TLUPLUS ${lib_path}/star-rc/t013s6ml_lowklv.tluplus&lt;br /&gt;-set MIN_TLUPLUS ${lib_path}/star-rc/t013s6ml_lowklv.tluplus&lt;br /&gt;-set MAP_FILE    ${lib_path}/star-rc/plib2itf.map&lt;br /&gt;-#&lt;br /&gt;+&lt;br /&gt;+set MW_DESIGN_LIBRARY ./mw.db&lt;br /&gt;+&lt;br /&gt;+echo $MW_REF_LIB&lt;br /&gt;+&lt;br /&gt;+if {$synopsys_program_name == "dc_shell"}  {&lt;br /&gt;+  if {[shell_is_in_topographical_mode]} {&lt;br /&gt;+    if {[expr {![file isdirectory $MW_DESIGN_LIBRARY ]}]} {&lt;br /&gt;+      echo "INFO: Milkyway libary not found. Creating a new one."&lt;br /&gt;+      create_mw_lib -technology $MW_TECH_FILE -mw_reference_library $MW_REF_LIB $MW_DESIGN_LIBRARY&lt;br /&gt;+    }&lt;br /&gt;+    open_mw_lib $MW_DESIGN_LIBRARY&lt;br /&gt;+    check_library&lt;br /&gt;+  }&lt;br /&gt;+}&lt;br /&gt;+&lt;br /&gt; #----------------------------------------------------------------------------&lt;br /&gt; # Use TLUPlus for RC Computation&lt;br /&gt;-# If you do not have TLUPlus, Comment out the following lines&lt;br /&gt;+# If you do not have TLUPlus, Comment out the following&lt;br /&gt; #----------------------------------------------------------------------------&lt;br /&gt;-# -tech2itf_map  $MAP_FILE&lt;br /&gt;+set MAX_TLUPLUS ${lib_path}/star-rc/t013s6ml_lowklv.tluplus&lt;br /&gt;+set NOM_TLUPLUS ${lib_path}/star-rc/t013s6ml_lowklv.tluplus&lt;br /&gt;+set MIN_TLUPLUS ${lib_path}/star-rc/t013s6ml_lowklv.tluplus&lt;br /&gt;+set MAP_FILE    ${lib_path}/star-rc/tf2itf.map&lt;br /&gt;+&lt;br /&gt; if { [info exists synopsys_program_name] } {&lt;br /&gt;-   if { [regexp {^psyn} $synopsys_program_name] } {&lt;br /&gt;+   if { [regexp {^psyn} $synopsys_program_name] | [shell_is_in_topographical_mode] } {&lt;br /&gt;        set_tlu_plus_files -max_tluplus $MAX_TLUPLUS \&lt;br /&gt;                         -min_tluplus $MIN_TLUPLUS \&lt;br /&gt;-                       -plib2itf_map $MAP_FILE&lt;br /&gt;+                       -tech2itf_map $MAP_FILE&lt;br /&gt;+       check_tlu_plus_files&lt;br /&gt;    }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;5) Save this file as fix_dc.diff in the same directory as the script - they must be in the same directory for this to work.&lt;br /&gt;&lt;br /&gt;6) Open a terminal and cd into the top of the workspace you have created. Execute the script and you should see the following output:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;patching file ./dc/constraints/PPC405F5V1_functional.cons&lt;br /&gt;patching file ./dc/constraints/PPC405F5V1_test.cons&lt;br /&gt;patching file ./dc/run_compile.csh&lt;br /&gt;patching file ./dc/scripts/p405s_compile.tcl&lt;br /&gt;patching file ./dc/scripts/p405s_dft.tcl&lt;br /&gt;patching file ./dc/scripts/p405s_elab.tcl&lt;br /&gt;patching file ./dc/scripts/p405s_zerowlm.tcl&lt;br /&gt;patching file ./dc/scripts/setup.tcl&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;7) &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd&lt;/span&gt; into the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dc&lt;/span&gt; directory of your workspace and run the following command: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;./run_compile.csh -elab -synth -dft&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;8) Eventually you should have a lovely PowerPC™ 405 gate level netlist in &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;./dc/netlist&lt;/span&gt; ...&lt;br /&gt;&lt;br /&gt;9) ...&lt;br /&gt;&lt;br /&gt;10) Profit!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Published with permission from IBM and Synopsys&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-4651965030013113545?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4651965030013113545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4651965030013113545'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/12/ibm-powerpc-405-s-synthesis-of-rtl-with.html' title='IBM PowerPC™  405-S: Synthesis of the RTL with the supplied Artisan Cell Library'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-3389057581855485402</id><published>2009-11-06T17:52:00.012Z</published><updated>2009-12-09T14:53:01.733Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cadence'/><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerPC'/><title type='text'>IBM PowerPC™ 405-S: Verification of the RTL with the supplied Artisan SRAMs</title><content type='html'>[Please note that these instructions reference the 1.00a version of the Synopsys PowerPC™ 405-S coreKit which is the version provided in the University IP package from IBM. There are updated versions available from Synopsys that address several of the issues outlined below. These are specifically commented on where known.]&lt;br /&gt;&lt;br /&gt;This is the second article in the series (&lt;a href="http://mattaw.blogspot.com/2009/11/getting-started-with-synthesizable-ibm.html"&gt;click here for the series index&lt;/a&gt;) describing the IBM PowerPC™ 405 synthesizable core and peripherals and will cover what needs to be done to take the IP and get the RTL simulating with the modern versions of the necessary Synopsys Tools and a simulator of your choice. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Initial Unpacking&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;When you first unpack the DesignWare PowerPC405-S™ implementation view coreKit (the archive is called &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DW_ppc405-FS_iv_1.0a_AV.tar.gz&lt;/span&gt;) it expands to a directory &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DW_ppc405-FS_iv_1.0a_AV.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The first thing you should do is begin reading the excellently written User Guide (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;docs/405_ivug.pdf&lt;/span&gt;) which provides the suggested flows along with the Release Note (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;docs/iv_rn.pdf&lt;/span&gt;) that specifies the tools and environment with which you need to build the processor.&lt;br /&gt;&lt;br /&gt;However the software versions requested by the release note to simulate the RTL is problematic. I have listed below the required software in black, the lowest version available in  &lt;span style="color: red;"&gt;red&lt;/span&gt; and the highest version available at time of writing in &lt;span style="color: blue;"&gt;blue&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Required:&lt;/b&gt; &lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.synopsys.com/home.aspx"&gt;Synopsys&lt;/a&gt; coreConsultant, Version V-2004.03-CT4.4.2 &lt;span style="color: red;"&gt;Z-2007.06-SP5&lt;/span&gt; &lt;span style="color: blue;"&gt;C-2009.06-3&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Synopsys Vera System Verifier, Version 6.3.0 &lt;span style="color: red;"&gt;Z-2006.12&lt;/span&gt; &lt;span style="color: blue;"&gt;A-2007.12-12&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Synopsys Design Compiler, Version U-2004.06-SP2 &lt;span style="color: red;"&gt;Z-2007.03-SP2&lt;/span&gt; &lt;span style="color: blue;"&gt;C-2009.06-SP2&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;One of:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Synopsys VCS, Version 7.1 &lt;span style="color: red;"&gt;Y-2006.06-SP1&lt;/span&gt; &lt;span style="color: blue;"&gt;C-2009.06-1&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mentor.com/"&gt;Mentor Graphics ModelSim&lt;/a&gt;, Version 5.7g &lt;span style="color: blue;"&gt;6.5c&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cadence.com/"&gt;Cadence&lt;/a&gt; NC-Verilog, Version 5.1 &lt;span style="color: blue;"&gt;8.1&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;As you can see the specified tool versions are simply not available.&lt;br /&gt;[Note: at the time of publication the current commercial coreKit is version 3, not the version 1.0a discussed here and supports the current generation of tools.]&lt;br /&gt;&lt;br /&gt;In the following sections I will describe how to get the PowerPC 405 verified with the following tool set:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;coreTools C-2009.06&lt;/li&gt;&lt;li&gt;DC Ultra B-2008.09&lt;/li&gt;&lt;li&gt;DesignWare 2009.06a&lt;br /&gt;&lt;/li&gt;&lt;li&gt;vera A-2007.12&lt;/li&gt;&lt;li&gt;NC-Verilog (Integrated Unified Simulator) 8.1&lt;/li&gt;&lt;/ol&gt;Before you proceed further be sure that all the necessary environment variables from the documentation are set and the correct executables are the in the path.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Getting Started&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pX0Mn43CzOw/Sse1NxYPovI/AAAAAAAAAC8/pJuNuNgu-Ps/s1600-h/Picture+3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pX0Mn43CzOw/Sse1NxYPovI/AAAAAAAAAC8/pJuNuNgu-Ps/s320/Picture+3.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;The educational distribution doesn't come packaged as a single coreKit file but as a compressed, already installed, coreKit directory. To get started fire up &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;coreConsultant&lt;/span&gt; and select &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;File &amp;gt; New Workspace&lt;/span&gt;. Point the installed coreKit path at the unpacked &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.tar.gz&lt;/span&gt; and choose a directory as the root and a new name for the Workspace. In the following examples we will use the workspace &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;RTLVerification&lt;/span&gt; created in the &lt;i&gt;same&lt;/i&gt; directory as the unpacked coreKit.&lt;br /&gt;&lt;br /&gt;You should now have a directory tree in this root beginning with the name of the workspace. It is similar to the unpacked &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.tar.gz&lt;/span&gt; and populated with &lt;a href="http://en.wikipedia.org/wiki/Symlinks"&gt;symlinks&lt;/a&gt; to some of the original files.&lt;br /&gt;&lt;br /&gt;Choose the built in Artisan 130LVFSG RAM models and proceed to the simulation stage (I will discuss integrating custom SRAMs in a later article).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Verification by Simulation: Initial Experiences&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;When you have successfully moved onto the "Verify Component" stage things are not so simple. As we are going to use NC Verilog be sure to choose NC_Verilog as the simulator and ensure the relevant paths are set correctly. Leave the rest of the options at their default values.&lt;br /&gt;&lt;br /&gt;[Note: All the issues listed here (and some more of the same) are solved with one comprehensive script and a few instructions in the section below. This section is here to detail what kind of issues you may face and how to solve them to allow you to debug your own installations should this be necessary.]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Building the Vera Objects&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The design of the simulation/test environment uses Vera testbench tool to provide compiled simulation objects that surround the Verilog core and a few other Verilog modules and test vectors. We need to compile these Vera objects and we do that by opening a terminal in the Workspace directory we have created (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;RTLVerification&lt;/span&gt;). Then execute this series of commands in the terminal:&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;cd sim/vera/src&lt;br /&gt;&lt;br /&gt;./build_vro&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The script will generate several screens full of output with no errors (a few warnings do appear). You can check the content of the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sim/vera/lib&lt;/span&gt; directory and see the compiled &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.vro&lt;/span&gt; objects.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Running the Simulation&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;When you hit "simulate" you are faced with the following error message:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pX0Mn43CzOw/SseypQe-ziI/AAAAAAAAAC0/ZnCd_U4vRGs/s1600-h/Picture+2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_pX0Mn43CzOw/SseypQe-ziI/AAAAAAAAAC0/ZnCd_U4vRGs/s400/Picture+2.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;For some reason several script files are not correctly linked into the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;RTLVerification/sim/&lt;/span&gt; directory, but it is easy to fix.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Open the terminal and navigate into the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sim/&lt;/span&gt; directory:&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd sim/&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ln -s ../../DW_ppc405-FS_iv_1.0a_AV/sim/build_pli_* ./&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;[Note that you must have the directories setup as discussed or change the command to where the you unpacked the original coreKit directory]&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Unfortunately we are not quite out of the woods yet, as the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;build_pli_nc.sh &lt;/span&gt; has to be run by hand to build the binary link between Vera and NC_Verilog. If your environment variables are set correctly then this will complete without error leaving behind the binary file &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;libpli.so&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;[Note that you need to have a 64 bit version of Vera for a 64 bit simulator and 32 bit for 32 bit. If you are building for a 32 bit simulator and 32 bit Vera on 64 bit linux edit the pli script to add an&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; -m32 &lt;/span&gt;immediately after "gcc" in the compile line and "gcc" in the link line, e.g.:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;elif [ `uname` = "Linux" ]; then&lt;br /&gt;     gcc -m32 -fPIC -c -I$VERA_HOME/lib/vlog -I$CDS_INST_DIR/tools/verilog/include $VERA_HOME/lib/vlog/veriuser.c&lt;br /&gt;     gcc -m32 -shared -o libpli.so veriuser.o $VERA_HOME/lib/vlog/libSysSciTaskpic.a&lt;br /&gt;&lt;/pre&gt;] &lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;Retrying the simulation in the coreConsultant GUI produces the following result almost instantly:&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pX0Mn43CzOw/Sse88BBuhtI/AAAAAAAAADE/HRxjbw2cpfs/s1600-h/Picture+4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pX0Mn43CzOw/Sse88BBuhtI/AAAAAAAAADE/HRxjbw2cpfs/s400/Picture+4.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now I think NC Verilog is an excellent simulator however simulating an entire core in a few seconds? No.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;Delving into the scripts reveals another missing file: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sim/runtest&lt;/span&gt;. By using the same procedure as before we can link it in:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd sim/&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ln -s ../../DW_ppc405-FS_iv_1.0a_AV/sim/runtest ./&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;Unfortunately this script is also not in a working condition: It depends on the perl distributed by Synopsys but it is hardcoded to try one only available within IBM. However fortunately Synopsys ships this perl with coreTools. Open the file &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sim/runtest&lt;/span&gt; in your favorite text editor and change the first few lines from:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/afs/raleigh/cadtools/synopsys/dc/2005.09/linux/bin/snpsperl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;require 5.004;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;BEGIN { @INC = ( "/afs/raleigh/cadtools/synopsys/dc/2005.09/linux/lib" ); }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!$YOUR_PATH_TO_CORETOOLS/linux/dware/bin/snpsperl&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;require 5.004;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;BEGIN { @INC = ( "&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$YOUR_PATH_TO_CORETOOLS&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/linux/dware/lib" ); }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;replacing &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"$YOUR_PATH_TO_CORETOOLS"&lt;/span&gt; with the absolute path in your installation.&lt;br /&gt;&lt;br /&gt;Trying to simulate again produces the "instant success" we will come to know and love.&lt;br /&gt;&lt;br /&gt;Another missing file that needs to be linked into our workspace is the Makefile used to run these simulations:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd sim/&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ln -s ../../DW_ppc405-FS_iv_1.0a_AV/sim/Makefile ./&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Unfortunately this &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Makefile&lt;/span&gt; has a similar problem with hardcoded paths that need correcting, as does &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Report.pl&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;runTB&lt;/span&gt; and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;hexFormal.pl&lt;/span&gt;. There are also numerous files that are not linked in. These issues arise from the coreKit being delivered in an installed from compressed into an archive rather than as a .coreKit file. To save you the effort of solving every one of these issues have a look at the next section. :&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Verification by Simulation: Solved&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;[Ensure you have followed the instructions in "Getting Started" above. You should have installed a new workspace and have completed "Specify Configuration" and moved onto "Verify the Component"]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;1) Open your favorite text editor and paste in the following script:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# fix_sim_dir.sh&lt;br /&gt;#&lt;br /&gt;#Copyright Matthew Swabey (matthew@swabey.org).&lt;br /&gt;#&lt;br /&gt;#You are licensed to use this file in conjunction with the IBM PowerPC 405 coreKit and to make modifications as needed to this script as long as this copyright notice is kept.&lt;br /&gt;&lt;br /&gt;#This script should be executed from the the new workspace directory after you have installed it with coreConsultant and progressed past specifying the SRAM technology.&lt;br /&gt;&lt;br /&gt;UNPACKED_COREKIT_DIR=/export/fastcad/disktmp/mas/IBM_PUB2/DW_ppc405-FS_iv_1.0a_AV&lt;br /&gt;SNPS_PERL_EXE=/home/esdcad/software/synopsys/linux/coreTools_B-2008.12-SP1/linux/dware/bin/snpsperl&lt;br /&gt;SNPS_PERL_LIB=/home/esdcad/software/synopsys/linux/coreTools_B-2008.12-SP1/linux/dware/lib&lt;br /&gt;&lt;br /&gt;#Build the vera objects with the version of vera installed&lt;br /&gt;cd ./sim/vera/src&lt;br /&gt;./build_vro&lt;br /&gt;cd ../../..&lt;br /&gt;&lt;br /&gt;#Link in the files needed to build the simulation of the PPC and run the testbenches&lt;br /&gt;ln -s $UNPACKED_COREKIT_DIR/sim/build_pli_* ./sim/&lt;br /&gt;ln -s $UNPACKED_COREKIT_DIR/sim/Makefile ./sim/&lt;br /&gt;ln -s $UNPACKED_COREKIT_DIR/sim/runtest ./sim/&lt;br /&gt;ln -s $UNPACKED_COREKIT_DIR/sim/Report.pl ./sim/&lt;br /&gt;ln -s $UNPACKED_COREKIT_DIR/sim/scripts/hexFormat.pl ./sim/scripts/&lt;br /&gt;ln -s $UNPACKED_COREKIT_DIR/sim/scripts/run405.config ./sim/scripts/&lt;br /&gt;ln -s $UNPACKED_COREKIT_DIR/sim/scripts/runTB ./sim/scripts/&lt;br /&gt;mkdir ./sim/testsuite&lt;br /&gt;ln -s $UNPACKED_COREKIT_DIR/sim/testsuite/* ./sim/testsuite/&lt;br /&gt;ln -s $UNPACKED_COREKIT_DIR/sim/testbench/*.v ./sim/testbench/&lt;br /&gt;ln -s $UNPACKED_COREKIT_DIR/sim/testbench/*.inc ./sim/testbench/&lt;br /&gt;ln -s $UNPACKED_COREKIT_DIR/src/rtl/*.v ./src/rtl/&lt;br /&gt;&lt;br /&gt;#script files needing corrected perl paths separated by a space.&lt;br /&gt;TO_BE_FIXED='./sim/Makefile /sim/runtest ./sim/scripts/hexFormat.pl ./sim/scripts/runTB ./sim/Report.pl'&lt;br /&gt;&lt;br /&gt;function fix_perl_paths {&lt;br /&gt;#Fix the afs paths for snpsperl&lt;br /&gt;sed -i "s:/afs/raleigh/cadtools/synopsys/dc/2005.09/linux/bin/snpsperl:${SNPS_PERL_EXE}:g" $1&lt;br /&gt;sed -i "s:/afs/raleigh/cadtools/synopsys/dc/2005.09/linux/lib:${SNPS_PERL_LIB}:g" $1&lt;br /&gt;#Fix added for runTB&lt;br /&gt;sed -i "s:/global/freeware/SunOS/5.8/perl-5.6.1/bin/perl:${SNPS_PERL_EXE}:g" $1&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;for file in $TO_BE_FIXED; do fix_perl_paths "$UNPACKED_COREKIT_DIR/$file"; done&lt;br /&gt;&lt;br /&gt;#End of script&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2) Edit the top three variables, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;UNPACKED_COREKIT_DIR, SNPS_PERL_EXE &lt;/span&gt;&amp;amp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;SNPS_PERL_LIB&lt;/span&gt; to have the absolute paths to the appropriate executable or directory. There should be no spaces in the paths.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3) Save this file with a suitable name (e.g. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;fix_sim_dir.sh&lt;/span&gt;) in the new workspace you have created. Make the script executable using the command &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;chmod u+x&lt;/span&gt; "filename". When you run it you should see an output that looks like this (but with many more Vera banners):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;++---------------------------------------------------------------------++&lt;br /&gt; ||                     VERA System Verifier (TM)                       ||&lt;br /&gt; ||        Version: A-2007.12 () -- Thu Oct  8 11:35:39 2009            ||&lt;br /&gt; ||             Copyright (c) 1995-2004 by Synopsys, Inc.               ||&lt;br /&gt; ||                      All Rights Reserved                            ||&lt;br /&gt; ||                                                                     ||&lt;br /&gt; ||      For support, send email to vera-support@synopsys.com           ||&lt;br /&gt; ||                                                                     ||&lt;br /&gt; ||  This software and the associated documentation are confidential    ||&lt;br /&gt; ||  and proprietary to Synopsys Inc.  Your use or disclosure of this   ||&lt;br /&gt; ||  software is subject to the terms and conditions of a written       ||&lt;br /&gt; ||  license agreement between you, or your company, and Synopsys, Inc. ||&lt;br /&gt; ++---------------------------------------------------------------------++&lt;br /&gt;Warning: async drive on skewed signal jtag_o.tdi, at 78 in ./p405s_jtag.vr&lt;br /&gt;Warning: async drive on skewed signal jtag_o.tms, at 79 in ./p405s_jtag.vr&lt;br /&gt;Compilation errors: 0&lt;br /&gt; ++---------------------------------------------------------------------++&lt;br /&gt; ||                     VERA System Verifier (TM)                       ||&lt;br /&gt; ||        Version: A-2007.12 () -- Thu Oct  8 11:35:39 2009            ||&lt;br /&gt; ||             Copyright (c) 1995-2004 by Synopsys, Inc.               ||&lt;br /&gt; ||                      All Rights Reserved                            ||&lt;br /&gt; ||                                                                     ||&lt;br /&gt; ||      For support, send email to vera-support@synopsys.com           ||&lt;br /&gt; ||                                                                     ||&lt;br /&gt; ||  This software and the associated documentation are confidential    ||&lt;br /&gt; ||  and proprietary to Synopsys Inc.  Your use or disclosure of this   ||&lt;br /&gt; ||  software is subject to the terms and conditions of a written       ||&lt;br /&gt; ||  license agreement between you, or your company, and Synopsys, Inc. ||&lt;br /&gt; ++---------------------------------------------------------------------++&lt;br /&gt;Compilation errors: 0&lt;br /&gt; ++---------------------------------------------------------------------++&lt;br /&gt; ||                     VERA System Verifier (TM)                       ||&lt;br /&gt; ||        Version: A-2007.12 () -- Thu Oct  8 11:35:39 2009            ||&lt;br /&gt; ||             Copyright (c) 1995-2004 by Synopsys, Inc.               ||&lt;br /&gt; ||                      All Rights Reserved                            ||&lt;br /&gt; ||                                                                     ||&lt;br /&gt; ||      For support, send email to vera-support@synopsys.com           ||&lt;br /&gt; ||                                                                     ||&lt;br /&gt; ||  This software and the associated documentation are confidential    ||&lt;br /&gt; ||  and proprietary to Synopsys Inc.  Your use or disclosure of this   ||&lt;br /&gt; ||  software is subject to the terms and conditions of a written       ||&lt;br /&gt; ||  license agreement between you, or your company, and Synopsys, Inc. ||&lt;br /&gt; ++---------------------------------------------------------------------++&lt;br /&gt;Compilation errors: 0&lt;br /&gt;ln: `./sim/testbench//p405s_rambist_tb.v': File exists&lt;br /&gt;ln: `./sim/testbench//tb_p405s_dataram_64X34_wrapper.v': File exists&lt;br /&gt;ln: `./sim/testbench//tb_p405s_sram256x46_wrapper.v': File exists&lt;br /&gt;ln: `./sim/testbench//tb_p405s_sram256x48_wrapper.v': File exists&lt;br /&gt;ln: `./sim/testbench//tb_p405s_sram512x128_wrapper.v': File exists&lt;br /&gt;ln: `./sim/testbench//tb_p405s_sram512x32_wrapper.v': File exists&lt;br /&gt;ln: `./sim/testbench//tb_p405s_sram512x8_wrapper.v': File exists&lt;br /&gt;ln: `./sim/testbench//tb_p405s_sramBytWr512x128_wrapper.v': File exists&lt;br /&gt;ln: `./src/rtl//PPC405F5V1_soft.v': File exists&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;At this point the script will have built the vro objects using Vera, linked in all the missing files and corrected the paths in the scripts for you.&lt;br /&gt;&lt;br /&gt;4) Enter the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;./sim&lt;/span&gt; directory in the workspace and run the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;build_pli_nc.sh &lt;/span&gt;script by hand to build the binary link between Vera and NC_Verilog. If the environment variables are set correctly then this will complete without problem leaving behind the binary file &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;libpli.so&lt;/span&gt;&lt;br /&gt;[Note that you need to have a 64 bit version of Vera for a 64 bit simulator and 32 bit for 32 bit. If you are building for a 32 bit simulator and Vera on a 64 bit computer edit the scripts to add an&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; -m32 &lt;/span&gt;immediately after "gcc" in the compile line and "gcc" in the link line:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;elif [ `uname` = "Linux" ]; then&lt;br /&gt;     gcc -m32 -fPIC -c -I$VERA_HOME/lib/vlog -I$CDS_INST_DIR/tools/verilog/include $VERA_HOME/lib/vlog/veriuser.c&lt;br /&gt;     gcc -m32 -shared -o libpli.so veriuser.o $VERA_HOME/lib/vlog/libSysSciTaskpic.a&lt;br /&gt;&lt;/pre&gt;]&lt;br /&gt;&lt;br /&gt;5) Return to the coreConsultant GUI, check you have selected the correct test suite, simulator and other variables and click "Apply" to be rewarded with:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pX0Mn43CzOw/Ss3Esv9-VkI/AAAAAAAAADM/nNwhQGcJcyg/s1600-h/Picture+5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pX0Mn43CzOw/Ss3Esv9-VkI/AAAAAAAAADM/nNwhQGcJcyg/s400/Picture+5.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;This will take quite a while, so enjoy a well earned cup of tea/coffee/other until it completes:&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pX0Mn43CzOw/Ss3FFjnlpNI/AAAAAAAAADU/5yuFRMOjd_I/s1600-h/Picture+6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_pX0Mn43CzOw/Ss3FFjnlpNI/AAAAAAAAADU/5yuFRMOjd_I/s400/Picture+6.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;6) Check the reports for anything interesting or anomalous&lt;br /&gt;&lt;br /&gt;7) ... &lt;br /&gt;&lt;br /&gt;8) Profit!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Published with permission from IBM and Synopsys&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-3389057581855485402?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3389057581855485402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3389057581855485402'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/11/ibm-powerpc-405-verification-of-rtl.html' title='IBM PowerPC™ 405-S: Verification of the RTL with the supplied Artisan SRAMs'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pX0Mn43CzOw/Sse1NxYPovI/AAAAAAAAAC8/pJuNuNgu-Ps/s72-c/Picture+3.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-6010036185568909131</id><published>2009-11-06T17:37:00.009Z</published><updated>2011-07-27T15:24:59.984+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerPC'/><title type='text'>IBM PowerPC™ 405-S: Getting started</title><content type='html'>Synthesizable RTL versions of IBM's excellent embeddable PowerPC™ line of processors (the &lt;a href="http://www.synopsys.com/IP/DesignWare/StarIP/Pages/IBMPowerPC.aspx"&gt;405, 460 and the 460 FPU&lt;/a&gt;) are available to SoC designers from &lt;a href="http://www.synopsys.com/IP/DesignWare/StarIP/Pages/Default.aspx"&gt;Synopsys' Star IP Program&lt;/a&gt; and this &lt;a href="http://www.power.org/news/articles/405download/"&gt;Star IP PowerPC™ 405-S is also available to Educators&lt;/a&gt;. Further embeddable PowerPC™ cores for synthesis are also available from &lt;a href="http://www.appliedmicro.com/"&gt;AMCC&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In a series of articles I will show how to take the educational soft IP download, verify the 405 core and put it to work bonded to some of &lt;a href="http://www.synopsys.com/IP/Pages/default.aspx"&gt;Synopsys' DesignWare IP&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Currently the articles in this series are:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1) Getting started with the synthesizable IBM PowerPC405™&lt;/b&gt; (this article)&lt;br /&gt;&lt;b&gt;2) &lt;a href="http://mattaw.blogspot.com/2009/11/ibm-powerpc-405-verification-of-rtl.html"&gt;Verification of the RTL&lt;/a&gt; with the supplied &lt;a href="http://www.arm.com/products/physicalip/logic-libraries.html"&gt;Artisan PDK (now owned by ARM)&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;3) &lt;a href="http://mattaw.blogspot.com/2009/12/ibm-powerpc-405-s-synthesis-of-rtl-with.html"&gt;Synthesis of the RTL&lt;/a&gt; with the supplied &lt;a href="http://www.arm.com/products/physicalip/logic-libraries.html"&gt;Artisan PDK&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;4) &lt;a href="http://mattaw.blogspot.com/2010/01/ibm-powerpc-405-s-verification-of-gate.html"&gt;Verification of the Gate Level Netlist&lt;/a&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It was with great excitement that I received the educational IP by electronic transfer. As is typical with this kind of IP the full details remain secret until the licenses are signed, but with the kind permission of IBM and Synopsys let me lift the veil a little bit for you:&lt;br /&gt;&lt;br /&gt;Here is what you get:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Synopsys PowerPC™ 405-S Design View CoreKit v1.00a&lt;/b&gt; - This enables full, accurate simulations to be carried out to allow evaluation of the core running a software stack&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Synopsys PowerPC™ 405-S Implementation View CoreKit v1.00a&lt;/b&gt; - This bundle contains the verilog RTL of the actual core itself along with a demonstration technology library and the verification tools to enable its functionality to be fully exercised and guaranteed. This view also contains implementation scripts to build the design from RTL through synthesis, DFT, floorplanning, placement and clock tree expansion.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Specifications &lt;/b&gt;- An essential set of manuals describing the exact operation of the core&lt;/li&gt;&lt;li&gt;&lt;b&gt;DDR2 Memory Controller&lt;/b&gt; - IBM's &lt;a href="http://en.wikipedia.org/wiki/CoreConnect"&gt;PLB&lt;/a&gt; DDR2 SDRAM memory controller to allow attachment of off chip SDRAM&lt;/li&gt;&lt;li&gt;&lt;b&gt;SRAM Memory Controller&lt;/b&gt; - This allows a number of internal SRAM (not SDRAM!) blocks to be presented as one continuous memory space on the PLB bus to a master&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;PCIX Controller&lt;/b&gt; - IBM's PLB to &lt;a href="http://en.wikipedia.org/wiki/PCIX"&gt;PCIX&lt;/a&gt; controller&lt;/li&gt;&lt;li&gt;&lt;b&gt;PLB Crossbar Arbiter&lt;/b&gt; - This enables the connection of a large number of PLB masters to one or more slave busses. With this block very complex multicore/multimaster bus structures can be created within an SoC&lt;/li&gt;&lt;li&gt;&lt;b&gt;DMA Controller &lt;/b&gt;- a standard component allowing DMA transfers between peripherals and memory and vice versa&lt;/li&gt;&lt;li&gt;&lt;b&gt;UIC&lt;/b&gt;&lt;b&gt; Controller&lt;/b&gt; - This is the Universal Interrupt Controller, an essential device for any SoC&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;PLB to AHB Bridge&lt;/b&gt; - This is bundled in with the core but is well worth noting - this allows the use of DesignWare IP blocks which are based around the &lt;a href="http://www.arm.com/products/solutions/AMBAHomePage.html"&gt;AMBA bus specification&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Artisan PDK&lt;/b&gt; - For simulation purposes an Artisan 130nm LV PDK is supplied&lt;/li&gt;&lt;li&gt;&lt;b&gt;IBM RISCWatch&lt;/b&gt; - A JTAG debugger to allow full trace and debugging functions on the PowerPC core&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;As you can see it is an embarrassment of riches - a near complete set of IP enabling a basic single core to a complex multicore PowerPC™ 405 based SoC to be realized with only the basic IO IPs outstanding (e.g. no serial port or GPIO).&lt;br /&gt;&lt;br /&gt;Again I should like to say a heartfelt thankyou to IBM and Synopsys for making this IP available to Universities to drive our research and educational programs forward. It is also available to drive commercial embedded designs forward after licensing. &lt;br /&gt;&lt;br /&gt;Note: As it is a Synopsys Star IP this distribution is designed for a number of industry standard simulators and the &lt;a href="http://www.synopsys.com/Tools/Implementation/"&gt;Synopsys Implementation and Signoff tool suite&lt;/a&gt;. The package contains pure Verilog RTL so it is technically possible to use another vendor's synthesis tool but that is well outside the scope of this series of articles (as well as being a very big job).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Published with permission from IBM and Synopsys&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-6010036185568909131?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6010036185568909131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6010036185568909131'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/11/getting-started-with-synthesizable-ibm.html' title='IBM PowerPC™ 405-S: Getting started'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-4941321109301713781</id><published>2009-11-04T23:46:00.003Z</published><updated>2009-11-05T00:30:07.141Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><title type='text'>How to Re-Analyze the DesignWare Building Blocks in Synopsys Design Compiler</title><content type='html'>Design Compiler, sometimes misnamed as dc_shell, includes a selection of datapath primitives called DesignWare Building Blocks (DWBB). Sometimes after a patch or new installation you may find these complaints in your logs:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Error:   Source file for 'DW01_SUB' was not analyzed by this release of the compiler; re-analyze it. (ELAB-343)&lt;br /&gt;Error:   Source file for 'DW01_DEC' was not analyzed by this release of the compiler; re-analyze it. (ELAB-343)&lt;br /&gt;Error:   Source file for 'DW01_INC' was not analyzed by this release of the compiler; re-analyze it. (ELAB-343)&lt;br /&gt;Error:   Source file for 'DW01_ADD' was not analyzed by this release of the compiler; re-analyze it. (ELAB-343)&lt;br /&gt;Error:   Source file for 'DW01_INC' was not analyzed by this release of the compiler; re-analyze it. (ELAB-343)&lt;br /&gt;Error:   Source file for 'DW01_INC' was not analyzed by this release of the compiler; re-analyze it. (ELAB-343)&lt;br /&gt;Error:   Source file for 'DW01_ADD' was not analyzed by this release of the compiler; re-analyze it. (ELAB-343)&lt;br /&gt;Error:   Source file for 'DW01_INC' was not analyzed by this release of the compiler; re-analyze it. (ELAB-343)&lt;br /&gt;Error:   Source file for 'DW01_INC' was not analyzed by this release of the compiler; re-analyze it. (ELAB-343)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;They mean the compiled DWBB library is now out of date in relation to the version of Design Compiler you have. To cure them &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd&lt;/span&gt; to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$SYNOPSYS&lt;/span&gt;, then&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;cd dw/scripts/&lt;br /&gt;./dw_analyze_syn.csh&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and pretty soon you will have a lovely, shiny, new set of DesignWare Building Blocks!&lt;br /&gt;&lt;br /&gt;[Note that this information also applied to VCS but use&lt;br /&gt;&lt;pre&gt;cd dw/scripts/&lt;br /&gt;./dw_analyze_sim.csh&lt;br /&gt;&lt;/pre&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-4941321109301713781?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4941321109301713781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4941321109301713781'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/11/how-to-refresh-designware-building.html' title='How to Re-Analyze the DesignWare Building Blocks in Synopsys Design Compiler'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-5364527440696240979</id><published>2009-09-25T15:18:00.003+01:00</published><updated>2009-09-25T15:20:24.103+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoC'/><title type='text'>"Transmute" - Design Philosopies</title><content type='html'>I realized that I had forgotten to describe a very, very important step: &lt;b&gt;Philosophy&lt;/b&gt;. In this case I am using the word incorrectly. It is actually &lt;a href="http://en.wikipedia.org/wiki/World_view"&gt;&lt;b&gt;World View&lt;/b&gt;&lt;/a&gt; that I mean. From Wikipedia:&lt;br /&gt;&lt;blockquote&gt;"A &lt;b&gt;comprehensive world view&lt;/b&gt; (or &lt;b&gt;worldview&lt;/b&gt;) is the fundamental cognitive orientation of an individual or society encompassing natural philosophy, fundamental existential and normative postulates or themes, values, emotions, and ethics."&lt;br /&gt;&lt;/blockquote&gt;Now what has this to do with chip design? Well you might ask! In this case it is the fundamental underpinnings and assumptions that surround the design.&lt;br /&gt;&lt;br /&gt;The world view is formed from facts and opinions and our emotional reaction to them.&lt;br /&gt;&lt;br /&gt;So here is the list of suitable facts for the "Transmute" project: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;We have only built cell based custom digital cores&lt;/li&gt;&lt;li&gt;None of our typical projects are as large as this&lt;/li&gt;&lt;li&gt;The design flows are not stable - considerable development will be required&lt;/li&gt;&lt;li&gt;Several custom digital modules will be required to interfaced to licensed IP&lt;/li&gt;&lt;li&gt;We can experiment with power saving strategies&lt;/li&gt;&lt;li&gt;We are very experienced with custom analogue blocks &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;What, as a designer, is my emotional reaction to this? Simply this: Excitement and Concern. There are a lot of unknowns.&lt;br /&gt;&lt;br /&gt;Hence our design World View (although a different design will have a different world view):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Digitally Conservative&lt;/li&gt;&lt;li&gt;Analogue Progressive&lt;/li&gt;&lt;/ul&gt;One you articulate this World View clearly you realize that this is the guide for your choices, in our case:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hard IP: Eliminates the risk from core synthesis&lt;/li&gt;&lt;li&gt;Digital part to be separable from the analogue part so we can drive them separately. This will minimize the cost in case of failure or error - we would get at least one working part from the chip&lt;/li&gt;&lt;li&gt;Digital power saving strategies to be applied only after a high confidence in non-power saving digital structures obtained&lt;/li&gt;&lt;li&gt;It must be possible to disable the digital power saving structures if they are added&lt;/li&gt;&lt;li&gt;Flow decisions should favour tools which we have experience with &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;These decisions then guide the rest of the design flow. Also new choices can be matched against the worldview ensuring consistency.&lt;br /&gt;&lt;br /&gt;Just bear in mind, your world view for this design may need modifying as the project progresses however if it does then you need to reconsider most of the work you have already carried out. This is typically far more important if your original plan was aggressive and you move to conservative - check work and assumptions already made!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-5364527440696240979?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5364527440696240979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5364527440696240979'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/09/transmute-design-philosopies.html' title='&quot;Transmute&quot; - Design Philosopies'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-2136494432577800231</id><published>2009-09-16T17:29:00.009+01:00</published><updated>2009-10-01T09:43:50.948+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARM'/><category scheme='http://www.blogger.com/atom/ns#' term='SoC'/><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><title type='text'>The next SoC design - working title "Transmute" begins</title><content type='html'>I have a fun new hobby - designing the digital part of a new, mixed signal SoC which we are building here. It is my intention to blog the full design flow discussing the various challenges and issues as we encounter them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Design Basics&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Foundry&lt;/li&gt;&lt;li&gt;Technology&lt;/li&gt;&lt;li&gt;IP&lt;/li&gt;&lt;li&gt;Flow&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The importance of these choices of these depends on the following thoughts:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What have we done before&lt;/li&gt;&lt;li&gt;Who have we worked with before&lt;/li&gt;&lt;li&gt;What have we got that works&lt;/li&gt;&lt;li&gt;What we need to do and what we would like to do&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Planning a chip begins after you decide the basics above, i.e. foundry, technology and the needed parts and finally tool support. Sometimes in industry you have the luxury of a couple of other choices e.g.:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cell library (we use the ST supplied one but there are others, &lt;a href="http://www.faraday-tech.com/main/IPonline/category.do?method=showIPList&amp;amp;categoryID=3089&amp;amp;categoryName=Standard%20Cell"&gt;Faraday&lt;/a&gt; for example)&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Basic Overview Spec&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Two full custom ADCs for testing and evaluation&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;A single core SoC to test our mixed signal integration and apply tests&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Simple connectivity to the SoC&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Initial Decisions&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;In our case after some mulling over our experiences we decided on:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.st.com/stonline/"&gt;ST Microelectronics &lt;/a&gt;via the &lt;a href="http://cmp.imag.fr/"&gt;Circuits Multi-Projets&lt;/a&gt; MPW broker&lt;/li&gt;&lt;li&gt;Their &lt;a href="http://cmp.imag.fr/products/ic/?p=STHCMOS9"&gt;HCMOS9 130nm process&lt;/a&gt;&lt;/li&gt;&lt;li&gt;IP Blocks (see below)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The flow, more on that later&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;&amp;nbsp;&lt;span style="font-size: large;"&gt;IP Blocks&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As a university our access to IP is somewhat limited. Making a SoC requires quite a few modules like memory controllers etc.&lt;br /&gt;&lt;br /&gt;However to the rescue rides &lt;a href="http://www.synopsys.com/IP/DesignWare/Pages/default.aspx"&gt;Synopsys' DesignWare Library&lt;/a&gt;. It includes a basic selection of AMBA AHB/APB bus connected peripheral set and a memory controller which supports SDRAM and Flash.&lt;br /&gt;&lt;br /&gt;To drive the the DesignWare library is the &lt;a href="http://www.synopsys.com/Pages/results.aspx?k=coretools"&gt;coreTools GUI&lt;/a&gt; (which is surprisingly hard to find) which in a nice graphical environment enables you to construct AMBA bus structures containing DesignWare peripherals. So this drives our choice of some of the tools (coreTools and &lt;a href="http://www.synopsys.com/Tools/Implementation/RTLSynthesis/Pages/DCUltra.aspx"&gt;DesignCompiler&lt;/a&gt; Ultra) as well as their DesignWare basic IP.&lt;br /&gt;&lt;br /&gt;Onto a much more interesting question. What core to use? Considering our other IP is AMBA an ARM is the most likely choice however there are others we might use:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The &lt;a href="http://www.gaisler.com/cms/index.php?option=com_content&amp;amp;task=view&amp;amp;id=13&amp;amp;Itemid=53"&gt;LEON3 from Aeroflex&lt;/a&gt; is a Opensource (GPL), VHDL 32 bit SPARCv8 CPU with an AMBA bus. It is, however, very much bound to its peripheral library and autoconfiguration so would take a lot of work. It would also need to be customised to use the HCMOS9 SRAM blocks&lt;/li&gt;&lt;li&gt;The &lt;a href="https://www-01.ibm.com/chips/techlib/techlib.nsf/products/PowerPC_405_Embedded_Cores"&gt;IBM PPC 405&lt;/a&gt; is a 32 bit PowerPC core designed for embedding which is &lt;a href="http://www.power.org/news/articles/405download/"&gt;licensed to universities for teaching and education&lt;/a&gt;. It is the distribution created for the Synopsys flow which allows easy integration with AMBA peripherals. It is a softcore, i.e. it would need to be synthesised from RTL&lt;/li&gt;&lt;/ul&gt;In this case we wish to reduce our risk and design effort. Licensable from CMP is a foundry guaranteed &lt;a href="http://www.arm.com/products/CPUs/ARM946E-S.html"&gt;ARM946E-S&lt;/a&gt; hard IP (i.e. they have already synthesized it and checked it) on their 130nm process. So we are going ahead with DesignWare soft IP surrounding a hard IP ARM946E-S. The benefits of hard IP are that ST have de-risked the design for us.&lt;br /&gt;&lt;br /&gt;The features of the ARM946E-S are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Excellent compiler/OS/application support. ARM is one of the best supported architectures in both Opensource and commercial software&lt;/li&gt;&lt;li&gt;Small and quick, approximately 3mm&lt;sup&gt;2&lt;/sup&gt; and clocking at 200MHz (both of these are significantly derated estimates at this stage of the design&lt;/li&gt;&lt;li&gt;MMU allowing full OS support&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;In addition we need the following types of IP:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A &lt;a href="http://cmp.imag.fr/aboutus/slides/Slides2009/11_DK_2009.pdf"&gt;PLL&lt;/a&gt; - this is pretty much required for any SoC these days (available from CMP)&lt;/li&gt;&lt;li&gt;Level shifters and isolators - needed to try advanced power saving strategies in digital logic&lt;/li&gt;&lt;/ul&gt;The current initial design of the digital segment of our chip is best shown in a block diagram below:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_pX0Mn43CzOw/SsRruZZdeBI/AAAAAAAAACg/ywwaT3H4Ynw/s1600-h/Transmute_Block_Diagram.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_pX0Mn43CzOw/SsRruZZdeBI/AAAAAAAAACg/ywwaT3H4Ynw/s400/Transmute_Block_Diagram.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;We will talk of flows and the analogue integration later.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-2136494432577800231?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2136494432577800231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2136494432577800231'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/09/next-soc-design-working-title-transmute.html' title='The next SoC design - working title &quot;Transmute&quot; begins'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_pX0Mn43CzOw/SsRruZZdeBI/AAAAAAAAACg/ywwaT3H4Ynw/s72-c/Transmute_Block_Diagram.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-2373913605271817880</id><published>2009-09-03T09:35:00.008+01:00</published><updated>2009-09-18T09:06:14.768+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><title type='text'>The sheer size of an old Sun "midrange" server</title><content type='html'>This one is going back a bit but I have obtained it for legacy support. Its a Sun V880 with 6x UltraSPARC III 750MHz processors and 12GB of RAM. Still a computer to be reckoned with [Update: Spent $50 on a new CPU/RAM board to take it to 8x CPU and 16GB RAM. eBay is great for this kind of thing]&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pX0Mn43CzOw/Sp9_mUYBy_I/AAAAAAAAACI/g_iURA8IJAY/s1600-h/Sun+V880.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pX0Mn43CzOw/Sp9_mUYBy_I/AAAAAAAAACI/g_iURA8IJAY/s400/Sun+V880.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Its as high as my desk, as large as a fridge lying on its side and sounds like a very loud aircon. [Update: When it is running under an OS at low load it throttles the fans and becomes quite quiet]&lt;br /&gt;&lt;br /&gt;This one was going to be built with &lt;a href="http://www.sun.com/software/solaris/"&gt;Solaris 10&lt;/a&gt; on a software &lt;a href="http://slacksite.com/solaris/disksuite/disksuite.php"&gt;mirrored root&lt;/a&gt; using UFS but the new spin of Solaris 10 allows installation and booting off &lt;a href="http://en.wikipedia.org/wiki/Zfs"&gt;ZFS&lt;/a&gt;. A much more sensible choice when I have 6x 36GB disks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-2373913605271817880?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2373913605271817880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2373913605271817880'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/09/sheer-size-of-sun-midrange-server.html' title='The sheer size of an old Sun &quot;midrange&quot; server'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pX0Mn43CzOw/Sp9_mUYBy_I/AAAAAAAAACI/g_iURA8IJAY/s72-c/Sun+V880.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-6519888354115943815</id><published>2009-08-20T15:58:00.002+01:00</published><updated>2009-09-18T09:07:17.140+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EVE'/><title type='text'>Modding an HP Proliant DL585 to take an EVE Zebu UF2</title><content type='html'>I am the proud "controller" of an &lt;a href="http://www.eve-team.com/products/zebu-uf.php"&gt;EVE Zebu UF2&lt;/a&gt; emulation accelerator (a big PCI card covered in FPGAs). One of its biggest selling points is their &lt;a href="http://www.eve-team.com/products/validation-ip.php"&gt;Transactors&lt;/a&gt; which allow you to present your design with the interfaces it would experience if it were real, completely abstracting away the PCI bus.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_pX0Mn43CzOw/So5PlGexCDI/AAAAAAAAABo/hV_mYrI9I9k/s1600-h/20082009038.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5372318904312989746" src="http://2.bp.blogspot.com/_pX0Mn43CzOw/So5PlGexCDI/AAAAAAAAABo/hV_mYrI9I9k/s320/20082009038.jpg" style="cursor: pointer; display: block; height: 240px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;However when I say big I mean triple height and full length. It uses 64 bit PCI/66. (For those considering purchasing a UF4 card most PCs can't fit it as it is larger still).&lt;br /&gt;&lt;br /&gt;So I need a computer to host it in!&lt;br /&gt;&lt;br /&gt;Enter the &lt;a href="http://h18006.www1.hp.com/products/servers/proliantdl585/index.html"&gt;HP DL585&lt;/a&gt; - a lovely machine. Built as solidly as a tank and everything is terribly easily accessible either from the front or the top. Everything. At a push I think I could swap out the motherboard and be back up and running in 30 minutes from cracking the case.&lt;br /&gt;&lt;br /&gt;The original engineers designed it for cable-less operation (and very nearly succeeded!) but the EVE ZeBu-UF needs power from a 4 pin molex (found on most pre-SATA HDDs).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_pX0Mn43CzOw/So1xMEIV0qI/AAAAAAAAABY/sCLvCu_IHig/s1600-h/20082009035.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5372074382603965090" src="http://1.bp.blogspot.com/_pX0Mn43CzOw/So1xMEIV0qI/AAAAAAAAABY/sCLvCu_IHig/s320/20082009035.jpg" style="cursor: pointer; float: left; height: 240px; margin: 0pt 10px 10px 0pt; width: 320px;" /&gt;&lt;/a&gt;So what to do? Spotting this SCA backplane and knowing that HDDs take 12V, 5V and 3.3V power I had my solution. Mod a molex connector onto the pins on the back of one of the SCA sockets.&lt;br /&gt;&lt;br /&gt;Firstly I checked the specifications for the ZeBu: 25W at 12V which is a current of 2.08A. Secondly I checked the specifications of the SCA2 connector: Section 6.4.1 of the SFF-8046 standard specifies a surge current of 5A and a constant supply of 2.5A. This means that one socket can supply the necessary power.&lt;br /&gt;&lt;br /&gt;However, several provisos first: This &lt;span style="font-weight: bold;"&gt;will&lt;/span&gt; void your warranty. The &lt;a href="http://www.pcguide.com/ref/hdd/if/scsi/cables_SCA.htm"&gt;SCA&lt;/a&gt;-2 connector transfers power to the drive using several pins for each voltage (12V, 5V and 3.3V) to reduce their resistivity to high current. By design the clusters of pins supplying the same voltage are next to each other making it easier. Probe for the resistance between the pins you think are the right ones - it needs to be zero.&lt;br /&gt;&lt;br /&gt;The mod requires soldering the little clusters of pins together with fine wire (get some strands out of a multistrand wire) and then attached the cables. Note - don't include the Precharge pins - wiring them to the rest of the supply could cause unexpected operation as they will no longer function correctly when you insert a HDD in the front. After you are done, check, double check and triple check. Use a magnifier/microscope to check the soldering. Clean the area of any bits of solder. Probe the resistivity again. This could be an expensive mistake if there is a problem!&lt;br /&gt;&lt;br /&gt;Power on (fingers crossed) and bingo - 12V and 5V.&lt;br /&gt;&lt;br /&gt;Here is a photo of the modded card in position:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_pX0Mn43CzOw/So5STUUeAgI/AAAAAAAAABw/wLC6txl0r9A/s1600-h/20082009034.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5372321897325134338" src="http://4.bp.blogspot.com/_pX0Mn43CzOw/So5STUUeAgI/AAAAAAAAABw/wLC6txl0r9A/s320/20082009034.jpg" style="cursor: pointer; display: block; height: 240px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;...and a photo of the UF2 in the PCI bay (I have two power connectors just in case I can get another UF2 - wishful thinking I know):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_pX0Mn43CzOw/So5TAKUB2BI/AAAAAAAAAB4/vI1tFK1opl0/s1600-h/20082009039.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5372322667733047314" src="http://2.bp.blogspot.com/_pX0Mn43CzOw/So5TAKUB2BI/AAAAAAAAAB4/vI1tFK1opl0/s320/20082009039.jpg" style="cursor: pointer; display: block; height: 240px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-6519888354115943815?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6519888354115943815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6519888354115943815'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/08/modding-hp-proliant-dl585.html' title='Modding an HP Proliant DL585 to take an EVE Zebu UF2'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_pX0Mn43CzOw/So5PlGexCDI/AAAAAAAAABo/hV_mYrI9I9k/s72-c/20082009038.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-2899686654222512306</id><published>2009-07-23T17:12:00.001+01:00</published><updated>2009-07-24T06:18:57.603+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='N95 8GB'/><title type='text'>Loading new maps into Nokia Maps on an N95 without a cable or bluetooth</title><content type='html'>Foolishly I arrived in San Francisco for MSE without loading the California maps into my phone.&lt;br /&gt;&lt;br /&gt;This presented me with a pretty conundrum. Nokia's recent upgrade to &lt;a href="http://maps.ovi.com/services/"&gt;Ovi Maps&lt;/a&gt; meant that the &lt;a href="http://europe.nokia.com/explore-services/maps/download-maps/map-loader"&gt;new maps uploader&lt;/a&gt; wanted a phone connected with Nokia PC Suite via the USB-A to Mini-B cable or bluetooth in PCSuite mode.&lt;br /&gt;&lt;br /&gt;However without a cable or bluetooth (I have my old &lt;a href="http://www-307.ibm.com/pc/support/site.wss/MIGR-43800.html"&gt;IBM X31&lt;/a&gt; laptop, hand upgraded with Intel 2200BG Wifi) what can you do?&lt;br /&gt;&lt;br /&gt;Turn to an almost forgotten technology: &lt;a href="http://en.wikipedia.org/wiki/Infrared_Data_Association"&gt;IrDa&lt;/a&gt;. The N95 8GB has a 115200 IrDa port on it and the Thinkpad X31 has a 4Mbps one.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the old "&lt;a href="http://handheld.softpedia.com/get/Educational/Maps/Nokia-MapLoader-39502.shtml"&gt;Nokia Map Loader&lt;/a&gt;" - this talks to the phone as a mass storage device.&lt;/li&gt;&lt;li&gt;Connect the phone via IrDa to the PCSuite.&lt;/li&gt;&lt;li&gt;Run the Nokia Map Loader&lt;/li&gt;&lt;/ol&gt;Upload the maps - took a very long time!&lt;br /&gt;&lt;br /&gt;[An alternative to doing this is use the following &lt;a href="http://symbianism.blogspot.com/2009/06/nokia-map-loader-alternative-now-points.html"&gt;blog post&lt;/a&gt; to download the maps directly. This can even be done on your mobile!]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-2899686654222512306?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2899686654222512306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2899686654222512306'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/07/loading-new-maps-into-nokia-maps-on-n95.html' title='Loading new maps into Nokia Maps on an N95 without a cable or bluetooth'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-2663655906273892812</id><published>2009-07-17T19:35:00.000+01:00</published><updated>2009-07-25T02:36:06.212+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>Off to Microelectronic Systems Education</title><content type='html'>...in sunny San Francisco.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mseconference.org/"&gt;MSE Conference&lt;/a&gt; (and its partner &lt;a href="http://www.mseconference.org/ewme.htm"&gt;EWME&lt;/a&gt;) provide a fantastic venue to explore and demonstrate novel ways to teach complex system-on-chip designs.&lt;br /&gt;&lt;br /&gt;I shall also be attending the tutorials - One on the &lt;a href="http://www.cypress.com/psoc2/?id=1353&amp;amp;source=header"&gt;Cypress PSoC&lt;/a&gt; platform, a fascinating combination of a digital microcontroller, a programmable logic device and a section of programmable analogue logic. The second will be on several techniques from Synopsys:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;   &lt;a href="http://www.mseconference.org/synopsys.htm"&gt;Structured Methodology for Successful Low Power Verification&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.mseconference.org/synopsys2.htm"&gt;Power-Performance Optimization of Digital Circuits&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-2663655906273892812?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2663655906273892812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2663655906273892812'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/07/off-to-microelectronic-systems.html' title='Off to Microelectronic Systems Education'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1251499888209738672</id><published>2009-07-12T16:03:00.000+01:00</published><updated>2009-08-01T15:32:46.888+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amanda'/><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><title type='text'>Fix for amanda 2.5.1p1 on MacOSX PowerPC</title><content type='html'>Bug causes the following error message in the following stable releases 2.5.1p1, 2.5.1p3, 2.6.1p1&lt;br /&gt;&lt;br /&gt;Amanda Backup Client Hosts Check&lt;br /&gt;--------------------------------&lt;br /&gt;ERROR: NAK mac-mini: user backup from hs-dhgl7ce.msindustries.com is not&lt;br /&gt;allowed to execute the service noop: /Users/amandabackup/.amandahosts:&lt;br /&gt;owned by id 5000, should be 529288&lt;br /&gt;Client check: 1 host checked in 0.859 seconds, 1 problem found&lt;br /&gt;&lt;br /&gt;There is no user of UID of 529288 on the machine.&lt;br /&gt;&lt;br /&gt;Here is a snip of the amandad log after a modification to add Print statements printing the UID as dereferenced from the pointer in check_user_amandahosts() in common-src/security-util.c&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;amandad: time 0.187: sec: calling accept_fn&lt;br /&gt;Print uid: 5000&lt;br /&gt;Print UID on entry now: 5000&lt;br /&gt;check_user_amandahosts(host=hs-dhgl7ce.msindustries.com, pwd=0x100400, remoteuse&lt;br /&gt;r=backup, service=selfcheck)&lt;br /&gt;amandad: bsd: processing file: /Users/amandabackup/.amandahosts&lt;br /&gt;amandad: bsd:                  owner=amandabackup group=wheel mode=600&lt;br /&gt;Print UID after stralloc: 529288&lt;br /&gt;Print UID after fopen: 529288&lt;br /&gt;Print sbuf.st_uid now: 5000&lt;br /&gt;Print UID after fstat: 529288&lt;br /&gt;amandad: bsd: processing line: hs-dhgl7ce.msindustries.com backup="" amdump=""&lt;br /&gt;amandad: bsd: comparing "hs-dhgl7ce.msindustries.com" with&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The bug has been fixed by caching the pwd-&gt;ps_uid at the start of the function and using the test against that. Also note that the bug behavior changed at some point as the UID changed from 529288 to 0. Suggests a buffer overrun, endianness or thread issues.&lt;br /&gt;&lt;br /&gt;Here is the modified check_user_amandahosts() security-util.c (don't forget to modify the top of the file to enable secprintf().&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/*&lt;br /&gt; * Check to see if a user is allowed in.  This version uses .amandahosts&lt;br /&gt; * Returns -1 on failure, or 0 on success.&lt;br /&gt; */&lt;br /&gt;char *&lt;br /&gt;check_user_amandahosts(&lt;br /&gt;    const char *        host,&lt;br /&gt;    struct in_addr      addr,&lt;br /&gt;    struct passwd *     pwd,&lt;br /&gt;    const char *        remoteuser,&lt;br /&gt;    const char *        service)&lt;br /&gt;{&lt;br /&gt;    char *line = NULL;&lt;br /&gt;    char *filehost;&lt;br /&gt;    const char *fileuser;&lt;br /&gt;    char *ptmp = NULL;&lt;br /&gt;    char *result = NULL;&lt;br /&gt;    FILE *fp = NULL;&lt;br /&gt;    int found;&lt;br /&gt;    struct stat sbuf;&lt;br /&gt;    char n1[NUM_STR_SIZE];&lt;br /&gt;    char n2[NUM_STR_SIZE];&lt;br /&gt;    int hostmatch;&lt;br /&gt;    int usermatch;&lt;br /&gt;    char *aservice = NULL;&lt;br /&gt;&lt;br /&gt;    uid_t tmp_pw_uid = pwd-&gt;pw_uid;&lt;br /&gt;    secprintf(("Print UID on entry now: %d\n",pwd-&gt;pw_uid));&lt;br /&gt;&lt;br /&gt;    secprintf(("check_user_amandahosts(host=%s, pwd=%p, "&lt;br /&gt;                "remoteuser=%s, service=%s)\n",&lt;br /&gt;                host, pwd, remoteuser, service));&lt;br /&gt;&lt;br /&gt;    ptmp = stralloc2(pwd-&gt;pw_dir, "/.amandahosts");&lt;br /&gt;#if defined(SHOW_SECURITY_DETAIL)                               /* { */&lt;br /&gt;    show_stat_info(ptmp, "");;&lt;br /&gt;#endif                                                          /* } */&lt;br /&gt;    secprintf(("Print UID after stralloc: %d\n",pwd-&gt;pw_uid));&lt;br /&gt;    if ((fp = fopen(ptmp, "r")) == NULL) {&lt;br /&gt;        result = vstralloc("cannot open ", ptmp, ": ", strerror(errno), NULL);&lt;br /&gt;        amfree(ptmp);&lt;br /&gt;        return result;&lt;br /&gt;    }&lt;br /&gt;    secprintf(("Print UID after fopen: %d\n",pwd-&gt;pw_uid));&lt;br /&gt;&lt;br /&gt;    /*&lt;br /&gt;     * Make sure the file is owned by the Amanda user and does not&lt;br /&gt;     * have any group/other access allowed.&lt;br /&gt;     */&lt;br /&gt;    if (fstat(fileno(fp), &amp;sbuf) != 0) {&lt;br /&gt;        result = vstralloc("cannot fstat ", ptmp, ": ", strerror(errno), NULL);&lt;br /&gt;        goto common_exit;&lt;br /&gt;    }&lt;br /&gt;    secprintf(("Print sbuf.st_uid now: %d\n",sbuf.st_uid));&lt;br /&gt;    secprintf(("Print UID after fstat: %d\n",pwd-&gt;pw_uid));&lt;br /&gt;&lt;br /&gt;    /*if (sbuf.st_uid != pwd-&gt;pw_uid) {*/&lt;br /&gt;    if (sbuf.st_uid != tmp_pw_uid) {&lt;br /&gt;        snprintf(n1, SIZEOF(n1), "%ld", (long)sbuf.st_uid);&lt;br /&gt;        snprintf(n2, SIZEOF(n2), "%ld", (long)pwd-&gt;pw_uid);&lt;br /&gt;        result = vstralloc(ptmp, ": ",&lt;br /&gt;                           "owned by id ", n1,&lt;br /&gt;                           ", should be ", n2,&lt;br /&gt;                           NULL);&lt;br /&gt;        goto common_exit;&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1251499888209738672?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1251499888209738672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1251499888209738672'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/07/fix-for-amanda-251p1-on-powerpc.html' title='Fix for amanda 2.5.1p1 on MacOSX PowerPC'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-3470465852371095682</id><published>2009-06-24T09:44:00.000+01:00</published><updated>2009-06-24T10:56:11.955+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='System C'/><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><title type='text'>Synopsys Designware System Level Library Compiled</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pX0Mn43CzOw/SkHo6VDsj5I/AAAAAAAAABQ/ax4Ba5pwnmc/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 312px;" src="http://1.bp.blogspot.com/_pX0Mn43CzOw/SkHo6VDsj5I/AAAAAAAAABQ/ax4Ba5pwnmc/s320/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5350813921075564434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Rebuilding everything from scratch with a clean install, and setting the following environment variables:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;CC /usr/local/gcc/3.3.6/bin/gcc&lt;br /&gt;CXX /usr/local/gcc/3.3.6/bin/g++&lt;br /&gt;LD /usr/local/gcc/3.3.6/bin/g++&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and look&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-3470465852371095682?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3470465852371095682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3470465852371095682'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/06/synopsys-designware-system-level.html' title='Synopsys Designware System Level Library Compiled'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_pX0Mn43CzOw/SkHo6VDsj5I/AAAAAAAAABQ/ax4Ba5pwnmc/s72-c/Screenshot.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-3487392213151396329</id><published>2009-06-23T19:40:00.000+01:00</published><updated>2009-06-24T09:53:14.871+01:00</updated><title type='text'>Synopsys DWSLL still won't compile even with gcc-3.3.6 [FIXED]</title><content type='html'>[see above post, must have had a broken systemc install left lying about]&lt;br /&gt;&lt;br /&gt;Having built a version of gcc-3.3.6 that compiles correctly and passes the tests I now get a new (and unpleasant) build error:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;/usr/local/gcc/3.3.6/bin/gcc  -o .vptest//linux/dwsll/gcc-3.3.6/osci-2.2.0/vptest .vptest//linux/dwsll/gcc-3.3.6/osci-2.2.0/CoreManager.ctor.o .vptest//linux/dwsll/gcc-3.3.6/osci-2.2.0/IntCtrl.ctor.o .vptest//linux/dwsll/gcc-3.3.6/osci-2.2.0/MuxRoutingView.ctor.o .vptest//linux/dwsll/gcc-3.3.6/osci-2.2.0/Tester.ctor.o .vptest//linux/dwsll/gcc-3.3.6/osci-2.2.0/UART.ctor.o .vptest//linux/dwsll/gcc-3.3.6/osci-2.2.0/powerDashboard.ctor.o .vptest//linux/dwsll/gcc-3.3.6/osci-2.2.0/registerView.ctor.o .vptest//linux/dwsll/gcc-3.3.6/osci-2.2.0/vptest.o .vptest//linux/dwsll/gcc-3.3.6/osci-2.2.0/vptest_sc_main.o .vptest//linux/dwsll/gcc-3.3.6/osci-2.2.0/VT100.ctor.o -L/opt/fastcad/software/synopsys/linux/dw_sys-l-lib_2008.12/linux/dwsll/gcc-3.3.6/osci-2.2.0/lib -llt-O -g -fPIC -Wl,-Bsymbolic   /opt/fastcad/software/synopsys/linux/dw_sys-l-lib_2008.12/linux/dwsll/gcc-3.3.6/osci-2.2.0/lib/snps_tlm.a -L/opt/fastcad/software/synopsys/linux/dw_sys-l-lib_2008.12/linux/dwsll/gcc-3.3.6/osci-2.2.0/lib -L/opt/fastcad/software/systemc/systemc-2.2.0/lib-linux -L/opt/fastcad/software/synopsys/linux/dw_sys-l-lib_2008.12/linux/dwsll/gcc-3.3.6/osci-2.2.0/../runtime/Shared/Debuggers -lpthread -lsystemc -lqt-mt -lvdidll -ldl -rdynamic /opt/fastcad/software/synopsys/linux/dw_sys-l-lib_2008.12/linux/dwsll/gcc-3.3.6/osci-2.2.0/lib/libsimdll.a 2&gt;&amp;amp;1 | c++filt&lt;br /&gt;/opt/fastcad/software/synopsys/linux/dw_sys-l-lib_2008.12/linux/dwsll/gcc-3.3.6/osci-2.2.0/lib/snps_tlm.a(simlog.o)(.text+0xc88): In function `Simlog::Abort(IUnit*, char const*, ...)':&lt;br /&gt;: undefined reference to `typeinfo for unsigned'&lt;br /&gt;/opt/fastcad/software/synopsys/linux/dw_sys-l-lib_2008.12/linux/dwsll/gcc-3.3.6/osci-2.2.0/lib/snps_tlm.a(snps_tlm_imemory_tlm2.o)(.gnu.linkonce.r._ZTIPN8snps_tlm20vre_config_extensionE+0x0): undefined reference to `vtable for __cxxabiv1::__pointer_type_info'&lt;br /&gt;/opt/fastcad/software/synopsys/linux/dw_sys-l-lib_2008.12/linux/dwsll/gcc-3.3.6/osci-2.2.0/lib/snps_tlm.a(snps_tlm_manager.o)(.text+0x3aa5): In function `snps_tlm::manager::SimMain()':&lt;br /&gt;: undefined reference to `typeinfo for int'&lt;br /&gt;/opt/fastcad/software/synopsys/linux/dw_sys-l-lib_2008.12/linux/dwsll/gcc-3.3.6/osci-2.2.0/lib/snps_tlm.a(snps_tlm_manager.o)(.gcc_except_table+0x48c): undefined reference to `typeinfo for int'&lt;br /&gt;/opt/fastcad/software/synopsys/linux/dw_sys-l-lib_2008.12/linux/dwsll/gcc-3.3.6/osci-2.2.0/lib/snps_tlm.a(snps_tlm_manager.o)(.gnu.linkonce.r._ZTIP15ManagerListener+0x0): undefined reference to `vtable for __cxxabiv1::__pointer_type_info'&lt;br /&gt;/opt/fastcad/software/systemc/systemc-2.2.0/lib-linux/libsystemc.a(sc_main_main.o)(.gcc_except_table+0x38): undefined reference to `typeinfo for char const*'&lt;br /&gt;collect2: ld returned 1 exit status&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-3487392213151396329?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3487392213151396329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3487392213151396329'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/06/synopsys-dwsll-still-wont-compile-even.html' title='Synopsys DWSLL still won&apos;t compile even with gcc-3.3.6 [FIXED]'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-4970532553269142570</id><published>2009-06-23T18:47:00.000+01:00</published><updated>2009-06-23T18:51:06.983+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='System C'/><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><title type='text'>Synopsys Innovator and Designware System Level Library II</title><content type='html'>More things to do with Synopsys Designware System Level Library.&lt;br /&gt;&lt;br /&gt;Just so you know:&lt;br /&gt;&lt;br /&gt;When they say use gcc-3.3.6, they &lt;span style="font-weight: bold;"&gt;mean &lt;/span&gt;gcc-3.3.6. RHEL3 shipped with gcc-3.2.X and RHEL4 with gcc-3.4.X. Both build models without errors but when executed segfault.&lt;br /&gt;&lt;br /&gt;I am building a copy of gcc-3.3.6 now following &lt;a href="http://www.tellurian.com.au/whitepapers/multiplegcc.php"&gt;this excellent guide by Tellurian.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More to follow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-4970532553269142570?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4970532553269142570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4970532553269142570'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/06/synopsys-innovator-and-designware.html' title='Synopsys Innovator and Designware System Level Library II'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-107884177965127913</id><published>2009-06-19T15:50:00.000+01:00</published><updated>2009-06-19T15:57:47.419+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EVE'/><category scheme='http://www.blogger.com/atom/ns#' term='FPGA'/><category scheme='http://www.blogger.com/atom/ns#' term='System C'/><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><title type='text'>MSc Dissertation Titles for 2009</title><content type='html'>&lt;span style="font-weight: bold;"&gt;1. An &lt;a href="http://www.opensparc.net/"&gt;OpenSPARC&lt;/a&gt; with &lt;a href="http://ra.ziti.uni-heidelberg.de/coeht/index.php?page=events&amp;amp;id=20090211"&gt;Hypertransport&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;Add a memory mapped Hypertransport port to an OpenSPARC processor.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. SystemC to Reality&lt;/span&gt;&lt;br /&gt;Take the &lt;a href="http://www.synopsys.com/Tools/SLD/VirtualPlatforms/Pages/default.aspx"&gt;Synopsys innovator SystemC&lt;/a&gt; based example of an MP3 player and&lt;br /&gt;convert as much as possible to real hardware to assess the accuracy of&lt;br /&gt;the Virtual Platform Model using the &lt;a href="http://www.eve-team.com/products/zebu-uf.php"&gt;EVE accelerator&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Accelerating Geometric Mathematics&lt;/span&gt;&lt;br /&gt;Taking the departments Geometric Maths co processor design and attaching&lt;br /&gt;it to an &lt;a href="http://en.wikipedia.org/wiki/PowerPC_400"&gt;IBM PowerPC 405 processor&lt;/a&gt; (either memory mapped or via the&lt;br /&gt;coprocessor port) as efficiently as possible.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Hardening Soft Cores, the advantages and problems&lt;/span&gt;&lt;br /&gt;Take the LEON3 opensource Sparc v8 processor and the &lt;a href="http://en.wikipedia.org/wiki/PowerPC_400"&gt;IBM PowerPC 405&lt;/a&gt;&lt;br /&gt;processor softcores (one is VHDL, one Verilog) and study them for speed&lt;br /&gt;and size optimisations using blocks inside an FPGA like embedded&lt;br /&gt;ram/multipliers. The LEON3 is already optimised and will serve as an&lt;br /&gt;example.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; 5. Bi-width Processing for Sensor Applications&lt;/span&gt;&lt;br /&gt;Research and design a processor with 2 data word widths - 8bits for low&lt;br /&gt;power mode and an additional 32 bits when turned into high power mode.&lt;br /&gt;&lt;br /&gt;Research the LEAP architecture first and try to improve it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-107884177965127913?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/107884177965127913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/107884177965127913'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/06/msc-dissertation-titles-for-2009.html' title='MSc Dissertation Titles for 2009'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-3771749655910702509</id><published>2009-04-26T17:14:00.000+01:00</published><updated>2009-06-24T13:38:59.984+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='System C'/><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><title type='text'>Synopsys Innovator and Designware System Level Library</title><content type='html'>&lt;span style="font-weight: bold;"&gt;THESE PROGRAMS ARE DEFINITELY 32 BIT&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;SystemC is perfectly happy on x86_64 however the pre-compiled libraries shipped inside the Designware System Library&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;are not. Ah-ha, you say, "I shall compile them in 32 bit mode". However there is a problem: they depend on qt-devel.i386 which can't be installed on the same system as qt-devel.x86_64. So there.&lt;br /&gt;&lt;br /&gt;Another word of warning for the clever:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;THE BUILD SCRIPTS WILL WORK, BUT GENERATE EXECUTABLES THAT SEGFAULT.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Make/g++ don't quit on the qt linking error. Several hours of condensed hacking wasted as I didn't spot it. Another reason to use virtual machines to avoid these kinds of problems when using CAD tools. [see above for more details on the segfault issues]&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-3771749655910702509?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3771749655910702509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3771749655910702509'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/04/synopsys-innovator-and-designware.html' title='Synopsys Innovator and Designware System Level Library'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-2943961242301516260</id><published>2009-04-26T17:12:00.000+01:00</published><updated>2009-04-26T17:14:06.677+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>DATE2009</title><content type='html'>What a great conference. I attended the workshop on Embedded Multicore computing as well as a similar tutorial.&lt;br /&gt;&lt;br /&gt;Lots of very good people here with good ideas. Got the chance to get some real IC architecting off the ground and acquired a lot of good material for the SystemC based architecture course.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-2943961242301516260?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2943961242301516260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2943961242301516260'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/04/date2009.html' title='DATE2009'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-6748019429678591817</id><published>2009-04-08T22:58:00.001+01:00</published><updated>2009-04-09T12:46:03.116+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><title type='text'>Installing Synopsys Synthesis and IC Compiler in the same directory</title><content type='html'>These are also known as syn and icc and include the all important executables and libraries to run dc_shell and icc_shell. These are part of the Galaxy platform. Synthesis provides tools for turning HDL into PDK specific netlists and IC Compiler for place and routing.&lt;br /&gt;&lt;br /&gt;You can install Synthesis and IC Compiler for different operating systems into the same directory&lt;br /&gt;&lt;ul&gt;&lt;li&gt;As they are part of the same system (Galaxy) they can be installed into the same directory to save space and simplify installations scripts.&lt;/li&gt;&lt;li&gt;Be sure to get the same release and service pack from EST into the same directory.&lt;/li&gt;&lt;li&gt;Retrieve the common files and all the OS/Architecture specific parts you want (for example linux and amd64)&lt;/li&gt;&lt;li&gt;Run the installer on the directory and you will be able to select syn and icc and subsequently the architecture specific versions.&lt;/li&gt;&lt;/ul&gt;Hope this helps keep things simple.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-6748019429678591817?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6748019429678591817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6748019429678591817'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/04/installing-synopsys-synthesis-and-ic.html' title='Installing Synopsys Synthesis and IC Compiler in the same directory'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-3141934846188428347</id><published>2009-02-08T01:12:00.000Z</published><updated>2009-02-08T01:17:37.627Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>The Buffalo Linkstation Live (v2) - Unbricking</title><content type='html'>I just managed to get my Buffalo Linkstation (running Debian based Freelink) to brick in a new way: it would pull the kernel and initrd by tftp over and over again or it would appear to have loaded them but simply stop.&lt;br /&gt;&lt;br /&gt;After trawling the forums I have salvaged the situation by mounting the HDD on a linux system and erasing and rebuilding the default /dev/sda1 partition.&lt;br /&gt;&lt;br /&gt;I have also recorded how to do it in the relevant wiki article like a good boy:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://buffalo.nas-central.org/wiki/Revive_your_arm9_box_from_scratch#Troubleshooting"&gt;http://buffalo.nas-central.org/wiki/Revive_your_arm9_box_from_scratch#Troubleshooting&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Linkstations and similar Linux based NAS devices make fantastic home servers - mine draws ~13W under load providing daap, DHCP, NTP, apache, NFS, samba and AFS. Beats the hell out of an always on home Intel server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-3141934846188428347?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3141934846188428347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3141934846188428347'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/02/buffalo-linkstation-live-v2-unbricking.html' title='The Buffalo Linkstation Live (v2) - Unbricking'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1337820301454962541</id><published>2009-01-27T14:28:00.000Z</published><updated>2009-01-27T14:55:48.671Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='CAD'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>How can I allow users to run a script as root?</title><content type='html'>I am glad you asked me that question!&lt;br /&gt;&lt;br /&gt;In this case I need a user to nuke a process related to themself but executing as 'nx'. So to kill it they would have to be root (or nx). Killing the process and the related cleanup requires a script to automate it so I need to make a script run as root.&lt;br /&gt;&lt;br /&gt;I can do that by making the scripting language interpreter (e.g. perl, python, etc) always run as root ("setuid"). This means that all scripts executed by that interpreter run as root.... oops. Ok bad idea as anyone can run any script they write as root. I know, I shall make the kill command always run as root. Anyone can now kill any process .... oops. Ok bad idea, slightly less a security risk though.&lt;br /&gt;&lt;br /&gt;The solution to the above class of problems is called a 'shim' after small bits of metal. Go look the reference up if you care. The solution is make a tiny C program that when executed by a user runs as root ("setuid") and then executes the script, &lt;span style="font-weight: bold;"&gt;sanitising&lt;/span&gt; and passing any necessary arguments.&lt;br /&gt;&lt;br /&gt;So here is a trivial C program to execute a single script (nxclean.c):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#define PATH "/usr/local/sbin/nxclean"&lt;br /&gt;#define BUF_SIZE 10000&lt;br /&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;#include &amp;lt;sys.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;uid_t user;&lt;br /&gt;char user_str[BUF_SIZE] = {'\0'};&lt;br /&gt;&lt;br /&gt;//      printf("My UID is: %d\n", getuid());&lt;br /&gt;//      printf("My EUID is: %d\n", geteuid());&lt;br /&gt;user = getuid();&lt;br /&gt;snprintf(user_str, BUF_SIZE, "%d", user);&lt;br /&gt;//      printf("My UID is: %s\n", user_str);&lt;br /&gt;setuid(geteuid());&lt;br /&gt;//      printf("My UID now is: %d\n", getuid());&lt;br /&gt;&lt;br /&gt;execl(PATH, PATH, user_str, (char *) 0);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So what is going on here? Firstly a couple of #DEFINE's to save typing. Note that the buffer sizing and the initialisation of the whole buffer to '\0'. Remember this is a program that is going to run as root. It takes no command line arguments, simplifying things, but it is taking things from the underlying OS so be sure to be safe. If you are taking command line arguments then check them every which way, run regex's, size checks, the works. Otherwise kiss your security goodbye.&lt;br /&gt;&lt;br /&gt;In this case it stores the UID of the current user as it needs it later, makes itself root via the setuid(geteuid()); line and then executes the script (now as root) passing arguments created from the UID collected earlier.&lt;br /&gt;&lt;br /&gt;Note this only works if you have set the little executable this compiles into to run as root. Google "setuid".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1337820301454962541?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1337820301454962541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1337820301454962541'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2009/01/how-can-i-allow-users-to-run-script-as.html' title='How can I allow users to run a script as root?'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-5753318653270797823</id><published>2008-11-07T19:16:00.000Z</published><updated>2008-11-07T19:23:52.635Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='DATE'/><title type='text'>DATE09 TPC finished and went well - linksys WRT54GLs are awesome!</title><content type='html'>Arrived at the IET on the evening of Wednesday with my team this week and immediately got the benefit of the IET's professional staff. Within 1 hour I had the server running a custom software package crafted specifically for DATE to manage the submissions.&lt;br /&gt;&lt;br /&gt;Imagine trying to manage 900 submissions on paper + email? Impossible.&lt;br /&gt;&lt;br /&gt;In the initial hour I also deployed 4 wifi routers, all linksys WRT54GL's to manage the 190 members who review the papers in groups organised by topics. &lt;br /&gt;&lt;br /&gt;On Thursday under peak load the WRT54GL's were handling 43 WPA encrypted connections simultaneously (note that the SPI was disabled and also note a CPU monitor would be very helpful to gauge the CPU load).&lt;br /&gt;&lt;br /&gt;They worked all day with only 5 laptops unable to connect, and considering the fact that wifi with encryption isn't a very well adhered to standard (lots of bugs) that is just noise. Even that was resolved with a driver update to a 2200BG card from Intel.&lt;br /&gt;&lt;br /&gt;It all had to work, and it all came together.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-5753318653270797823?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5753318653270797823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5753318653270797823'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/11/date09-tpc-finished-and-went-well.html' title='DATE09 TPC finished and went well - linksys WRT54GLs are awesome!'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-5750328637441827201</id><published>2008-11-02T11:12:00.000Z</published><updated>2008-11-02T11:16:11.848Z</updated><title type='text'>Synopsys Babbage Grant Proposal In!</title><content type='html'>It has been a most incredible slog getting the grant proposal out of the door. But now it is all done and I am really thankful. DATE2008 TPC here I come.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-5750328637441827201?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5750328637441827201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5750328637441827201'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/11/synopsys-babbage-grant-proposal-in.html' title='Synopsys Babbage Grant Proposal In!'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-7415999862010066718</id><published>2008-10-17T07:39:00.000+01:00</published><updated>2008-10-17T07:55:17.514+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAD'/><title type='text'>The love affair with freenx is over.... time to make the marriage work</title><content type='html'>It seems that not much survives contact with students!&lt;br /&gt;&lt;br /&gt;Basically if the freenx session isn't correctly terminated or established then desktop processes and a nx process are left running to the server which will prevent them logging in again.&lt;br /&gt;&lt;br /&gt;However I am not the first person to notice this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://linux.web.psi.ch/dist/scientific/46/psi/all/?C=M;O=D"&gt;PSI Labs&lt;/a&gt; who use the technology have developed a RPM of scripts to manage this properly called &lt;a href="http://linux.web.psi.ch/dist/scientific/46/psi/all/nxcleanup-0.4-1.slp4.noarch.rpm"&gt;nxcleanup&lt;/a&gt;. A user session has the standard number of processes for the desktop however there is an associated nx process that the student doesn't own. So the script nxclean would need to be run as root.&lt;br /&gt;&lt;br /&gt;How do I enable a student to run a script as root that wipes out processes of an arbitary user?&lt;br /&gt;&lt;br /&gt;Simple: Use a setuid "shim"! Write a trivial C program that takes no inputs (or has very, very thorough sanity checking!) which identifies the current user using posix calls and then exec's the script after passing it the current username. Nifty eh? This is a standard way of making scripts run safely as root. I'll post it as soon as I am done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-7415999862010066718?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7415999862010066718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7415999862010066718'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/10/love-affair-with-freenx-is-over-time-to.html' title='The love affair with freenx is over.... time to make the marriage work'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-4704386292240717352</id><published>2008-10-08T21:22:00.000+01:00</published><updated>2008-10-08T21:25:45.656+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAD'/><title type='text'>NX Technology Makes Remote X Possible</title><content type='html'>I implemented NX technology on our linux CAD servers some time ago.&lt;br /&gt;&lt;br /&gt;NX has enabled a whole distance learning class from America using some really poorly coded CAD tools (some are windows GUIs run under emulation).&lt;br /&gt;&lt;br /&gt;It made it like using them over the LAN!&lt;br /&gt;&lt;br /&gt;If you have remote UNIX application needs then please consider this technology.&lt;br /&gt;&lt;br /&gt;I am more than happy to consult on your CAD architectures.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-4704386292240717352?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4704386292240717352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4704386292240717352'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/10/nx-technology-makes-remote-x-possible.html' title='NX Technology Makes Remote X Possible'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-6872188833134415937</id><published>2008-10-08T21:12:00.000+01:00</published><updated>2008-10-08T21:18:27.916+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>AVR Studio and WinAVR as C teaching tools...</title><content type='html'>AVR Studio when run in combination with WinAVR (packaging avr gcc, avr-libc and all the other gubbins) provides an awesome 1st learning environment for people learning C for the first time&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Completely free, for students and staff&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Traffic light graphical message highlights: Green spots next to messages when things went right, yellow for warnings and red for errors. Instantly understandable!&lt;/li&gt;&lt;li&gt;Graphical indication of the current location in the program with autostep to move step by step through the program - outlines the flow immediately.&lt;/li&gt;&lt;li&gt;Processor window showing the program counter, cycle counter (how much time has your program taken?). Turning ints to floats added 4000 cycles to a simple test program.&lt;/li&gt;&lt;li&gt;Internal processor registers very visible&lt;/li&gt;&lt;li&gt;I/O View graphically highlights ports and pins with a row of 8 squares which are filled when the bit is set. Instant graphical Hex to Binary&lt;/li&gt;&lt;/ul&gt;I really think that this is an ideal learning environment, not too big and not too small.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-6872188833134415937?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6872188833134415937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6872188833134415937'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/10/avr-studio-and-winavr-as-c-teaching.html' title='AVR Studio and WinAVR as C teaching tools...'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-7194253621347378926</id><published>2008-09-30T11:22:00.000+01:00</published><updated>2008-09-30T11:39:34.213+01:00</updated><title type='text'>Router Resurrection....</title><content type='html'>Just fixed a Linksys BEFSR41 v2. Seems that the power brick had a standard cylinder DC plug however the central bore was about 1mm larger than the socket's central pin. I originally thought that I just had a 3rd party powerbrick, however a colleague of mine recognised the router and explained that it was a similar problem for him. Maybe a dodgy batch? Anyway the DC socket was a standard part, the warranty was void through age anyway so a cheap replacement, £1.11, has fixed the problem.&lt;br /&gt;&lt;br /&gt;Better than new.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-7194253621347378926?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7194253621347378926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7194253621347378926'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/09/router-resurrection.html' title='Router Resurrection....'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-2781014532378698757</id><published>2008-09-19T08:53:00.000+01:00</published><updated>2008-09-19T08:59:26.763+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Firefox disrespecting your download preferences on MacOSX?</title><content type='html'>On OSX (Apple Macintosh Leopard, 10.5) does firefox ignore your download directory and constantly dump files on the desktop? Does your desktop get incredibly cluttered?&lt;br /&gt;&lt;br /&gt;In all likelihood you have updated to the version of OSX you have now. And it has left behind a piece that is ruining your day: &lt;span style="font-family:courier new;"&gt;~/Library/Preferences/com.apple.internet.plist&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Copy this to your Desktop, download something and test it out. You should suddenly find that the firefox is honoring its preference.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-2781014532378698757?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2781014532378698757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2781014532378698757'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/09/firefox-disrespecting-your-download.html' title='Firefox disrespecting your download preferences on MacOSX?'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-5083788105558369568</id><published>2008-09-19T08:40:00.001+01:00</published><updated>2008-09-19T08:59:45.328+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>ESSCIRC Summary...</title><content type='html'>Sorry for the lack of daily updates. What can I say? Every day was an 8:30 start, finishing at 18:00 sometimes. This is without anyone leaving in the sessions I was in, which if you have ever been to a conference is really unusual.&lt;br /&gt;&lt;br /&gt;An interesting combination of academic, student and company presentation. Interestingly the companies typically showed much more finished products.&lt;br /&gt;&lt;br /&gt;Anyway it was really well worth the visit (not to mention the whiskey tasting or the visit to murrayfield....)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-5083788105558369568?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5083788105558369568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5083788105558369568'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/09/esscirc-summary.html' title='ESSCIRC Summary...'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1013921763004922630</id><published>2008-09-18T17:34:00.000+01:00</published><updated>2008-09-18T17:37:17.640+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cadence'/><title type='text'>Cadence Encounter SEGV on start faults cured III</title><content type='html'>It is the fonts. I had similar segv crashes using X on windows without the fixed and misc fonts installed. Seems Cadence likes its traditional X client setup. Now I just need to diagnose what font packages I haven't installed / installed in the wrong places.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1013921763004922630?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1013921763004922630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1013921763004922630'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/09/cadence-encounter-segv-on-start-faults_18.html' title='Cadence Encounter SEGV on start faults cured III'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-2269089992241165821</id><published>2008-09-16T23:58:00.001+01:00</published><updated>2008-09-17T00:06:53.047+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>Day 1 Done</title><content type='html'>I particularly liked the plenary Technology Interfacing for Fabless Semiconductor Companies by&lt;br /&gt;&lt;i&gt;Vahid Manian. &lt;/i&gt;For those who don't know he works for Broadcom. It was really interesting hearing how they manage their relationships with the CMOS foundries and how much effort they put into owning their own cell libraries and techniques.&lt;br /&gt;&lt;br /&gt;More to follow....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-2269089992241165821?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2269089992241165821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2269089992241165821'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/09/day-1-done.html' title='Day 1 Done'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-5536682345445756823</id><published>2008-09-14T19:55:00.000+01:00</published><updated>2008-09-14T20:00:06.166+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cadence'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>Catch up with me at ESSCIRC next week</title><content type='html'>&lt;a href="http://www.esscirc2008.org/"&gt;ESSCIRC&lt;/a&gt; 2008, Edinburgh. I am really looking forward to this conference, and I am meeting up with Cadence and &lt;a href="http://www.nmi.org.uk/"&gt;NMI&lt;/a&gt; to discuss the Cadence Academic Network. Should be good.&lt;br /&gt;&lt;br /&gt;Look out for me with a badge from Southampton University.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-5536682345445756823?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5536682345445756823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5536682345445756823'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/09/catch-up-with-me-at-esscirc-next-week.html' title='Catch up with me at ESSCIRC next week'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-4926192157478775365</id><published>2008-09-12T08:54:00.000+01:00</published><updated>2008-09-12T09:03:26.840+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XUP'/><category scheme='http://www.blogger.com/atom/ns#' term='ML505'/><category scheme='http://www.blogger.com/atom/ns#' term='XILINX'/><title type='text'>Are you and academic and thinking of buying a Xilinx development kit?</title><content type='html'>Then I can't plug &lt;a href="http://digilentinc.com/"&gt;Digilent&lt;/a&gt; enough. They have two very large FPGA boards available for very keen prices. The first is the &lt;a href="http://digilentinc.com/Products/Detail.cfm?Nav1=Products&amp;amp;Nav2=Programmable&amp;amp;Prod=XUPV2P"&gt;Xilinx XUP&lt;/a&gt;, which is a XC2VP30 Virtex 2 Pro with 2 405PPC cores. This board supports DDR and is a great way to get started with prototyping Gaisler SoC designs.  The excellent academic price is only $299! One word of warning: this board doesn't have true SATA ports depite there being connectors and labels saying SATA. They are high speed digital data links that are SATA like but are SATA non-standard and cannot connect to a SATA HDD. No out of band signals.&lt;br /&gt;&lt;br /&gt;The second is an uprated &lt;a href="http://digilentinc.com/Products/Detail.cfm?Prod=V5OSDK&amp;amp;Nav1=Products&amp;amp;Nav2=Programmable"&gt;ML505&lt;/a&gt;. This is identical to the standard Xilinx ML505, but it has a much larger FPGA on it (&lt;span class="BODY12"&gt;XC5VLX110T)&lt;/span&gt; and comes with a JTAG programmer. The ML505 from Xilinx doesn't. Total price $750.&lt;br /&gt;&lt;br /&gt;I have hunted about and the prices here end up hundreds of pounds less than full commercial prices. In the case of the ML505 it is about £300.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-4926192157478775365?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4926192157478775365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4926192157478775365'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/09/are-you-and-academic-and-thinking-of.html' title='Are you and academic and thinking of buying a Xilinx development kit?'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-6397583117224209541</id><published>2008-09-12T08:40:00.000+01:00</published><updated>2008-09-12T08:46:11.982+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenWRT'/><category scheme='http://www.blogger.com/atom/ns#' term='Routers'/><title type='text'>Why getting a linksys WRT54GL wireless router is a good idea...</title><content type='html'>Basically, the &lt;a href="http://www.linksys.com/servlet/Satellite?c=L_Product_C2&amp;amp;childpagename=US%2FLayout&amp;amp;cid=1175243243298&amp;amp;pagename=Linksys%2FCommon%2FVisitorWrapper&amp;amp;lid=4329836858B13"&gt;WRT54G&lt;/a&gt; router is now on the 8th revision of the hardware and has had it's software updated since it was made. For example the current software set can have its web management software secured with SSL and supports WPA/WPA2, concepts that didn't exist when they started making the model.&lt;br /&gt;&lt;br /&gt;Also if you need to do something really special you can remove the stock firmware and replace it with &lt;a href="http://openwrt.org/"&gt;OpenWRT linux&lt;/a&gt;, almost limitlessly configurable. One point: the linux compatible version is sold separately these days as the WRT54G&lt;span style="font-weight: bold;"&gt;L&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-6397583117224209541?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6397583117224209541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6397583117224209541'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/09/why-getting-linksys-wrt54gl-wireless.html' title='Why getting a linksys WRT54GL wireless router is a good idea...'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-2804844826564805921</id><published>2008-09-05T11:47:00.000+01:00</published><updated>2008-09-12T08:52:48.303+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoC'/><category scheme='http://www.blogger.com/atom/ns#' term='LEON3'/><category scheme='http://www.blogger.com/atom/ns#' term='encounter'/><category scheme='http://www.blogger.com/atom/ns#' term='Cadence'/><title type='text'>Just P&amp;R'ed and unconstrained SoC using Cadence Encounter</title><content type='html'>Excellent, a LEON3, DDR controller, misc peripherals using a ST Microelectronics 120nm process from CMP. It was badly done, unconstrained and in all likelihood completely non-functional but it is a real start.&lt;br /&gt;Taking it forward:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Verifying the rc generated verilog netlist is functionally correct. Modelsim will work for us here.&lt;/li&gt;&lt;li&gt;Using rc to generate the netlist from two technology files: Low Leakage and High Speed to allow the critical path to run faster.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Generalizing the setup of Encounter such that it fully uses the whole designkit in an easy-to-use package.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;P&amp;amp;R'ing a whole SoC.&lt;/li&gt;&lt;li&gt;Verifying the back-extracted layout is fully correct.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-2804844826564805921?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2804844826564805921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2804844826564805921'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/09/just-p-and-unconstrained-soc-using.html' title='Just P&amp;R&apos;ed and unconstrained SoC using Cadence Encounter'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-3580494217145548645</id><published>2008-09-04T15:05:00.000+01:00</published><updated>2008-09-18T17:35:22.343+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoC'/><category scheme='http://www.blogger.com/atom/ns#' term='encounter'/><category scheme='http://www.blogger.com/atom/ns#' term='Cadence'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Cadence Encounter SEGV on start faults cured II</title><content type='html'>&lt;span style="font-weight: bold;"&gt;New diagnosis:&lt;/span&gt; The problem occurs when it attempts to display the window on Fedora Core 8 with or without compiz. I wonder if it ever worked? New cure: SEE LATEST POST ON THIS&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;xorg-x11-server-Xorg-1.3.0.0-47.fc8&lt;br /&gt;Linux **** 2.6.25.14-69.fc8 #1 SMP Mon Aug 4 14:00:45 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Dump of problem:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;encounter&lt;br /&gt;This version requires license using cdslmd daemon.&lt;br /&gt;Checking out Encounter license ...&lt;br /&gt;SOC_Encounter_GXL 6.2 license checkout succeeded.&lt;br /&gt;INFO: Current OA version selected: OA22&lt;br /&gt;Starting console server on port esdcad4.ecs.soton.ac.uk:8888 ..&lt;br /&gt;sourcing /home/esdcad/software/cadence/linux/soc62_USR4/tools/fe/etc/rdaDSL.tcl&lt;br /&gt;*******************************************************************&lt;br /&gt;*   Copyright (c)  Cadence Design Systems, Inc.  1996 - 2007.     *&lt;br /&gt;*                     All rights reserved.                        *&lt;br /&gt;*                                                                 *&lt;br /&gt;*                                                                 *&lt;br /&gt;*                                                                 *&lt;br /&gt;* This program contains confidential and trade secret information *&lt;br /&gt;* of Cadence Design Systems, Inc. and is protected by copyright   *&lt;br /&gt;* law and international treaties.  Any reproduction, use,         *&lt;br /&gt;* distribution or disclosure of this program or any portion of it,*&lt;br /&gt;* or any attempt to obtain a human-readable version of this       *&lt;br /&gt;* program, without the express, prior written consent of          *&lt;br /&gt;* Cadence Design Systems, Inc., is strictly prohibited.           *&lt;br /&gt;*                                                                 *&lt;br /&gt;*                 Cadence Design Systems, Inc.                    *&lt;br /&gt;*                    2655 Seely Avenue                            *&lt;br /&gt;*                   San Jose, CA 95134,  USA                      *&lt;br /&gt;*                                                                 *&lt;br /&gt;*                                                                 *&lt;br /&gt;*******************************************************************&lt;br /&gt;&lt;br /&gt;@(#)CDS: First Encounter v06.20-s285_1 (32bit) 03/20/2008 18:59 (Linux 2.4)&lt;br /&gt;@(#)CDS: NanoRoute v06.20-s222 NR080304-1637/USR54-UB (database version 2.30, 58.1.0) {superthreading v1.10}&lt;br /&gt;@(#)CDS: CeltIC v06.20-s075_1 (32bit) 03/06/2008 22:51:18 (Linux 2.4.21-37.ELsmp)&lt;br /&gt;@(#)CDS: CTE v06.20-s256_1 (32bit) Mar 20 2008 15:56:31 (Linux 2.4.21-37.ELsmp)&lt;br /&gt;--- Starting "First Encounter v06.20-s285_1" on Thu Sep  4 15:05:31 (mem=62.9M) ---&lt;br /&gt;--- Running on esdcad4.ecs.soton.ac.uk (x86_64 w/Linux 2.6.9-78.0.1.ELsmp) ---&lt;br /&gt;This version was compiled on Thu Mar 20 18:59:03 PDT 2008.&lt;br /&gt;Set DBUPerIGU to 1000.&lt;br /&gt;Set Default Mode Capacitance Scale Factor to 1.00&lt;br /&gt;Set Detail Mode Capacitance Scale Factor to 1.00&lt;br /&gt;Set Coupling Capacitance Scale Factor to 1.00&lt;br /&gt;Set Resistance Scale Factor to 1.00&lt;br /&gt;Set net toggle Scale Factor to 1.00&lt;br /&gt;Set Shrink Factor to 1.00000&lt;br /&gt;Encounter terminated by internal (SEGV) error/signal...&lt;br /&gt;*** Stack trace in log file.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-3580494217145548645?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3580494217145548645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3580494217145548645'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/09/cadence-encounter-segv-on-start-faults_04.html' title='Cadence Encounter SEGV on start faults cured II'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-7974829590922573791</id><published>2008-09-04T13:43:00.000+01:00</published><updated>2008-09-04T13:45:27.862+01:00</updated><title type='text'>Cadence Encounter SEGV on start faults cured</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem: &lt;/span&gt;On RHEL 4u7 encounter from soc52 and soc62 crashes with a SEGV on run. In the stacktrace are lots of Tcl type errors.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution: &lt;/span&gt;Install RHEL 3! Seriously, running the most supported OS, in this case RHEL 3, solved the problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-7974829590922573791?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7974829590922573791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7974829590922573791'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/09/cadence-encounter-segv-on-start-faults.html' title='Cadence Encounter SEGV on start faults cured'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-2810028516212118534</id><published>2008-09-02T13:03:00.000+01:00</published><updated>2008-09-02T13:05:50.644+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoC'/><category scheme='http://www.blogger.com/atom/ns#' term='Cadence'/><title type='text'>Cadence rc LEON3 compilation success</title><content type='html'>I have just used Cadence SoC's rc (RTL Compiler) to build a verilog netlist of a LEON3 SoC. The estimates are that it would run at 300MHz on a 120nm process.&lt;br /&gt;&lt;br /&gt;Now I just need to progress getting it into encounter to start floorplanning. And a large amount of verification and checking that it is valid and correct.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-2810028516212118534?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2810028516212118534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2810028516212118534'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/09/cadence-rc-leon3-compilation-success.html' title='Cadence rc LEON3 compilation success'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-6696283227814783795</id><published>2008-08-28T15:46:00.000+01:00</published><updated>2008-08-28T16:04:48.668+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cadence'/><category scheme='http://www.blogger.com/atom/ns#' term='e3500'/><title type='text'>Cadence Physically Knowledgeable Synthesis on solaris</title><content type='html'>Running a very old version of cadence pks_shell I decided to play about a bit with the configuration of the two old sun E3500's. Basically the systems are old 6 processor UltraSPARC II's and I had split the memory between them evenly. This turned out to be a very silly thing to do! It meant I didn't take advantage of the fantastically wide interleave available: If I install 4 lots of 1GB then I get a 4 way interleave quadrupling the memory bandwidth. So I am timing the compile again. Unfortunately our Cadence licensing doesn't allow me to share benchmark information, but it is surprisingly quicker.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-6696283227814783795?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6696283227814783795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6696283227814783795'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/08/cadence-physically-knowledgeable.html' title='Cadence Physically Knowledgeable Synthesis on solaris'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-8875684992924961003</id><published>2008-08-21T11:58:00.000+01:00</published><updated>2008-08-21T12:00:54.326+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cadence'/><title type='text'>Final flow looking better already: Cadence rc</title><content type='html'>After a lot of checking about it seems SoC Encounter comes with its own RTL compiler which is a lot more modern than our installed version of PKS. It also looks like a lot of the functionality of PKS was pushed into encounter which is the sensible place for it to be. When laying out a modern SoC with IP blocks, analogue and RTL it makes sense to do the floorplanning, clock tree balancing and reordering all in one tool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-8875684992924961003?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/8875684992924961003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/8875684992924961003'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/08/final-flow-looking-better-already.html' title='Final flow looking better already: Cadence rc'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-6668381255134514269</id><published>2008-08-20T18:37:00.000+01:00</published><updated>2008-08-20T18:40:52.409+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CMP'/><category scheme='http://www.blogger.com/atom/ns#' term='Cadence'/><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><title type='text'>Converting Libraries for use in Cadence PKS</title><content type='html'>Our designkits (which shall remain unspecified except that you can get some of them from CMP) mainly support Synopsys tools. However we have limited licenses for Design Compiler so to use them in Cadence PKS you can use a nifty little program called syn2tlf. This converts .lib files to .tlf, used by Cadence PKS.  What I don't yet know is how to check that the conversion is anywhere near sane.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-6668381255134514269?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6668381255134514269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6668381255134514269'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/08/converting-libraries-for-use-in-cadence.html' title='Converting Libraries for use in Cadence PKS'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-7265366997723260952</id><published>2008-08-13T18:51:00.000+01:00</published><updated>2008-08-13T18:57:37.469+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CMP'/><category scheme='http://www.blogger.com/atom/ns#' term='DesignKits'/><category scheme='http://www.blogger.com/atom/ns#' term='STMicroelectronics'/><title type='text'>STmicroelectronic 65nm, 65nm SOI and 45nm Design Kit NDA's Signed</title><content type='html'>Never underestimate the time it takes to sign a legal commitment! Finally I found the right person who was able to sign for the University binding us to not revealing secrets and accepting liabilities such that I can now receive the STMicroelectronic Design Kits (Cadence calls them PDK's) from &lt;a href="http://cmp.imag.fr/"&gt;CMP&lt;/a&gt; for their &lt;a href="http://cmp.imag.fr/products/ic/"&gt;65nm, 65nm SOI and 45nm CMOS processes&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now to develop several flows including various verification strategies and frontends (Synopsys' Designware, Cadence IC, PrimeTime, etc).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-7265366997723260952?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7265366997723260952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7265366997723260952'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/08/stmicroelectronic-65nm-65nm-soi-and.html' title='STmicroelectronic 65nm, 65nm SOI and 45nm Design Kit NDA&apos;s Signed'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-5321548350621563214</id><published>2008-08-13T18:43:00.000+01:00</published><updated>2008-08-21T12:24:52.942+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DATE'/><category scheme='http://www.blogger.com/atom/ns#' term='duties'/><title type='text'>DATE09 TPC Meeting on Wednesday, November the 5th</title><content type='html'>The &lt;a href="http://www.date-conference.com/index.php"&gt;DATE09&lt;/a&gt; (Design, Automation and Test in Europe) TPC (Technical Program Committee) meeting is going to be held at the awesome &lt;a href="http://www.savoyplace.co.uk/index.php?venue=savoy"&gt;IET building, Savoy Place, London&lt;/a&gt; this year. Wednesday the 5th of November to be precise. For full details refer to the &lt;a href="http://date09-tpc.ecs.soton.ac.uk/"&gt;DATE09 TPC website, http://date09-tpc.ecs.soton.ac.uk/.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-5321548350621563214?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5321548350621563214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5321548350621563214'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/08/date09-tpc-meeting-on-wednesday.html' title='DATE09 TPC Meeting on Wednesday, November the 5th'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-574349089635684817</id><published>2008-08-12T18:38:00.000+01:00</published><updated>2008-08-12T18:57:39.550+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Modelsim'/><category scheme='http://www.blogger.com/atom/ns#' term='Rocket IO'/><category scheme='http://www.blogger.com/atom/ns#' term='XILINX'/><title type='text'>Update to AHB Slave Shenanigans and Massive Modelsim Migranes</title><content type='html'>&lt;b&gt;AHB Slave Shenanigans:&lt;/b&gt; The HREADY signal is supposed to be an input from all the other AHB slaves such that they all can note that a slave is hanging the master.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;b&gt;Massive Modelsim Migranes:&lt;/b&gt; After a lot of messing about I found out the following solution (for 64 bit linux on amd64 and intel amd64 ext systems):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;libhm = $MODEL_TECH/../linux_x86_64/libhm.sl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;instead of the libhm.sl line in step 4 of &lt;a href="http://www.xilinx.com/support/answers/24800.htm"&gt;this&lt;/a&gt; article from Xilinx. This applies to Modelsim SE 6.3f and the Rocket IO (or Rocket I/O?) module called MGT internally and the SmartModel SWIFT models included in Xilinx ISE9.2i.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-574349089635684817?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/574349089635684817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/574349089635684817'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/08/update-to-ahb-slave-shenanigans-and.html' title='Update to AHB Slave Shenanigans and Massive Modelsim Migranes'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1726250316447364115</id><published>2008-08-07T09:23:00.000+01:00</published><updated>2008-08-07T09:54:10.945+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DVB-T'/><category scheme='http://www.blogger.com/atom/ns#' term='Mythtv'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>UK DVB Channel Numbers for MythDora 5</title><content type='html'>&lt;a href="http://www.mythtv.org/"&gt;Mythtv&lt;/a&gt;, for those who don't know, is a very powerful, flexible, PVR tweakers paradise which can be run on top of an existing linux OS or from one of the customised distributions available. The new version of &lt;a href="http://www.mythdora.com/"&gt;Mythdora, 5&lt;/a&gt;, has a really irritating problem: using UK freeview DVB-T it doesn't assign channel numbers as you would expect. So to the rescue is a small mysql script to do just that. The channel numbers come from the awesome &lt;a href="http://www.digitalspy.co.uk/terrestrial/epg/"&gt;DigitalSpy&lt;/a&gt; website, one of the best collections of information on transmitted media I have ever come across. &lt;br /&gt;&lt;br&gt;&lt;br /&gt;Script:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;USE mythconverg;&lt;br /&gt;UPDATE channel SET channum=1 WHERE name='BBC ONE';       &lt;br /&gt;UPDATE channel SET channum=2 WHERE name='BBC TWO';      &lt;br /&gt;UPDATE channel SET channum=3 WHERE name='ITV1';         &lt;br /&gt;UPDATE channel SET channum=4 WHERE name='Channel 4';    &lt;br /&gt;UPDATE channel SET channum=5 WHERE name='Five';         &lt;br /&gt;UPDATE channel SET channum=6 WHERE name='ITV2';         &lt;br /&gt;UPDATE channel SET channum=7 WHERE name='BBC THREE';    &lt;br /&gt;UPDATE channel SET channum=9 WHERE name='BBC FOUR';     &lt;br /&gt;UPDATE channel SET channum=10 WHERE name='ITV3';         &lt;br /&gt;UPDATE channel SET channum=11 WHERE name='SKY THREE';    &lt;br /&gt;UPDATE channel SET channum=12 WHERE name='UKTV History'; &lt;br /&gt;UPDATE channel SET channum=13 WHERE name='Channel 4+1';  &lt;br /&gt;UPDATE channel SET channum=14 WHERE name='More 4';       &lt;br /&gt;UPDATE channel SET channum=16 WHERE name='QVC';          &lt;br /&gt;UPDATE channel SET channum=18 WHERE name='The HITS';     &lt;br /&gt;UPDATE channel SET channum=19 WHERE name='Dave';         &lt;br /&gt;UPDATE channel SET channum=20 WHERE name='Virgin1';      &lt;br /&gt;UPDATE channel SET channum=21 WHERE name='TMF';          &lt;br /&gt;UPDATE channel SET channum=22 WHERE name='Ideal World';  &lt;br /&gt;UPDATE channel SET channum=23 WHERE name='bid tv';       &lt;br /&gt;UPDATE channel SET channum=24 WHERE name='price-drop tv';&lt;br /&gt;UPDATE channel SET channum=28 WHERE name='ITV4';         &lt;br /&gt;UPDATE channel SET channum=29 WHERE name='E4';           &lt;br /&gt;UPDATE channel SET channum=30 WHERE name='E4+1';         &lt;br /&gt;UPDATE channel SET channum=31 WHERE name='ITV2 +1';      &lt;br /&gt;UPDATE channel SET channum=32 WHERE name='Film4';        &lt;br /&gt;UPDATE channel SET channum=34 WHERE name='SETANTA SPORTS';&lt;br /&gt;UPDATE channel SET channum=35 WHERE name='Five US';      &lt;br /&gt;UPDATE channel SET channum=36 WHERE name='FIVER';        &lt;br /&gt;UPDATE channel SET channum=37 WHERE name='smileTV';      &lt;br /&gt;UPDATE channel SET channum=42 WHERE name='Nuts TV';      &lt;br /&gt;UPDATE channel SET channum=43 WHERE name='Gems TV';      &lt;br /&gt;UPDATE channel SET channum=44 WHERE name='GEMSTV1';      &lt;br /&gt;UPDATE channel SET channum=45 WHERE name='Lottery Xtra'; &lt;br /&gt;UPDATE channel SET channum=61 WHERE name='TVX / REDHOT'; &lt;br /&gt;UPDATE channel SET channum=70 WHERE name='CBBC Channel';&lt;br /&gt;UPDATE channel SET channum=71 WHERE name='CBeebies';     &lt;br /&gt;UPDATE channel SET channum=75 WHERE name='CITV';         &lt;br /&gt;UPDATE channel SET channum=80 WHERE name='BBC NEWS';&lt;br /&gt;UPDATE channel SET channum=81 WHERE name='BBC Parliament';&lt;br /&gt;UPDATE channel SET channum=82 WHERE name='Sky News';     &lt;br /&gt;UPDATE channel SET channum=83 WHERE name='Sky Spts News';&lt;br /&gt;UPDATE channel SET channum=87 WHERE name='Community';    &lt;br /&gt;UPDATE channel SET channum=88 WHERE name='Teachers TV';  &lt;br /&gt;UPDATE channel SET channum=100 WHERE name='Teletext';     &lt;br /&gt;UPDATE channel SET channum=101 WHERE name='Ttext Holidays';&lt;br /&gt;UPDATE channel SET channum=102 WHERE name='Rabbit';       &lt;br /&gt;UPDATE channel SET channum=103 WHERE name='TeletextCasino';&lt;br /&gt;UPDATE channel SET channum=104 WHERE name='Teletext on 4';&lt;br /&gt;UPDATE channel SET channum=105 WHERE name='BBCi';&lt;br /&gt;UPDATE channel SET channum=108 WHERE name='Sky Text';     &lt;br /&gt;UPDATE channel SET channum=300 WHERE name='4TVinteractive';&lt;br /&gt;UPDATE channel SET channum=301 WHERE name='301';          &lt;br /&gt;UPDATE channel SET channum=302 WHERE name='302';          &lt;br /&gt;UPDATE channel SET channum=303 WHERE name='303';          &lt;br /&gt;UPDATE channel SET channum=304 WHERE name='tvtv DIGITAL'; &lt;br /&gt;UPDATE channel SET channum=305 WHERE name='305';          &lt;br /&gt;UPDATE channel SET channum=700 WHERE name='BBC Radio 1';  &lt;br /&gt;UPDATE channel SET channum=701 WHERE name='1Xtra BBC';    &lt;br /&gt;UPDATE channel SET channum=702 WHERE name='BBC Radio 2';  &lt;br /&gt;UPDATE channel SET channum=703 WHERE name='BBC Radio 3';  &lt;br /&gt;UPDATE channel SET channum=704 WHERE name='BBC Radio 4';  &lt;br /&gt;UPDATE channel SET channum=705 WHERE name='BBC R5 Live';  &lt;br /&gt;UPDATE channel SET channum=706 WHERE name='BBC 5L SportsX';&lt;br /&gt;UPDATE channel SET channum=707 WHERE name='BBC 6 Music';  &lt;br /&gt;UPDATE channel SET channum=708 WHERE name='BBC 7';        &lt;br /&gt;UPDATE channel SET channum=709 WHERE name='BBC Asian Net.';&lt;br /&gt;UPDATE channel SET channum=710 WHERE name='BBC World Sv.';&lt;br /&gt;UPDATE channel SET channum=711 WHERE name='The Hits Radio';&lt;br /&gt;UPDATE channel SET channum=712 WHERE name='Smash Hits\!';  &lt;br /&gt;UPDATE channel SET channum=713 WHERE name='Kiss';         &lt;br /&gt;UPDATE channel SET channum=714 WHERE name='heat';         &lt;br /&gt;UPDATE channel SET channum=715 WHERE name='Magic';        &lt;br /&gt;UPDATE channel SET channum=716 WHERE name='Q';            &lt;br /&gt;UPDATE channel SET channum=718 WHERE name='SMOOTH RADIO'; &lt;br /&gt;UPDATE channel SET channum=721 WHERE name='MOJO';         &lt;br /&gt;UPDATE channel SET channum=722 WHERE name='Kerrang\!';     &lt;br /&gt;UPDATE channel SET channum=723 WHERE name='talkSPORT';    &lt;br /&gt;UPDATE channel SET channum=724 WHERE name='Clyde 1';      &lt;br /&gt;UPDATE channel SET channum=725 WHERE name='Premier Radio';&lt;br /&gt;UPDATE channel SET channum=727 WHERE name='Virgin Radio'; &lt;br /&gt;UPDATE channel SET channum=728 WHERE name='Heart';        &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To use it cut and paste the SQL into a text file called &lt;tt&gt;channel_num_fix.sql&lt;/tt&gt;. Then run as root:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/etc/init.d/mythbackend stop&lt;br /&gt;mysql -u mythtv -p &amp;lt; channel_num_fix.sql&lt;br /&gt;/etc/init.d/mythbackend start&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2 Potential warnings here: Firstly I get you to stop the backend. I am uncertain that is necessary, however on your own head be it. Also if you have channels not listed I would ensure they are not assigned to a channel number that one of the above channel's want. I don't know what would happen, perhaps nothing bad as each channel has a unique ID as well as its number.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1726250316447364115?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1726250316447364115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1726250316447364115'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/08/uk-dvb-channel-numbers-for-mythdora-5.html' title='UK DVB Channel Numbers for MythDora 5'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1780021056608177669</id><published>2008-08-06T18:41:00.000+01:00</published><updated>2008-08-06T19:03:09.530+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Modelsim'/><category scheme='http://www.blogger.com/atom/ns#' term='Rocket IO'/><category scheme='http://www.blogger.com/atom/ns#' term='AMBA'/><title type='text'>AHB Slave Shenanigans and Massive Modelsim Migranes</title><content type='html'>Setting up and running an &lt;a href="http://www.arm.com/products/solutions/AMBAHomePage.html"&gt;ARM AMBA&lt;/a&gt; bus is not too tricky, and it is quite a neat standard. However in this case my student seems to have copied a rather cunning implementation from &lt;a href="http://www.gaisler.com/cms/"&gt;Gaisler Research's GRLIB&lt;/a&gt;. However the AMBA standard document seems to be rather inconsistent one one point: The HREADY signal is defined to be an input and an output for all AHB slaves, but for the life of me I can't find another mention of it, nor does it seem sensible. I shall consult &lt;a href="http://www.ecs.soton.ac.uk/people/df07v"&gt;Prof Flynn&lt;/a&gt; who is working here, as he developed AMBA and has worked with it for many years. If you are thinking of making your own GPL'ed AHB slave look no further than the Gaisler Research ahbram.vhd.&lt;br /&gt;&lt;br /&gt;Modelsim and smartmodels (specifically the &lt;a href="http://www.xilinx.com/support/answers/24800.htm"&gt;Rocket IO, MGT smartmodel&lt;/a&gt;). Good grief, this is a non-trivial procedure. Compile the models, install the models then make lots of opaque changes to the modelsim.ini file and it still doesn't work! Don't know why yet, but will post when I do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1780021056608177669?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1780021056608177669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1780021056608177669'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/08/ahb-slave-shenanigans-and-massive.html' title='AHB Slave Shenanigans and Massive Modelsim Migranes'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-8047008565184329820</id><published>2008-08-04T23:10:00.000+01:00</published><updated>2008-08-04T23:17:16.389+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XUP'/><category scheme='http://www.blogger.com/atom/ns#' term='ML505'/><category scheme='http://www.blogger.com/atom/ns#' term='SATA'/><category scheme='http://www.blogger.com/atom/ns#' term='XILINX'/><title type='text'>I'm getting a Virtex-5 ML505</title><content type='html'>Which, to me is great news. Up till now I have been using the excellent &lt;a href="http://www.xilinx.com/products/devkits/XUPV2P.htm"&gt;Xilinx XUP&lt;/a&gt; board however it has one real failing: the ports labelled &lt;a href="http://www.serialata.org/"&gt;SATA&lt;/a&gt; on the XUP are not capable of talking to &lt;a href="http://www.serialata.org/"&gt;SATA&lt;/a&gt; devices. They don't support Out Of Band signalling.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.xilinx.com/products/devkits/HW-V5-ML505-UNI-G.htm"&gt;Virtex-5 LXT based ML505&lt;/a&gt; however does support the full SATA specification, as well as a lot of others besides. The reason is more advanced Rocket IO ports.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-8047008565184329820?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/8047008565184329820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/8047008565184329820'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/08/im-getting-virtex-5-ml505.html' title='I&apos;m getting a Virtex-5 ML505'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-5872780099187338854</id><published>2008-07-28T15:28:00.001+01:00</published><updated>2008-07-28T15:29:17.451+01:00</updated><title type='text'>Back from holiday....</title><content type='html'>Spent a lovely week with my wife and other close family in the south west of England, all the way down to the Lizard Peninsula.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-5872780099187338854?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5872780099187338854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5872780099187338854'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/back-from-holiday.html' title='Back from holiday....'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-8656626034698095206</id><published>2008-07-28T15:18:00.000+01:00</published><updated>2008-07-28T15:28:23.735+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Digital'/><category scheme='http://www.blogger.com/atom/ns#' term='CMOS'/><category scheme='http://www.blogger.com/atom/ns#' term='IDESA'/><category scheme='http://www.blogger.com/atom/ns#' term='RAL'/><title type='text'>I get to attend the IDESA  "Advanced Digital Physical Implementation flow" Course</title><content type='html'>&lt;a href="http://www.idesa-training.org/"&gt;IDESA&lt;/a&gt; is intended to kickstart the production of both analog and digital &lt;=90nm CMOS among academia. I have got a place on the Advanced Digital Physical Implementation flow course hosted by &lt;a href="http://www.scitech.ac.uk/about/find/ral/introduction.aspx"&gt;Rutherford Appleton Laboratories&lt;/a&gt; in Didcot, Oxfordshire (the courses are available from other host institutions as well). The week looks very interesting:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Day 1: Intro, design environment and toolchain + LAB&lt;/li&gt;&lt;li&gt;Day 2: Leakage aware design and prevention, floorplanning LAB, design planning and libraries (including IP, soft and hard).&lt;/li&gt;&lt;li&gt;Day 3: Low power flow including positioning to minimise dynamic and leakage power, physical synthesis placement and optimisation. Multiple Clock Tree Synthesis.&lt;/li&gt;&lt;li&gt;Day 4: Physical Synthesis, Design for Test, Multimode and Multicorner, Routing to GDSII and labs.&lt;/li&gt;&lt;li&gt;Day 5: IR drop analysys, dynamic power analysis, on chip validation and statistical static timing analysis. Lab on signoff, signoff and design finishing and layout verification. Tape-out.&lt;/li&gt;&lt;/ul&gt;Anyway I am keen to angle my way onto other courses of this quality that are on offer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-8656626034698095206?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/8656626034698095206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/8656626034698095206'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/i-get-to-attend-idesa-advanced-digital.html' title='I get to attend the IDESA  &quot;Advanced Digital Physical Implementation flow&quot; Course'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-284117835034598581</id><published>2008-07-17T22:42:00.000+01:00</published><updated>2008-07-17T22:45:05.130+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARM'/><category scheme='http://www.blogger.com/atom/ns#' term='sparc'/><category scheme='http://www.blogger.com/atom/ns#' term='ASM'/><title type='text'>Need a SPARC version of "ARM System-on-chip Architecture"</title><content type='html'>&lt;span class="sans"&gt;&lt;span id="btAsinTitle"&gt;"&lt;a href="http://www.amazon.co.uk/System-chip-Architecture-Steve-Furber/dp/0201675196"&gt;ARM System-on-chip Architecture&lt;/a&gt;", by Steve Furber is an excellent book for anyone wanting to get an OS or other software running well on the ARM range of microprocessor cores. Now if there is an equivalent for SPARC architectures please let me know as that is the current problem I am facing!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-284117835034598581?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/284117835034598581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/284117835034598581'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/need-sparc-version-of-arm-system-on.html' title='Need a SPARC version of &quot;ARM System-on-chip Architecture&quot;'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-6872839293813179385</id><published>2008-07-17T20:19:00.000+01:00</published><updated>2008-07-17T22:41:48.680+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='duties'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Coursework for Academics....</title><content type='html'>We are now discussing the changes to the courses for next academic year. The main push on at the moment is directed at enhancing our teaching of software to the electronics undergraduates.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;COMP1010&lt;/span&gt; Big changes here to alter how we teach this module. The previous course centered on teaching as much C as possible using Visual Studio, with a lab a week reinforcing the lecture topic. To improve things by engaging the students more we are moving a lot of the C syntax and content into the semester 2 course. This leaves room for the introduction of &lt;a href="http://www.atmel.com/products/AVR/"&gt;AVR microcontrollers&lt;/a&gt; along with a bit of computer architecture. Hopefully this will engage the students immediately. The programming will be done in &lt;a href="http://www.atmel.com/dyn/products/tools.asp?family_id=607#798"&gt;AVRStudio&lt;/a&gt; with &lt;a href="http://winavr.sourceforge.net/"&gt;WinAVR&lt;/a&gt; as the compiler. The assessment will be significantly changed to favour two "Exam Labs" which will be open book individual assessments. The first will have a lot of direction and the second will be solving a problem. Appropriate assessment of any course is essential for its success, and I personally belive in problem based learning as one of the most enjoyable and effective techniques.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ELEC1013&lt;/span&gt; The main change here is the labs have been shortened and there will be more of them. There is also an open question whether to include an AVR Microcontroller that can be used over USB or networked to encourage the Computer Science students who take this course to mess about with gadgets.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-6872839293813179385?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6872839293813179385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6872839293813179385'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/coursework-for-academics.html' title='Coursework for Academics....'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1224734261265799985</id><published>2008-07-15T16:54:00.000+01:00</published><updated>2008-07-15T17:00:52.156+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><category scheme='http://www.blogger.com/atom/ns#' term='mpxio'/><category scheme='http://www.blogger.com/atom/ns#' term='Disksuite'/><category scheme='http://www.blogger.com/atom/ns#' term='e3500'/><title type='text'>Do the multipathing first, and the mirroring afterwards!</title><content type='html'>If you are using a mirrored root under Disksuite and wish to enable mpxio I wish you well. It is a devil of a job, mainly due to the fact that stmsboot won't recognise your metadevice as a STMS device and so won't enable it.&lt;br /&gt;&lt;br /&gt;So to fix it here is the answer:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Back everything up. &lt;span style="font-weight: bold;"&gt;EVERYTHING&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Follow the guide &lt;a href="http://www.math.uwaterloo.ca/mfcf/internal/procedures/OS/Solaris/disksuite_fix.shtml"&gt;here&lt;/a&gt; to undo the mirrored root&lt;/li&gt;&lt;li&gt;Run stmsboot -e and reboot immediately&lt;/li&gt;&lt;li&gt;Everything should now be correctly multipathed using mpxio&lt;/li&gt;&lt;li&gt;Rebuild all the mirrored root and other devices&lt;/li&gt;&lt;/ol&gt;and next time, do the multipathing first and the mirroring afterwards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1224734261265799985?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1224734261265799985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1224734261265799985'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/do-multipathing-first-and-mirroring.html' title='Do the multipathing first, and the mirroring afterwards!'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-3195816773268765183</id><published>2008-07-15T11:03:00.000+01:00</published><updated>2008-07-15T11:07:30.253+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='angstrom'/><category scheme='http://www.blogger.com/atom/ns#' term='LEON3'/><category scheme='http://www.blogger.com/atom/ns#' term='Snapgear'/><title type='text'>Adding a package called "leon-bootloader" to Angstrom</title><content type='html'>I wonder how to handle this. Typically Angstrom downloads source packages from the internet as needed, however in this case the bootloader is never supplied as a separate download. Downloading and extracting snapgear linux to get at it doesn't appeal, neither does distributing it by myself. I am also uncertain whether Angstrom would accept a complete source package in their download system for such a niche market.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-3195816773268765183?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3195816773268765183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3195816773268765183'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/adding-package-called-leon-bootloader.html' title='Adding a package called &quot;leon-bootloader&quot; to Angstrom'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1435658150750529467</id><published>2008-07-10T17:48:00.000+01:00</published><updated>2008-07-10T17:50:34.794+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Imagination Technologies'/><title type='text'>Imagination Technologies Visit</title><content type='html'>I have just had the pleasure of hosting some representatives of &lt;a href="http://www.imgtec.com"&gt;Imagination Technologies&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It was a productive day, and I am looking forward to some really interesting projects and cooperation coming our way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1435658150750529467?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1435658150750529467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1435658150750529467'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/imagination-technologies-visit.html' title='Imagination Technologies Visit'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-8083925267594728681</id><published>2008-07-08T10:01:00.000+01:00</published><updated>2008-07-08T15:09:38.982+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='duties'/><category scheme='http://www.blogger.com/atom/ns#' term='Exams'/><title type='text'>Writing Referral Exam Questions</title><content type='html'>Unfortunately not all students pass the exam, and this is their second chance. History suggests that some will work very hard and do well, and some will (despite hard work in some cases) not. In many ways this is quite a difficult part of being an academic - assessment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-8083925267594728681?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/8083925267594728681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/8083925267594728681'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/writing-referral-exam-questions.html' title='Writing Referral Exam Questions'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-4529001598631561607</id><published>2008-07-04T16:18:00.000+01:00</published><updated>2008-07-04T16:27:25.786+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GRLIB'/><category scheme='http://www.blogger.com/atom/ns#' term='LEON3'/><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='boot'/><title type='text'>The LEON3 sparc linux bootloader generation process is awful</title><content type='html'>&lt;ol&gt;&lt;li&gt;Uses a combination of make and perl scripts reading from a global config.&lt;/li&gt;&lt;li&gt;Includes including includes including includes.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Variables drawn directly from .config files and the aforementioned headers, some of which are written by perl scripts driven from variables as above.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Uses gcc to edit a text file and then calls the result a .o (it is plain ASCII) after hardcoding all of the paths.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;I either choose to sanitise this system, or just package it and gingerly push options in its general direction. It is also unclear what license it is under, however as it is part of a linux distro build process I believe that puts it under the GPL whether it is explicit or not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-4529001598631561607?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4529001598631561607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4529001598631561607'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/leon3-sparc-linux-bootloader-generation.html' title='The LEON3 sparc linux bootloader generation process is awful'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1478810624936687326</id><published>2008-07-04T16:17:00.001+01:00</published><updated>2008-07-04T16:33:50.732+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DDR'/><title type='text'>Broken DDR DIMM replaced, now to continue..</title><content type='html'>Replaced the broken DDR DIMM (which has a lifetimes warranty) and now to get on with things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1478810624936687326?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1478810624936687326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1478810624936687326'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/broken-ddr-dimm-replaced-now-to.html' title='Broken DDR DIMM replaced, now to continue..'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-2507606225754972668</id><published>2008-07-04T11:58:00.000+01:00</published><updated>2008-07-04T11:59:58.392+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XUP'/><category scheme='http://www.blogger.com/atom/ns#' term='DDR'/><category scheme='http://www.blogger.com/atom/ns#' term='XILINX'/><title type='text'>Trouble! Things that were working just fine, now are not</title><content type='html'>Basically the system now claims it cannot see the DDR! Which is a blow. I don't know why but I am getting the dreaded 'stack pointer not set' errors and the system doesn't seem to think it has any memory. I am wondering if I need to add in a bit more manual deskewing or whether I have actually broken something (I certainly hope not!).&lt;br /&gt;&lt;br /&gt;More to follow....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-2507606225754972668?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2507606225754972668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2507606225754972668'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/trouble-things-that-were-working-just.html' title='Trouble! Things that were working just fine, now are not'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1599567736406632964</id><published>2008-07-03T22:32:00.001+01:00</published><updated>2008-07-08T10:13:24.962+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='angstrom'/><category scheme='http://www.blogger.com/atom/ns#' term='LEON3'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenEmbedded'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Booted the Kernel built by Angstrom on LEON3</title><content type='html'>... but not the ramdisk. I seem to be having trouble with it at the moment. I shall investigate it properly tomorrow. Perhaps I haven't got enough RAM enabled, which can be a real problem apparently. Kernel hangs if you run out without error messages.&lt;br /&gt;&lt;br /&gt;Just to be clear: I took the kernel from snapgear linux. I just created a single large patch against vanilla 2.6.21.1. The patch is quite large and I didn't want to care about such things.&lt;br /&gt;&lt;br /&gt;However the version of glibc and the compiler are completely different. I don't yet know if this is going to cause stability problems, but I can just constrain Angstrom to use the right versions from the snapgear toolchain. Such is the power of &lt;a href="http://oe.linuxtogo.org/"&gt;OpenEmbedded&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1599567736406632964?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1599567736406632964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1599567736406632964'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/booted-angstrom-kernel-on-leon3.html' title='Booted the Kernel built by Angstrom on LEON3'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-7820122806298027987</id><published>2008-07-03T20:59:00.001+01:00</published><updated>2008-07-03T21:01:32.714+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='angstrom'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><category scheme='http://www.blogger.com/atom/ns#' term='Snapgear'/><title type='text'>Angstrom building for SPARC</title><content type='html'>By poaching files and diffs from snapgear, Angstrom is merrily building away.&lt;br /&gt;&lt;br /&gt;Slowly debugging issues and learning more than I ever wanted to know about the linux boot process.&lt;br /&gt;Issues:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Does it work? Angstrom at the moment is building with gcc4 not 3.&lt;/li&gt;&lt;li&gt;Are there necessary glibc patches? If so I haven't done anything to apply any.&lt;/li&gt;&lt;li&gt;I need to fix the ramdisk builds.&lt;/li&gt;&lt;li&gt;Will udev work?&lt;/li&gt;&lt;/ul&gt;Anyway, off home now!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-7820122806298027987?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7820122806298027987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7820122806298027987'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/angstrom-building-for-sparc.html' title='Angstrom building for SPARC'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-2394080273272745456</id><published>2008-07-03T17:08:00.000+01:00</published><updated>2008-07-03T17:10:33.658+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='angstrom'/><category scheme='http://www.blogger.com/atom/ns#' term='sparc'/><category scheme='http://www.blogger.com/atom/ns#' term='LEON3'/><category scheme='http://www.blogger.com/atom/ns#' term='GRMON'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Beginning work on modifying angstrom...</title><content type='html'>Seems that point 1 from below is already taken care of! Angstrom is setup for a sun4cdm with a supersparc CPU. I am building it now and hope to take care of packaging it for use in TSIM and GRMON as an image etc. (not that I have TSIM unfortunately).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-2394080273272745456?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2394080273272745456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2394080273272745456'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/beginning-work-on-modifying-angstrom.html' title='Beginning work on modifying angstrom...'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-5648170631198856103</id><published>2008-07-03T09:13:00.000+01:00</published><updated>2008-07-08T09:53:21.599+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='angstrom'/><category scheme='http://www.blogger.com/atom/ns#' term='XUP'/><category scheme='http://www.blogger.com/atom/ns#' term='LEON3'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenZaurus'/><category scheme='http://www.blogger.com/atom/ns#' term='XILINX'/><category scheme='http://www.blogger.com/atom/ns#' term='Snapgear'/><title type='text'>Snapgear Linux or Angstrom..</title><content type='html'>I am currently building and deploying Snapgear linux onto a LEON3 system aboard a xilinx-xup board. However I have several issues with Snapgear:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Despite all the hard work that has gone into it, it feels poorly constructed. I think they are discovering just how hard it is to maintain and build embedded linux distros. I am thinking of the early days of &lt;a href="http://www.openzaurus.org/wordpress/"&gt;OpenZaurus&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Functionality that just doesn't work out of the box: dhclient, openssl, ssh and sshd. Pretty fundamental tools here. Not to complain about the good work of &lt;a href="http://www.ucdot.org/article.pl?sid=03/10/23/2249235&amp;amp;mode=thread"&gt;uCdot&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;I think I shall try to get &lt;a href="http://www.angstrom-distribution.org/"&gt;&lt;span style="font-size:100%;"&gt;Ångström&lt;/span&gt;&lt;/a&gt; up and running as it is much better at handling these things. The main effort will be:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Toolchain. Assembling the patches and CFLAGS etc for the toolchain (glibc in the first instance).&lt;/li&gt;&lt;li&gt;Backend: Packaging the system such that it will be able to build images for the various GR tools.&lt;/li&gt;&lt;/ol&gt;Further posts will follow as I address these issues. Overall I think it is more valuable than fixing problems in Snapgear.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-5648170631198856103?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5648170631198856103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5648170631198856103'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/07/snapgear-linux-or-angstrom.html' title='Snapgear Linux or Angstrom..'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-2603587331145982398</id><published>2008-06-30T17:31:00.000+01:00</published><updated>2008-07-03T09:28:38.969+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XUP'/><category scheme='http://www.blogger.com/atom/ns#' term='GRMON'/><category scheme='http://www.blogger.com/atom/ns#' term='JTAG'/><category scheme='http://www.blogger.com/atom/ns#' term='XILINX'/><title type='text'>A brand new XUP board is sitting on my desk...</title><content type='html'>... and even better it doesn't have the old jtag programmer onboard so it works with GRMON! So much better than the serial debug system I was using before. It programs about 10 times faster for a start.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-2603587331145982398?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2603587331145982398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2603587331145982398'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/brand-new-xup-board-is-sitting-on-my.html' title='A brand new XUP board is sitting on my desk...'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-687339959399928418</id><published>2008-06-30T13:29:00.000+01:00</published><updated>2008-06-30T17:33:47.121+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware/Software Codesign'/><category scheme='http://www.blogger.com/atom/ns#' term='System C'/><title type='text'>Where to go from here: System C + Hardware/Software Codesign?</title><content type='html'>The GRLIB components and tools by being GPL'ed and available in VHDL form are a serious attraction for &lt;span style="font-weight: bold;"&gt;Hardware/Software Codesign.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;It isn't quite clear yet how usable/possible this will be, but it would allow us access to real, selectable hardware examples. Quite a proposition.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-687339959399928418?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/687339959399928418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/687339959399928418'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/where-to-go-from-here-system-c.html' title='Where to go from here: System C + Hardware/Software Codesign?'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-487887198482275485</id><published>2008-06-27T14:47:00.000+01:00</published><updated>2008-06-30T13:29:54.561+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GRLIB'/><category scheme='http://www.blogger.com/atom/ns#' term='LEON3'/><category scheme='http://www.blogger.com/atom/ns#' term='FPGA'/><category scheme='http://www.blogger.com/atom/ns#' term='XILINX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASIC'/><title type='text'>MSc Projects offered...</title><content type='html'>I have offered the following MSc projects:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Remove the LEON3 core and substitute an OpenSPARC (possibly the single core, wishbone compatible variant).&lt;/li&gt;&lt;li&gt;Build a SATA controller&lt;/li&gt;&lt;li&gt;Explore the LEON3 GRLIB design space on ASIC and FPGA (i.e. how fast, how big, etc)&lt;/li&gt;&lt;li&gt;Build an AHB parallel port (high speed, of course. Maybe a bit of a ram buffer?)&lt;/li&gt;&lt;li&gt;Enable the Xilinx-XUP board's CF card to program the FPGA, install a boot loader and boot linux.&lt;/li&gt;&lt;/ol&gt;They are all different vairants of tricky, with 5 probably a real problem in disguise. I think it would be best for the boot loader to be part of the FPGA (i.e. a 1k ROM or similar) to boot off the CF card.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-487887198482275485?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/487887198482275485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/487887198482275485'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/msc-projects-assigned.html' title='MSc Projects offered...'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-7963480924587202032</id><published>2008-06-26T05:22:00.001+01:00</published><updated>2008-06-30T17:34:15.950+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XUP'/><category scheme='http://www.blogger.com/atom/ns#' term='LEON3'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><category scheme='http://www.blogger.com/atom/ns#' term='XILINX'/><title type='text'>Linux successfully executed!</title><content type='html'>Here is the first console dump of my executing linux session (the image.dsu was borrowed from the theora project). I shall have to consider that a success. Now onto the stickier proposition of how to boot and execute from a flash card using the xilinx-xup board. I am thinking of using systemACE to package the kernel and bitfile, and then targetting a linux partition on the CF card. It all depends if system ACE can actually put things into RAM, but I believe it can look like FLASH to the FPGA so all should be alright.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;pre&gt;M:\GRMON\win32&gt;grmon-eval.exe -uart //./com8 -ibaud 250000 -u -nb&lt;br /&gt;&lt;br /&gt;GRMON LEON debug monitor v1.1.29 (evaluation version)&lt;br /&gt;&lt;br /&gt;Copyright (C) 2004,2005 Gaisler Research - all rights reserved.&lt;br /&gt;For latest updates, go to http://www.gaisler.com/&lt;br /&gt;Comments or bug-reports to support@gaisler.com&lt;br /&gt;&lt;br /&gt;This evaluation version will expire on 15/10/2008&lt;br /&gt;try open device //./com8&lt;br /&gt;###opened device //./com8&lt;br /&gt;&lt;br /&gt;GRLIB build version: 2950&lt;br /&gt;&lt;br /&gt;initialising ..............&lt;br /&gt;detected frequency: 80 MHz&lt;br /&gt;&lt;br /&gt;Component Vendor&lt;br /&gt;LEON3 SPARC V8 Processor Gaisler Research&lt;br /&gt;AHB Debug UART Gaisler Research&lt;br /&gt;AHB Debug JTAG TAP Gaisler Research&lt;br /&gt;GR Ethernet MAC Gaisler Research&lt;br /&gt;AHB ROM Gaisler Research&lt;br /&gt;AHB/APB Bridge Gaisler Research&lt;br /&gt;LEON3 Debug Support Unit Gaisler Research&lt;br /&gt;DDR266 Controller Gaisler Research&lt;br /&gt;Generic APB UART Gaisler Research&lt;br /&gt;Multi-processor Interrupt Ctrl Gaisler Research&lt;br /&gt;Modular Timer Unit Gaisler Research&lt;br /&gt;Keyboard PS/2 interface Gaisler Research&lt;br /&gt;Text-based VGA controller Gaisler Research&lt;br /&gt;Keyboard PS/2 interface Gaisler Research&lt;br /&gt;&lt;br /&gt;Use command 'info sys' to print a detailed report of attached cores&lt;br /&gt;&lt;br /&gt;grlib&gt; load M:\Downloads\image.dsu&lt;br /&gt;section: .stage2 at 0x40000000, size 10180 bytes&lt;br /&gt;section: .vmlinux at 0x40004000, size 1232960 bytes&lt;br /&gt;section: .rdimage at 0x40148f94, size 1598828 bytes&lt;br /&gt;total size: 2841968 bytes (88.3 kbit/s)&lt;br /&gt;read 3706 symbols&lt;br /&gt;entry point: 0x40000000&lt;br /&gt;grlib&gt; run&lt;br /&gt;Booting Linux&lt;br /&gt;Booting Linux...&lt;br /&gt;PROMLIB: Sun Boot Prom Version 0 Revision 0&lt;br /&gt;Linux version 2.6.21.1 (root@brazilip-tec) (gcc version 3.2.2) #16 Mon Aug 20 19&lt;br /&gt;:32:42 BRT 2007&lt;br /&gt;ARCH: LEON&lt;br /&gt;Vendors Slaves&lt;br /&gt;Ahb masters:&lt;br /&gt;0( 1: 3| 0): VENDOR_GAISLER GAISLER_LEON3&lt;br /&gt;1( 1: 7| 0): VENDOR_GAISLER GAISLER_AHBUART&lt;br /&gt;2( 1: 1c| 0): VENDOR_GAISLER GAISLER_AHBJTAG&lt;br /&gt;3( 1: 1d| 0): VENDOR_GAISLER GAISLER_ETHMAC&lt;br /&gt;Ahb slaves:&lt;br /&gt;0( 1: 1b| 0): VENDOR_GAISLER Unknown device 1b&lt;br /&gt;+0: 0x0 (raw:0x3fff2)&lt;br /&gt;1( 1: 6| 0): VENDOR_GAISLER GAISLER_APBMST&lt;br /&gt;+0: 0x80000000 (raw:0x8000fff2)&lt;br /&gt;2( 1: 4| 0): VENDOR_GAISLER GAISLER_LEON3DSU&lt;br /&gt;+0: 0x90000000 (raw:0x9000f002)&lt;br /&gt;3( 1: 25| 0): VENDOR_GAISLER Unknown device 25&lt;br /&gt;+0: 0x40000000 (raw:0x4003c002)&lt;br /&gt;+1: 0xfff00100 (raw:0x10fff3)&lt;br /&gt;Apb slaves:&lt;br /&gt;0( 1: c| 2): VENDOR_GAISLER GAISLER_APBUART&lt;br /&gt;+ 0: 0x80000100 (raw:0x10fff1)&lt;br /&gt;1( 1: d| 0): VENDOR_GAISLER GAISLER_IRQMP&lt;br /&gt;+ 0: 0x80000200 (raw:0x20fff1)&lt;br /&gt;2( 1: 11| 8): VENDOR_GAISLER GAISLER_GPTIMER&lt;br /&gt;+ 0: 0x80000300 (raw:0x30fff1)&lt;br /&gt;3( 1: 7| 0): VENDOR_GAISLER GAISLER_AHBUART&lt;br /&gt;+ 0: 0x80000400 (raw:0x40fff1)&lt;br /&gt;4( 1: 60| 5): VENDOR_GAISLER GAISLER_KBD&lt;br /&gt;+ 0: 0x80000500 (raw:0x50fff1)&lt;br /&gt;5( 1: 61| 0): VENDOR_GAISLER GAISLER_VGA&lt;br /&gt;+ 0: 0x80000600 (raw:0x60fff1)&lt;br /&gt;6( 1: 60| 4): VENDOR_GAISLER GAISLER_KBD&lt;br /&gt;+ 0: 0x80000700 (raw:0x70fff1)&lt;br /&gt;7( 1: 1d|12): VENDOR_GAISLER GAISLER_ETHMAC&lt;br /&gt;+ 0: 0x80000b00 (raw:0xb0fff1)&lt;br /&gt;TYPE: Leon2/3 System-on-a-Chip&lt;br /&gt;Ethernet address: 0:0:0:0:0:0&lt;br /&gt;CACHE: direct mapped cache, set size 8k&lt;br /&gt;Boot time fixup v1.6. 4/Mar/98 Jakub Jelinek (jj@ultra.linux.cz). Patching kerne&lt;br /&gt;l for srmmu[Leon2]/iommu&lt;br /&gt;64MB HIGHMEM available.&lt;br /&gt;node 2: /cpu00 (type:cpu) (props:.node device_type mid mmu-nctx clock-frequency&lt;br /&gt;uart1_baud uart2_baud )&lt;br /&gt;PROM: Built device tree from rootnode 1 with 918 bytes of memory.&lt;br /&gt;DEBUG: psr.impl = 0xf fsr.vers = 0x7&lt;br /&gt;Built 1 zonelists. Total pages: 64302&lt;br /&gt;Kernel command line: console=ttyS0,38400 init=/sbin/init&lt;br /&gt;PID hash table entries: 1024 (order: 10, 4096 bytes)&lt;br /&gt;Todo: init master_l10_counter&lt;br /&gt;Attaching grlib apbuart serial drivers (clk:80hz):&lt;br /&gt;Console: colour dummy device 80x25&lt;br /&gt;Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)&lt;br /&gt;Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)&lt;br /&gt;Memory: 252736k/262144k available (968k kernel code, 9244k reserved, 112k data,&lt;br /&gt;116k init, 65536k highmem)&lt;br /&gt;Mount-cache hash table entries: 512&lt;br /&gt;checking if image is initramfs...it isn't (no cpio magic); looks like an initrd&lt;br /&gt;Freeing initrd memory: 1561k freed&lt;br /&gt;highmem bounce pool size: 64 pages&lt;br /&gt;io scheduler noop registered&lt;br /&gt;io scheduler cfq registered (default)&lt;br /&gt;grlib apbuart: 1 serial driver(s) at [0x80000100(irq 2)]&lt;br /&gt;grlib apbuart: system frequency: 80000 khz, baud rates: 38400 38400&lt;br /&gt;ttyS0 at MMIO 0x80000100 (irq = 2) is a Leon&lt;br /&gt;Loading theora ...&lt;br /&gt;LEON THEORA driver by Andre Costa (2007) - andre.lnc@gmail.com&lt;br /&gt;RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize&lt;br /&gt;loop: loaded (max 8 devices)&lt;br /&gt;RAMDISK: Compressed image found at block 0&lt;br /&gt;VFS: Mounted root (romfs filesystem) readonly.&lt;br /&gt;Freeing unused kernel memory: 116k freed&lt;br /&gt;init started: BusyBox v0.60.5 (2007.08.04-05:15+0000) multi-call binary&lt;br /&gt;Shell invoked to run file: /etc/init.d/rcS&lt;br /&gt;Command: #!/bin/sh&lt;br /&gt;Command: mount&lt;br /&gt;Please press Enter to activate this console.&lt;br /&gt;Interrupt!&lt;br /&gt;stopped at 0xf00140d0&lt;br /&gt;grlib&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-7963480924587202032?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7963480924587202032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7963480924587202032'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/linux-successfully-executed.html' title='Linux successfully executed!'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1551209746512044439</id><published>2008-06-25T11:07:00.001+01:00</published><updated>2008-07-08T09:56:22.390+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LEON3'/><title type='text'>Just benchmarked my first LEON3</title><content type='html'>29.8 Dhrystones MIPS! This is an 80MHz LEON3 system with no FPU. Onwards, to linux!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1551209746512044439?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1551209746512044439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1551209746512044439'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/just-benchmarked-my-first-leon3.html' title='Just benchmarked my first LEON3'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-2428921111722295014</id><published>2008-06-23T18:10:00.000+01:00</published><updated>2008-07-08T09:57:39.485+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GRLIB'/><category scheme='http://www.blogger.com/atom/ns#' term='XUP'/><category scheme='http://www.blogger.com/atom/ns#' term='DDR'/><category scheme='http://www.blogger.com/atom/ns#' term='XILINX'/><title type='text'>Just connected to my first LEON3 SoC</title><content type='html'>... via the JTAG debugger but I am still unable to drive the DDR due to the lack of DCM modules in this particular Xilinx. I am now turning my attention to the XUP board from Digilent as they are quite common around here.&lt;br /&gt;&lt;br /&gt;Hopefully I shall get further down that road towards the goal of booting linux on the system....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-2428921111722295014?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2428921111722295014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2428921111722295014'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/just-connected-to-my-first-leon3-soc.html' title='Just connected to my first LEON3 SoC'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-6920341886548182777</id><published>2008-06-20T21:03:00.001+01:00</published><updated>2008-07-08T09:57:07.714+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LEON3'/><category scheme='http://www.blogger.com/atom/ns#' term='DDR'/><category scheme='http://www.blogger.com/atom/ns#' term='ML403'/><category scheme='http://www.blogger.com/atom/ns#' term='XILINX'/><title type='text'>Trouble with the ML403...</title><content type='html'>Heh, should have realised it wouldn't be that easy...&lt;br /&gt;&lt;br /&gt;Basically the ML403 differs from the ML401 &amp;amp; 2 by the fact that they both their Virtex-4's have 8 DCMs as opposed the 403's 4, and the LEON3 core with a DDR controller (necessary for the built in DDR memory) needs 5. It took a surprisingly long time for me to realise that's what the error message meant. Still today has been quite productive with a lot of lessons learnt.&lt;br /&gt;&lt;br /&gt;Another lesson is that Xilinx ISE on windows will rebuild a Xilinx ISE on linux project, meaning the 20 minutes I took building and routing the first design came to nothing, as the windows machine proceeded to take about 60 minutes to perform the same task.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-6920341886548182777?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6920341886548182777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/6920341886548182777'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/trouble-with-ml403.html' title='Trouble with the ML403...'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-2076054585119553659</id><published>2008-06-18T23:38:00.001+01:00</published><updated>2008-06-18T23:41:19.084+01:00</updated><title type='text'>Linux Tomorrow</title><content type='html'>I am borrowing a Xilinx ML403 board over breakfast (in exchange for some copper pipe) so I should be testing Linux on LEON3 tomorrow. I have also provided my MSc students a tutorial getting them off the ground in messing with GRLIB which I really need to write up in our knowledgebase.&lt;br /&gt;&lt;br /&gt;grlib is proving quick to get off the ground, I just hope it proves easy to customize too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-2076054585119553659?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2076054585119553659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/2076054585119553659'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/linux-tomorrow.html' title='Linux Tomorrow'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-3169626406666684111</id><published>2008-06-18T08:31:00.001+01:00</published><updated>2008-06-18T08:33:41.030+01:00</updated><title type='text'>GRLIB now compiling in ModelSim</title><content type='html'>After some silliness with the configuration stages GRLIB is now up and running.&lt;br /&gt;&lt;br /&gt;First thing to do is informal validation tests against the various FPGA compilation tools we have available to see what produces working code, smallest/fastest etc.&lt;br /&gt;&lt;br /&gt;Secondly I need to download Snapgear's linux for LEON3 and examine it for correctness / niceness. I might even port the patches into Angstrom and use that as a base depending on what I find.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-3169626406666684111?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3169626406666684111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3169626406666684111'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/grlib-now-compiling-in-modelsim.html' title='GRLIB now compiling in ModelSim'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1979082288466944217</id><published>2008-06-15T20:18:00.000+01:00</published><updated>2008-06-15T20:20:04.827+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='Part III'/><category scheme='http://www.blogger.com/atom/ns#' term='MSc'/><category scheme='http://www.blogger.com/atom/ns#' term='marking'/><title type='text'>Final block of marking done....</title><content type='html'>Phew, glad that is over. Just got to set my MSc's going on their dissertations and help my Part III students get into and motivated over their projects.&lt;br /&gt;&lt;br /&gt;I have given this lot of students as much feedback as I can, in an effort to improve things. A mark without comments is pretty pointless.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1979082288466944217?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1979082288466944217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1979082288466944217'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/final-block-of-marking-done.html' title='Final block of marking done....'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-7805300259901673143</id><published>2008-06-15T11:40:00.001+01:00</published><updated>2008-06-16T09:52:58.366+01:00</updated><title type='text'>Platform express flow problems..</title><content type='html'>Interesting, we can get hold of Mentor's Platform Express from mentor, but not the seamless cve product that we need to simulate cores. That being said, GRLIB is looking like the only option at the moment.&lt;br /&gt;&lt;br /&gt;Pity, however we may be able to extract a processor that we can trivially wrap for the Synopsys tool. ARMs have to be hardwired into IRQs and their bus selects however, which GRLIB seems to approach differently.&lt;br /&gt;&lt;br /&gt;GRLIB on its own will probably be the best way, which is a pity as I think the Synopsys tools are great. Without a core and a bunch of licenses however we are not going to get very far.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-7805300259901673143?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7805300259901673143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7805300259901673143'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/platform-express-problems.html' title='Platform express flow problems..'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-5194432731879212980</id><published>2008-06-15T07:01:00.000+01:00</published><updated>2008-06-16T09:51:10.653+01:00</updated><title type='text'>Wanted: Alternatives to Design Compiler</title><content type='html'>There are only two synopsys licenses, which is far too few to teach with. I shall talk to Synopsys to see if I can get some more from them for teaching purposes.&lt;br /&gt;&lt;br /&gt;As we have lots of Mentor licenses I shall investigate their products more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-5194432731879212980?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5194432731879212980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5194432731879212980'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/license-issues.html' title='Wanted: Alternatives to Design Compiler'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-3866728387112919926</id><published>2008-06-14T17:08:00.000+01:00</published><updated>2008-06-16T09:53:53.199+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LEON3'/><category scheme='http://www.blogger.com/atom/ns#' term='teaching'/><title type='text'>LEON3 as a core until we get an ARM</title><content type='html'>The SPARC v8 LEON3 and the associated GRLIB should fit in the planned teaching I have in mind:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gaisler.com/cms/index.php?option=com_content&amp;amp;task=view&amp;amp;id=13&amp;amp;Itemid=53"&gt;http://www.gaisler.com/cms/index.php?option=com_content&amp;amp;task=view&amp;amp;id=13&amp;amp;Itemid=53&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is what we needed: A core! It is also GPL licensed so we are legally entitled to and might be able to crack it open to better teach cache controllers and DMA controllers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-3866728387112919926?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3866728387112919926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3866728387112919926'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/leon3-as-core-until-we-get-arm.html' title='LEON3 as a core until we get an ARM'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-8878323433758983930</id><published>2008-06-12T22:24:00.000+01:00</published><updated>2008-06-12T22:30:17.662+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fcal'/><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><category scheme='http://www.blogger.com/atom/ns#' term='e3500'/><title type='text'>esdsun4 now running</title><content type='html'>We are still using two old solaris workhorses: esdsun3 and esdsun4. Both are Enterprise 3500's with 6x 400MHz USII with 8MB of cache and a bunch of FCAL HDDs. Just got the second one working. What it troubling is that they are not much slower (if at all) than the V210's we have. Contrasting enterprise kit (old) with new budget kit doesn't reveal that many differences.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-8878323433758983930?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/8878323433758983930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/8878323433758983930'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/esdsun4-now-running.html' title='esdsun4 now running'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-7371660843124307888</id><published>2008-06-12T22:01:00.001+01:00</published><updated>2008-06-12T22:02:31.166+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='university'/><category scheme='http://www.blogger.com/atom/ns#' term='duties'/><title type='text'>I am now Master of Masters!</title><content type='html'>Not as cool as it sounds, but I hope to do a good job. I now organize and manage the MSc summer projects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-7371660843124307888?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7371660843124307888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/7371660843124307888'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/i-am-now-master-of-masters.html' title='I am now Master of Masters!'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-4698044502932732096</id><published>2008-06-12T03:57:00.000+01:00</published><updated>2008-06-16T09:54:30.790+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='designware'/><category scheme='http://www.blogger.com/atom/ns#' term='altera'/><category scheme='http://www.blogger.com/atom/ns#' term='cyclone'/><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><title type='text'>Success targetting coreAssembler on FPGA</title><content type='html'>Just instantiated an AMBA bus structure into a cyclone III FPGA from Altera. Toolchain was a bit of a pain but most of that now sorted out. Now in a position to make arbitrary bus and peripheral structures. Just need cores now. And some form of memory.&lt;br /&gt;&lt;br /&gt;coreAssembler -&gt; Designware Compiler -&gt; Quartus II&lt;br /&gt;&lt;br /&gt;What a productive night.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-4698044502932732096?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4698044502932732096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/4698044502932732096'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/success-targetting-coreassembler-on.html' title='Success targetting coreAssembler on FPGA'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-8201879192369321339</id><published>2008-06-11T19:45:00.000+01:00</published><updated>2008-06-11T19:49:56.461+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='designware'/><category scheme='http://www.blogger.com/atom/ns#' term='altera'/><category scheme='http://www.blogger.com/atom/ns#' term='cyclone'/><category scheme='http://www.blogger.com/atom/ns#' term='synopsys'/><title type='text'>Designware Compiler being difficult...</title><content type='html'>Trying to use Designware compiler to build for altera FPGAs.&lt;br /&gt;&lt;br /&gt;Quartus II supplies the needed db files, however it doesn't seem to be consistent! I can't make any small designs, but I have successfully built a large AMBA structure for a cyclone II. Trouble is the libraries are rated as compatible with designware compiler 2004, not 2007.&lt;br /&gt;&lt;br /&gt;The compiler dies with an internal error and a stack-dump. Will try driving design compiler by hand first to get more design information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-8201879192369321339?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/8201879192369321339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/8201879192369321339'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/designware-compiler-being-difficult.html' title='Designware Compiler being difficult...'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-5536535808453284144</id><published>2008-06-10T17:55:00.001+01:00</published><updated>2008-07-08T09:54:47.062+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><title type='text'>Sun saga continues</title><content type='html'>Tried my cunning plan. Completely failed to work.&lt;br /&gt;&lt;br /&gt;New plan:&lt;br /&gt;&lt;br /&gt;Install Sol9 and StorageTek SAN from scratch: &lt;span style="font-family:webdings;"&gt;a&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Now all I have to do is:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;change vfstab&lt;/li&gt;&lt;li&gt;change boot in eeprom&lt;/li&gt;&lt;li&gt;boot to new disks&lt;/li&gt;&lt;li&gt;move fiber&lt;/li&gt;&lt;li&gt;setup mirrored root&lt;/li&gt;&lt;li&gt;.....&lt;br /&gt;&lt;/li&gt;&lt;li&gt;profit!!!!&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-5536535808453284144?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5536535808453284144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/5536535808453284144'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/sun-saga-continues.html' title='Sun saga continues'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1419603491967085340</id><published>2008-06-09T16:52:00.000+01:00</published><updated>2008-07-08T09:54:19.006+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><title type='text'>Servicing Suns</title><content type='html'>I am trying to boot one of our cad servers from half of a mirror pulled from the other half. Predicatably it is being difficult, however if I want to preserve the exact setup I am at a loss how else to do it.&lt;br /&gt;&lt;br /&gt;Still I think I am a sucker for punishment. Installing from scratch may, eventually, be the way to go from here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1419603491967085340?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1419603491967085340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1419603491967085340'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/servicing-suns.html' title='Servicing Suns'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-3231085374635861626</id><published>2008-06-09T14:20:00.000+01:00</published><updated>2008-07-08T09:55:21.415+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='duties'/><category scheme='http://www.blogger.com/atom/ns#' term='Exams'/><title type='text'>The first batch of real exam marking this year</title><content type='html'>I have several thoughts for essential exam marking equipment:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A stamp with a large red `?'&lt;/li&gt;&lt;li&gt;Calming tablets&lt;/li&gt;&lt;/ol&gt;You need 1 when a student does a brain dump or creates an unconnected string of words. You need 2 when your paranoia increases as a student returns an answer that matches your perfect one. Luckily either extreme is rare, however they typically dominate the whole script.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-3231085374635861626?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3231085374635861626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/3231085374635861626'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/exam-marking.html' title='The first batch of real exam marking this year'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2651974529547771461.post-1702155277495485023</id><published>2008-06-09T14:11:00.000+01:00</published><updated>2008-06-09T14:12:36.517+01:00</updated><title type='text'>First Post!</title><content type='html'>Heh, be warned, the humour of the above post is what you are likely to encounter here....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2651974529547771461-1702155277495485023?l=mattaw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1702155277495485023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2651974529547771461/posts/default/1702155277495485023'/><link rel='alternate' type='text/html' href='http://mattaw.blogspot.com/2008/06/first-post.html' title='First Post!'/><author><name>Dr Matthew Swabey</name><uri>http://www.blogger.com/profile/16544149887190419306</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
