INFO-LINK



Design your own memory using ABEL


Designing memory devices would seem to be beyond the abilities of most embedded systems developers. These devices are packed with an enormous amount of interconnected logic that makes them almost impossible to design 100% schematically. Designing memory chips involves iterating millions of storage cells and implementing sophisticated address decoding for accessing each row of cells. Moreover, multiplexing data out of those storage cells to the external data bus also requires awesome logic.

In this article, I'll demonstrate how to design an 8MB static random access memory (SRAM) using a combination of schematic design and a bit of ABEL (Advanced Boolean Expression Language) programming to overcome the aforementioned hardships. ABEL provides a means of making behavioral descriptions of a logic circuit. For purposes of demonstration I'll be using an ispLEVER starter module from Lattice Semiconductor.

SRAM functional blocks
Our memory device is organized as a dual-bank array (1,024 rows by 512 columns) of byte-wide slices. Figure 1 illustrates the basic functional blocks. Each bank slice ("a" and "b") can be accessed separately by activating a corresponding input signal ("Ba" or "Bb"). A byte slice in either bank is selected for read or write operations according to the decoded row and column addresses (A0:9 and A10:18, respectively) input to the device. The write-enable signal WE latches input data in the selected slice; data read from that slice is passed to the system bus by activating the OE signal. Activating the chip-enable signal CE permits read and write operations on storage banks. Storage array "a" is assigned the lower half of the data bus (D0:7) and array "b" is assigned the upper half (D8:15). A bus controller switches data between storage arrays and the system data bus. A chip controller combines the input signals mentioned earlier to accomplish read and write operations. Internal data buses from the bus controller provide data paths to and from the storage array.

View the full-size image

A hierarchical design approach proves most sensible for complex designs like this one. We start with by preparing circuit schematics for some building blocks of the device in hand. Those blocks are then compiled into a module that produces a higher-level block within the device. Embedding the resulting block in another schematic or program module can continue more or less indefinitely, forming a hierarchy of blocks leading to the final device design, or even a printed-circuit board design containing the device itself along with other chips or boards.

Adopting this approach, I chose to design the chip controller and a single byte slice of the storage array using circuit schematics. Accordingly, I produced two schematics at the bottom of the hierarchy, on top of which I prepared an ABEL module that combines and iterates them as well as generating the remaining chip blocks, ending up with a complete chip design.

Schematics
The byte slice is constructed of an 8-bit D-type flip-flop, as shown in Figure 2. Input data is latched on the rising edge of the WR signal while the byte address- and bank-selection signals (AD and EN, respectively) are active. Note that those signals are combinatorial, generated from the chip controller described below. I prepared the schematic of the byte slice using Lattice's schematic editor. I deliberately designed this simple granule of the memory device schematically (rather than in ABEL) to illustrate the marriage between schematics and programming that can prove useful in more complex designs.

View the full-size image

The chip controller, shown in Figure 3, receives five control signals from some outside memory-controller chip and decodes these signals into six output signals that drive the read/write operations on byte slices. The WR signal drives the clock CK of the byte slice, while either Ba or Bb signals are used to drive the enable signal EN of the byte slices in banks A or B, respectively. The Do signal controls tri-state I/O buffers that switch read data from either bank to the system data bus.

View the full-size image

Note that I deliberately introduced a mismatch between the names of the signals in the controller and the byte slices. You should expect to see similar naming mismatches between the SRAM chip pins and the chip-controller input signals. For example, Sel-A and Sel-B (selection signals for banks A and B) connect to chip pins BA and BB, respectively, which were shown in Figure 1.

The reason for this little pseudo-mistake is that I like to see design modularity and reusability in the building blocks of any project. I take care to resolve signal connections in the programming modules of each project.

The programming module
The top of the SRAM design hierarchy is the ABEL module shown in Listing 1 in which I replicate the byte slice into two banks. The module sram_top_module.abl appears in the ispLEVER's Project Navigator window (shown in Figure 4), superseding the schematic modules sram-slice.sch and sram-control.sch.

