United Business Media EE Times


Search

HOMEMARKET INTELLIGENCE UNITFORUMSDESIGNNEW PRODUCTSCAREERSBLOGSCONTACTEVENTSSIGN UP!RSSMost Popular contentTrusted Sources

 



Embedded Systems



Designing a Highly Integrated Controller for Flash Storage Cards

The use of cores and design re-use methodologies reduces a five-chip set to two chips.

by Joseph Chang and Sue Cozart


Designers today are often faced with the compelling challenges of creating advanced systems with low power consumption and low cost. This article details how SanDisk met these challenges using Motorola's FlexCore program. FlexCore provides a methodology that allows designers to integrate their proprietary technology with Motorola microprocessors.

Design objectives Designs for microcontroller-based products have pursued two major objectives: (1) to reduce manufacturing costs through increased component integration, and (2) to reduce development time through increased re-use of previous hardware and firmware designs. These processes are particularly well exhibited in the design evolution of solid-state storage products. The following article examines how SanDisk Corporation was able to reduce a five-chip design to a two-chip solution in developing its latest generation of flash memory cards.

SanDisk introduced its first solid-state storage product, an ATA-compatible drive in 2.5-in. form factor, in 1991. The controller design consisted of two SanDisk ASICs, a Motorola 68HC11 microcontroller, a Cirrus Logic ATA controller chip, a PROM for firmware, and numerous discrete components. In 1992, SanDisk introduced its second-generation product, a Type II PCMCIA-ATA drive. The simplified controller implemented the ATA functions in the SanDisk flash interface ASIC, thus reducing the chip count by one. Nevertheless, SanDisk realized that to further expand the solid-state storage market, the price of the product had to come down significantly. To achieve this goal, SanDisk adopted a two-pronged approach: (1) component count reduction through a higher level of integration in the controller ASICs and (2) development time reduction through adoption of a design re-use methodology.

Adopting a design re-use methodology required radical changes in both hardware and software development flows. In previous ASIC designs, SanDisk engineers used schematic entry. Even in cases where the controller architecture had remained largely unchanged, each new design required a complete re-entry of all the schematics using the appropriate ASIC library. This process was both time consuming and error prone. For their third-generation product, SanDisk engineers adopted an HDL design approach using Verilog and Synopsys .com/isdweb/&lf=isd-sendtolog"> Synopsys . Encoding major functional blocks in Verilog laid the foundation for design re-use and offered the additional benefits of reducing design entry errors and making the design independent of the target library. It was anticipated that this would increase the design schedule, as the engineers had to learn how to use the synthesis tool. Nevertheless, the potential payback in schedule reduction of all future design projects made this initial schedule hit tolerable.

On the software side, previous development had involved hand-tweaked assembly code. While this resulted in a compact and efficient code, it was not easily portable to different processors and was also time consuming for new engineers. As a result, SanDisk decided to code all future projects with non-timing-critical functions in C. In doing so, the SanDisk engineers sacrificed some code efficiencies in exchange for development time reduction.



SanDisk's processor designed using Motorola's FlexCore Program.

