This is the first of a number of hands-on FPGA development-tool evaluations that will be covered in EiED Online.
The first product in this series is Altium’s Designer 6, which is covered in this article. The next will be Xilinx’s PowerPC and MiocroBlaze development kit. The third will be a low-cost kit from Parallax, the Stratix Smart Pack for the Altera Stratix FPGA. There will likely be more following these, but this is what I currently have on hand. Also, the articles will be spread out, as FPGA evaluation takes a good bit longer than some of the other projects and articles presented in the EiED Online column.
Altium Designer 6 And The NanoBoard-NB1
The two things that I take a look at in this article are the Altium Designer 6 software and the Nanoboard-NB1 (see Fig. 1) hardware. Designer 6 is an integrated development environment (IDE) that covers a range of tools, including schematic capture, printed-circuit-board (PCB) layout, FPGA layout, and software development for projects that include one or more processors.
First I’ll take a look at the major features of these two products, and then we hit the actual hands-on review. I do need to mention that these tools are quite extensive and I am only able to present a small snapshot of the various features. Like many platform-oriented products, you should be taking a look at the whole package to see if it is applicable to your project. Designer can be purchased with all its parts or just some, depending upon what you need. The advantage to Designer is that it can encompass such a large set of design and implementation functions that you may be able to use it as your only tool.
We will start with the NanoBoard-NB1 because it is actually the simpler of the two. Of course, after seeing the NB1 you might think differently. The NB1 is used for FPGA development. It is a host to a plug-in FPGA module (see Fig. 2). Two modules are included with the package. One houses a Xilinx Spartan-III and the other is an Altera Cyclone. These FPGAs are large enough to do some interesting projects, including ones that have multiple soft-core processors.
The NB1 surrounds the FPGA module with a set of built-in peripherals that include everything from the usual switches and LEDs to more powerful interface devices like a small LCD display and a 16-button keypad. There is on-board memory, and there are connectors for a serial port, PS/2 port, CAN port, and VGA port. There is audio input and output plus a collection of headers that make it easy to connect the NB1 to external boards. The use of external boards is one way to design a system that will include an FPGA, but you want to keep the design on the NB1 for development and testing purposes because of the flexibility of the NB1.
One of the things that provides the NB1 with its flexibility is, of course, another FPGA that manages the connections and operation of the FPGA module and the other peripherals on the NB1.
Another reason for keeping things on the NB1 during the design process it that you can link multiple NB1s together using a set of daisy-chain cables. A single parallel port cable connects the first NB1 to the PC that runs Altium Designer 6. This approach allows the NB1s to be synchronized and simplifies system design with multiple FPGAs. Need to make a change to one or more of the FPGAs? No problem. Make the change in Designer 6 and click a button. The program does the rest, starting with layout, then building the code to download, and finally downloading it to the proper FPGAs.
The NB1 design is very clean and it has some nice features that other development kits often overlook. For example, the NB1 board is mounted on a heavy metal stand that tilts the board forward at an angle of about 30 degrees. This does a few things. First, it is much easier to view the on-board LCD and use the keypad. It also raises up the board to make it easier to connect the cables. Finally, the stand is heavy enough to prevent it from sliding around because of all the cables that might be connected to the NB1.
Overall, the NB1 has a very professional feel that matches the supporting documentation and software. Now onto the software.
Altium Designer 6
Altium Designer 6 is primarily two tools: Nexar and Protel. Nexar handles FPGA design while Protel handles PCB layout. These tools are cutting edge. Designer 6 also has more limited tools, such as software development using C. There is also support for related tools like version control.
Altium Designer excels in board designs that utilize FPGAs. Typically a designer can stay within Designer for the majority of their work. Tools can also be used individually, so you can build a PCB that has FPGAs that were designed using other tools or even using Designer but as a different project.
Nexar is the FPGA design tool. While it supports definitions using high-level design languages such as Verilog and VHDL, most designers will probably opt to use the more graphical, schematic-oriented design system. This operates in the same fashion as Protel’s schematic capture and designs can be migrated between the two. This allows a system to migrate into an FPGA, or features can be extracted depending upon the designer’s requirements. FPGA designs can include any mix of predefined packages, high-level design language definitions, and graphical definitions.
Nexar is an FPGA diagnostic tool and it actually requires additional tools to be installed based on the FPGA being targeted. The two third-party tools that are required for the NB1 FPGAs are from Xilinx and Altera. Most of these FPGA tools tend to be free downloads off the Internet, and they must be installed for Nexar to work properly.
A design is compiled for a particular target once a schematic of the FPGA is complete. This is where the FPGA vendor’s tools come into play. There are a host of issues that can be addressed automatically by Nexar or the third-party tools, or a designer may make changes explicitly. Areas of adjustment including system layout, pin outs, and so on. The list is extremely long.
Once the design is complete it can be simulated or downloaded into an FPGA. In the case of the NB1, the interface is very streamlined (see Fig. 3). Nexar takes advantage of its high-level knowledge of the system design to rovide major modules. Modules such as soft processors or hard processors within some FPGAs can be programmed explicitly from the interface, allowing software development to be done using the NB1. Nexar handles the details of downloading the application into memory.
Nexar brings a number of tools to the table when using the NB1, including control of NB1 peripherals, clock control, signal generation, and logic analyzer support. This support is very flexible, allowing a designer to quickly change or examine a configuration while the system is running.
Nexar can handle more than one NB1 using a daisy-chain architecture. This approach is very handy, especially if the FPGAs are destined for different boards or devices. For example, the logic analyzer can capture information from the different FPGAs and present it in a single display window.
Nexar can be used in conjunction with Protel, the PCB portion of Designer. As noted, Protel uses the same kind of schematic capture (see Fig. 4) as the Nexar graphical design interface. While the Nexar libraries contain modules destined for an FPGA, Protel’s libraries consist of modules that define existing products such as micocontrollers or op amps. Protel actually has a pair of libraries. One provides component connection definitions while the other provides a physical layout. The latter is used for the PCB layout. The typical approach to using Protel is the creation of a schematic and then mapping that schematic to a PCB layout.
Protel handles PCB layout using automatic or manual routing, or a combination of both, in the same fashion that Nexar handles routing for FPGA layout (see Fig. 5). Automatic routing is often done for prototypes, but manual routing or modifications are normally done for a final layout. Protel is one of the more advanced tools on the market with the ability to handle multiple layers and various design requirements. It also has the ability to take advantage of an integrated FPGA design. This is where Designer really shines.
One of the things that has become important in today’s designs is the use of high-speed, differential signals for technologies like PCI Express. Often the initial pinouts for an FPGA may not be optimal for a particular PCB layout. Designer has the ability to change the pins associated with a particular signal in the FPGA to make it easier to route the PCB signal traces. Of course, this means the FPGA design needs to be modified, but the software already knows about this. It is possible to lock down various portions of both the FPGA and PCB layout as well as controlling the amount of flexibility Protel will have when performing automatic routing. In many cases, this ability can reduce the number of board layers required to do a particular job.
Altium Designer easily handles complex designs through the use of a project and file hierarchy that is similar to many model-based design systems. It starts at the schematic level with annotated blocks providing interface definitions between files. This approach can be used to modularize a board or simply split a complex design across multiple sheets so it’s easier to view and understand.
One type of file that can be part of the system is a C source-code file. Protel has a built-in compiler, linker, and debugger. Although many other programming design systems are more complex and handle more languages, Designer’s C capability is well suited for the soft and hard cores found in an FPGA. The editor has the usual templates and editing features found in the likes of Eclipse, an open-source IDE, and the debugger does well at handling the diagnostic chores in an FPGA development environment. It can be combined with tools such as the logic analyzer and tracing support to gain more insight into the operation of a running system.
Altium Designer 6 showed up in a rather large box with more than half a dozen large books. About half of them tend to be reference information for things like the FPGA soft core processors that are included in the package. The rest range from overviews about the product to how specific parts like Nexar and Protel operate. I liked how the latter divided things up into chapters that are essentially self-contained tech notes. More about that later. Overall, this documentation is well written, organized, and invaluable when using the product. The online documentation is good as well, but I often found referring to the printed documentation was faster when looking up general approaches to a problem.
System installation took a while, but that’s more because I had to download the latest tools from Xilinx and Altera. These had to be installed and then I installed Altium Designer. The order is not really important, although you need to register everything with the respective companies before you can use the tools.
Setup of the NB1 came next. This was trivial since it was really just a matter of plugging in an FPGA module and some cables. The manual for the NB1 is well done and includes the steps required to reach plateau level 1, a functioning system. Nexar is the tool that works with the NB1 and Altium Designer installs with a number of sample applications. One is a simple project that flashes a set of 8 LEDs in sequence on the NB1. It only took about ten minutes to follow the steps to get this running once everything was set up. It worked as expected, so it was time to tackle the next plateau.
As noted earlier, some of the documentation is a set of tech notes. These include some projects that employ a soft core processor. I started with an 8051-based project. The steps are from ground zero, so you wind up learning how to use the basic features of the Designer software. It even provided the C source for what is effectively an FPGA “Hello World” program. I went through three of the projects in an afternoon, including basic diagnostic tools.
Moving onto plateau 3 was relatively straightforward for a simple project like the 8051-based example. Moving up to a larger processor was easy. In fact, it is possible to change the type of processor module with a few clicks. Using C meant that the sample software did not change, so building on an existing project was simple.
Trying a dual-processor design was more taxing, but only because it required moving into the hierarchical design aspect of Designer. Most of the time was spent in learning how to handle the multiple files and the hierarchy. The tech note examples were helpful, but I had to extrapolate to meet my design requirements. That is not surprising given the wide range of features found in Designer.
Finally, the package meets the plateau 4 requirements of delivering any size project as I was using a fully functional system, not an evaluation package.
Because this is an FGPA-oriented review, I will not go into the Protel side of things in detail. I started many years ago using Protel and have used Protel 99 extensively, so I was already familiar with Designer’s interface. I have no doubt that most designers will get used to the interface quickly without any problems.
It is worth noting a couple of things about the integration though. Designer has one screen that presents all the subsystems within a project so you can readily see what FPGAs will wind up on a particular board. I found that it helped me visualize the system architecture.
I was going to go over some of features in Designer 6 as this new version is a big step up from the prior major release. Unfortunately, after looking at Altium’s website, I decided not to. The website covers these enhancements rather well and it goes on for pages. Suffice it to say that the enhancements are significant and that they streamline the design process in addition to making the system easier to use.
I’ve only scratched the surface of what Designer 6 and the NB1 can do, but I will try to get more comments in about it in the future, possibly as part of the examination of the other FPGA kits I am looking at.
The NanoBoard-NB1 runs $995 with the two FPGA daughter boards, but you need the software to make things work. That is a bit more expensive. The complete Altium Designer 6 package is $11,995 for a single-user, perpetual license. Of course, there are dozens of options available to developers ranging from subscription services to quantity discounts. Also, you can just get the parts you need depending upon the type of work you are doing.
Overall, Altium Designer 6 and the NB1 are an extremely impressive set of tools. The level of integration puts it above most of the basic PCB or FPGA design tools, and its ability to move designs from one FPGA architecture to another is extremely impressive. Although the price is high compared to a microcontroller development kit, Designer should really be compared to a much higher-end design system at which point the price turns in to a bargain.