Listing 1 ABEL listing for SRAM byte slices


0001 |
0002 |
0003 |TITLE 'SRAM Design ABL'
0004 |
0005 |DECLARATIONS
0006 |
0007 | Dob15..Dob0 NODE istype 'buffer'; "buffer for output data lines from memory array
0008 | Dib15..Dib0 NODE istype 'buffer'; "buffer for input data lines from external data bus
0009 |
0010 |"declare chip blocks designed in schematics
0011 | sram_bank INTERFACE ([EN,Di_7_,Di_6_,Di_5_,Di_4_,Di_3_,Di_2_,Di_1_,Di_0_,CK,AD] ->
[Do_7_,Do_6_,Do_5_,Do_4_,Do_3_,Do_2_,Do_1_,Do_0_]);
0012 | sram_control INTERFACE ([WE,Sel_B,Sel_A,OE,CE] -> [WR,RDb,RDa,DO,Bb,Ba]);
0013 |
0014 |"declare a macro for creating a vector of Bank A memory cells
0015 | MBA macro (x)
0016 | { @expr {MBA}?x; };
0017 |
0018 |"declare a macro for creating a vector of Bank B memory cells
0019 | MBB macro (x)
0020 | { @expr {MBB}?x; };
0021 |
0022 |"declare 1024x512 memory bytes for each bank (A and B) in the chip
0023 | @const rows = 1024;
0024 | @const columns = 512;
0025 | @const rep = rows * columns; "defines the total bytes in each bank
0026 |
0027 | @const x = 1; "index used for processing bank cells in each vector
0028 |
0029 | @repeat rep
0030 | { MBA(x-1) FUNCTIONAL_BLOCK sram_bank; "Bank A declaration statements generation
0031 | MBB(x-1) FUNCTIONAL_BLOCK sram_bank; "Bank B declaration statements generation
0032 | @const x = x + 1; };
0033 |
0034 | MC FUNCTIONAL_BLOCK sram_control;	"chip controller declaration statement
0035 |
0036 |"input pins of package
0037 | WE PIN; "write enable signal
0038 | OE PIN; "read enable signal
0039 | CE PIN; "chip enable signal
0040 | BA, BB	PIN; "bank enable signals
0041 | Ai18..Ai0 PIN; "byte address lines 
0042 | 
0043 |"bidirectional 3-state data bus of memory chip 
0044 | Dio15..Dio0 PIN istype 'com';
0045 |
0046 |"sets
0047 | DLio = [Dio7..Dio0]; "lower set of bidirectional 3-state data bus of memory chip
0048 | DHio = [Dio15..Dio8]; "higher set of bidirectional 3-state data bus of memory chip
0049 | DLob = [Dob7..Dob0]; "lower set of buffered data lines output from memory array
0050 | DHob = [Dob15..Dob8]; "higher set of buffered data lines output from memory array 
0051 | DLib = [Dib7..Dib0]; "lower set of buffered data lines input from external data bus
0052 | DHib = [Dib15..Dib8]; "higher set of buffered data lines input from external data bus
0053 | AR = [Ai9..Ai0];	"set of input row address signals to memory array
0054 | AC = [Ai18..Ai10];	"set of input column address signals to memory array
0055 | CS = [WE,OE,CE,BA,BB];	"chip set of input control signals
0056 |
0057 |EQUATIONS
0058 |"connections to chip controller
0059 | MC.[WE,OE,CE,Sel_A,Sel_B] = CS;
0060 |
0061 |"internal connections to all memory banks in the chip
0062 | DLio.oe = (MC.DO == 1); "enable chip lower address bus for data reading
0063 | DHio.oe = (MC.DO == 1); "enable chip upper address bus for data reading
0064 | DLio = DLob; " pass on buffered lower data lines output from memory array to the 
external data bus
0065 | DHio = DHob; " pass on buffered higher data lines output from memory array to the 
external data bus
0066 | DLib = DLio; " pass on external data to the buffer of internal lower data lines
0067 | DHib = DHio; " pass on external data to the buffer of internal higher data lines 
0068 | @const r = 1;
0069 | @repeat rows
0070 | { "connections for banks by row
0071 | @const c = 1;
0072 | @repeat columns 
0073 | {"connections for banks by column
0074 | @const x = (c-1) + (r-1)*columns; "index used for processing bank cells in 
each vector
0075 |
0076 | "Bank A connections
0077 | MBA(x).CK = MC.WR; 
0078 | MBA(x).EN = MC.Ba; 
0079 | MBA(x).[Di_7_,Di_6_,Di_5_,Di_4_,Di_3_,Di_2_,Di_1_,Di_0_] = DLib;
0080 | MBA(x).AD = ( (AR == (r-1)) & (AC == (c-1)) ); "address decoded line for each 
memory byte in bank A
0081 |
0082 | "data ouput multiplexing based on the setting of input addresses and control 
signals
0083 | when ( (AR == (r-1)) & (AC == (c-1)) & MC.RDa == 1) then 
0084 | DLob = MBA(x).[Do_7_,Do_6_,Do_5_,Do_4_,Do_3_,Do_2_,Do_1_,Do_0_]; 
0085 |
0086 | "Bank B connections
0087 | MBB(x).CK = MC.WR; 
0088 | MBB(x).EN = MC.Bb; 
0089 | MBB(x).[Di_7_,Di_6_,Di_5_,Di_4_,Di_3_,Di_2_,Di_1_,Di_0_] = DHib;
0090 | MBB(x).AD = ( (AR == (r-1)) & (AC == (c-1)) ); "address decoded line for each 
memory byte in bank B
0091 |
0092 | "data ouput multiplexing based on the setting of input addresses and control 
signals
0093 | when ( (AR == (r-1)) & (AC == (c-1)) & MC.RDb == 1) then 
0094 | DHob = MBB(x).[Do_7_,Do_6_,Do_5_,Do_4_,Do_3_,Do_2_,Do_1_,Do_0_]; 
0095 |
0096 | @const c = c + 1;}; "column iteration end
0097 |
0098 | @const r = r + 1;}; "row iteration end
0099 |
0100 |END SRAM_Design;
View the full-size image

