Here are some screenshots from Chronos. The backend (WCET estimation engine) has
been developed in C and the frontend (GUI plus limited flow analysis) has been
developed in Java.
Set directories for SimpleScalar GCC bin, lp\_solve, and simplesim-3.0After you install the simplescalar gcc,ILP_solver and simplesim-3.0 on your own machine,you need to inform Chronos where these tools are.Choose "Simplescalar gcc bin directory" from "Option" menu. A standard directory dialog box will appear and select bin the directory Similarly,inform Chronos the directories for lp_solve(contains executable lp_solve and a library libxliCPLEX.so) and simplesim-3.0 by selecting "ILP-solver directory" and "Simplesim-3.0 directory",respectively from "Option" Menu.![]()
Open a benchmark directoryChoose the command ``Open File..." from the ``File" menu. A standard file dialog box will appear on the screen. After selecting the benchmark directory from the list box, Chronos will load the source code, and it will take the following actions. First it invokes SimpleScalar GCC to compile the benchmark. Next it disassembles the binary executable and reconstructs the control flow graph (CFG), which is shown in the third pane. Chronos also dumps out the assembly code on the fourth pane with basic block annotations.![]()
Set user constraintsChronos provides an user interface for giving additional flow constraints. Some of the user constraints are compulsory, like loop bounds that cannot be automatically derived by Chronos; or constraints that can further limit the possible program paths, like bounds on if-then-else branches. Loop bounds can be given in two forms. If an inner loop executes fixed number of times when entered from its parent loop or procedure, the user can select "Loop bound constraints" from the option menu and simply give the loop bound per invocation. Otherwise, a bound on the overall iterations of the inner loop should be given for better accuracy. In this case, select "Other constraints" from the "Option" menu and give a constraint like what is shown in the following figure.![]()
Set processor configurationChoose the command "Processor configuration" from the "Run" menu and a pop-up dialog requests the user to set some processor configuration.The user can now configure the processor model via the following interfaces. Since Chronos does not (yet) model all the features of a superscalar processor, the interface allows the user to only configure the features that have been modeled.![]()
EstimateAfter you set some constraints or reset some proecessor parameters. Choose the command "Estimate" from the "Run" menu, Chronos will invoke the backend to estimate the WCET. The WCET, number of branch mispredictions, as well as number of cache misses are printed out in the "Estimation Result" pane.![]()
SimulateChoose the command "Simulate" form the "Run" menu, the Chronos will invoke sim-outorder to simulate the program with the same configuration as estimation. The simulation cycles, number of branch mispredictions, as well as number of cache misses are printed out in the "Simulation Result" pane. Now the user can compare the estimation and simulation result.![]()
|