This is version 0.9 of the Embedded Systems Synthesis Benchmarks Suite (E3S). When I started working on embedded system synthesis, I had difficulty finding high-quality benchmarks. I tried contacting a major systems house and asking if they could release some of their specifications. A contact, inside the company, was helping to push my case. Although I offered to sign an NDA to get my hands on this information, their lawyers were unwilling to release any information. I later learned that this is typical. I used some examples from the literature. However, most of the examples available tended to be small or randomly generated. With a colleague, I wrote and released a program which generates pseudo-random graphs and resource databases based on a number of user-supplied parameters. This wasn't a perfect solution; ideally, one would want to run on large commercial examples. However, it was useful enough that a number of scheduling and allocation researchers started using it in their work. This made it clear to me that there is a strong need for better benchmarks. I started the cosynth-benchmarks mailing list in hopes of getting suggestions from other researchers and amortizing the cost of building benchmarks over multiple researchers. However, I realized that I would need to have something to start from before others could help. Therefore, I built an embedded systems synthesis benchmarks suite based on the EEMBC benchmarks suite (www.eembc.org). Note that this benchmarks suite contains only publicly available information from EEMBC, as well as information from other sources. This is release version 0.9 of the E2S benchmarks suite. I hope its useful to you. If you have suggestions for improvement, please email me (dickrp@ee.princeton.edu) or the Co-Synthesis Benchmarks Mailing list (cosynth-benchmarks@ee.princeton.edu). I have released more than I really need to: I could have released only the final problem specification files. Instead, I decided to release the source files from which they were created, along with a collection of perl scripts used to create them. I hope this gives other researchers something to start from if they need benchmarks similar, but not exactly the same as, the ones I used. Take a look at the gen-all-bench file. That's the top-level perl script that creates all the bencmarks files. The original information is stored in HTML files from the EEMBC web site, as well as other files containing additional information I gathered from datasheets and companies. If you're interested in using the E3S benchmarks as a starting point but making changes, you'll need to look through, and modify, some of the perl scripts described below. I'm a bit more pedantic when writing C++ code than writing perl. My apologies if the scripts aren't very beautiful. If you're only interested in using the current version of the benchmarks, you can ignore everything but the *.tgff files. --- The following list explains the contents of the files in this directory. NOTES: Explainations of some of the decisions I made during the design of the benchmarks suite. README: Overvew of the benchmarks all-tasks: Lists the task types. is one of the following: auto-indust networking telecom consumer office-automation is one of the following: cords: distributed system synthesis, supports reconfigurable hardware although we haven't included such processing elements in E3S, yet cowls: wireless client-server system mocsyn: system-on-chip -.fig: A manually drawn xfig figure for the given problem. These are included for the sake of convenience. I only drew graphs for a subset of the problems. -.graph: The graph structure for the benchmark for use as a benchmark for synthesis of the type of embedded system targetted by . -.tgff: The complete problem specification and resource database for the problem and embedded system type . These are generated by the gen-all-bench script. .html: These are the "raw" HTML files from EEMBC, included with permission. Note that they contain the same information publicly available from EEMBC's web site. They are included here in order to make sure that a single version of the E3S benchmarks stays the same, even if EEMBC's web site changes. Note that these files are not exactly the same as EEMBC's web site's files because the EEMBC files contained a few small typos, e.g., inconsistent names or punctuation for different references to the same processor. conv-link: This perl script generates link-db- files from the information contained in the lspecs file. conv-proc: This perl script generates proc-db- files from the information contained in the pspecs file and the .html files that are listed on the command-line. gen-all-bench: Generates all the benchmarks by using the conv-proc and conv-link scripts and the information in the misc- files. link-db-: Communication resource database file for embedded system type generated by conv-link. lspecs: Link specifications used as input by the conv-link script to produce the link-db- files. misc-: Miscelaneous information used my gen-all-bench script to generate benchmarks for embedded systems of type . proc-db-: Processor database produced by the conv-proc script for use by the gen-all-bench script. pspecs: Processor specifications used as input by the conv-proc script to produce proc the-db- files.