The ABEL module starts with a declaration of the basic byte slice (statement 11) and the chip controller (statement 12), which point to their schematics. Output and Input data buses internal to the chip are declared in statements 7 and 8. Those buses will move data from the system data bus to the byte slices. The byte slices are replicated by declarations in statements 15 to 32. The macros in statements 15 to 16 and 19 to 20 declare two vectors of byte slices MBA(x) and MBB(x), which are populated by the iteration of statements 30 to 31. The iteration is driven by @Repeat directive in statement 29 that is set to the total number of bytes in each bank (specified by the constant expression in statement 25). The dimensions of the memory array are declared in statements 23 and 24, agreeing with Figure 1. By doing this, the ABEL compiler inserts the declarations of 524,288 byte slices (see Listing 2) into the source file for banks A and B during preprocessing. At that point, we start to see the power of hardware programming and the simplicity it offers the designer.

Listing 2 Declarations of 524,288 byte slices inserted into the source file by ABEL compiler

BAA(0) FUNCTIONAL_BLOCK sram_bank;
BAA(1) FUNCTIONAL_BLOCK sram_bank_;
.
. 

The input pins of the memory chip are declared in statements 36 through 41, while the bidirectional data bus pins are declared in statement 44. We shall do the proper mapping (wiring) of those pins to the signals of the memory array and the controller further down in the code.

Now I declare data buses internal and external to the chip in halves: the lower data bits 0:7 and the higher data bits 8:15. Statements 47 to 52 take care of this declaration. Splitting the data buses makes it simpler to pass data between each bank and the external data bus. So bank A is assigned the lower data bus and bank B takes the higher bus.

The tri-state bus controller from Figure 1 is implemented in statements 62 to 67--another design simplification over pure schematic design.

