Changes for page PLDI'14 Artifact on SCCharts
Last modified by Alexander Schulz-Rosengarten on 2023/09/11 16:17
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -2,7 +2,7 @@ 2 2 3 3 = Modeling SCCharts with KIELER = 4 4 5 -This tutorial should guide you if you like to model SCCharts with KIELER and use the circuit based software synthesis path as explained in our [1] [[PLDI'14 submission>>url:http://rtsys.informatik.uni-kiel.de/ ~~biblio/downloads/papers/pldi14.pdf||shape="rect"]]. We will show you how to5 +This tutorial should guide you if you like to model SCCharts with KIELER and use the circuit based software synthesis path as explained in our [1] [[PLDI'14 submission>>url:http://rtsys.informatik.uni-kiel.de/%7Ebiblio/downloads/papers/pldi14-submitted.pdf||shape="rect"]]. We will show you how to 6 6 7 7 ~1. Download & Start KIELER, 8 8 ... ... @@ -10,19 +10,27 @@ 10 10 11 11 3. Generate C Code. 12 12 13 -We will use a simple example here in order to illustrate the process. It should bestraightforwardtousetheseinstructionsin ordertocompilea more advancedSCChart.Note thatthere areknown minorbugs in thecurrentnightly buildthat willbefixedinthenext release of KIELER 0.10.0. These bugsmightinsomecasespreventyou from compilingmore elaborateexamples.13 +We will use a simple example here in order to illustrate the process. Please refer to the SCCharts superpage for the [[project status>>doc:SCCharts]] and [[known limitations>>doc:SCCharts]]. If you are interested in the source code you can find instruction how to download and compile it here: [[Getting Started>>url:http://rtsys.informatik.uni-kiel.de/confluence/display/KIELER/Getting+Started||shape="rect"]]. 14 14 15 15 16 16 17 -[1] PLDI submission: [[http:~~/~~/rtsys.informatik.uni-kiel.de/~~~~biblio/downloads/papers/pldi14.pdf>>url:http://rtsys.informatik.uni-kiel.de/%7Ebiblio/downloads/papers/pldi14.pdf||shape="rect" class="moz-txt-link-freetext"]]17 +[1] PLDI submission: [[http:~~/~~/rtsys.informatik.uni-kiel.de/~~~~biblio/downloads/papers/pldi14-submitted.pdf>>url:http://rtsys.informatik.uni-kiel.de/%7Ebiblio/downloads/papers/pldi14-submitted.pdf||shape="rect"]] 18 18 19 - =Download & Start KIELER =19 + 20 20 21 +In addition to the step-by-step tutorial below we also captured a [[video >>url:http://rtsys.informatik.uni-kiel.de/~~kieler/files/pldi14/sccharts.swf||shape="rect"]]that shows each of the explained steps: 22 + 23 +[[~[~[image:attach:RTEmagicC_demo.png.png~]~]>>url:http://rtsys.informatik.uni-kiel.de/~~kieler/files/pldi14/sccharts.swf||shape="rect"]] 24 + 25 +Download location: [[http:~~/~~/rtsys.informatik.uni-kiel.de/~~~~kieler/files/pldi14/sccharts.swf>>url:http://rtsys.informatik.uni-kiel.de/~~kieler/files/pldi14/sccharts.swf||shape="rect"]] 26 + 27 += 1. Download & Start KIELER = 28 + 21 21 [[Download>>url:http://rtsys.informatik.uni-kiel.de/~~kieler/files/pldi14/||shape="rect"]] a suitable KIELER version for your operation system. The zip bundles are fully compiled and ready-to-run, they do not need any further installation process. Just save and extract them to/at the location of your choice and start the KIELER executable. 22 22 23 23 [[~[~[image:attach:RTEmagicC_download.png.png~]~]>>url:http://rtsys.informatik.uni-kiel.de/~~kieler/files/pldi14/||shape="rect"]] 24 24 25 -Download Location: [[http:~~/~~/rtsys.informatik.uni-kiel.de/~~~~kieler/files/pldi14/>>url:http://rtsys.informatik.uni-kiel.de/~~kieler/files/pldi14/||shape="rect"]]33 +Download location: [[http:~~/~~/rtsys.informatik.uni-kiel.de/~~~~kieler/files/pldi14/>>url:http://rtsys.informatik.uni-kiel.de/~~kieler/files/pldi14/||shape="rect"]] 26 26 27 27 When you start the KIELER executable, you probably need to set a (new) workspace location of your choice. (Click on the images to enlarge them). 28 28 ... ... @@ -50,7 +50,7 @@ 50 50 51 51 Now you can proceed in modeling an SCChart as explained below. 52 52 53 -= Model an SCChart = 61 += 2. Model an SCChart = 54 54 55 55 Right-click on a project and create a (text) File: 56 56 ... ... @@ -60,6 +60,8 @@ 60 60 61 61 [[image:attach:kieler09.png]] 62 62 71 +SCT is a textual description language for SCCharts. Due to space limitations SCT is not documented in the PLDI paper, but examples can be found [[here>>doc:SCT - Textual Description Language for SCCharts]]. Also the code completion functionality of the textual editor for SCT is very helpful. It can be invoked by pressing <Ctrl> + <Space>. It will list all syntactically possible input according to the SCT/SCCharts meta model. 72 + 63 63 The textual SCCharts Xtext based editor (for *.sct files) will automatically be opened: 64 64 65 65 [[image:attach:kieler10.png]] ... ... @@ -102,7 +102,7 @@ 102 102 103 103 You will now see how to generate a C tick function. 104 104 105 -= Generate C Code = 115 += 3. Generate C Code = 106 106 107 107 You can do several transformations on SCCharts (*.sct files). Just right click the file you want to transform in the project explorer and select the Transform SCChart sub menu. As abo is already a Core SCCart you do not need the core transformations. Click the All Normalize Transformations, this will do the Split Trigger and Effects and the Surface and Depth transformations together (in this order). 108 108 ... ... @@ -112,56 +112,222 @@ 112 112 113 113 [[image:attach:kieler14.png]] 114 114 115 -Now generate the Sequentially Constructive Graph (SCG) from the normalized form. You do this also in the context menu of the Project Explorer by selecting the *.normalized.sct and choosing Generate SCG :125 +Now generate the Sequentially Constructive Graph (SCG) from the normalized form. You do this also in the context menu of the Project Explorer by selecting the *.normalized.sct and choosing Generate SCG. When selecting the abo.normalized.scg file the SCG diagram will be automatically synthesized (you may also want to re-arrange the KLigD view by dragging in to the right side again). 116 116 117 -[[image:attach:kieler15.png]] 127 +[[image:attach:kieler15.png]][[image:attach:kieler16.png]] 118 118 119 - Whenselecting the abo.normalized.scg file the SCG diagram will be automatically synthesized (you may also want to re-arrange the KLigD view by dragging in to the right side again):129 + 120 120 121 - [[image:attach:kieler16.png]]131 +You can now populate the SCG automatically with dependency data. Choose Transform SCG -> SCG with Dependency Data from the context menu (left side). This will result in the following SCG (right side). 122 122 123 - You can now populatethe SCGautomatically withdependency data. Choose Transform SCG -> SCG with Dependency Data from the context menu:133 +[[image:attach:kieler17.png]][[image:attach:kieler18.png]] 124 124 125 - [[image:attach:kieler17.png]]135 + 126 126 127 - Thiswillresult inthefollowingSCG:137 +Now populate the SCG with basic block information (left side). The SCG with calculated basic blocks will look like this (right side). 128 128 129 -[[image:attach:kieler1 8.png]]139 +[[image:attach:kieler19.png]][[image:attach:kieler20.png]] 130 130 131 - Nowpopulate the SCG with basic block information:141 + 132 132 133 - [[image:attach:kieler19.png]]143 +The next step in compilation is the (more fine grained) calculate of scheduling blocks (left side). The populated SCG with scheduling information looks like this (right side). 134 134 135 - The SCG with calculated basicblocks will look likethis:145 +[[image:attach:kieler21.png]][[image:attach:kieler22.png]] 136 136 137 - [[image:attach:kieler20.png]]147 + 138 138 139 -The ne xt stepincompilation isthe(morefinegrained)calculateof schedulingblocks:149 +The SCG is now ready to be sequentialized. A primitive scheduler currently is included in KIELER but more elaborate ones are already in the pipe line (left side). The sequentialized SCG looks like this (right side). 140 140 141 -[[image:attach:kieler2 1.png]]151 +[[image:attach:kieler23.png]][[image:attach:kieler24.png]] 142 142 143 - Thepopulated SCG with scheduling information looks like this:153 + 144 144 145 - [[image:attach:kieler22.png]]155 +From here its only a short hop to C code. Transform the sequentialized SCG into an S Tick Function (left side). When opening the S file (abo.normalized.seq.s) this already is very c like code (right side). 146 146 147 - The SCGis now readyto be sequentialized. A primitive schedulercurrentlyis included in KIELER butmore elaborateonesare already inthe pipeline:157 +[[image:attach:kieler25.png]][[image:attach:kieler26.png]] 148 148 149 - [[image:attach:kieler23.png]]159 + 150 150 151 - ThesequentializedSCGlookslikethis:161 +Selecting Generate SC will produce a C file: 152 152 153 -[[image:attach:kieler2 4.png]]163 +[[image:attach:kieler27.png]][[image:attach:kieler28.png]] 154 154 155 - Fromhere its only a short hop to C code. Transform the sequentialized SCG into an S Tick Function:165 + 156 156 157 - [[image:attach:kieler25.png]]167 += 4. Evaluated Examples = 158 158 159 - Whenopening theS file(abo.normalized.seq.s)thisalready isveryclikecode.SelectingGenerate SC169 +In the following, you find the examples used for evaluation. Be advised that there currently is no tool integrated evaluation possible. Please refer to the SCCharts superpage for the [[project status>>doc:SCCharts]] and [[known limitations>>doc:SCCharts]]. 160 160 171 +|=((( 172 +Example 173 +)))|=((( 161 161 162 - 175 +)))|=((( 176 +SCChart (Graphical) 177 +)))|=(% colspan="1" %)(% colspan="1" %) 178 +((( 179 +SCChart (Textual SCT) 180 +))) 181 +|(% colspan="1" %)(% colspan="1" %) 182 +((( 183 +shifter3 184 +)))|(% colspan="1" %)(% colspan="1" %) 185 +((( 163 163 164 - 187 +)))|(% colspan="1" %)(% colspan="1" %) 188 +((( 165 165 166 - 190 +)))|(% colspan="1" %)(% colspan="1" %) 191 +((( 192 +{{code title="abo.sct"}} 193 +scchart shifter3 { 194 + input signal int I = 1; 195 + signal int S0; 196 + signal int S1; 197 + output signal int O; 198 + region R1: 199 + initial state I2 200 + --> I2 with pre(S0) / S1(pre(val(S0))); 201 + region R0: 202 + initial state I1 203 + --> I1 with pre(I) / S0(pre(val(I))); 204 + region R2: 205 + initial state I3 206 + --> I3 with pre(S1) / O(pre(val(S1))); 207 +} 208 +{{/code}} 209 +))) 210 +|((( 211 +reincarnation 212 +)))|((( 167 167 214 +)))|((( 215 + 216 +)))|(% colspan="1" %)(% colspan="1" %) 217 +((( 218 +{{code title="abo.sct"}} 219 +scchart reincarnation { 220 + input signal A; 221 + output signal gotS; 222 + region R0: 223 + initial state Reincarnation { 224 + signal S; 225 + region R0: 226 + initial state I 227 + --> C1 immediate; 228 + state p; 229 + final state r; 230 + state q 231 + --> r with A / S; 232 + state C1 233 + --> p immediate with S / gotS 234 + --> q immediate; 235 + } 236 + >-> Reincarnation; 237 +} 238 +{{/code}} 239 +))) 240 +|((( 241 +cabin 242 +)))|((( 243 + 244 +)))|((( 245 + 246 +)))|(% colspan="1" %)(% colspan="1" %) 247 +((( 248 +{{code title="abo.sct"}} 249 +scchart Cabin { 250 + input signal Stop; 251 + input signal CabinStopped; 252 + input signal DoorIsOpen; 253 + input signal DoorOpen; 254 + input signal DoorSensor; 255 + input signal DoorIsClosed; 256 + input signal DoorClose; 257 + input signal TimerExpired; 258 + output signal StartOK; 259 + output signal OpenDoorMotorOff; 260 + output signal OpenDoorMotorOn; 261 + output signal StartTimer; 262 + output signal CloseDoorMotorOn; 263 + output signal CloseDoorMotorOff; 264 + region R0: 265 + initial state I 266 + --> Open immediate with / OpenDoorMotorOn; 267 + state Open 268 + --> S0 with DoorIsOpen / OpenDoorMotorOff; 269 + state S0 { 270 + region R0: 271 + initial state Initial 272 + --> S0 immediate with / StartTimer; 273 + state S0 274 + --> S1 with TimerExpired | DoorClose / CloseDoorMotorOn; 275 + state S1 276 + --> S2 with DoorIsClosed / StartOK; 277 + final state S2; 278 + } 279 + o-> I with DoorOpen | DoorSensor / CloseDoorMotorOff 280 + >-> S1 with / CloseDoorMotorOff; 281 + state S1 282 + --> S2 with Stop; 283 + state S2 284 + --> I with CabinStopped; 285 +} 286 +{{/code}} 287 +))) 288 +|((( 289 +reactor control 290 +)))|((( 291 + 292 +)))|((( 293 + 294 +)))|(% colspan="1" %)(% colspan="1" %) 295 +((( 296 +{{code title="abo.sct"}} 297 +scchart Module_ReactorControl { 298 + output signal PullOutRods; 299 + output signal PushInRods; 300 + input signal Start; 301 + input signal OverHeated; 302 + input signal CooledDown; 303 + signal unsafe; 304 + region main: 305 + initial state init0 "I" 306 + --> ParallelStatementList40state immediate; 307 + state ParallelStatementList40state { 308 + region R0: 309 + initial state init1 "I" 310 + --> Await43state immediate; 311 + state Await43state { 312 + region R0: 313 + initial state init2 "I" 314 + --> S18 immediate; 315 + state S18 "18" 316 + --> S23 with Start / PullOutRods; 317 + state S23 "23"; 318 + } 319 + o-> Await43state with unsafe; 320 + region R1: 321 + initial state init3 "I" 322 + --> S94 immediate; 323 + state S94 "94" 324 + --> S134 immediate with unsafe / PushInRods; 325 + state S134 "134" 326 + --> S94 with !unsafe; 327 + region R2: 328 + initial state init4 "I" 329 + --> S193 immediate; 330 + state S193 "193" 331 + --> Sustain68state immediate with OverHeated; 332 + state Sustain68state { 333 + region R0: 334 + initial state init5 "I" 335 + --> S227 immediate with / unsafe; 336 + state S227 "227" 337 + --> S227 with / unsafe; 338 + } 339 + o-> S193 with CooledDown; 340 + }; 341 +} 342 +{{/code}} 343 +)))
- Confluence.Code.ConfluencePageClass[0]
-
- Id
-
... ... @@ -1,1 +1,1 @@ 1 - 86517291 +9470040 - URL
-
... ... @@ -1,1 +1,1 @@ 1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/KIELER/pages/ 8651729/PLDI'14 Artifact on SCCharts1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/KIELER/pages/9470040/PLDI'14 Artifact on SCCharts