The search for a processor core To achieve SanDisk's goal of component count reduction, all digital functions needed to be combined into one ASIC. This required integrating the functionality of a 68HC11 onto the ASIC. We spent nine months searching for a processor/controller core that could be embedded in an ASIC design. After considering numerous core cells, including the ARM and MIPS cores and various microcontroller cores, SanDisk chose the Motorola EC000 core offered in Motorola's FlexCore program. We chose this core because it satisfied the largest number of the following requirements:

  • Mature, proven design processor core

  • Low-cost design

  • Available compilers, assemblers, debuggers and emulators

  • Fully static core operating at 5V or 3.3V at 16MHz

  • Compact core size

  • Power dissipation less than 40mA running at 16MHz at 5V

  • Vendor with fully characterized 3.3V standard cell library

  • Design tools supporting RAM and ROM blocks of arbitrary sizes

  • Design tools supporting Verilog for simulation and Synopsys .com/isdweb/&lf=isd-sendtolog"> Synopsys synthesis

  • Vendor accepting Verilog netlist for signoff and using Verilog-XL as the golden simulator

  • Upgrade path to higher performance through a process shrink or a more powerful processor

    Special design considerations in embedding a processor core Embedding the processor core in the ASIC began in early 1993. SanDisk faced two challenges in completing this process, including testing the processor core with high fault coverage test vectors and providing emulation support for firmware development. Motorola addressed the first challenge by conducting the testing since the CPU core was essentially a black box component. To assist in the testing, SanDisk brought out all the signals of the core cell to the pads. In keeping with the objective, to keep package pin count as low as possible, the SanDisk engineers multiplexed most of the core signals with other
    device pins.

    Two approaches were considered for emulation support. To emulate, the emulator needed access to the 68000 signals. The first approach was exemplified by the ORION 8800 series emulator. The CPU core was not disabled; the standard 68000 signals were brought out to the pads and the emulator was functioning essentially as a ROM emulator. The second approach was more traditional in method. The CPU core was disabled, and the emulator pod with a 68000 was plugged into the target socket. The end result was support for both modes of emulation with more pin multiplexing.

    SanDisk next designed an internal bi-directional bus to interface to the CPU data bus. The original bi-directional structure of the data bus was retained in the core cell, instead of providing separate input and output buses. Motorola provided a special bus-keeper cell to prevent the bus from floating since an internal tristate bus existed. Although the pin multiplexing around the CPU core turned out to be fairly complicated, the rest of the core cell interface proceeded quite rapidly. Figure 1 shows some of the multiplexing control logic for the CPU data bus.

    Starting the design process The installation of Motorola's FlexCore design system onto our SPARCStation was a straightforward procedure. The toolkit could be run in a Cadence Framework environment or in a stand-alone, text-based terminal environment. SanDisk chose the terminal environment, allowing access of the tools on PCs through remote Telnet sessions.

    The first step in the design process was to synthesize all the Verilog HDL coded blocks. Instead of using the Synopsys .com/isdweb/&lf=isd-sendtolog"> Synopsys Design Compiler's built-in delay equation for temperature and voltage derating, Motorola provided a set of library files covering a combination of process, voltage, and temperature conditions. SanDisk engineers synthesized the design using the worst-case operating condition library and relied on the 'fix hold' command in Synopsys .com/isdweb/&lf=isd-sendtolog"> Synopsys to fix hold-time problems that may show up under the best-case operating conditions. This reduced the chances of timing errors since the design was largely synchronous. This method resulted in successful synthesis of all Verilog coded blocks. There were no timing violations under the best-case operating conditions.

    Compiling RAM blocks SanDisk needed to generate all the RAM blocks because the Flash Controller contained several RAM blocks that were not standard configurations. Motorola's FlexCore design toolkit included a utility which could compile single-port or dual-port RAMs, ROMs, PLAs, and special buffers. The RAM compiler included a multiplexing factor to determine the aspect ratio of the block. The aspect ratio determines the size, speed and power consumption of the RAM. The toolkit provided a guideline for the multiplexing factor needed to obtain a square RAM block which was the most efficient. However, because the layout efficiency of a rectangular block was more critical than power consumption or speed, the suggested multiplexing factor was overridden.

    With the above information, the compiler then proceeded to generate a Verilog model file and a set of Verilog technology timing files. These technology files had a one-to-one correspondence to the Synopsys .com/isdweb/&lf=isd-sendtolog"> Synopsys library files used later in the delay-calculation process. The compiler did not generate BIST structures for the compiled RAMs; therefore, it was necessary to add in special test modes that allowed the RAMs to be tested using ATPG tools on the target tester. The compiler automatically generated a name for each compiled RAM block. This presented minor inconvenience because it did not convey information about the size of the RAM. The name was a randomly generated serial number containing creation data information. However, the naming convention did help to ensure that the proper versions of the RAMs were used.



    Figure 1. The bi-directional data bus structure increases
    demultiplexing complexity while reducing the number of signal lines.

    Silicon and software systems SanDisk had to run a delay calculation for the appropriate operating conditions before the simulation could run. With this calculation complete, a problem became apparent. The CPU was not initialized in the simulation. It turned out that there was a specific initialization sequence for the core which is required only for simulation purposes but was not documented. Motorola assisted in resolving the problem. Once the CPU model was running smoothly, the verification process proceeded without a hitch. To verify that the CPU mux test logic was done correctly, Motorola provided a Verilog stimulus file that they use for fault testing
    the CPU.

    Most of the vectors for the CPU passed. However, there was a problem that was traced to the RESET and HALT pins on the CPU. In the standard 68000, these pins are bi-directional, but in the EC000 core, they are separated into input and output pins. When appropriate changes in the stimulus file were made to account for this discrepancy, the vectors passed. With the functional and timing verification completed, the task of generating test vectors began.

    Generating the test vectors by hand was time consuming because the design was not scan-based. The test vectors were very similar to the functional vectors, except for some timing restrictions (which are fairly common for ASIC testers). The first restriction was that all input signals had to be synchronized to the tester clock. The second restriction was that timing on bi-directional pins needed to be relaxed due to the tester turnaround time required for changing from input state to output state and vice versa. Since the 68000 bus cycle can be dynamically adjusted using the /DTACK signal, long delays under the worst-case condition could cause bus cycles to stretch but would not cause functional failures. On the tester, however, all signals must maintain the same timing from best case to worst case. This made it difficult to pick a sampling point that performed across operating conditions. As a result, engineering had to slow down the tester clock frequency. A revised version of the test kit fixed this problem by analyzing the vector set and suggesting a sampling window.

    To test the embedded RAM blocks, SanDisk generated a set of preamble vectors that placed the device into RAM test mode. Once in that mode, Motorola supplied their own RAM test pattern, generated using their ATPG tool for RAMs. To use this ATPG tool, SanDisk engineers followed certain rules in assigning the row and column decode addresses to the tester channels (which required some minor changes to the logic). The ATPG test method saved time and effort by eliminating the need for generating test vectors for the RAMs.

    Lastly, SanDisk checked the fault coverage of the test vectors. Since the design was not scan-based, engineering did not expect a high fault coverage. Using Cadence Design Systems' Verifault executables and models, the first-pass fault simulation yielded a fault coverage of approximately 85 percent. To bring the fault coverage to a higher, more desirable range, SanDisk added a vector set targeted to the uncovered faults.

    To estimate the worst-case power dissipation, SanDisk used a power estimation tool that is part of the Motorola toolkit. This tool calculated power consumption by the library cells based on capacitive loading. Therefore, SanDisk added to the number calculated by the toolkit, the power numbers for the RAMs and the CPU, and an additional 10 percent to account for surge current in the I/O buffers. This provided a check on the power dissipation. The resulting value was well within the design limit.

    As a result of integrating SanDisk proprietary logic on-chip with the Motorola core processor, SanDisk was able to reduce its flash disk controller chip count to two and significantly reduce component costs. SanDisk is currently working on further integration of the controller solution by pulling the external ROM chip onto the ASIC, resulting in a single-chip controller. The design re-use methodology employed now enables SanDisk to leverage much of the functional blocks and firmware from the existing controller into the next-generation controller design.

    Joseph Chang is a project manager in the Systems Engineering Department at SanDisk Corporation. He has been involved in the design of San Disk's embedded controllers for the past six years. Prior to joining SanDisk, Mr. Chang spent six and a half years with MMI/AMD doing a variety of full-custom and cell-based logic products.

    Sue Cozart is a technical marketing manager for Motorola's High Performance Embedded Systems Division. She has been responsible for marketing the FlexCore program throughout its development.

    To voice an opinion on this or any Integrated System Design article, please e-mail your message to michael@asic.com.


    integrated system design  January 1996



    [ Articles from Integrated System Design Magazine ] [ ICs and uPs ]
    [ Custom ICs and Programmable Logic ] [ Vendor Guide ]
    [ Design and Development Tools ] [ Home ]


    For more information about isdmag.com e-mail cam@isdmag.com
    For advertising information e-mail amstjohn@mfi.com
    Comments on our editorial are welcome.
    Copyright © 1996 - Integrated System Design Magazine

      Free Subscription to EE Times
    First Name Last Name
    Company Name Title
    Email address
      Click here for your Free Subscription to EETimes Europe
  •  
    CAREER CENTER
    Looking for a new job?
    SEARCH JOBS
    SPONSOR

    RECENT JOB POSTINGS
    CAREER NEWS
    SRC Expands R&D Centers
    The Semiconductor Research Corp has added a new center to its university R&D efforts.

    For more great jobs, career related news, features and services, please visit EETimes' Career Center.


    All White Papers »   

     
    Education and
    Learning


    Learn Now:












    Home | About | Editorial Calendar | Feedback | Subscriptions | Newsletter | Media Kit | Contact | Reprints|  RSS|   Digital|  Mobile
    Network Websites
    International
    Network Features




    All materials on this site Copyright © 2009 TechInsights, a Division of United Business Media LLC All rights reserved.
    Privacy Statement | Terms of Service | About