Semifore Releases Runtimes and Memory Usage
Add comment November 2nd, 2008
We completed some performance testing of the Semifore Compiler in September and I wanted to share some of the results with you. We translated the Intel I/O Controller Hub 9 (ICH9) Family Datasheet (downloaded from www.intel.com/assets/pdf/datasheet/316972.pdf ). This is a complex chip, often referred to as the Southbridge, which devotes more than 500 pages in the datasheet to documenting approximately 1,000 registers in the design. We used our jumpstart tools to translate the PDF into our input language, including field descriptions and generated a basic input file that was about 32,000 lines or 1.7MB of text.
Compiling and generating Verilog took about four seconds. And compiling and generating Verilog and a 500 page datasheet in WORD took about 7 seconds. We then took this as a building block and created a 5K, 10K, 20K, and 40K register design. Runtimes scaled linearly for compile and Verilog generation: 5K took 19 seconds, 10K took 38 seconds, 20K took 73 seconds, and 40K took about 155 seconds.
Memory usage ranged from 50Mb for the 1K example to 800Mb for the 40K example on a 32bit Pentium Processor. In these examples we were able to process about 250 registers a second and use about 24K of memory per register.
Summary for Compile and Generate Verilog
- 1K registers took 4 seconds and 50Mb of memory
- 5K registers took 19 seconds and 145Mb of memory
- 10K registers took 38 seconds and 241 Mb memory
- 20K registers took 73 seconds and 433 Mb memory
- 40K registers took 155 seconds and 815Mb of memory
Obviously this are just one set of examples, we would be happy to run a benchmark for you on your data and show you both our performance and the quality of our results. Please note that our use of the Intel example does not constitute an endorsement by Intel of our offering, it was simply the most complex example (from an address map perspective) that we could find that was diverse and well documented.