SystemCrafter
The affordable high-performance ESL synthesis tool.
The award winning SystemCrafter SC is an affordable high-performance software tool that synthesizes SystemC automatically to RTL VHDL. Engineers and programmers can design, debug and simulate hardware and systems using their existing C++ development environment. Hardware and software are simulated in the same framework. Then the hardware is synthesized to RTL VHDL for implementation using a standard design flow. SystemCrafter SC also writes a structural SystemC description of the synthesized circuit for verification.
Below are more facts about SystemCrafter:
Technology Brief
Overview of the technology
- SystemCrafter exists to bring our customers the power of fourth-generation electronic design synthesis, and so to make it easier, faster and less risky to create advanced IC designs
- To fulfill this mission, we have created SystemCrafter SC. SystemC is the industry standard for describing electronic systems using the hugely popular C++ language. SystemCrafter SC is a software tool that can automatically synthesize SystemC descriptions to electronic hardware
- We have invested heavily in the engineering development of SystemCrafter SC. We keep sales and marketing costs very low by selling it exclusively through our website. This enables us to sell the tool at a price within range of all chip designers
History of the company and origins of the technology
- SystemCrafter was founded in 2002, and is based in Ipswich, England, about 70 miles northeast of London
Language Backgrounder
Which languages are supported?
- SystemCrafter SC supports a subset of SystemC. SystemC provides an industry standard means of modelling and verifying hardware and systems using standard C++ software compilers. It consists of a set of class libraries for C++ that describe hardware constructs and concepts. This means that you can develop cycle-accurate models of hardware, software and interfaces, which can be simulated and debugged within your existing C++ development environment.
- For more details see the Language Reference chapter in the SystemCrafter User Manual, and the SystemC User's Guide. Other documentation on SystemC is available from the SystemC Web site www.systemc.org
How is parallelization achieved?
- SystemC describes parallelism in two ways: coarse grain parallelism is achieved using interconnected blocks, which are described using SystemC classes; fine grained parallelism is described using successive C++ statements, which can all result in hardware which operates during the same clock cycle
Are multiple clock domains supported?
- SystemC supports multiple clock domains. Clocked domains are described using threads
Level of Abstraction - How different is it from coding in HDL?
- Hardware to be synthesized using SystemCrafter 2.0 is described using threads (which are called SC_THREAD in SystemC). Each thread is a separately clocked domain. The code implementing the thread is essentially C++ (or C), with a few additions supplied by the SystemC class libraries
- This is a much higher level of abstraction than writing RTL HDL. A simplified view is that it is like writing a program, with the addition of a statement describing when to wait for a clock edge
Is floating point operation supported?
- SystemC supports floating point. However, this data type is not yet supported by the SystemCrafter SC Version 2.0 synthesis engine, so users can simulate it, but not synthesize it to hardware. Support will be implemented in future versions
Is an interface to Matlab supported?
- No interface to Matlab is supported by Version 2.0
Are standalone function libraries available?
- SystemCrafter allows the use of external “black boxes” for both simulation and synthesis, so third party functional blocks can be used. For more details see the section on Black Boxes in the User Manual. SystemCrafter does not currently supply libraries of preoptimized functional blocks
What format is the synthesis output?
- The synthesis output is standard RTL VHDL, suitable for synthesis by Xilinx's XST. The output VHDL files can be used directly by Xilinx's Project Navigator, which will then call XST and other implementation and simulation tools, such as ModelSim
Quality of results / Optimization scenarios
- Synthesis in SystemCrafter Version 2.0 is based on SystemC SC_THREADs. These are a high level of description. It's notoriously difficult to compare two different languages, but we've had reports of design sizes between 50 and 150% bigger than hand-coded VHDL designs
- SystemCrafter allows parts of the design to be written using other tools, so it is possible to write speed- or area-critical blocks in HDL. For more details see the section on Black Boxes in the User Manual
- Future versions will include the synthesis of SC_METHODs. This will allow users to synthesize SystemC written at a lower level, which will result in more efficient hardware for those who want it. Future versions will also include algorithms for more efficient synthesis of SC_THREADs
- Hand-tweaking of the synthesized RTL HDL is not recommended. The output is not designed for editing, and would also destroy the connection between the SystemC simulation and the HDL simulation
Simulation and debugging flows
- There are two ways to use SystemCrafter SC 2.0: using an existing C++ development environment, such as Visual C++, or using the SystemCrafter GUI
- Using your existing C++ development environment allows you to use the editor, debugger and compiler that you are familiar with, reducing the investment required to get started with SystemC synthesis. Running a source-level SystemC simulation is just a case of compiling your design and executing the resulting program. By changing the configuration you can run the SystemCrafter synthesis tool, and then simulate the synthesized version of your design. Finally, if you wish, you can simulate the synthesized HDL using your existing HDL simulator
- The SystemCrafter GUI simplifies setting up these flows, and the management of hardware and software. It calls your existing C++ compiler to build the source-level and synthesized simulation executables. It includes a simple editor
- For more details see the design flow chapter in the User Manual
What is the learning curve?
- To get started with SystemC the user needs some familiarity with using a C++ compiler, and then a brief review of the SystemC documentation
- After a brief introduction to SystemC, it is easy to get started with SystemCrafter SC. You can set up your C++ development environment to call SystemCrafter as part of your compilation flow. You will then be able to simulate both your original design and the post-synthesis SystemC description generated by SystemCrafter, and generate VHDL suitable for importing into the Xilinx tools
- To get a design in an FPGA, it is then just necessary to import the VHDL files into Xilinx Project Navigator, and follow the standard Xilinx flow. No particular knowledge of VHDL is required
Skill pre-requisite
- Users will need a basic knowledge of C or C++, and how to use the standard Xilinx design flow. No detailed knowledge of HDL or FPGAs is necessary
Suitability and Fit
Who is the target audience?
- SystemCrafter SC is suitable for programmers, scientists, systems engineers and hardware engineers. It enables developing hardware to be viewed as a higher level activity than writing an HDL, and allows the user to focus on the algorithm, rather than the details of the implementation
Which applications segments are targeted by this product?
- High level design is good at applications which have a high algorithmic content, such as image processing, encryption and signal processing
What are the characteristics of the target application?
- Users have different perspectives on using ESL tools, depending on whether they are trying to accelerate software, or use a higher level design flow to develop hardware and systems
- Using a higher level design flow is appropriate for applications where fast simulation, improved time to market, rapid prototyping, hardware/software codesign, or simplifying complex algorithmic designs is required.
- Software acceleration typically takes place with a target architecture consisting of one or more processors, and custom FPGA hardware. It is successful for applications where fast custom hardware outweighs the time taken communicating between the hardware and the processor. This is often the case where the hardware can be used for programs with big inner loops which run a complex intensive calculation, or where the hardware can be used to pre- or post-process data arriving or leaving the system from an external data source
Main value proposition?
- Low cost
- Easy to use
- Use your existing C++ development environment
- All you need is a C++ compiler, SystemCrafter SC and the Xilinx FPGA tools
- Improves time to market
- Reduces design risk
- Allows programmers and scientists to design complex systems without learning HDLs or electronics
How can you find out if your application is a good candidate for this tool methodology?
- If your aim is hardware acceleration, there is no magic bullet for deciding whether the application is a good candidate for acceleration in hardware: it requires thought and analysis. Generally, applications where the following holds are good candidates:
- Ts – Th > Tt
where
- Th is the time that would be taken to perform the processing in hardware
- Ts is the time that would be taken to perform the processing in software
- Tt is the time taken to transfer data between hardware and processor(s)
- This varies depending on the target architecture
- Using SystemCrafter SC and SystemC it is possible to perform a detailed analysis of the data flows to decide whether an application is a good candidate for acceleration. Set up a simulation of your application with some typical data sets, collect appropriate simulation data, and then estimate the processing time that would be saved by performing calculations in hardware, compared with the cost of data transfer
Language and methodology limitations
- SystemCrafter SC version 2.0 is not suitable for designing circuits smaller or faster than hand-crafted HDL. If design size and speed is more important to you than time to market, ease of use, and easy access to system-level simulation, and you have experience of producing efficient HDL designs, then a traditional design flow may be more appropriate for you
Successful deployment examples
Customer testimonials
- “Let me congratulate you on a great product. I've done some comprehensive work with the version 2.00 release, and have found it to be of a very high standard”
David Wheeler, SciPhy
Pricing
- SystemCrafter is here to provide affordable tools. This is reflected in both the price of the software and ease of use.
- SystemCrafter SC Version 2.0 costs $2,995.00 (January 2006) for:
- A perpetual license, node-locked to one PC
- Minor-version releases for the lifetime of the product (if you buy Version 2.0, you will be upgraded to new Version 2.x releases free)
- Support through our online support pages, including online forum and Knowledge Base
Xilinx Integration
Which Xilinx devices/architectures are supported?
- The SystemCrafter SC output is designed to work with the Xilinx XST synthesis tool and so works with all FPGAs supported by the standard Xilinx flow
Which Xilinx CPUs are supported?
- SystemCrafter SC 2.0 is designed to compile the custom hardware parts of your design to FPGAs. You must use other tools to compile software to the CPU
Inference of Xilinx Library components
- SystemCrafter writes RTL VHDL for synthesis by a VHDL synthesis tool. The output VHDL is written so that this tool can inference Xilinx library components
Benchmark studies targeting Xilinx
- The following benchmark study was carried out by a VHDL expert, who had never used SystemC before
- Target application: signal processing on a data stream
- Development time: SystemC (novice user) 60% of VHDL (expert user)
- Design size:
- VHDL: 231 slices, 197 flip-flops, 317 LUTs
- SystemC: 363 slices, 235 flips-flops, 638 LUTs
- Speed:
- VHDL: 8.8 µS
- SystemC: 10.9 µS
- The user concluded that SystemCrafter was an attractive alternative to VHDL. It improved time to market, and was easy to use, even for a novice user. More experienced users would see much greater benefits in development time
Flow integration with EDK/XPS, ISE, System Generator (Implementation)
- SystemCrafter SC is designed to work with the Xilinx XST synthesis tool. For implementation you just call the SystemCrafter synthesis tool on your source file, which results in VHDL files which can be synthesized directly with XST. If you are using Project Navigator you just need to import these files, and synthesize them using XST
Flow integration with EDK/XPS, ISE, System Generator (Simulation)
- There are three levels of simulation you can carry out using SystemCrafter SC:
- A system-level simulation. Build a fast simulation of your input files, using SystemC and your existing C++ compiler
- A post-SystemCrafter simulation. During synthesis, SystemCrafter produces a SystemC description of the synthesized circuit, which can be simulated using the test harness used in the system-level simulation for verification
- VHDL simulation. If you wish, you can write a VHDL test harness, and simulate the VHDL output of SystemCrafter. Some users do this using Xilinx Project Navigator, and ModelSim. Other users skip this step completely, and find it quicker and more convenient to verify the resulting VHDL by implementing it on their target FPGA
Getting Started
How to get started
- Download a copy of the SystemC library from www.systemc.org
- Register on the SystemCrafter website, at www.systemcrafter.com, and download a free evaluation copy of SystemCrafter SC
- Have a look through the manual, and try the example design
- Any problems or feedback, we'd be pleased to hear from you. There's a contact page at www.systemcrafter.com
Design examples for various Xilinx boards
Request for evaluation
- Register on the SystemCrafter website, at www.systemcrafter.com, and download a free evaluation copy of SystemCrafter SC. Alternatively contact us by the contact page on the website
Sales kits available?
(i.e. bundling of boards, software, examples for an integration out of the box experience)
- There is a natural synergy between SystemCrafter's software and FPGA development boards. If you have SystemCrafter SC installed, and an FPGA development board plugged into your computer, you can literally go from an empty C++ project to working hardware prototype in hours. To help take advantage of this synergy we offer a SystemCrafter SC with a desktop FPGA platform that can be plugged into a USB port. It comes with support software for FPGA configuration and communication, and logic cores for the FPGA interfaces. For further details see: www.systemcrafter.com/index.php?page=products
Design services / consultancy available?
- Some design services and consultancy may be available. Please contact SystemCrafter for details.
|