// // SoC P35 Exercise 3 2011/12 // Implement a basic I/O device or co-processor as a TLM model and/or a device driver and test program to exercise it. Working in pairs is allowed, with one person writing the application code and the other device driver and the other writing the TLM model. In this case, part 5 below should be done first and each person should refer to this document as the basis for their work. // Please do the following 1. Starting with the ETHERCRC example in /usr/groups/han/clteach/orpsoc/ethercrc, or your PERIPHERAL_DEVICE from exercise 2, or using another design of your own (such as a message passing interface or a Bloom filter or a multimedia or encryption algorithm) create an application and unit test so that it has a top-level part and one or more sub-parts where the sub parts are suitable for implementation in custom hardware (or possibly on separate CPU cores). (The ETHERCRC example is already partitioned to be implemented as a bus-connected I/O device but an alternative partition would be as a co-processor or custom instruction.) For simplicity, the top-level part should contain all necessary input data sets for several tests of different lengths to be run (i.e. it has embedded unit tests). Your partition should result in two (or more) sections of C code that can easily be joined up again to run as a single program, perhaps under control of conditional compilation flags with the C pre-processor. Ideally you should select something where you can easily compare your ultimate results with an existing publication. 2. Modify the or1ksmp simulator to include your I/O device as a TLM model or custom instruction or whatever is needed (possibly nothing if just using multiple cores) and compile the remainder of your application and test for OpenRISC. 3. Compile your unpartitioned application so that it runs natively on a workstation. 4. Compile your unpartitioned application so that it runs on a single core of OpenRISC without any hardware assistance. 5. Write a text document that clearly defines the interface between the partitioned parts. Full marks will be awarded for a short report (about 4 pages including the interface document but excluding listings) that show a working system running some non-trivial (i.e. 10,000 instructions upwards) tests. Please give in at least a preliminary report by the published deadline to get feedback. Re-submission to get a higher mark is allowed at any point up to the final deadline at the start of the Easter Term. END