The internal connections to each byte slices in the array are declared in statements 77 through 84 for bank A, and statements 87 through 94 for bank B. Those statements are iterated in two nested loops: the outer one (statements 68, 69, 98) handles the rows of the array, while the inner one takes care of the columns (statements 71, 72, 96). The compiler executes both iterations and produces the relevant connections to each byte slice in both banks.

Statements 80 and 90 are responsible for address decoding that activates the AD signal used in the schematic of the byte slices of banks A and B. Here the beauty of programming is obvious. A massive decoding is achieved when iterating both statements in the nested loops, generating 1,024 lines for the storage array rows and 512 lines for its columns. The explanation of the decoding process goes like this: when the address lines of rows (AR) give the value of (r–1) in decimal and the address lines of columns (AC) give the value of (c–1) in decimal, then we are correctly pointing to element (x) of byte slice vectors in bank A or B (calculated in statement 74).

Passing data to the external data bus requires a massive multiplexer that selects the data from the appropriate byte slice. Statements 83 and 84 handle byte slices of bank A, while statements 93 and 94 handle those of bank B. The conditional statements check if the row and column addresses lead to the byte slice being referenced in the vector of either bank. If the slice is addressed and the chip is enabled and the output data read is enabled, then the slice data is selected for transport to the external data bus. Thus, we've created two multiplexers of 524,288 x 8 lines each--a real achievement!

Processing the design hierarchy in ispLEVER Project Navigator generates a chip symbol, shown in Figure 5, having 24 input signals and 16 bidirectional signals in addition to power and ground pins (though not shown).

View the full-size image

Note that in ispLEVER Project Navigator, you can choose an FPGA device from a set of families to implement the chip. However, FPGAs offer only smaller array dimensions than those assumed in my project.

Hybrid approach
Logic circuit design can be so complicated that schematic design tools alone can't accomplish the task. Combining a suite of tools is a hybrid approach to tackling complex designs. In this article, I've demonstrated the marriage between schematic design and HDL programming to validate that approach. I chose memory design as an example because it involves lots of signal decoding and multiplexing, along with enormous replication of logic cells.

This hybrid approach requires a hierarchy of building blocks in which schematics are prepared for blocks that have fewer details and interconnections, while the HDL takes care of joining and replicating the schematically designed blocks. The design hierarchy is beneficial in its own right, as it enhances reusability and modularity. You can reuse any of the building blocks in another project and integrate them using a similar approach. You can also apply modifications to any of those blocks with a minimal effort, propagating changes to the rest of the project.

Gamal Ali Labib is an IT consultant in Cairo, Egypt. He specializes in IT security and IT turn-key projects management. He is also interested in parallel processing and VLSI. Dr. Labib has a B.Sc. and M.Sc. in computer engineering and electronics from Ain Shams University, Egypt, and a PhD in computer science from University of London, U.K. You can reach Dr. Labib at drgamallabib@yahoo.co.uk.


Around the Web

CoreDet: A Compiler and Runtime System for Deterministic Multithreaded Execution

CoreDet is a fully automatic compiler and runtime system for deterministic execution of arbitrary C/C++ multithreaded programs.

Quick Read

Honeypot Detection in Advanced Botnet Attacks

Honeypots have been successfully deployed in many computer security defense systems.

Quick Read

Swarm: A True Distributed Programming Language

The Swarm prototype is a simple stack-based language, akin to a primitive version of the Java bytecode interpreter.

Quick Read

Key Software Development Trends

Several trends are emerging within the area of software development. Here are some of the most important trends S. Somasegar has been thinking about recently.

Quick Read

Understanding Parallel Performance

Understanding parallel performance. How do you know when good is good enough?

Quick Read

Short and Tweet: Experiments on Recommending Content from Information Streams

The authors used 12 algorithms to study the URL recommendation on Twitter as a means of better directing attention in information streams.

Quick Read





Video

Forty finalists will gather in Washington, D.C. from March 11-16 to compete for $630,000 in awards.; DDJ; Intel; science; Dr. Dobb's talks with Commonsware's Mark Murphy about what's involved in developing software for the Android operating system; Android; apple; DDJ; tablet development; The new method uses analytics technology developed by the Mayo and IBM collaboration, Medical Imaging Informatics Innovation Center, and has proven a 95 percent accuracy rate in detecting aneurysm.; Algorithm; DDJ; diagnostics; ibm; imaging; T-Mobile USA is enabling phone calls to Haiti without charges for international long distance through January 31 and retroactive to the earthquake on January 12; DDJ; mobile; wireless; Al Williams gives you a demor of One-Der: The One Instruction CPU; DDJ; At the 2010 International Consumer Electronics Show, the auto industry's first working smartphone application was unveiled; DDJ; mobile; The Bluetooth Special Interest Group (SIG) has announced the adoption of BLUETOOTH low energy wireless technology.; bluetooth; DDJ; wireless; IBM has unveiled its list of five innovations that have the potential to change how people live, work and play in cities around the world over the next five to ten years; DDJ; ibm; TeliaSonera's LTE mobile broadband commercial network in Stockholm is now the fastest and largest in the world.; broadband; DDJ; ericsson; mobile; Google has introduced, google Goggles, a visual search application on Android devices that allows users to search for objects using images rather than words; Android; DDJ; google; mobile; Visual Search Applications; Dr. Dobb's talks with David Intersimone, Vice President of Developer Relations and Chief Evangelist at Embarcadero Technologies, about RAD Studio 2010, SQL optimization and his reflections on the software industry.; database programming; DDJ; sql; Researchers from Intel Labs have created an experimental, 48-core Intel processor or "single-chip cloud computer."; cloud computing; DDJ; Intel; multicore; parallelism; The Large Hadron Collider will produce roughly 15 million gigabytes of data annually, to be accessed by a distributed computing and data storage infrastructure called the LHC Computing Grid.; CERN; DDJ; grid computing; physics; A mobile handheld device designed to let users can point, shoot and listen to printed text.; DDJ; Intel; mobile; Ericsson has become the first vendor to prove end to end interoperability in TD-LTE, another standard of 4G radio technologies designed to increase the capacity and speed of mobile telephone networks.; DDJ; ericsson; mobile; TD-LTE; According to a recent study, 80 percent of US respondents feel there are unspoken rules about mobile technology usage, and approximately 69 percent agreed that violations of these unspoken mobile manners are unacceptable.; DDJ; Intel; mobile; IBM and Canonical will introduce a software package for netbooks and other thin client devices in Africa. This is the first cloud- and premise-based Linux netbook software package offered by IBM and Canonical.; cloud computing; DDJ; ibm; His unprecedented ability to manipulate individual atoms signaled a quantum leap forward in in nanoscience experimentation and heralded in the age of nanotechnology.; DDJ; ibm; nanotechnology; IBM honored for its invention of the Blue Gene family of supercomputers. Adobe founders also recognized.; adobe; DDJ; ibm; Former U.S. President Bill Clinton addressed thousands of online entrepreneurs from around the world gathered for the third APEC Business Advisory Council SME Summit in Hangzhou, China.; DDJ; e-business; With free cooling for several months a year, Sweden is an ideal location for cost-efficient data centers.; data centers; DDJ; PNC Bank introduces a new mobile App for the iPhone and iPod touch that provides Virtual Wallet customers with a high-def view of their money while on the go.; DDJ; iphone; The Swedish LTE site will be part of a commercial network scheduled to go live in 2010, bringing data rates far above what is possible in today's mobile broadband networks.; DDJ; ericsson; mobile broadband; Nanotechnology advancement could lead to smaller, faster, more energy efficient computer chips.; circuit boards; DDJ; nanotech; semiconductor; Dr Dobbs talks with with Claudia Backus, Senior Director of Ecosystem Programs at Motorola, regarding the company's recently released MotoDEV Studio for their Android-powered phones.; Android; DDJ; mobile; motodev; The Extremadura Regional Government of Spain and IBM have launched an electronic prescription system in 680 pharmacies in western Spain.; DDJ; ibm; Ericsson to Acquire Majority of Nortel's North American Wireless Business; DDJ; ericsson; mobile; telecom; Nintendo's Wii Sports Resort is an immersive, expansive active-play game that includes a dozen resort-themed activities.; DDJ; nintendo; video games; OnStar can remotely send a signal to the electronic system in the subscriber's stolen vehicle and the vehicle will not be able to be re-started.; cellular; DDJ; wireless; In celebration of the historic Apollo Moon landing, Google has released Moon in Google Earth.; DDJ; google; Ericsson has been awarded contracts with the three telecom operators in China to provide fixed broadband access.; broadband; DDJ; mobile; tv; wireless; Dr. Dobb's talks with Adobe's Adam Lehman about the upcoming release of ColdFusion specifically optimized for Flash and Adobe AIR platform delivery.; adobe; ColdFusion; DDJ; eclipse; Companies team to develop computing device and chipset architectures that will combine the performance of powerful computers with high-bandwidth mobile broadband communications and ubiquitous Internet connectivity.; broadband; DDJ; Intel; mobile; nokia; Adobe Systems and HTC recently announced that the new HTC Hero will be the first Android phone to ship with support for Adobe Flash Platform technology.; adobe; Android; cell phones; DDJ; flash; mobile; mobility; 3.2 million Euros awarded across eight prize categorie recognizing world-class scientific research and artistic creation.; DDJ; A parody of Paul Simon's "50 Ways to Leave Your Lover," but for software security nerds.; DDJ; sql; Dr. Dobb's Mike Riley talks with Jim Manias of Advanced Systems Concepts.  In this conversation, Jim discusses the new ActiveBatch 7 and how it can provide significant productivity gains for application developers and business process owners alike.; ActiveBatch; DDJ; Sun cofounder Scott McNealy and Oracle CEO Larry Ellison discussed Java's role in computing. Sun has also released OpenSolaris 2009.06.; DDJ; java; opensolaris; oracle; sun; Spotlight on NATO's centre of excellence on cyber defense in Tallinn, Estonia.; cyber defense; DDJ; nework security; security; Create Data Access Layers in ASP.NET; DDJ; In this demonstration you will learn how to layout a WPF application. We will explore the major layout panels that come with WPF, contrasting them with each other and describing when to use each.; DDJ; web development; windows; wpf; The Intel Foundation has announced the top winners of the Intel International Science and Engineering Fair; DDJ; Intel; News; science; Matt Hester demonstrates Internet Explorer’s 8 new feature Selectors API for utilizing CSS selectors for quick and easy element lookups.; DDJ; IE8; microsoft; windows; The NATO Virtual Silk Highway provides affordable, high-speed Internet access via satellite to the academic communities of the Caucasus and Central Asia.; DDJ; On a Windows Mobile device, applications are typically not closed down, but they stay in the background. Maarten Struys shows you a simple way to preserve battery power inside your own applications.; DDJ; microsoft; power consumption; windows; Windows Mobile Devices; Cadillac is now offering wireless Internet access with its CTS sedan.; DDJ; wireless broadband; By default, Windows Mobile Standard (Smartphone) applications launched from Visual Studio are not accessible on the device/emulator once they are minimized. In this video, Jim Wilson demonstrates two simple techniques to solve the problem.; DDJ; microsoft; smartphone; VIsual Studio; Mike Riley talks with the brass from Everypoint, creators of the NEMO mobile application development platform.; DDJ; Developers; development environments; mobile applications; Symmetric and asymmetric encryption algorithms, the SHA256 hash encryption algorithms, and how to implement in a simple application using Microsoft's Azure Services Platform.; Azure; DDJ; encryption; microsoft; security; windows; T-Mobile has introduced the Sidekick LX, which features enhanced video capability.; DDJ; Mobile Smartphone; Bluetooth 3.0 offers speedier transmission of large amounts of video, music and photos between devices wirelessly.; bluetooth; DDJ; mobile networks; wireless broadband; Cities around the world are battling with stressed transportation networks, so IBM has announced plans for three new smart rail projects in China, Taiwan and The Netherlands.; DDJ; ibm; ILOG; CASMOBOT is a Nintendo Wii remote controlled slope lawn mower.; DDJ; Denmark; nintendo wii; research; robotics; Project ensures documents, images, video and other Internet-based data growing at over 100 terabytes per month will live on for future generations; data storage; DDJ; history; Intenet; research; Sun Microsystems; Dr. Dobb's talks with Dave McAllister, Director of Standards and Open Source for Adobe, about the Open Screen Project.; adobe; DDJ; Open Screen Project; open source; The Facebook Connect SDK provides the code to let third-party developers embed hooks into their applications so users can connect to their Facebook accounts and exchange information using iPhone apps.; apple; cocoa; DDJ; Facebook; iphone; Mars in Google Earth Updated; DDJ; google; google earth; Google mars; red planet; The Sun Cloud is built on the Sun Open Cloud Platform that leverages the best in world-class open source technologies. The Sun Open Cloud Platform brings together Java, MySQL, OpenSolaris and OpenStorage.; cloud computing; DDJ; java; open solaris; sun; DDJ; High School; Intel; science; ILOG Elixir is a suite of professional user interface controls that gives developers a rich collection of innovative and interactive data display components for Adobe Flex and Adobe Air.; adobe; air; DDJ; elixir; flash; flex; ILOG; The inaugural San Diego Science Festival being held this month is touted as one of the largest multicultural, multigenerational, multidisciplinary celebrations of science ever seen on the West Coast; DDJ; lockheed; News; science; IBM has announced Innov8 version 2, a new version of its serious game that helps students and professionals hone their business and technology skills in a compelling, familiar video game format.; DDJ; ibm; serious games; Swiss Automobile Visionary Frank M. Rinderknecht builds a concept car with adaptive energy concept and iPhone controls.; apple; Concept Car; DDJ; iphone; j; siemens; Two-Year Plan to Focus on 32 Nanometer Manufacturing Technology; 32 nanometer technology; chip; cpu; DDJ; gpu; Intel; manufacturing; Nehalem; Westmere; New version features ocean layer, historical imagery, and more.; DDJ; google; Dr. Dobb's talks with Marty Alchin, author of "Pro Django" about his book and the deep internals of the Django framework.; DDJ; Django; A new content-authoring solution for learning professionals; adobe; DDJ; toolkits; web authoring; In a Second Life setting, Danny Coward discusses Java FX with Dr. Dobb's Jon Erickson.; DDJ; java; JavaFX; sun; The Core i7 processor is the first member of a new family of Nehalem processor designs with new technologies that boost performance on demand.; chip; DDJ; Intel; processors; Dan Diephouse, creator of XFire, a high-performance open-source SOAP framework (which became the Apache CXF project), shares the five common mistakes in SOA governance and insight about the Apache CXF and Mule RESTpack development environments.; apache; Apache CXF; DDJ; mule; open source; soa; soap; Xfire; Adrian Kaehler and Gary Bradski discuss the Open Computer Vision Library (sourceforge.net/projects/opencvlibrary/) and their book "Learning OpenCV".; DDJ; Open Computer Vision Library; OpenCV; In the first part of this two-part interview, Stephen Wolfram reflects on the 20-year anniversary of Wolfram Research.; DDJ; Mathematica; Mathematics; science; In the second part of this two-part interview, Stephen Wolfram discusses his book "A New Kind of Science."; DDJ; Mathematica; Mathematics; science; Nick Hodges talks about Delphi 2009, a RAD tool for Windows, and Delphi Prism, a database engine for Windows, Mac OS X, and Linux.; DDJ; delphi; RAD; windows; Dr. Dobb's talks with Tony Lombardo, lead Technical Evangelist at Infragistics, about all new UI tools for Windows and .NET.; .net; DDJ; silverlight; ui; windows; wpf; Dr. Dobb's talks with Eric Schulz about his International Mathematica User's Conference 2008 presentation on the Mathematica Essentials Palette and the future digital educational material; DDJ; Mathematica; Mathematics; Dr. Dobb's talks with ActiveState's Trent Mick about the recently released Komodo IDE 5.0.; DDJ; ide; open source; Dr. Dobb's talks with Continuity Logic's Kris Carlson about "Why We Die: Simulation of the Evolution of Senescence" and why he programs with Mathematica's functional programming language.; DDJ; functional programming; Mathematica; simulation; Ericsson collaborates with Intel; DDJ; ericsson; Intel; Mobile technology; Dr. Dobb's talks with Schoeller Porter about the grid and cloud versions of Mathematica; clouds; DDJ; Grid; Mathematica; Dr Dobb's interviews Yehuda Katz, maintainer of the Merb project, about the advantages this highly optimized Ruby on Rails alternative offers to web application developers.; DDJ; Ruby on Rails; Dr. Dobb's talks with Thomas Roman, Professor of Mathematics at Central Connecticut State University, about "Mathematica Visualization in a Theoretical Physics Problem - Negative Energy in an Unusual Quantum State."; DDJ; Mathematica; physics; quantum; science; The Forbidden City: Beyond Space & Time is a fully immersive, three-dimensional virtual world that recreates a visceral sense of space and time.; Blade Server; China; DDJ; ibm; linux; mac; online; virtual world; windows; Dr. Dobb's interviews open source luminary Miguel de Icaza about his latest milestone of achieving Microsoft .NET 2.0 Framework compatibility with the Mono Project .; DDJ; Dr. Dobb/s interviews Paul Kimmel, author of "LINQ Unleashed for C#", about Microsoft's new query technology that lets developers poll any information from any data source regardless of location or structure. I; C#; DDJ; Dr. Dobb's; LINQ; microsoft; It takes a supercomputer to build a super car. ; DDJ; HPC; simulation; Dr. Dobb's shows how to install and execute cross-platform scripting languages on the Windows Mobile platform. In this installment, Mike Riley examines Perl for Windows Mobile devices.; DDJ; mobile devices; perl; windows; Dr. Dobb's shows how to install and execute cross-platform scripting languages on the Windows Mobile platform. In this installment, Mike Riley examines Python CE which is optimized for Windows Mobile devices.; DDJ; mobile devices; python; windows; Dr. Dobb's shows how to install and execute cross-platform scripting languages on the Windows Mobile platform. In this installment, Mike Riley examines Ruby for Windows Mobile devices.; DDJ; mobile devices; ruby; windows; Young participants at ITU TELECOM ASIA 2008 in Bangkok, Thailand received free laptops as part of ITU’s initiative to promote affordable devices to increase access to information and communication technologies.; communication; DDJ; itu; Currently technical strategist to Microsoft's Chief Software Architect, Rebecca Norlander has had a tremendous impact on Excel, Internet Explorer, Windows XP SP2, and Windows Vista Security. ; DDJ; microsoft; Contributing authors to the book "Beautiful Code" got together at Dr. Dobb's SD West Conference in March, 2008. Part 1 of 3.; DDJ; programming; software development; Contributing authors to the book "Beautiful Code" got together at Dr. Dobb's SD West Conference in March, 2008. Part 2 of 3.; DDJ; programming; software development; Contributing authors to the book "Beautiful Code" got together at Dr. Dobb's SD West Conference in March, 2008. Part 3 of 3.; DDJ; programming; software development; Anders Hejlsberg discusses C#, Turbo Pascal, and what it means to design a programming language. ; C#; DDJ; microsoft; Turbo Pascal; Solar powered laptops given to youths at ITU Asia 2008.; DDJ; News; telecommunications; IBM breakthrough stands to impact future direction of information technology.; DDJ; Mike Riley spoke to ActiveState's Jeff Hobbes about the new features in Tcl Dev Kit and Perl Dev Kit including the code coverage and hot-spot analysis tool and Mac OSX support.; DDJ; Tim O'Reilly addressed the OSCON convention in his Wednesday keynote titled "Degrees of Freedom, Open Source in the Wed 2.0 Era.; DDJ;