├── .gitignore ├── GettingStarted.txt ├── LICENSE ├── Makefile ├── README.md ├── html ├── ace.js ├── grapher.js ├── index.html ├── jquery.layout.min.js ├── layout-uhbcheck.css ├── pako_inflate.min.js ├── pipecheck.css ├── pipecheck_form.js ├── theme-github.js ├── viz.js └── worker.js ├── scripts └── rtlcheck │ ├── .gitignore │ ├── FPV_template_full_proof.tcl │ ├── FPV_template_hybrid.tcl │ ├── gen_props.sh │ └── job_template.sh ├── src ├── BackendJS.ml ├── BackendLinux.ml ├── ConstraintTreeTypes.v ├── Debug.v ├── FOL.v ├── FOLPredicate.v ├── Graph.v ├── GraphvizCompressed.v ├── HerdGraph.ml ├── Instruction.v ├── Lexer.mll ├── Main.ml ├── Makefile ├── MicroarchLexer.mll ├── MicroarchParser.mly ├── Parser.mly ├── PipeGraph.v ├── Process.ml ├── StringUtil.v ├── Util.ml ├── Util.v ├── VscaleMappings.v ├── WebMain.ml ├── _tags └── runtests.sh ├── tests ├── rtlcheck │ └── SC │ │ ├── amd3.test │ │ ├── co-iriw.test │ │ ├── co-mp.test │ │ ├── iriw.test │ │ ├── iwp23b.test │ │ ├── iwp24.test │ │ ├── lb.test │ │ ├── mp+staleld.test │ │ ├── mp.test │ │ ├── n1.test │ │ ├── n2.test │ │ ├── n4.test │ │ ├── n5.test │ │ ├── n6.test │ │ ├── n7.test │ │ ├── podwr000.test │ │ ├── podwr001.test │ │ ├── rfi000.test │ │ ├── rfi001.test │ │ ├── rfi002.test │ │ ├── rfi003.test │ │ ├── rfi004.test │ │ ├── rfi005.test │ │ ├── rfi006.test │ │ ├── rfi011.test │ │ ├── rfi012.test │ │ ├── rfi013.test │ │ ├── rfi014.test │ │ ├── rfi015.test │ │ ├── rwc-unfenced.test │ │ ├── safe000.test │ │ ├── safe001.test │ │ ├── safe002.test │ │ ├── safe003.test │ │ ├── safe004.test │ │ ├── safe006.test │ │ ├── safe007.test │ │ ├── safe008.test │ │ ├── safe009.test │ │ ├── safe010.test │ │ ├── safe011.test │ │ ├── safe012.test │ │ ├── safe014.test │ │ ├── safe016.test │ │ ├── safe017.test │ │ ├── safe018.test │ │ ├── safe019.test │ │ ├── safe021.test │ │ ├── safe022.test │ │ ├── safe026.test │ │ ├── safe027.test │ │ ├── safe029.test │ │ ├── safe030.test │ │ ├── sb.test │ │ ├── ssl.test │ │ └── wrc.test └── x86tso │ ├── amd10.test │ ├── amd3.test │ ├── amd5.test │ ├── co-iriw.test │ ├── co-mp.test │ ├── iriw.test │ ├── iwp23b.test │ ├── iwp24.test │ ├── iwp24a.test │ ├── iwp27.test │ ├── iwp28a.test │ ├── iwp28b.test │ ├── lb.test │ ├── mp+fences.test │ ├── mp+staleld.test │ ├── mp.test │ ├── n1.test │ ├── n2.test │ ├── n3.test │ ├── n4.test │ ├── n5.test │ ├── n6.test │ ├── n7.test │ ├── n8.test │ ├── podwr000.test │ ├── podwr001.test │ ├── rfi000.test │ ├── rfi001.test │ ├── rfi002.test │ ├── rfi003.test │ ├── rfi004.test │ ├── rfi005.test │ ├── rfi006.test │ ├── rfi007.test │ ├── rfi008.test │ ├── rfi009.test │ ├── rfi010.test │ ├── rfi011.test │ ├── rfi012.test │ ├── rfi013.test │ ├── rfi014.test │ ├── rfi015.test │ ├── rfi016.test │ ├── rfi017.test │ ├── rfi018.test │ ├── rwc-fenced.test │ ├── rwc-unfenced.test │ ├── safe000.test │ ├── safe001.test │ ├── safe002.test │ ├── safe003.test │ ├── safe004.test │ ├── safe005.test │ ├── safe006.test │ ├── safe007.test │ ├── safe008.test │ ├── safe009.test │ ├── safe010.test │ ├── safe011.test │ ├── safe012.test │ ├── safe013.test │ ├── safe014.test │ ├── safe015.test │ ├── safe016.test │ ├── safe017.test │ ├── safe018.test │ ├── safe019.test │ ├── safe020.test │ ├── safe021.test │ ├── safe022.test │ ├── safe023.test │ ├── safe024.test │ ├── safe025.test │ ├── safe026.test │ ├── safe027.test │ ├── safe028.test │ ├── safe029.test │ ├── safe030.test │ ├── safe031.test │ ├── safe032.test │ ├── safe033.test │ ├── safe034.test │ ├── safe035.test │ ├── safe036.test │ ├── safe037.test │ ├── sb.test │ ├── ssl.test │ ├── testandset+earlyld.test │ ├── testandset.test │ ├── testandset2+earlyld.test │ ├── testandset2.test │ └── wrc.test ├── uarches └── Vscale.uarch └── x86tso.cat /.gitignore: -------------------------------------------------------------------------------- 1 | *.coq 2 | *.glob 3 | *.v.d 4 | *.vo 5 | *.mli 6 | *.swp 7 | src/Main.native 8 | src/PipeGraph.ml 9 | src/rtlcheck 10 | src/_build 11 | doc/ 12 | log.txt 13 | pipecheck 14 | tmp/ 15 | trash/ 16 | html/bootstrap 17 | html/bootstrap-3.3.5-dist.zip 18 | html/bootstrap-3.3.5-dist/ 19 | src/Herd.ml 20 | src/HerdLexer.mll 21 | src/HerdParser.mly 22 | src/PipeGraphLinux.ml 23 | src/PipeGraphJS.ml 24 | -------------------------------------------------------------------------------- /GettingStarted.txt: -------------------------------------------------------------------------------- 1 | Get the latest herd from github.com/herd/herdtools 2 | update Makefile to point to some appropriate path 3 | make 4 | 5 | Checkout latest PipeCheck from github.com/PrincetonUniversity/pipecheck 6 | make 7 | 8 | copy herdtools/herd/sc.cat into PipeCheck/ 9 | 10 | -- 11 | 12 | To build the web app (only if you want to): 13 | - opam install js_of_ocaml 14 | 15 | Go to PipeCheck/ folder 16 | make web (takes a few mins) 17 | mkdir html/tests 18 | mkdir html/models 19 | cp tests/x86tso/sb.test html/tests 20 | cp uarches/tso2.uarch html/models 21 | python -m SimpleHTTPServer 22 | Open browser, go to localhost: 23 | 24 | -- 25 | 26 | To run: 27 | ./pipecheck -i tests/x86tso/sb.test -m -o output.gv 28 | 29 | To debug: 30 | -v 31 | 32 | Can also either comment out lines or hard code new constraints or edges. 33 | Can use "-e " to append a second model file to the main model, i.e., 34 | to add new lines to a separate file so the main file doesn't get polluted. 35 | 36 | -- 37 | 38 | Notes on test specification format: 39 | 40 | Overall structure: 41 | 42 | 43 | 44 | 45 | Components: 46 | 47 | : 48 | " = " 49 | (with and as defined below) 50 | 51 | : 52 | "Alternative" 53 | 54 | 55 | 56 | 57 | : 58 | Example: 59 | 0 0 0 0 (Read Acquire RMW (VA 0 0) (PA 0 0) (Data 0)) 60 | Syntax: 61 | 62 | : a unique ID for every Instruction 63 | : the core on which the thread is running 64 | : unique thread ID per core (always 0 except in COATCheck) 65 | : the intra-instruction ID (always 0 except in COATCheck) 66 | 67 | Opcode: 68 | "({Read|Write|Fence} )" 69 | 70 | Read|Write|Fence: obvious 71 | : zero or more string identifiers (e.g., "RMW", "Acquire", etc.) 72 | (NB: previously, there was always exactly one flag, and a flag of "normal" 73 | indicated essentially "no flag". Now, there can be arbitrarily many flags, 74 | so "normal" is redundant and ignored. You might still see it around though.) 75 | : "(VA )" 76 | : virtual address tag (integer) 77 | : virtual address index (always 0 except in COATCheck) 78 | : "(PA )" 79 | : physical address tag (integer) (should match vtag except in COATCheck) 80 | : physical address index (always 0 except in COATCheck) 81 | 82 | : 83 | {Permitted|Forbidden|Required|Unobserved} 84 | 85 | : 86 | "Relationship 0 -> 0" 87 | Example: 88 | "Relationship po 0 0 -> 1 0" 89 | Accessed from within the DSL via, e.g.,: 90 | "HasDependency po i1 i2" 91 | 92 | All po, rf, co, fr, etc. emitted by herd can be accessed this way. 93 | 94 | Example: SB.test 95 | """ 96 | Alternative 97 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 98 | 1 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 99 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 100 | 3 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 101 | Relationship po 0 0 -> 1 0 102 | Relationship po 2 0 -> 3 0 103 | Relationship fr 1 0 -> 2 0 104 | Relationship fr 3 0 -> 0 0 105 | Permitted 106 | """ 107 | 108 | Example: yatin_mp_st_roach.test 109 | """ 110 | Alternative 111 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 112 | 1 0 0 0 (Write Release (VA 1 0) (PA 1 0) (Data 1)) 113 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 114 | 3 1 0 0 (Read Acquire Release (VA 0 0) (PA 0 0) (Data 0)) 115 | Relationship po 0 0 -> 1 0 116 | Relationship po 2 0 -> 3 0 117 | Relationship rf 1 0 -> 2 0 118 | Relationship fr 3 0 -> 0 0 119 | Forbidden 120 | """ 121 | 122 | -- 123 | 124 | Notes on DSL specifications: 125 | 126 | Two parts: 127 | StageNames 128 | Axioms 129 | 130 | Goal: "search for any uhb graph which satisfies all of the axioms" 131 | Axiom A AND Axiom B AND ... AND Axiom N AND acyclic(graph) 132 | 133 | Everything is just a boolean logic value 134 | Combined using AND, OR, NOT 135 | Quantify using "exists" or "forall", over microops or cores 136 | Use lots of parentheses: precedence rules not heavily tested 137 | 138 | EdgeExists/EdgesExist/AddEdges/AddEdge: all the same 139 | True if edge is in the graph, false otherwise 140 | not an imperative statement 141 | 142 | Node Syntax: 143 | (instruction, stage) 144 | Example: 145 | Axiom "Dummy": 146 | exists microop "i", NodeExists (i, Fetch). 147 | 148 | Detail: the full syntax is (instruction, (core, stage)). The default of 149 | (instruction, stage) is sugar for (instruction, (CoreOf instruction, stage)). 150 | To indicate that a stage is shared between cores, only refer to the stage using 151 | one of the appropriate cores. For example: for an LLC which is shared among 152 | all of the cores, have all references to that LLC use core 0: 153 | (instruction, (0, stage)). 154 | Example: 155 | Axiom "Dummy": 156 | exists microop "i", NodeExists (i, (0, ReachL2Cache)). 157 | 158 | Edge Syntax 159 | (node, node, "label" [, "color"]) 160 | 161 | DefineMacro, ExpandMacro. 162 | Can take arguments; not well tested. Existing variables carried through 163 | to expansion. 164 | 165 | PipeCheck currently instantiates a new copy of the spec for each separate core. 166 | (This is in preparation for enabling heterogeneity one day). Most per-core 167 | axioms should therefore have a precondition stating that the axiom only applies 168 | to events taking place on that core: 169 | "OnCore c => ..." 170 | 171 | For shared locations, can instead assign the task to core 0: 172 | "SameCore 0 c => ..." 173 | 174 | -- 175 | 176 | Complete example 177 | 178 | Not really a microarchitecture, but a self-contained example which is small 179 | enough to hold in your head. 180 | 181 | Litmus test (triple quotes excluded): 182 | """ 183 | Alternative 184 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 185 | 1 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 186 | Relationship po 0 0 -> 1 0 187 | Permitted 188 | """ 189 | 190 | "uarch" specification (triple quotes excluded): 191 | """ 192 | StageName 0 "Stage0". 193 | StageName 1 "Stage1". 194 | 195 | Axiom "Writes": 196 | forall microops "w", 197 | IsAnyWrite w 198 | => 199 | EdgeExists ((w, Stage0), (w, Stage1), "path"). 200 | 201 | Axiom "Reads": 202 | forall microops "r", 203 | IsAnyRead r 204 | => 205 | EdgeExists ((r, Stage1), (r, Stage0), "path"). 206 | 207 | Axiom "Stage0Order": 208 | forall microops "i1", 209 | forall microops "i2", 210 | (~SameMicroop i1 i2) % otherwise there would be self-loops 211 | => 212 | ( 213 | EdgeExists ((i1, Stage0), (i2, Stage0), "Stage0Order") 214 | \/ 215 | EdgeExists ((i2, Stage0), (i1, Stage0), "Stage0Order") 216 | ). 217 | 218 | Axiom "Stage1Order": 219 | forall microops "i1", 220 | forall microops "i2", 221 | (~SameMicroop i1 i2) % otherwise there would be self-loops 222 | => 223 | ( 224 | EdgeExists ((i1, Stage1), (i2, Stage1), "Stage1Order") 225 | \/ 226 | EdgeExists ((i2, Stage1), (i1, Stage1), "Stage1Order") 227 | ). 228 | 229 | Axiom "ReverseFIFOOrder": 230 | forall microops "i1", 231 | forall microops "i2", 232 | % edge labels are purely cosmetic; they are ignored entirely 233 | % by the analysis and by the solver 234 | EdgeExists ((i1, Stage0), (i2, Stage0), "doesntmatter") 235 | => 236 | EdgeExists ((i2, Stage1), (i1, Stage1), "Stage1Order"). 237 | """ 238 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2017 Yatin A. Manerkar, Princeton University 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 7 | of the Software, and to permit persons to whom the Software is furnished to do 8 | so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all clean doc debug profile web 2 | 3 | all: 4 | -rm src/PipeGraph 5 | -$(MAKE) -C src 6 | cd src && ln -s . PipeGraph 7 | 8 | clean: 9 | $(MAKE) -C src clean 10 | 11 | doc: 12 | $(MAKE) -C src doc 13 | 14 | debug: 15 | $(MAKE) -C src debug 16 | 17 | profile: 18 | $(MAKE) -C src profile 19 | 20 | web: 21 | $(MAKE) -C src web 22 | -------------------------------------------------------------------------------- /html/grapher.js: -------------------------------------------------------------------------------- 1 | importScripts("viz.js") 2 | 3 | onmessage = function(e) { 4 | try { 5 | var graph = Viz(e.data); 6 | postMessage({ 7 | "result": "success", 8 | "graph": graph 9 | }); 10 | } catch (err) { 11 | postMessage({ 12 | "result": "error", 13 | "msg": err 14 | }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | μhbCheck Web Interface (ALPHA) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |

μhbCheck Web Interface (ALPHA)

17 |
18 |
19 |
20 | 21 |
22 |
23 |
24 |
25 |

(Micro)architecture Model:

26 |
27 | 28 | 29 | 30 |
31 |
32 |
33 |
34 |
35 |
36 |

Litmus test:

37 |
38 | 39 | 40 | 41 |
42 |
43 |
44 |
45 |
46 |
47 | 48 | 49 |
50 |

Log:

51 |
52 | 54 |
55 |
56 |

Graph contents:

57 |
58 | 60 |
61 |
62 |
63 | 67 | 68 | 69 |
70 |
71 |
72 | 78 |
79 |
80 | 81 | 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /html/layout-uhbcheck.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Default Layout Theme 3 | * 4 | * Created for jquery.layout 5 | * 6 | * Copyright (c) 2010 7 | * Fabrizio Balliano (http://www.fabrizioballiano.net) 8 | * Kevin Dalman (http://allpro.net) 9 | * 10 | * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) 11 | * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. 12 | * 13 | * Last Updated: 2010-02-10 14 | * NOTE: For best code readability, view this with a fixed-space font and tabs equal to 4-chars 15 | */ 16 | 17 | /* 18 | * DEFAULT FONT 19 | * Just to make demo-pages look better - not actually relevant to Layout! 20 | */ 21 | // body { 22 | // font-family: Geneva, Arial, Helvetica, sans-serif; 23 | // font-size: 100%; 24 | // *font-size: 80%; 25 | // } 26 | 27 | /* 28 | * PANES & CONTENT-DIVs 29 | */ 30 | .ui-layout-pane { /* all 'panes' */ 31 | background: #FFF; 32 | border: 1px solid #BBB; 33 | padding: 10px; 34 | overflow: auto; 35 | /* DO NOT add scrolling (or padding) to 'panes' that have a content-div, 36 | otherwise you may get double-scrollbars - on the pane AND on the content-div 37 | - use ui-layout-wrapper class if pane has a content-div 38 | - use ui-layout-container if pane has an inner-layout 39 | */ 40 | } 41 | /* (scrolling) content-div inside pane allows for fixed header(s) and/or footer(s) */ 42 | .ui-layout-content { 43 | padding: 10px; 44 | position: relative; /* contain floated or positioned elements */ 45 | overflow: auto; /* add scrolling to content-div */ 46 | } 47 | 48 | /* 49 | * UTILITY CLASSES 50 | * Must come AFTER pane-class above so will override 51 | * These classes are NOT auto-generated and are NOT used by Layout 52 | */ 53 | .layout-child-container, 54 | .layout-content-container { 55 | padding: 0; 56 | overflow: hidden; 57 | } 58 | .layout-child-container { 59 | border: 0; /* remove border because inner-layout-panes probably have borders */ 60 | } 61 | .layout-scroll { 62 | overflow: auto; 63 | } 64 | .layout-hide { 65 | display: none; 66 | } 67 | 68 | /* 69 | * RESIZER-BARS 70 | */ 71 | .ui-layout-resizer { /* all 'resizer-bars' */ 72 | background: #DDD; 73 | border: 1px solid #BBB; 74 | border-width: 0; 75 | } 76 | .ui-layout-resizer-drag { /* REAL resizer while resize in progress */ 77 | } 78 | .ui-layout-resizer-hover { /* affects both open and closed states */ 79 | } 80 | /* NOTE: It looks best when 'hover' and 'dragging' are set to the same color, 81 | otherwise color shifts while dragging when bar can't keep up with mouse */ 82 | .ui-layout-resizer-open-hover , /* hover-color to 'resize' */ 83 | .ui-layout-resizer-dragging { /* resizer beging 'dragging' */ 84 | background: #C4E1A4; 85 | } 86 | .ui-layout-resizer-dragging { /* CLONED resizer being dragged */ 87 | border: 1px solid #BBB; 88 | } 89 | .ui-layout-resizer-north-dragging, 90 | .ui-layout-resizer-south-dragging { 91 | border-width: 1px 0; 92 | } 93 | .ui-layout-resizer-west-dragging, 94 | .ui-layout-resizer-east-dragging { 95 | border-width: 0 1px; 96 | } 97 | /* NOTE: Add a 'dragging-limit' color to provide visual feedback when resizer hits min/max size limits */ 98 | .ui-layout-resizer-dragging-limit { /* CLONED resizer at min or max size-limit */ 99 | background: #E1A4A4; /* red */ 100 | } 101 | 102 | .ui-layout-resizer-closed-hover { /* hover-color to 'slide open' */ 103 | background: #EBD5AA; 104 | } 105 | .ui-layout-resizer-sliding { /* resizer when pane is 'slid open' */ 106 | opacity: .10; /* show only a slight shadow */ 107 | filter: alpha(opacity=10); 108 | } 109 | .ui-layout-resizer-sliding-hover { /* sliding resizer - hover */ 110 | opacity: 1.00; /* on-hover, show the resizer-bar normally */ 111 | filter: alpha(opacity=100); 112 | } 113 | /* sliding resizer - add 'outside-border' to resizer on-hover 114 | * this sample illustrates how to target specific panes and states */ 115 | .ui-layout-resizer-north-sliding-hover { border-bottom-width: 1px; } 116 | .ui-layout-resizer-south-sliding-hover { border-top-width: 1px; } 117 | .ui-layout-resizer-west-sliding-hover { border-right-width: 1px; } 118 | .ui-layout-resizer-east-sliding-hover { border-left-width: 1px; } 119 | 120 | /* 121 | * TOGGLER-BUTTONS 122 | */ 123 | .ui-layout-toggler { 124 | border: 1px solid #BBB; /* match pane-border */ 125 | background-color: #BBB; 126 | } 127 | .ui-layout-resizer-hover .ui-layout-toggler { 128 | opacity: .60; 129 | filter: alpha(opacity=60); 130 | } 131 | .ui-layout-toggler-hover , /* need when NOT resizable */ 132 | .ui-layout-resizer-hover .ui-layout-toggler-hover { /* need specificity when IS resizable */ 133 | background-color: #FC6; 134 | opacity: 1.00; 135 | filter: alpha(opacity=100); 136 | } 137 | .ui-layout-toggler-north , 138 | .ui-layout-toggler-south { 139 | border-width: 0 1px; /* left/right borders */ 140 | } 141 | .ui-layout-toggler-west , 142 | .ui-layout-toggler-east { 143 | border-width: 1px 0; /* top/bottom borders */ 144 | } 145 | /* hide the toggler-button when the pane is 'slid open' */ 146 | .ui-layout-resizer-sliding .ui-layout-toggler { 147 | display: none; 148 | } 149 | /* 150 | * style the text we put INSIDE the togglers 151 | */ 152 | .ui-layout-toggler .content { 153 | color: #666; 154 | font-size: 12px; 155 | font-weight: bold; 156 | width: 100%; 157 | padding-bottom: 0.35ex; /* to 'vertically center' text inside text-span */ 158 | } 159 | 160 | /* 161 | * PANE-MASKS 162 | * these styles are hard-coded on mask elems, but are also 163 | * included here as !important to ensure will overrides any generic styles 164 | */ 165 | .ui-layout-mask { 166 | border: none !important; 167 | padding: 0 !important; 168 | margin: 0 !important; 169 | overflow: hidden !important; 170 | position: absolute !important; 171 | opacity: 0 !important; 172 | filter: Alpha(Opacity="0") !important; 173 | } 174 | .ui-layout-mask-inside-pane { /* masks always inside pane EXCEPT when pane is an iframe */ 175 | top: 0 !important; 176 | left: 0 !important; 177 | width: 100% !important; 178 | height: 100% !important; 179 | } 180 | div.ui-layout-mask {} /* standard mask for iframes */ 181 | iframe.ui-layout-mask {} /* extra mask for objects/applets */ 182 | 183 | /* 184 | * Default printing styles 185 | */ 186 | @media print { 187 | /* 188 | * Unless you want to print the layout as it appears onscreen, 189 | * these html/body styles are needed to allow the content to 'flow' 190 | */ 191 | html { 192 | height: auto !important; 193 | overflow: visible !important; 194 | } 195 | body.ui-layout-container { 196 | position: static !important; 197 | top: auto !important; 198 | bottom: auto !important; 199 | left: auto !important; 200 | right: auto !important; 201 | /* only IE6 has container width & height set by Layout */ 202 | _width: auto !important; 203 | _height: auto !important; 204 | } 205 | .ui-layout-resizer, .ui-layout-toggler { 206 | display: none !important; 207 | } 208 | /* 209 | * Default pane print styles disables positioning, borders and backgrounds. 210 | * You can modify these styles however it suit your needs. 211 | */ 212 | .ui-layout-pane { 213 | border: none !important; 214 | background: transparent !important; 215 | position: relative !important; 216 | top: auto !important; 217 | bottom: auto !important; 218 | left: auto !important; 219 | right: auto !important; 220 | width: auto !important; 221 | height: auto !important; 222 | overflow: visible !important; 223 | } 224 | } 225 | -------------------------------------------------------------------------------- /html/pipecheck.css: -------------------------------------------------------------------------------- 1 | .nowrap { 2 | white-space: nowrap; 3 | } 4 | 5 | #model { 6 | position: relative; 7 | height: 300px; 8 | min-height: 50px; 9 | max-height: 100%; 10 | width: auto; 11 | padding: 5px; 12 | border: 1px solid black 13 | } 14 | 15 | #model-editor { 16 | position: absolute; 17 | top: 0px; 18 | bottom: 0px; 19 | left: 0px; 20 | right: 0px; 21 | padding: 5px 22 | } 23 | 24 | #test { 25 | position: relative; 26 | height: 200px; 27 | min-height: 50px; 28 | max-height: 100%; 29 | width: auto; 30 | padding: 5px; 31 | border: 1px solid black 32 | } 33 | 34 | .textareacontainer { 35 | position: relative; 36 | height: 200px; 37 | min-height: 50px; 38 | max-height: 100%; 39 | width: auto; 40 | padding: 5px; 41 | border: 1px solid black 42 | } 43 | 44 | .textlog { 45 | position: relative; 46 | height: 100%; 47 | width: 100%; 48 | padding: 0px; 49 | border: 0px; 50 | resize: none; 51 | } 52 | 53 | #test-editor { 54 | position: absolute; 55 | top: 0px; 56 | bottom: 0px; 57 | left: 0px; 58 | right: 0px; 59 | padding: 5px 60 | } 61 | 62 | #graph-div { 63 | position: relative; 64 | left: 0; 65 | top: 0px; 66 | min-height: 100px; 67 | height: calc(100% - 50px); 68 | width: 100%; 69 | border: 1px solid black 70 | } 71 | 72 | .ui-widget { 73 | font-size: small; 74 | } 75 | 76 | .ui-autocomplete { 77 | max-height: 200px; 78 | overflow-y: auto; 79 | /* prevent horizontal scrollbar */ 80 | overflow-x: hidden; 81 | } 82 | 83 | .stricter { 84 | font-weight: bold; 85 | color: orange; 86 | } 87 | 88 | .weaker { 89 | font-weight: bold; 90 | color: red; 91 | } 92 | 93 | .ui-layout-north { 94 | text-align: center 95 | } 96 | 97 | path { 98 | pointer-events: all; 99 | } 100 | 101 | path:hover { 102 | stroke-width: 5; 103 | } 104 | -------------------------------------------------------------------------------- /html/theme-github.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/github",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-github",t.cssText='.ace-github .ace_gutter {background: #e8e8e8;color: #AAA;}.ace-github {background: #fff;color: #000;}.ace-github .ace_keyword {font-weight: bold;}.ace-github .ace_string {color: #D14;}.ace-github .ace_variable.ace_class {color: teal;}.ace-github .ace_constant.ace_numeric {color: #099;}.ace-github .ace_constant.ace_buildin {color: #0086B3;}.ace-github .ace_support.ace_function {color: #0086B3;}.ace-github .ace_comment {color: #998;font-style: italic;}.ace-github .ace_variable.ace_language {color: #0086B3;}.ace-github .ace_paren {font-weight: bold;}.ace-github .ace_boolean {font-weight: bold;}.ace-github .ace_string.ace_regexp {color: #009926;font-weight: normal;}.ace-github .ace_variable.ace_instance {color: teal;}.ace-github .ace_constant.ace_language {font-weight: bold;}.ace-github .ace_cursor {color: black;}.ace-github.ace_focus .ace_marker-layer .ace_active-line {background: rgb(255, 255, 204);}.ace-github .ace_marker-layer .ace_active-line {background: rgb(245, 245, 245);}.ace-github .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-github.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-github.ace_nobold .ace_line > span {font-weight: normal !important;}.ace-github .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-github .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-github .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-github .ace_gutter-active-line {background-color : rgba(0, 0, 0, 0.07);}.ace-github .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-github .ace_invisible {color: #BFBFBF}.ace-github .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-github .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /html/worker.js: -------------------------------------------------------------------------------- 1 | importScripts("pipecheck.js") 2 | 3 | onmessage = function(e) { 4 | hello = function(m) { 5 | console.log(m); 6 | postMessage({ 7 | "type": "log", 8 | "message": m}); 9 | } 10 | 11 | var modeldata = e.data.model; 12 | var testdata = e.data.test; 13 | try { 14 | var result = pipecheck.fog(testdata, modeldata); 15 | postMessage({ 16 | "type": "result", 17 | "result": result}); 18 | } catch (err) { 19 | console.log("PipeCheck error"); 20 | console.log(err); 21 | if (err instanceof Array) { 22 | if (err[2][1].c == "Litmus Test") { 23 | postMessage({ 24 | "type": "ltparseerror", 25 | "row": err[2][2], 26 | "col": err[2][3] 27 | }); 28 | } else if (err[2][1].c == "Model") { 29 | postMessage({ 30 | "type": "modelparseerror", 31 | "row": err[2][2], 32 | "col": err[2][3] 33 | }); 34 | } else { 35 | postMessage({ 36 | "type": "error", 37 | "name": "unknown!", 38 | "message": err 39 | }); 40 | } 41 | } else { 42 | postMessage({ 43 | "type": "error", 44 | "name": err.name, 45 | "message": err.message 46 | }); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /scripts/rtlcheck/.gitignore: -------------------------------------------------------------------------------- 1 | fpv/ 2 | jobs/ 3 | pc_out/ 4 | sva/ 5 | rtlcheck_tarball.tgz 6 | -------------------------------------------------------------------------------- /scripts/rtlcheck/FPV_template_full_proof.tcl: -------------------------------------------------------------------------------- 1 | # ---------------------------------------- 2 | # Copyright (C) 2014 Jasper Design Automation, Inc. All Rights 3 | # Reserved. Unpublished -- rights reserved under the copyright 4 | # laws of the United States. 5 | # ---------------------------------------- 6 | 7 | # Analyze design under verification files 8 | set ROOT_PATH 9 | set RTL_PATH ${ROOT_PATH}/src/main/verilog/ 10 | set PROP_PATH ${ROOT_PATH}/src/main/verilog/ 11 | 12 | # Analyze property files 13 | analyze -sv09 \ 14 | ${PROP_PATH}/vscale_alu.v \ 15 | ${PROP_PATH}/vscale_ctrl.v \ 16 | ${PROP_PATH}/vscale_mul_div.v \ 17 | ${PROP_PATH}/vscale_regfile.v \ 18 | ${PROP_PATH}/vscale_core.v \ 19 | ${PROP_PATH}/vscale_hasti_bridge.v \ 20 | ${PROP_PATH}/vscale_PC_mux.v \ 21 | ${PROP_PATH}/vscale_src_a_mux.v \ 22 | ${PROP_PATH}/vscale_csr_file.v \ 23 | ${PROP_PATH}/vscale_imm_gen.v \ 24 | ${PROP_PATH}/vscale_pipeline.v \ 25 | ${PROP_PATH}/vscale_src_b_mux.v \ 26 | ${PROP_PATH}/vscale_arbiter.v \ 27 | ${PROP_PATH}/vscale_dp_hasti_sram.v \ 28 | ${PROP_PATH}/SIM_TOP_NAME 29 | 30 | # 15 minutes for compiling properties 31 | set_task_compile_time_limit 900 32 | set_property_compile_time_limit 900 33 | # Elaborate design and properties 34 | echo "Elaboration_start: " [date +%s] 35 | elaborate -top vscale_sim_top 36 | echo "Elaboration_end: " [date +%s] 37 | 38 | # Set up Clocks and Resets 39 | echo "Reset_start: " [date +%s] 40 | clock clk 41 | reset reset 42 | echo "Reset_end: " [date +%s] 43 | 44 | # Get design information to check general complexity 45 | echo "Design_info_start: " [date +%s] 46 | get_design_info 47 | echo "Design_info_end: " [date +%s] 48 | 49 | # Check assumptions, see if we get lucky 50 | # 1 hour max 51 | set_prove_time_limit 1h 52 | echo "Pass0_Start: " [date +%s] 53 | set_max_trace_length 50 54 | set_prove_per_property_time_limit 30s 55 | set_prove_per_property_time_limit_factor 2 56 | set_engine_mode {K I N C} 57 | prove -all -covers 58 | echo "Pass0_End: " [date +%s] 59 | echo "ASSUMPTION_PASS_REPORT_BEGIN" 60 | report 61 | echo "ASSUMPTION_PASS_REPORT_END" 62 | 63 | # 64 | # 2nd pass: Validation of remaining properties with different engine 65 | # 10 hours 66 | set_prove_time_limit 10h 67 | echo "Pass2_Start: " [date +%s] 68 | set_max_trace_length 50 69 | set_prove_per_property_time_limit 500s 70 | set_prove_per_property_time_limit_factor 2 71 | set_engine_mode {I N AD AM} 72 | prove -all -asserts 73 | echo "Pass2_End: " [date +%s] 74 | 75 | # Report proof results 76 | echo "PASS2_REPORT_BEGIN" 77 | report 78 | echo "PASS2_REPORT_END" 79 | exit 80 | -------------------------------------------------------------------------------- /scripts/rtlcheck/FPV_template_hybrid.tcl: -------------------------------------------------------------------------------- 1 | # ---------------------------------------- 2 | # Copyright (C) 2014 Jasper Design Automation, Inc. All Rights 3 | # Reserved. Unpublished -- rights reserved under the copyright 4 | # laws of the United States. 5 | # ---------------------------------------- 6 | 7 | # Analyze design under verification files 8 | set ROOT_PATH 9 | set RTL_PATH ${ROOT_PATH}/src/main/verilog/ 10 | set PROP_PATH ${ROOT_PATH}/src/main/verilog/ 11 | 12 | # Analyze property files 13 | analyze -sv09 \ 14 | ${PROP_PATH}/vscale_alu.v \ 15 | ${PROP_PATH}/vscale_ctrl.v \ 16 | ${PROP_PATH}/vscale_mul_div.v \ 17 | ${PROP_PATH}/vscale_regfile.v \ 18 | ${PROP_PATH}/vscale_core.v \ 19 | ${PROP_PATH}/vscale_hasti_bridge.v \ 20 | ${PROP_PATH}/vscale_PC_mux.v \ 21 | ${PROP_PATH}/vscale_src_a_mux.v \ 22 | ${PROP_PATH}/vscale_csr_file.v \ 23 | ${PROP_PATH}/vscale_imm_gen.v \ 24 | ${PROP_PATH}/vscale_pipeline.v \ 25 | ${PROP_PATH}/vscale_src_b_mux.v \ 26 | ${PROP_PATH}/vscale_arbiter.v \ 27 | ${PROP_PATH}/vscale_dp_hasti_sram.v \ 28 | ${PROP_PATH}/SIM_TOP_NAME 29 | 30 | # 15 minutes for compiling properties 31 | set_task_compile_time_limit 900 32 | set_property_compile_time_limit 900 33 | # Elaborate design and properties 34 | echo "Elaboration_start: " [date +%s] 35 | elaborate -top vscale_sim_top 36 | echo "Elaboration_end: " [date +%s] 37 | 38 | # Set up Clocks and Resets 39 | echo "Reset_start: " [date +%s] 40 | clock clk 41 | reset reset 42 | echo "Reset_end: " [date +%s] 43 | 44 | # Get design information to check general complexity 45 | echo "Design_info_start: " [date +%s] 46 | get_design_info 47 | echo "Design_info_end: " [date +%s] 48 | 49 | # Check assumptions, see if we get lucky 50 | # 1 hour max 51 | set_prove_time_limit 1h 52 | echo "Pass0_Start: " [date +%s] 53 | set_max_trace_length 50 54 | set_prove_per_property_time_limit 30s 55 | set_prove_per_property_time_limit_factor 2 56 | set_engine_mode {K I N C} 57 | prove -all -covers 58 | echo "Pass0_End: " [date +%s] 59 | echo "ASSUMPTION_PASS_REPORT_BEGIN" 60 | report 61 | echo "ASSUMPTION_PASS_REPORT_END" 62 | 63 | # Prove properties 64 | # 1st pass: 1 hour of autoproving 65 | set_prove_time_limit 1h 66 | echo "Pass1_Start: " [date +%s] 67 | set_max_trace_length 50 68 | autoprove -all -asserts 69 | echo "Pass1_End: " [date +%s] 70 | echo "AUTOPROVE_PASS_REPORT_BEGIN" 71 | report 72 | echo "AUTOPROVE_PASS_REPORT_END" 73 | 74 | # 75 | # 2nd pass: Validation of remaining properties with different engine 76 | # 9 hours 77 | set_prove_time_limit 9h 78 | echo "Pass2_Start: " [date +%s] 79 | set_max_trace_length 50 80 | set_prove_per_property_time_limit 1000s 81 | set_prove_per_property_time_limit_factor 2 82 | set_engine_mode {K I N AD AM} 83 | prove -all -asserts 84 | echo "Pass2_End: " [date +%s] 85 | 86 | # Report proof results 87 | echo "PASS2_REPORT_BEGIN" 88 | report 89 | echo "PASS2_REPORT_END" 90 | exit 91 | -------------------------------------------------------------------------------- /scripts/rtlcheck/gen_props.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -rf pc_out/* 4 | rm -rf sva/* 5 | rm -rf jobs/* 6 | rm -rf fpv/* 7 | rm -rf jg_out/* 8 | 9 | mkdir -p pc_out/ 10 | mkdir -p sva/ 11 | mkdir -p jobs/ 12 | mkdir -p fpv/ 13 | mkdir -p jg_out/ 14 | 15 | for file in $(find "../../tests/rtlcheck/SC/" -maxdepth 1 -name \*.test); do 16 | file_chop=$(basename $file) 17 | file_chop="${file_chop%.*}" 18 | echo "Running test $file_chop" 19 | ../../src/rtlcheck -v 7 -i $file -o pc_out/$file_chop.out \ 20 | -m ../../uarches/Vscale.uarch -t sva/${file_chop}_rtl.out 21 | sed -e "s/TEST_NAME/${file_chop}/g" job_template.sh > jobs/job_${file_chop}.sh 22 | sed -e "s/SIM_TOP_NAME/vscale_sim_top_${file_chop}.v/g" FPV_template_full_proof.tcl > fpv/FPV_cmdline_${file_chop}.tcl 23 | done 24 | 25 | rm -rf rtlcheck_tarball.tgz 26 | tar czvf rtlcheck_tarball.tgz fpv/ jg_out/ jobs/ pc_out/ sva/ 27 | -------------------------------------------------------------------------------- /scripts/rtlcheck/job_template.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # parallel job using 5 cores. and runs for 12 hours (max) 3 | #SBATCH -N 1 # node count 4 | #SBATCH --ntasks-per-node=4 5 | #SBATCH -t 12:00:00 6 | #SBATCH --mem=120G 7 | # sends mail when process begins, and 8 | # when it ends. Make sure you define your email 9 | # address. 10 | #SBATCH --mail-type=begin 11 | #SBATCH --mail-type=end 12 | #SBATCH --mail-user= 13 | TARBALL_DIR= 14 | VSCALE_DIR= 15 | PROJ_ROOT_DIR= 16 | 17 | cd ${VSCALE_DIR}/src/main/verilog/ 18 | # Add the RTL for the test 19 | { head -n -1 vscale_sim_top_unmod.v; cat ${TARBALL_DIR}/sva/TEST_NAME_rtl.out; tail -n 1 vscale_sim_top_unmod.v; } > vscale_sim_top_TEST_NAME.v 20 | 21 | # Return to Vscale root directory. 22 | cd ../../.. 23 | 24 | # Run JasperGold. 25 | jg -no_gui -fpv ${TARBALL_DIR}/fpv/FPV_cmdline_TEST_NAME.tcl -proj ${PROJ_ROOT_DIR}/proj_dir_TEST_NAME/|tee ${TARBALL_DIR}/jg_out/TEST_NAME.txt 26 | 27 | # Remove the project directory. 28 | rm -rf ${PROJ_DIR}/proj_dir_TEST_NAME/ 29 | -------------------------------------------------------------------------------- /src/BackendJS.ml: -------------------------------------------------------------------------------- 1 | let verbosity = ref 0 2 | 3 | let outfile = ref stdout 4 | 5 | let printFlag n = !verbosity >= n 6 | 7 | let printf x y = 8 | Js.Unsafe.fun_call (Js.Unsafe.js_expr "hello") 9 | [|Js.Unsafe.inject (Js.string y)|]; 10 | x 11 | 12 | let printfFlush x y = 13 | printf x y 14 | 15 | let lastUpdateCheck = ref (Sys.time()) 16 | 17 | let timeForStatusUpdate _ = 18 | let t = Sys.time() in 19 | if t -. !lastUpdateCheck > 1.0 20 | then (lastUpdateCheck := t; true) 21 | else false 22 | -------------------------------------------------------------------------------- /src/BackendLinux.ml: -------------------------------------------------------------------------------- 1 | let verbosity = ref 0 2 | 3 | let outfile = ref stdout 4 | 5 | let rtl_outfile = ref stdout 6 | 7 | let printFlag n = !verbosity >= n 8 | 9 | let printf x y = Printf.fprintf !outfile "%s" y; x 10 | 11 | let rtlPrintInternal x y = Printf.fprintf !rtl_outfile "%s" y; x 12 | 13 | let printfFlush x y = Printf.fprintf !outfile "%s" y; flush !outfile; x 14 | 15 | let lastUpdateCheck = ref (Sys.time()) 16 | 17 | let timeForStatusUpdate _ = 18 | if printFlag 3 19 | then true 20 | else 21 | let t = Sys.time() in 22 | if t -. !lastUpdateCheck > 5.0 23 | then (lastUpdateCheck := t; true) 24 | else false 25 | -------------------------------------------------------------------------------- /src/ConstraintTreeTypes.v: -------------------------------------------------------------------------------- 1 | Require Import Arith. 2 | Require Import List. 3 | Require Import String. 4 | Require Import Ascii. 5 | Require Import PipeGraph.Debug. 6 | Require Import PipeGraph.Util. 7 | Require Import PipeGraph.StringUtil. 8 | Require Import PipeGraph.Instruction. 9 | Require Import PipeGraph.Graph. 10 | Require Import PipeGraph.FOLPredicate. 11 | Require Import PipeGraph.GraphvizCompressed. 12 | 13 | Inductive ScenarioTree : Set := 14 | | ScenarioName : string -> ScenarioTree -> ScenarioTree 15 | | ScenarioAxiomName : string -> ScenarioTree -> ScenarioTree 16 | | ScenarioAnd : ScenarioTree -> ScenarioTree -> ScenarioTree 17 | | ScenarioOr : ScenarioTree -> ScenarioTree -> ScenarioTree 18 | | ScenarioEdgeLeaf : list GraphEdge -> ScenarioTree 19 | | ScenarioNotEdgeLeaf : list GraphEdge -> ScenarioTree 20 | | ScenarioNodeLeaf : list GraphNode -> ScenarioTree 21 | | ScenarioNotNodeLeaf : list GraphNode -> ScenarioTree 22 | | ScenarioLoadConstraint : Microop -> Data -> bool -> ScenarioTree 23 | | ScenarioTrue : ScenarioTree 24 | | ScenarioFalse : ScenarioTree. 25 | 26 | -------------------------------------------------------------------------------- /src/Debug.v: -------------------------------------------------------------------------------- 1 | (******************************************************************************) 2 | (* Copyright (c) 2015 Daniel Lustig, Princeton University *) 3 | (* *) 4 | (* Permission is hereby granted, free of charge, to any person obtaining a *) 5 | (* copy of this software and associated documentation files (the "Software"), *) 6 | (* to deal in the Software without restriction, including without limitation *) 7 | (* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) 8 | (* and/or sell copies of the Software, and to permit persons to whom the *) 9 | (* Software is furnished to do so, subject to the following conditions: *) 10 | (* *) 11 | (* The above copyright notice and this permission notice shall be included in *) 12 | (* all copies or substantial portions of the Software. *) 13 | (* *) 14 | (* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *) 15 | (* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) 16 | (* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) 17 | (* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *) 18 | (* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) 19 | (* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) 20 | (* DEALINGS IN THE SOFTWARE. *) 21 | (******************************************************************************) 22 | 23 | Require Import List. 24 | Require Import Arith. 25 | Require Import String. 26 | Require Import Ascii. 27 | Require Import PipeGraph.StringUtil. 28 | 29 | Import ListNotations. 30 | Open Scope string_scope. 31 | 32 | (** * Debugging functions *) 33 | 34 | Definition PrintFlag (n : nat) := false. 35 | 36 | (** ** [Printf] *) 37 | (** The semantics of [Printf] are a little weird due to the Coq to OCaml 38 | extraction process. The argument [a] is returned by the function, and this 39 | returned value must be used by some later function to ensure that the [Printf] 40 | doesn't get optimized away during extraction. *) 41 | Definition Printf 42 | {A : Type} 43 | (x : A) 44 | (s : string) 45 | : A := 46 | x. 47 | 48 | (* Print out RTL properties... *) 49 | Definition RTLPrintInternal 50 | {A : Type} 51 | (x : A) 52 | (s : string) 53 | : A := 54 | x. 55 | 56 | Definition RTLPrint 57 | {A : Type} 58 | (x : A) 59 | (l : list string) 60 | : A := 61 | RTLPrintInternal x (StringOf (app l [newline])). 62 | 63 | Definition PrintfFlush 64 | {A : Type} 65 | (x : A) 66 | (s : string) 67 | : A := 68 | x. 69 | 70 | Definition PrintlnFlush 71 | {A : Type} 72 | (x : A) 73 | (l : list string) 74 | : A := 75 | PrintfFlush x (StringOf (app l [newline])). 76 | 77 | Definition Println 78 | {A : Type} 79 | (x : A) 80 | (l : list string) 81 | : A := 82 | Printf x (StringOf (l ++ [newline])). 83 | 84 | Definition Comment 85 | {A : Type} 86 | (x : A) 87 | (l : list string) 88 | : A := 89 | Println x ("// " :: l). 90 | 91 | Definition CommentFlush 92 | {A : Type} 93 | (x : A) 94 | (l : list string) 95 | : A := 96 | PrintlnFlush x ("// " :: l). 97 | 98 | (** ** [Warning] *) 99 | (** The semantics of [Warning] are a little weird due to the Coq to OCaml 100 | extraction process. The argument [a] is returned by the function, and this 101 | returned value must be used by some later function to ensure that the [Warning] 102 | doesn't get optimized away during extraction. *) 103 | Definition Warning 104 | {A : Type} 105 | (x : A) 106 | (ss : list string) 107 | : A := 108 | PrintfFlush x (StringOf ((newline :: "WARNING: " :: ss) ++ [newline; newline])). 109 | 110 | Definition MacroExpansionDepth := 100. 111 | 112 | Definition TimeForStatusUpdate 113 | (n : nat) 114 | : bool := 115 | false. 116 | -------------------------------------------------------------------------------- /src/Lexer.mll: -------------------------------------------------------------------------------- 1 | { 2 | open Parser 3 | open Util 4 | } 5 | rule token = parse 6 | | "PTAG_OF_APIC" {APIC_PA} 7 | | "PTE_PA" {PTE_PA} 8 | | "PTAG_OF_PTE_FOR_VTAG" {PTE_PA} 9 | | "PTE" {PTE} 10 | | "VA" {VA} 11 | | "PA" {PA} 12 | | "VTAG" {VTAG} 13 | | "PTAG" {PTAG} 14 | | "Data" {DATA} 15 | | "Status" {STATUS} 16 | | "acc" {ACC} 17 | | "dirty" {DIRTY} 18 | | "!" {NOT} 19 | | "?" {QUESTION} 20 | | "Read" {READ} 21 | | "Write" {WRITE} 22 | | "RMWRead" {RMWREAD} 23 | | "RMWWrite" {RMWWRITE} 24 | | "Fence" {FENCE} 25 | | "Initial" {INITIAL} 26 | | "Thread" {MICROOPS} 27 | | "Microops" {MICROOPS} 28 | | "Final" {FINAL} 29 | | "Forbidden" {FORBID} 30 | | "Permitted" {PERMIT} 31 | | "Required" {REQUIRED} 32 | | "Unobserved" {UNOBSERVED} 33 | | "Alternative" {ALTERNATIVE} 34 | | "Relationship" {RELATIONSHIP} 35 | | "(" {LPAREN} 36 | | ")" {RPAREN} 37 | | "=" {EQUALS} 38 | | "->" {RARROW} 39 | | [' ' '\t'] {token lexbuf} 40 | | ['\n'] 41 | {let pos = lexbuf.Lexing.lex_curr_p in 42 | lexbuf.Lexing.lex_curr_p <- { pos with 43 | Lexing.pos_lnum = pos.Lexing.pos_lnum + 1; 44 | Lexing.pos_bol = pos.Lexing.pos_cnum}; 45 | EOL} 46 | | ['0'-'9']+ as i {INT(int_of_string(i))} 47 | | ['A'-'Z''a'-'z''0'-'9''_']+ as s {STRING(s)} 48 | -------------------------------------------------------------------------------- /src/Makefile: -------------------------------------------------------------------------------- 1 | # Thanks to: http://adam.chlipala.net/cpdt/html/Large.html 2 | 3 | MODULES := Debug Util StringUtil Instruction Graph \ 4 | GraphvizCompressed PipeGraph FOL FOLPredicate VscaleMappings ConstraintTreeTypes 5 | VS := $(MODULES:%=%.v) 6 | DOCS := $(MODULES:%=../doc/PipeGraph.%.html) 7 | 8 | .PHONY: all coq doc clean debug web 9 | 10 | all: coq doc rtlcheck 11 | 12 | debug: Main.d.byte 13 | 14 | profile: Main.p.native 15 | 16 | rtlcheck: Main.native 17 | cp Main.native rtlcheck 18 | 19 | Main.native: Main.ml PipeGraph.ml HerdGraph.ml coq BackendLinux.ml PipeGraphLinux.ml 20 | ocamlbuild $@ 21 | 22 | Main.p.native: Main.ml PipeGraph.ml HerdGraph.ml coq BackendLinux.ml PipeGraphLinux.ml 23 | ocamlbuild $@ 24 | 25 | Main.d.byte: Main.ml PipeGraph.ml HerdGraph.ml coq BackendLinux.ml PipeGraphLinux.ml 26 | ocamlbuild $@ 27 | 28 | PipeGraphLinux.ml: PipeGraph.ml 29 | rm -f PipeGraphJS.ml 30 | $(MAKE) -f Makefile.coq -B PipeGraph.vo 31 | cp PipeGraph.ml PipeGraphLinux.ml 32 | 33 | PipeGraph.ml: coq 34 | 35 | coq: Makefile.coq 36 | $(MAKE) -f Makefile.coq 37 | 38 | doc: coq $(VS) 39 | mkdir -p ../doc 40 | coqdoc --html -R . PipeGraph -d ../doc $(VS) 41 | 42 | Makefile.coq: Makefile $(VS) 43 | coq_makefile -R . PipeGraph $(VS) -o Makefile.coq 44 | 45 | clean:: Makefile.coq 46 | $(MAKE) -f Makefile.coq clean 47 | ocamlbuild -clean Main.native 48 | -rm -f rtlcheck 49 | -rm -f PipeGraph.ml 50 | -rm -f PipeGraph.mli 51 | -rm -f Makefile.coq 52 | -rm -f $(DOCS) 53 | -rm -f ../doc/index.html 54 | -rm -f ../doc/coqdoc.css 55 | 56 | web: ../html/pipecheck.js 57 | 58 | PipeGraphJS.ml: PipeGraph.ml 59 | rm -f PipeGraphLinux.ml 60 | sed "s/BackendLinux./BackendJS./g" PipeGraph.ml > PipeGraphJS.ml 61 | cp PipeGraphJS.ml PipeGraph.ml 62 | 63 | ../html/pipecheck.js: BackendJS.ml PipeGraph.ml PipeGraphJS.ml 64 | ocamlbuild -use-ocamlfind -pkgs js_of_ocaml,js_of_ocaml.syntax -syntax camlp4o WebMain.byte 65 | js_of_ocaml --noinline WebMain.byte 66 | cp WebMain.js ../html/pipecheck.js 67 | 68 | web-debug: ../html/pipecheck.js 69 | ocamlbuild -use-ocamlfind -pkgs js_of_ocaml,js_of_ocaml.syntax -syntax camlp4o WebMain.d.byte 70 | js_of_ocaml --pretty --noinline WebMain.d.byte 71 | cp WebMain.d.js ../html/pipecheck.js 72 | 73 | -------------------------------------------------------------------------------- /src/MicroarchLexer.mll: -------------------------------------------------------------------------------- 1 | { 2 | open MicroarchParser 3 | open Util 4 | exception EoF 5 | } 6 | rule token = parse 7 | | "DefineMacro" {DEFINEMACRO} 8 | | "ExpandMacro" {EXPANDMACRO} 9 | | "StageName" {STAGENAME} 10 | | "Axiom" {AXIOM} 11 | | "microop" {MICROOP} 12 | | "microops" {MICROOP} 13 | | "core" {CORE} 14 | | "cores" {CORE} 15 | | "CoreOf" {COREID} 16 | | "thread" {THREAD} 17 | | "threads" {THREAD} 18 | | "Read" {READ} 19 | | "Write" {WRITE} 20 | | "RMWRead" {RMWREAD} 21 | | "RMWWrite" {RMWWRITE} 22 | | "Accessed" {ACCESSED} 23 | | "NotAccessed" {NOTACCESSED} 24 | | "AccessedDontCare" {ACCESSEDDONTCARE} 25 | | "Dirty" {DIRTY} 26 | | "NotDirty" {NOTDIRTY} 27 | | "Clean" {NOTDIRTY} 28 | | "DirtyDontCare" {DIRTYDONTCARE} 29 | | "Fence" {FENCE} 30 | | "forall" {FORALL} 31 | | "exists" {EXISTS} 32 | | "with" {WITH} 33 | | "as" {AS} 34 | | "," {COMMA} 35 | | "." {PERIOD} 36 | | ":" {COLON} 37 | | ";" {SEMICOLON} 38 | | "/\\" {AND} 39 | | "\\/" {OR} 40 | | "~" {NOT} 41 | | "=>" {IMPLIES} 42 | | "<=>" {IFF} 43 | | "(" {LPAREN} 44 | | ")" {RPAREN} 45 | | "[" {LBRACKET} 46 | | "]" {RBRACKET} 47 | | '"' {QUOTE} 48 | | "+" {PLUS} 49 | | '%' [^ '\n']* {token lexbuf} 50 | | ['\n'] 51 | {let pos = lexbuf.Lexing.lex_curr_p in 52 | lexbuf.Lexing.lex_curr_p <- { pos with 53 | Lexing.pos_lnum = pos.Lexing.pos_lnum + 1; 54 | Lexing.pos_bol = pos.Lexing.pos_cnum}; 55 | token lexbuf} 56 | | ['\n' ' ' '\t'] {token lexbuf} 57 | | ['0'-'9']+ as i {INT(int_of_string(i))} 58 | | ['A'-'Z''a'-'z''0'-'9''\'''/''_''-''#']+ as s {STRING(s)} 59 | | eof {EOF} 60 | 61 | -------------------------------------------------------------------------------- /src/MicroarchParser.mly: -------------------------------------------------------------------------------- 1 | %{ 2 | open Lexing 3 | %} 4 | %token INT 5 | %token STRING 6 | %token DEFINEMACRO EXPANDMACRO STAGENAME 7 | %token AXIOM 8 | %token MICROOP CORE THREAD 9 | %token READ WRITE RMWREAD RMWWRITE FENCE 10 | %token FORALL EXISTS 11 | %token COMMA PERIOD COLON SEMICOLON QUOTE 12 | %token AND OR NOT IMPLIES IFF 13 | %token LPAREN RPAREN 14 | %token LBRACKET RBRACKET 15 | %token ANYNAME WITH AS 16 | %token EOF 17 | %token PLUS 18 | %token COREID 19 | %token ACCESSED NOTACCESSED ACCESSEDDONTCARE 20 | %token DIRTY NOTDIRTY DIRTYDONTCARE 21 | %nonassoc FORALL EXISTS COMMA 22 | %nonassoc IFF 23 | %right IMPLIES 24 | %right OR 25 | %right AND 26 | %nonassoc NOT 27 | %left PLUS 28 | %start main 29 | %type main 30 | %% 31 | 32 | main: 33 | statements EOF {$1}; 34 | 35 | statements: 36 | | statements statement {$1 @ [$2]} 37 | | statement {[$1]}; 38 | 39 | statement: 40 | | axiom {PipeGraph.FOLAxiom ($1)} 41 | | macro {PipeGraph.FOLMacroDefinition ($1)} 42 | | contextterm {PipeGraph.FOLContextTerm ($1)}; 43 | 44 | contextterm: 45 | STAGENAME INT qstring PERIOD {PipeGraph.StageNameTerm($3, $2)}; 46 | 47 | axiom: 48 | AXIOM qstring COLON formula PERIOD {PipeGraph.FOLAxiomName ($2, $4)}; 49 | 50 | macro: 51 | | DEFINEMACRO qstring args COLON formula PERIOD 52 | {PipeGraph.Pair(PipeGraph.Pair($2, $3), $5)} 53 | | DEFINEMACRO qstring COLON formula PERIOD 54 | {PipeGraph.Pair(PipeGraph.Pair($2, []), $4)} 55 | 56 | args: 57 | | args STRING {$1 @ [$2]} 58 | | STRING {[$1]}; 59 | 60 | params: 61 | | params string_or_int {$1 @ [$2]} 62 | | string_or_int {[$1]}; 63 | 64 | qstring: 65 | | QUOTE str QUOTE {$2} 66 | | QUOTE QUOTE {""}; 67 | 68 | str: 69 | STRING {$1}; 70 | 71 | formula: 72 | | LPAREN str COLON formula RPAREN {PipeGraph.FOLName ($2, $4)} 73 | | EXPANDMACRO str params {PipeGraph.FOLExpandMacro ($2, $3)} 74 | | EXPANDMACRO str {PipeGraph.FOLExpandMacro ($2, [])} 75 | | LPAREN formula RPAREN {$2} 76 | | predicate {PipeGraph.FOLPredicate $1} 77 | | NOT formula {PipeGraph.FOLNot $2} 78 | | formula AND formula {PipeGraph.FOLAnd ($1, $3)} 79 | | formula OR formula {PipeGraph.FOLOr ($1, $3)} 80 | | formula IMPLIES formula {PipeGraph.fOLImplies $1 $3} 81 | | formula IFF formula {PipeGraph.fOLIff $1 $3} 82 | | EXISTS quantifier COMMA formula {PipeGraph.FOLExists ($2, $4)} 83 | | FORALL quantifier COMMA formula {PipeGraph.FOLForAll ($2, $4)} 84 | | WITH MICROOP INT AS qstring COMMA formula 85 | { 86 | PipeGraph.FOLExists (PipeGraph.microopQuantifier($5), 87 | PipeGraph.FOLAnd 88 | (PipeGraph.FOLPredicate(PipeGraph.PredHasGlobalID($3, $5)), $7)) 89 | }; 90 | 91 | quantifier: 92 | | MICROOP qstring {PipeGraph.microopQuantifier($2)} 93 | | CORE qstring {PipeGraph.coreQuantifier($2)}; 94 | | THREAD qstring {PipeGraph.threadQuantifier($2)}; 95 | 96 | accessedStatus: 97 | | ACCESSED {PipeGraph.Accessed} 98 | | NOTACCESSED {PipeGraph.NotAccessed} 99 | | ACCESSEDDONTCARE {PipeGraph.AccessedDontCare}; 100 | 101 | dirtyStatus: 102 | | DIRTY {PipeGraph.Dirty} 103 | | NOTDIRTY {PipeGraph.NotDirty} 104 | | DIRTYDONTCARE {PipeGraph.DirtyDontCare}; 105 | 106 | predicate: 107 | | str INT INT INT INT str {PipeGraph.fOLLookupPredicate_IIIIS $1 $2 $3 $4 $5 $6} 108 | | str str str str {PipeGraph.fOLLookupPredicate_SSS $1 $2 $3 $4} 109 | | str str str {PipeGraph.fOLLookupPredicate_SS $1 $2 $3} 110 | | str accessedStatus dirtyStatus str str 111 | {PipeGraph.fOLLookupPredicate_ADSS $1 $2 $3 $4 $5} 112 | | str accessedStatus dirtyStatus str 113 | {PipeGraph.fOLLookupPredicate_ADS $1 $2 $3 $4} 114 | | str INT str {PipeGraph.fOLLookupPredicate_IS $1 $2 $3} 115 | | str str {PipeGraph.fOLLookupPredicate_S $1 $2} 116 | | str edge {PipeGraph.fOLLookupPredicate_E $1 $2} 117 | | str edgelist {PipeGraph.fOLLookupPredicate_lE $1 $2} 118 | | str node {PipeGraph.fOLLookupPredicate_N $1 $2} 119 | | str nodelist {PipeGraph.fOLLookupPredicate_lN $1 $2}; 120 | 121 | edgelist: 122 | LBRACKET edges RBRACKET {$2}; 123 | 124 | edges: 125 | | edges SEMICOLON edge {$1 @ [$3]} 126 | | edge {[$1]}; 127 | 128 | edge: 129 | | LPAREN node COMMA node COMMA qstring RPAREN 130 | { 131 | let startpos = Parsing.symbol_start_pos() in 132 | let linenum = string_of_int startpos.pos_lnum in 133 | PipeGraph.Pair(PipeGraph.Pair(PipeGraph.Pair ($2, $4), linenum ^ ":" ^ $6), 134 | (* if compare $6 "path" == 0 then "black" else *) 135 | ( 136 | let a = Random.int 6 in 137 | let b = Random.int 256 in 138 | match a with 139 | | 0 -> Printf.sprintf "#00FF%02x" b 140 | | 1 -> Printf.sprintf "#00%02xFF" b 141 | | 2 -> Printf.sprintf "#FF00%02x" b 142 | | 3 -> Printf.sprintf "#%02x00FF" b 143 | | 4 -> Printf.sprintf "#FF%02x00" b 144 | | 5 -> Printf.sprintf "#%02xFF00" b 145 | | _ -> raise (Failure "random color generation") 146 | ) 147 | ) 148 | } 149 | | LPAREN node COMMA node COMMA qstring COMMA qstring RPAREN 150 | { 151 | let startpos = Parsing.symbol_start_pos() in 152 | let linenum = string_of_int startpos.pos_lnum in 153 | PipeGraph.Pair(PipeGraph.Pair(PipeGraph.Pair ($2, $4), 154 | linenum ^ ":" ^ $6), $8) 155 | }; 156 | 157 | nodelist: 158 | LBRACKET nodes RBRACKET {$2}; 159 | 160 | nodes: 161 | | nodes SEMICOLON node {$1 @ [$3]} 162 | | node {[$1]}; 163 | 164 | node: 165 | | LPAREN str COMMA LPAREN string_or_int COMMA string_or_int RPAREN RPAREN 166 | {PipeGraph.Pair ($2, PipeGraph.Pair ($5, $7))}; 167 | | LPAREN str COMMA string_or_int RPAREN 168 | {PipeGraph.Pair ($2, PipeGraph.Pair (PipeGraph.SoICoreID $2, $4))}; 169 | 170 | string_or_int: 171 | | string_or_int PLUS string_or_int {PipeGraph.SoISum ($1, $3)} 172 | | str {PipeGraph.SoIString $1} 173 | | INT {PipeGraph.SoIInt $1} 174 | | COREID str {PipeGraph.SoICoreID $2}; 175 | -------------------------------------------------------------------------------- /src/Parser.mly: -------------------------------------------------------------------------------- 1 | %token INT 2 | %token STRING 3 | %token APIC_PA PTE_PA 4 | %token DATA PTE STATUS 5 | %token VA PA VTAG PTAG 6 | %token ACC DIRTY NOT 7 | %token READ WRITE RMWREAD RMWWRITE FENCE 8 | %token INITIAL MICROOPS FINAL 9 | %token FORBID PERMIT REQUIRED UNOBSERVED 10 | %token RELATIONSHIP ALTERNATIVE 11 | %token LPAREN RPAREN 12 | %token EQUALS RARROW 13 | %token QUESTION 14 | %token EOL 15 | %start main 16 | %type main 17 | %% 18 | main: 19 | 20 | initial programs outcome {($3, $1, $2)}; 21 | 22 | initial: 23 | | INITIAL EOL conditions {$3} 24 | | conditions {$1}; 25 | 26 | conditions: 27 | | conditions condition {$1 @ [$2]} 28 | | {[]}; 29 | 30 | condition: 31 | pa EQUALS data EOL {PipeGraph.Pair ($1, $3)}; 32 | 33 | va: 34 | LPAREN VA INT INT RPAREN {{PipeGraph.vtag=$3; PipeGraph.vindex=$4}}; 35 | 36 | pa: 37 | LPAREN PA ptag INT RPAREN {{PipeGraph.ptag=$3; PipeGraph.pindex=$4}} 38 | 39 | ptag: 40 | | INT {PipeGraph.PTag ($1)}; 41 | | LPAREN PTE_PA INT RPAREN {PipeGraph.PTETag ($3)} 42 | | LPAREN APIC_PA STRING INT RPAREN 43 | {PipeGraph.APICTag ($3, $4)} 44 | 45 | data: 46 | | INT {PipeGraph.NormalData ($1)} 47 | | LPAREN DATA INT RPAREN {PipeGraph.NormalData ($3)} 48 | | LPAREN DATA QUESTION RPAREN {PipeGraph.UnknownData} 49 | | LPAREN DATA STRING INT RPAREN {PipeGraph.OtherData ($3, $4)} 50 | | LPAREN PTE INT ptag status RPAREN {PipeGraph.PageTableEntry ($3, $4, $5)}; 51 | | LPAREN PTE VTAG INT RARROW PTAG ptag status RPAREN 52 | {PipeGraph.PageTableEntry ($4, $7, $8)}; 53 | 54 | status: 55 | | LPAREN STATUS acc dirty RPAREN {{PipeGraph.accessed=$3; PipeGraph.dirty=$4}} 56 | | acc dirty {{PipeGraph.accessed=$1; PipeGraph.dirty=$2}}; 57 | 58 | acc: 59 | | ACC {true} 60 | | NOT ACC {false}; 61 | 62 | dirty: 63 | | DIRTY {true} 64 | | NOT DIRTY {false}; 65 | 66 | programs: 67 | | programs ALTERNATIVE EOL program {$1 @ [$4]} 68 | | program {[$1]}; 69 | | ALTERNATIVE EOL program {[$3]}; 70 | 71 | program: 72 | | program MICROOPS EOL {$1} 73 | | program microop 74 | {let PipeGraph.Pair (PipeGraph.Pair (a1, a2), a3) = $1 in 75 | PipeGraph.Pair (PipeGraph.Pair (a1 @ [$2], a2), a3)} 76 | | program relationship 77 | {let PipeGraph.Pair (PipeGraph.Pair (a1, a2), a3) = $1 in 78 | PipeGraph.Pair (PipeGraph.Pair (a1, a2 @ [$2]), a3)} 79 | | program condition 80 | {let PipeGraph.Pair (PipeGraph.Pair (a1, a2), a3) = $1 in 81 | PipeGraph.Pair (PipeGraph.Pair (a1, a2), a3 @ [$2])} 82 | | microop {PipeGraph.Pair (PipeGraph.Pair ([$1], []), [])} 83 | | relationship {PipeGraph.Pair (PipeGraph.Pair ([], [$1]), [])} 84 | | condition {PipeGraph.Pair (PipeGraph.Pair ([], []), [$1])} 85 | | MICROOPS EOL {PipeGraph.Pair (PipeGraph.Pair ([], []), [])} 86 | 87 | relationship: 88 | RELATIONSHIP STRING INT INT RARROW INT INT EOL 89 | {PipeGraph.Pair(PipeGraph.Pair($3, $6), $2)}; 90 | 91 | microop: 92 | | INT INT INT access EOL {print_endline "Warning: using old .test format; assuming coreID=given number, threadID=0"; {PipeGraph.globalID=$1; PipeGraph.coreID=$2; PipeGraph.threadID0=0; PipeGraph.intraInstructionID0=$3; PipeGraph.access=$4}}; 93 | | INT INT INT INT access EOL {{PipeGraph.globalID=$1; PipeGraph.coreID=$2; PipeGraph.threadID0=$3; PipeGraph.intraInstructionID0=$4; PipeGraph.access=$5}}; 94 | 95 | access: 96 | | LPAREN READ va pa data RPAREN {PipeGraph.Read ([], $3, $4, $5)} 97 | | LPAREN WRITE va pa data RPAREN {PipeGraph.Write ([], $3, $4, $5)} 98 | | LPAREN RMWREAD va pa data RPAREN {PipeGraph.Read (["RMW"], $3, $4, $5)} 99 | | LPAREN RMWWRITE va pa data RPAREN {PipeGraph.Write (["RMW"], $3, $4, $5)} 100 | | LPAREN READ types va pa data RPAREN {PipeGraph.Read ($3, $4, $5, $6)} 101 | | LPAREN WRITE types va pa data RPAREN {PipeGraph.Write ($3, $4, $5, $6)} 102 | | LPAREN FENCE types RPAREN {PipeGraph.Fence ($3)} 103 | | LPAREN FENCE types va RPAREN {PipeGraph.FenceVA ($3, $4)}; 104 | 105 | types: 106 | | types STRING { if compare $2 "normal" == 0 then $1 else $1 @ [$2] } 107 | | STRING { [$1] } 108 | 109 | outcome: 110 | | PERMIT {PipeGraph.Permitted} 111 | | FORBID {PipeGraph.Forbidden} 112 | | UNOBSERVED {PipeGraph.Unobserved} 113 | | REQUIRED {PipeGraph.Required}; 114 | -------------------------------------------------------------------------------- /src/PipeGraph.v: -------------------------------------------------------------------------------- 1 | (******************************************************************************) 2 | (* Copyright (c) 2015 Daniel Lustig, Princeton University *) 3 | (* *) 4 | (* Permission is hereby granted, free of charge, to any person obtaining a *) 5 | (* copy of this software and associated documentation files (the "Software"), *) 6 | (* to deal in the Software without restriction, including without limitation *) 7 | (* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) 8 | (* and/or sell copies of the Software, and to permit persons to whom the *) 9 | (* Software is furnished to do so, subject to the following conditions: *) 10 | (* *) 11 | (* The above copyright notice and this permission notice shall be included in *) 12 | (* all copies or substantial portions of the Software. *) 13 | (* *) 14 | (* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *) 15 | (* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) 16 | (* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) 17 | (* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *) 18 | (* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) 19 | (* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) 20 | (* DEALINGS IN THE SOFTWARE. *) 21 | (******************************************************************************) 22 | 23 | Require Import Arith. 24 | Require Import List. 25 | Require Import Ascii. 26 | Require Import String. 27 | Require Import PipeGraph.Debug. 28 | Require Import PipeGraph.Util. 29 | Require Import PipeGraph.StringUtil. 30 | Require Import PipeGraph.Instruction. 31 | Require Import PipeGraph.Graph. 32 | Require Import PipeGraph.GraphvizCompressed. 33 | Require Import PipeGraph.FOLPredicate. 34 | Require Import PipeGraph.FOL. 35 | 36 | Import ListNotations. 37 | 38 | Extraction Language Ocaml. 39 | Extract Inductive bool => "bool" [ "true" "false" ]. 40 | Extract Inductive list => "list" [ "[]" "(::)" ]. 41 | Extract Inductive nat => int [ "0" "(fun x -> x + 1)" ] 42 | "(fun fO fS n -> if n=0 then fO () else fS (n-1))". 43 | Extract Inductive ascii => char 44 | [ 45 | "(* If this appears, you're using Ascii internals. Please don't *) (fun (b0,b1,b2,b3,b4,b5,b6,b7) -> let f b i = if b then 1 lsl i else 0 in Char.chr (f b0 0 + f b1 1 + f b2 2 + f b3 3 + f b4 4 + f b5 5 + f b6 6 + f b7 7))" 46 | ] 47 | "(* If this appears, you're using Ascii internals. Please don't *) (fun f c -> let n = Char.code c in let h i = (n land (1 lsl i)) <> 0 in f (h 0) (h 1) (h 2) (h 3) (h 4) (h 5) (h 6) (h 7))". 48 | 49 | Extract Inductive string => "string" [ "(String.make 0 ' ')" " ( fun (a: (char * string)) -> (String.make 1 (Pervasives.fst a)) ^ (Pervasives.snd a) ) " ]. 50 | Extract Constant append => "( ^ )". 51 | Extract Constant beq_string => "( fun (a:string) (b:string) -> a=b )". 52 | Extract Constant string_prefix => "( fun (a:string) (b:string) -> 53 | try 54 | a = String.sub b 0 (String.length a) 55 | with 56 | Invalid_argument _ -> false 57 | )". 58 | Extract Constant blt_nat => "( fun (a:int) (b:int) -> a < b )". 59 | Extract Constant bgt_nat => "( fun (a:int) (b:int) -> a > b )". 60 | Extract Constant blt_string => "( fun (a:string) (b:string) -> compare a b < 0 )". 61 | Extract Constant substr => "( fun (n:int) (s:string) -> String.sub s n (String.length s - 4) )". 62 | 63 | Extract Constant plus => "( + )". 64 | Extract Constant mult => "( * )". 65 | Extract Constant beq_nat => "( fun (a:int) (b:int) -> a=b )". 66 | Extract Constant stringOfNat => "( fun (a:int) -> string_of_int a )". 67 | 68 | Extract Constant MacroExpansionDepth => "( 100000 )". 69 | 70 | Extract Constant List.length => "( List.length )". 71 | 72 | Extract Constant PrintFlag => "( BackendLinux.printFlag )". 73 | Extract Constant Printf => "( BackendLinux.printf )". 74 | Extract Constant PrintfFlush => "( BackendLinux.printfFlush )". 75 | Extract Constant RTLPrintInternal => "( BackendLinux.rtlPrintInternal )". 76 | 77 | Extract Constant TimeForStatusUpdate => "( BackendLinux.timeForStatusUpdate )". 78 | 79 | (* 80 | Extract Constant zero => "'λ000'". 81 | Extract Constant one => "'λ001'". 82 | Extract Constant shift => 83 | "fun b c -> Char.chr (((Char.code c) lsl 1) land 255 + if b then 1 else 0)". 84 | Extract Inlined Constant ascii_dec => "(=)". 85 | *) 86 | Extraction "PipeGraph.ml" 87 | GetAccessType 88 | BoundaryCondition Program GraphvizCompressedGraph 89 | FOLAxiom FOLImplies FOLIff MicroopQuantifier CoreQuantifier ThreadQuantifier 90 | FOLLookupPredicate_SS FOLLookupPredicate_S FOLLookupPredicate_E 91 | FOLLookupPredicate_lE FOLLookupPredicate_N FOLLookupPredicate_lN 92 | FOLLookupPredicate_SSS FOLLookupPredicate_IS 93 | FOLLookupPredicate_ADSS FOLLookupPredicate_ADS FOLLookupPredicate_IIIIS 94 | MicroarchitecturalComponent EvaluateUHBGraphs StageNames ExpectedResult. 95 | 96 | -------------------------------------------------------------------------------- /src/Process.ml: -------------------------------------------------------------------------------- 1 | (******************************************************************************) 2 | (* PipeCheck: Specifying and Verifying Microarchitectural *) 3 | (* Enforcement of Memory Consistency Models *) 4 | (* *) 5 | (* Copyright (c) 2015 Daniel Lustig, Princeton University *) 6 | (* All rights reserved. *) 7 | (* *) 8 | (* This library is free software; you can redistribute it and/or *) 9 | (* modify it under the terms of the GNU Lesser General Public *) 10 | (* License as published by the Free Software Foundation; either *) 11 | (* version 2.1 of the License, or (at your option) any later version. *) 12 | (* *) 13 | (* This library is distributed in the hope that it will be useful, *) 14 | (* but WITHOUT ANY WARRANTY; without even the implied warranty of *) 15 | (* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *) 16 | (* Lesser General Public License for more details. *) 17 | (* *) 18 | (* You should have received a copy of the GNU Lesser General Public *) 19 | (* License along with this library; if not, write to the Free Software *) 20 | (* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 *) 21 | (* USA *) 22 | (******************************************************************************) 23 | 24 | open Printf 25 | open PipeGraph 26 | open Lexer 27 | open Parser 28 | open MicroarchLexer 29 | open MicroarchParser 30 | 31 | exception LitmusTestParsingFailure of (string * int * int) 32 | exception ModelParsingFailure of (string * int * int) 33 | 34 | let parse_litmus_test litmustest = 35 | (* (allowed, initial_conditions, programs) *) 36 | let lexbuf = Lexing.from_string litmustest in 37 | try 38 | let result = Parser.main Lexer.token lexbuf in 39 | Js.Unsafe.fun_call (Js.Unsafe.js_expr "hello") 40 | [|Js.Unsafe.inject (Js.string "Finished parsing litmus test\n")|]; 41 | result 42 | with exn -> 43 | begin 44 | let curr = lexbuf.Lexing.lex_curr_p in 45 | let line = curr.Lexing.pos_lnum in 46 | let offset = curr.Lexing.pos_cnum - curr.Lexing.pos_bol in 47 | let token = Lexing.lexeme lexbuf in 48 | Printf.printf "Litmus test parsing error: line %d, offset %d, token %s\n" 49 | line offset token; 50 | raise (LitmusTestParsingFailure("Litmus Test", line, offset)); 51 | end 52 | 53 | let rec n_copies n x = 54 | if n > 0 then (x :: n_copies (n-1) x) else [x] 55 | 56 | let parse_uarch uarch_string num_cores = 57 | let lexbuf = Lexing.from_string uarch_string in 58 | try 59 | let pipeline = MicroarchParser.main MicroarchLexer.token lexbuf in 60 | Js.Unsafe.fun_call (Js.Unsafe.js_expr "hello") 61 | [|Js.Unsafe.inject (Js.string "Finished parsing (micro)architecture model\n")|]; 62 | Js.Unsafe.fun_call (Js.Unsafe.js_expr "hello") 63 | [|Js.Unsafe.inject (Js.string "Calculating outcome...\n")|]; 64 | n_copies num_cores pipeline 65 | with exn -> 66 | begin 67 | let curr = lexbuf.Lexing.lex_curr_p in 68 | let line = curr.Lexing.pos_lnum in 69 | let offset = curr.Lexing.pos_cnum - curr.Lexing.pos_bol in 70 | let token = Lexing.lexeme lexbuf in 71 | Printf.printf "Microarchitecture parsing error: line %d, offset %d, token %s\n" 72 | line offset token; 73 | raise (ModelParsingFailure("Model", line, offset)); 74 | end 75 | 76 | let core_count p = fold_left max (map coreID p) 0 77 | 78 | let first_observable_graph litmustest_string uarch_string = 79 | let (allowed, initial, programs) = 80 | parse_litmus_test litmustest_string in 81 | 82 | let processor = 83 | let num_cores = 84 | match programs with 85 | | p :: _ -> core_count (PipeGraph.fst (PipeGraph.fst p)) 86 | | _ -> 0 87 | in 88 | parse_uarch uarch_string num_cores in 89 | 90 | let outcome = 91 | PipeGraph.evaluateUHBGraphs 100 processor programs initial in 92 | 93 | let (observable, graph) = 94 | match outcome with 95 | | PipeGraph.Some (PipeGraph.Pair (g, a)) -> 96 | let stage_names = PipeGraph.stageNames processor in 97 | let graph = 98 | PipeGraph.graphvizCompressedGraph "" stage_names g [] in 99 | (true, List.fold_left (^) "" graph) 100 | | PipeGraph.None -> (false, "(not observable)") 101 | in 102 | 103 | (allowed, observable, graph) 104 | -------------------------------------------------------------------------------- /src/StringUtil.v: -------------------------------------------------------------------------------- 1 | (******************************************************************************) 2 | (* Copyright (c) 2015 Daniel Lustig, Princeton University *) 3 | (* *) 4 | (* Permission is hereby granted, free of charge, to any person obtaining a *) 5 | (* copy of this software and associated documentation files (the "Software"), *) 6 | (* to deal in the Software without restriction, including without limitation *) 7 | (* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) 8 | (* and/or sell copies of the Software, and to permit persons to whom the *) 9 | (* Software is furnished to do so, subject to the following conditions: *) 10 | (* *) 11 | (* The above copyright notice and this permission notice shall be included in *) 12 | (* all copies or substantial portions of the Software. *) 13 | (* *) 14 | (* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *) 15 | (* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) 16 | (* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) 17 | (* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *) 18 | (* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) 19 | (* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) 20 | (* DEALINGS IN THE SOFTWARE. *) 21 | (******************************************************************************) 22 | 23 | Require Import List. 24 | Require Import Arith. 25 | Require Import String. 26 | Require Import Ascii. 27 | 28 | Import ListNotations. 29 | Open Scope string_scope. 30 | 31 | Definition tab := String (ascii_of_nat 9) "". 32 | Definition newline := String (ascii_of_nat 10) "". 33 | Definition quote := String (ascii_of_nat 34) "". 34 | 35 | Definition stringOfNat (n : nat) : string := 36 | (* Anything larger than 9 will be handled by OCaml's string_of_int during 37 | * extraction. We don't need to worry about it here within Coq, it's 38 | * strictly cosmetic. *) 39 | String (ascii_of_nat (nat_of_ascii "0" + n)) "". 40 | 41 | Definition StringOf 42 | (l : list string) 43 | : string := 44 | fold_left append l "". 45 | 46 | Fixpoint beq_string 47 | (s1 s2 : string) 48 | : bool := 49 | match (s1, s2) with 50 | | (String h1 t1, String h2 t2) => 51 | if beq_nat (nat_of_ascii h1) (nat_of_ascii h2) 52 | then beq_string t1 t2 53 | else false 54 | | (EmptyString, EmptyString) => true 55 | | _ => false 56 | end. 57 | 58 | Fixpoint string_prefix 59 | (s1 s2 : string) 60 | : bool := 61 | match (s1, s2) with 62 | | (String h1 t1, String h2 t2) => 63 | if beq_nat (nat_of_ascii h1) (nat_of_ascii h2) 64 | then string_prefix t1 t2 65 | else false 66 | | (EmptyString, _) => true 67 | | _ => false 68 | end. 69 | 70 | Fixpoint substr 71 | (n : nat) 72 | (s : string) 73 | : string := 74 | match (s, n) with 75 | | (_, 0) => s 76 | | (EmptyString, S _) => "" 77 | | (String _ s', S n') => substr n' s' 78 | end. 79 | 80 | Fixpoint find_string 81 | (s : string) 82 | (l : list string) 83 | : bool := 84 | match l with 85 | | [] => false 86 | | h::t => 87 | if beq_string s h 88 | then true 89 | else find_string s t 90 | end. 91 | -------------------------------------------------------------------------------- /src/Util.ml: -------------------------------------------------------------------------------- 1 | open PipeGraph 2 | 3 | let rec pipegraphStringHelper s n l = 4 | try 5 | pipegraphStringHelper s (n+1) (String.get s n :: l) 6 | with Invalid_argument _ -> 7 | List.rev_append l [] 8 | 9 | let pipegraphString s = pipegraphStringHelper s 0 [] 10 | -------------------------------------------------------------------------------- /src/Util.v: -------------------------------------------------------------------------------- 1 | (******************************************************************************) 2 | (* Copyright (c) 2015 Daniel Lustig, Princeton University *) 3 | (* *) 4 | (* Permission is hereby granted, free of charge, to any person obtaining a *) 5 | (* copy of this software and associated documentation files (the "Software"), *) 6 | (* to deal in the Software without restriction, including without limitation *) 7 | (* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) 8 | (* and/or sell copies of the Software, and to permit persons to whom the *) 9 | (* Software is furnished to do so, subject to the following conditions: *) 10 | (* *) 11 | (* The above copyright notice and this permission notice shall be included in *) 12 | (* all copies or substantial portions of the Software. *) 13 | (* *) 14 | (* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *) 15 | (* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) 16 | (* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) 17 | (* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *) 18 | (* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) 19 | (* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) 20 | (* DEALINGS IN THE SOFTWARE. *) 21 | (******************************************************************************) 22 | 23 | Require Import List. 24 | Require Import Arith. 25 | Require Import PipeGraph.Debug. 26 | 27 | Import ListNotations. 28 | 29 | (** ** Generally useful functions *) 30 | 31 | (** *** [bgt_nat] *) 32 | Fixpoint bgt_nat 33 | (a b : nat) 34 | : bool := 35 | match (a, b) with 36 | | (S a', S b') => bgt_nat a' b' 37 | | (S a', O ) => true 38 | | (O , S b') => false 39 | | (O , O ) => false 40 | end. 41 | 42 | Definition blt_nat 43 | (a b : nat) 44 | : bool := 45 | bgt_nat b a. 46 | 47 | (** *** [Range] *) 48 | (** Generate the list [0, 1, ..., n-1] *) 49 | Fixpoint RangeHelper 50 | (n : nat) 51 | (l : list nat) 52 | : list nat := 53 | match n with 54 | | O => l 55 | | S n' => RangeHelper n' (n' :: l) 56 | end. 57 | 58 | Definition Range 59 | (n : nat) 60 | : list nat := 61 | RangeHelper n []. 62 | 63 | Module RangeExample. 64 | 65 | Example e1 : Range 3 = [0; 1; 2]. 66 | Proof. 67 | auto. 68 | Qed. 69 | 70 | End RangeExample. 71 | 72 | (** *** [Map] *) 73 | (** Tail recursive version of [map]. *) 74 | Fixpoint MapHelper 75 | {A B : Type} 76 | (f : A -> B) 77 | (l : list A) 78 | (l' : list B) 79 | : list B := 80 | match l with 81 | | h::t => MapHelper f t (f h :: l') 82 | | [] => rev' l' 83 | end. 84 | 85 | Definition Map 86 | {A B : Type} 87 | (f : A -> B) 88 | (l : list A) 89 | : list B := 90 | MapHelper f l []. 91 | 92 | Fixpoint app_rev 93 | {A : Type} 94 | (a : list A) 95 | (b : list A) 96 | : list A := 97 | match b with 98 | | [] => a 99 | | h::t => app_rev (h::a) t 100 | end. 101 | 102 | Definition app_tail 103 | {A : Type} 104 | (a b : list A) 105 | : list A := 106 | app_rev b (rev' a). 107 | 108 | (** *** [removeb] *) 109 | (** Remove every element [x] of list [l1] for which [f x] is [true]. *) 110 | Fixpoint removeb_helper 111 | {A : Type} 112 | (f : A -> bool) 113 | (l1 : list A) 114 | (l2 : list A) 115 | : list A := 116 | match l1 with 117 | | [] => l2 118 | | x::tl => 119 | if (f x) then removeb_helper f tl l2 else removeb_helper f tl (x::l2) 120 | end. 121 | 122 | Definition removeb 123 | {A : Type} 124 | (f : A -> bool) 125 | (l : list A) 126 | : list A := 127 | removeb_helper f (rev' l) []. 128 | 129 | (** ** Cross Product *) 130 | 131 | (** *** [CrossProduct] *) 132 | (** Given: a list of lists of choices. The first list of the input is the set 133 | of choices for the first item, the second list of the input is the set of 134 | choices for the second item, etc. Produce: a list of the cross product of 135 | choices, one from each list of the input. *) 136 | Definition CrossProductHelper 137 | {A : Type} 138 | (heads : list A) 139 | (tails : list (list A)) 140 | : list (list A) := 141 | let f x := Map (cons x) tails in 142 | let all := Map f heads in 143 | fold_left (app_tail (A:=_)) all []. 144 | 145 | Fixpoint CrossProduct 146 | {A : Type} 147 | (l : list (list A)) 148 | : list (list A) := 149 | match l with 150 | | [] => [] 151 | | h::t => 152 | match t with 153 | | [] => fold_left (app_tail (A:=_)) (Map (fun x => [[x]]) h) [] 154 | | _ => CrossProductHelper h (CrossProduct t) 155 | end 156 | end. 157 | 158 | (** *** [CrossProduct] Examples *) 159 | Module CrossProductExamples. 160 | 161 | Example e1: 162 | CrossProduct [[1; 2]; [3; 4]] = [[1; 3]; [1; 4]; [2; 3]; [2; 4]]. 163 | Proof. 164 | auto. 165 | Qed. 166 | 167 | Example e2: 168 | CrossProduct [[]; [1; 2]; [3; 4]] = []. 169 | Proof. 170 | auto. 171 | Qed. 172 | 173 | Example e3: 174 | let a : list (list nat) := [[]] in 175 | CrossProduct a = []. 176 | Proof. 177 | auto. 178 | Qed. 179 | 180 | End CrossProductExamples. 181 | 182 | -------------------------------------------------------------------------------- /src/WebMain.ml: -------------------------------------------------------------------------------- 1 | (******************************************************************************) 2 | (* PipeCheck: Specifying and Verifying Microarchitectural *) 3 | (* Enforcement of Memory Consistency Models *) 4 | (* *) 5 | (* Copyright (c) 2015 Daniel Lustig, Princeton University *) 6 | (* All rights reserved. *) 7 | (* *) 8 | (* This library is free software; you can redistribute it and/or *) 9 | (* modify it under the terms of the GNU Lesser General Public *) 10 | (* License as published by the Free Software Foundation; either *) 11 | (* version 2.1 of the License, or (at your option) any later version. *) 12 | (* *) 13 | (* This library is distributed in the hope that it will be useful, *) 14 | (* but WITHOUT ANY WARRANTY; without even the implied warranty of *) 15 | (* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *) 16 | (* Lesser General Public License for more details. *) 17 | (* *) 18 | (* You should have received a copy of the GNU Lesser General Public *) 19 | (* License along with this library; if not, write to the Free Software *) 20 | (* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 *) 21 | (* USA *) 22 | (******************************************************************************) 23 | 24 | open Process 25 | 26 | let _ = 27 | Js.Unsafe.global##pipecheck <- jsobject 28 | method fog l u = 29 | let l = Js.to_string l in 30 | let u = Js.to_string u in 31 | let r = Js.Unsafe.obj [||] in 32 | let (a, o, g) = Process.first_observable_graph l u in 33 | r##allowed <- if a != PipeGraph.Forbidden then Js._true else Js._false; 34 | r##observable <- if o then Js._true else Js._false; 35 | r##graph <- Js.string g; 36 | r 37 | end 38 | -------------------------------------------------------------------------------- /src/_tags: -------------------------------------------------------------------------------- 1 | true: use_str 2 | true: use_unix 3 | -------------------------------------------------------------------------------- /src/runtests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Exit on any errors 4 | set -e 5 | 6 | if [ -z "$1" ] || [ -z "$2" ] 7 | then 8 | echo "Usage: ./runtests.sh []" 9 | exit 1 10 | fi 11 | 12 | # Store all of the tests in the path tests/x86tso into TESTS 13 | TESTS=$(ls $2 | sed "s/.litmus//") 14 | OUTPUTDIR=results/graphs-$1-$(date +"%m-%d-%y--%H-%M-%S-%p") 15 | 16 | if ! [ -z "$3" ]; then 17 | OUTPUTDIR=$3/$OUTPUTDIR 18 | fi 19 | 20 | mkdir -p $OUTPUTDIR 21 | rm -f latest 22 | ln -s $OUTPUTDIR latest 23 | 24 | # Loop over each test 25 | date | tee $OUTPUTDIR/$1.log 26 | echo "Test,Num_Graphs,Time,Bugs" >> $OUTPUTDIR/$1.csv 27 | for t in $TESTS 28 | do 29 | mkdir -p $OUTPUTDIR/$t 30 | echo Test: $t | tee -a $OUTPUTDIR/$1.log $OUTPUTDIR/$t/$t.log 31 | # Run the test. 32 | /usr/bin/time -f "Time: %e seconds" ./pipecheck -i $2/$t.litmus -o $OUTPUTDIR/$t/$t.gv -p $1 2>&1 | tee -a $OUTPUTDIR/$1.log $OUTPUTDIR/$t/$t.log 33 | wait $! 34 | # Now pull relevant information from this test's output into the final report 35 | # and the CSV file. 36 | grep "Test: " $OUTPUTDIR/$t/$t.log >> $OUTPUTDIR/$1.report 37 | test_name=$(sed -n "s/Test: \\(.\\+\\)/\\1/p" $OUTPUTDIR/$t/$t.log) 38 | echo "--------------------" >> $OUTPUTDIR/$1.report 39 | grep "Total Graphs: " $OUTPUTDIR/$t/$t.log >> $OUTPUTDIR/$1.report 40 | num_graphs=$(sed -n "s/Total Graphs: \\(.\\+\\)/\\1/p" $OUTPUTDIR/$t/$t.log) 41 | bugs="" 42 | # This grep might fail if there are no bugs... 43 | set +e 44 | grep "BUG!" $OUTPUTDIR/$t/$t.log >> $OUTPUTDIR/$1.report; 45 | if [ $? != 0 ]; then 46 | bugs="No" 47 | else 48 | bugs="Yes" 49 | fi 50 | set -e 51 | grep "Time: " $OUTPUTDIR/$t/$t.log >> $OUTPUTDIR/$1.report 52 | time=$(sed -n "s/Time: \\(.\\+\\) seconds/\\1/p" $OUTPUTDIR/$t/$t.log) 53 | echo "" >> $OUTPUTDIR/$1.report 54 | echo "$test_name,$num_graphs,$time,$bugs" >> $OUTPUTDIR/$1.csv 55 | neato -Tps2 $OUTPUTDIR/$t/$t.gv -o $OUTPUTDIR/$t/$t.ps 56 | # Only proceed with PDF generation if there's something in the 57 | # GV and PS files. 58 | if [ -f $OUTPUTDIR/$t/$t.ps ]; then 59 | ps2pdf $OUTPUTDIR/$t/$t.ps $OUTPUTDIR/$t/$t.pdf 60 | fi 61 | rm -f $OUTPUTDIR/$t/$t.ps 62 | done 63 | 64 | wait $! 65 | 66 | echo "$0 Done!" 67 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/amd3.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 7 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 3 0 -> 2 0 9 | Relationship rf 0 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 2 0 -> 4 0 15 | Relationship fr 5 0 -> 1 0 16 | Relationship co 0 0 -> 1 0 17 | Relationship co 3 0 -> 4 0 18 | Relationship po 0 0 -> 2 0 19 | Relationship po 3 0 -> 5 0 20 | Alternative 21 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 22 | 1 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 23 | 2 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 24 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 25 | 4 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 26 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 27 | Relationship rf 3 0 -> 2 0 28 | Relationship rf 0 0 -> 5 0 29 | Relationship po 0 0 -> 1 0 30 | Relationship po 1 0 -> 2 0 31 | Relationship po 3 0 -> 4 0 32 | Relationship po 4 0 -> 5 0 33 | Relationship fr 5 0 -> 1 0 34 | Relationship co 0 0 -> 1 0 35 | Relationship co 4 0 -> 3 0 36 | Relationship po 0 0 -> 2 0 37 | Relationship po 3 0 -> 5 0 38 | Alternative 39 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 40 | 1 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 41 | 2 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 42 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 43 | 4 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 44 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 45 | Relationship rf 3 0 -> 2 0 46 | Relationship rf 0 0 -> 5 0 47 | Relationship po 0 0 -> 1 0 48 | Relationship po 1 0 -> 2 0 49 | Relationship po 3 0 -> 4 0 50 | Relationship po 4 0 -> 5 0 51 | Relationship fr 2 0 -> 4 0 52 | Relationship co 1 0 -> 0 0 53 | Relationship co 3 0 -> 4 0 54 | Relationship po 0 0 -> 2 0 55 | Relationship po 3 0 -> 5 0 56 | Alternative 57 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 58 | 1 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 59 | 2 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 60 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 61 | 4 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 62 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 63 | Relationship rf 3 0 -> 2 0 64 | Relationship rf 0 0 -> 5 0 65 | Relationship po 0 0 -> 1 0 66 | Relationship po 1 0 -> 2 0 67 | Relationship po 3 0 -> 4 0 68 | Relationship po 4 0 -> 5 0 69 | Relationship co 1 0 -> 0 0 70 | Relationship co 4 0 -> 3 0 71 | Relationship po 0 0 -> 2 0 72 | Relationship po 3 0 -> 5 0 73 | Forbidden 74 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/co-iriw.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 5 | 3 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 6 | 4 3 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 7 | 5 3 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 0 0 -> 2 0 9 | Relationship rf 1 0 -> 3 0 10 | Relationship rf 1 0 -> 4 0 11 | Relationship rf 0 0 -> 5 0 12 | Relationship po 2 0 -> 3 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 2 0 -> 1 0 15 | Relationship fr 5 0 -> 1 0 16 | Relationship co 0 0 -> 1 0 17 | Alternative 18 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 19 | 1 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 20 | 2 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 21 | 3 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 22 | 4 3 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 23 | 5 3 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 24 | Relationship rf 0 0 -> 2 0 25 | Relationship rf 1 0 -> 3 0 26 | Relationship rf 1 0 -> 4 0 27 | Relationship rf 0 0 -> 5 0 28 | Relationship po 2 0 -> 3 0 29 | Relationship po 4 0 -> 5 0 30 | Relationship fr 3 0 -> 0 0 31 | Relationship fr 4 0 -> 0 0 32 | Relationship co 1 0 -> 0 0 33 | Forbidden 34 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/co-mp.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 5 | 3 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 6 | Relationship rf 1 0 -> 2 0 7 | Relationship rf 0 0 -> 3 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship fr 3 0 -> 1 0 11 | Relationship co 0 0 -> 1 0 12 | (PA 0 0) = 2 13 | Forbidden 14 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/iriw.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 5 | 3 2 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 6 | 4 3 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 3 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 2 0 9 | Relationship rf 1 0 -> 4 0 10 | Relationship po 2 0 -> 3 0 11 | Relationship po 4 0 -> 5 0 12 | Relationship fr 3 0 -> 1 0 13 | Relationship fr 5 0 -> 0 0 14 | Forbidden 15 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/iwp23b.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 6 | Relationship rf 0 0 -> 1 0 7 | Relationship rf 2 0 -> 3 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Alternative 11 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 12 | 1 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 13 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 14 | 3 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 15 | Relationship rf 0 0 -> 1 0 16 | Relationship po 0 0 -> 1 0 17 | Relationship po 2 0 -> 3 0 18 | Relationship fr 3 0 -> 2 0 19 | Alternative 20 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 21 | 1 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 22 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 23 | 3 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 24 | Relationship rf 2 0 -> 3 0 25 | Relationship po 0 0 -> 1 0 26 | Relationship po 2 0 -> 3 0 27 | Relationship fr 1 0 -> 0 0 28 | Required 29 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/iwp24.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 2 0 -> 3 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship po 0 0 -> 2 0 17 | Relationship po 3 0 -> 5 0 18 | Alternative 19 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 20 | 1 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 21 | 2 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 22 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 23 | 4 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 24 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 25 | Relationship rf 0 0 -> 1 0 26 | Relationship po 0 0 -> 1 0 27 | Relationship po 1 0 -> 2 0 28 | Relationship po 3 0 -> 4 0 29 | Relationship po 4 0 -> 5 0 30 | Relationship fr 2 0 -> 3 0 31 | Relationship fr 4 0 -> 3 0 32 | Relationship fr 5 0 -> 0 0 33 | Relationship po 0 0 -> 2 0 34 | Relationship po 3 0 -> 5 0 35 | Alternative 36 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 37 | 1 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 38 | 2 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 39 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 40 | 4 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 41 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 42 | Relationship rf 3 0 -> 4 0 43 | Relationship po 0 0 -> 1 0 44 | Relationship po 1 0 -> 2 0 45 | Relationship po 3 0 -> 4 0 46 | Relationship po 4 0 -> 5 0 47 | Relationship fr 1 0 -> 0 0 48 | Relationship fr 2 0 -> 3 0 49 | Relationship fr 5 0 -> 0 0 50 | Relationship po 0 0 -> 2 0 51 | Relationship po 3 0 -> 5 0 52 | Alternative 53 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 54 | 1 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 55 | 2 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 56 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 57 | 4 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 58 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 59 | Relationship po 0 0 -> 1 0 60 | Relationship po 1 0 -> 2 0 61 | Relationship po 3 0 -> 4 0 62 | Relationship po 4 0 -> 5 0 63 | Relationship fr 1 0 -> 0 0 64 | Relationship fr 2 0 -> 3 0 65 | Relationship fr 4 0 -> 3 0 66 | Relationship fr 5 0 -> 0 0 67 | Relationship po 0 0 -> 2 0 68 | Relationship po 3 0 -> 5 0 69 | Forbidden 70 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/lb.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 6 | Relationship rf 3 0 -> 0 0 7 | Relationship rf 1 0 -> 2 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Forbidden 11 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/mp+staleld.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 5 | 3 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 7 | Relationship rf 1 0 -> 3 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship po 3 0 -> 4 0 11 | Relationship fr 2 0 -> 0 0 12 | Relationship fr 4 0 -> 0 0 13 | Relationship po 2 0 -> 4 0 14 | Forbidden 15 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/mp.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 6 | Relationship rf 1 0 -> 2 0 7 | Relationship po 0 0 -> 1 0 8 | Relationship po 2 0 -> 3 0 9 | Relationship fr 3 0 -> 0 0 10 | Forbidden 11 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/n1.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 8 | Relationship rf 3 0 -> 4 0 9 | Relationship rf 0 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 1 0 -> 2 0 14 | Relationship fr 5 0 -> 3 0 15 | Relationship co 0 0 -> 3 0 16 | Alternative 17 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 18 | 1 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 19 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 20 | 3 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 21 | 4 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 22 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 23 | Relationship rf 3 0 -> 4 0 24 | Relationship rf 0 0 -> 5 0 25 | Relationship po 0 0 -> 1 0 26 | Relationship po 2 0 -> 3 0 27 | Relationship po 4 0 -> 5 0 28 | Relationship fr 1 0 -> 2 0 29 | Relationship fr 4 0 -> 0 0 30 | Relationship co 3 0 -> 0 0 31 | Forbidden 32 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/n2.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 5 | 3 1 0 0 (Write (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 8 | 6 3 0 0 (Read (VA 2 0) (PA 2 0) (Data 1)) 9 | 7 3 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 10 | Relationship rf 0 0 -> 4 0 11 | Relationship rf 2 0 -> 5 0 12 | Relationship rf 3 0 -> 6 0 13 | Relationship po 0 0 -> 1 0 14 | Relationship po 2 0 -> 3 0 15 | Relationship po 4 0 -> 5 0 16 | Relationship po 6 0 -> 7 0 17 | Relationship fr 4 0 -> 2 0 18 | Relationship fr 7 0 -> 1 0 19 | Relationship co 0 0 -> 2 0 20 | Alternative 21 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 22 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 23 | 2 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 24 | 3 1 0 0 (Write (VA 2 0) (PA 2 0) (Data 1)) 25 | 4 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 26 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 27 | 6 3 0 0 (Read (VA 2 0) (PA 2 0) (Data 1)) 28 | 7 3 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 29 | Relationship rf 0 0 -> 4 0 30 | Relationship rf 2 0 -> 5 0 31 | Relationship rf 3 0 -> 6 0 32 | Relationship po 0 0 -> 1 0 33 | Relationship po 2 0 -> 3 0 34 | Relationship po 4 0 -> 5 0 35 | Relationship po 6 0 -> 7 0 36 | Relationship fr 5 0 -> 0 0 37 | Relationship fr 7 0 -> 1 0 38 | Relationship co 2 0 -> 0 0 39 | Required 40 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/n4.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 5 | 3 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 7 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 8 | Relationship rf 4 0 -> 0 0 9 | Relationship rf 1 0 -> 2 0 10 | Relationship rf 1 0 -> 3 0 11 | Relationship rf 4 0 -> 5 0 12 | Relationship po 0 0 -> 1 0 13 | Relationship po 1 0 -> 2 0 14 | Relationship po 3 0 -> 4 0 15 | Relationship po 4 0 -> 5 0 16 | Relationship fr 2 0 -> 4 0 17 | Relationship fr 3 0 -> 4 0 18 | Relationship co 1 0 -> 4 0 19 | Relationship po 0 0 -> 2 0 20 | Relationship po 3 0 -> 5 0 21 | Alternative 22 | 0 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 23 | 1 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 24 | 2 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 25 | 3 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 26 | 4 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 27 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 28 | Relationship rf 4 0 -> 0 0 29 | Relationship rf 1 0 -> 2 0 30 | Relationship rf 1 0 -> 3 0 31 | Relationship rf 4 0 -> 5 0 32 | Relationship po 0 0 -> 1 0 33 | Relationship po 1 0 -> 2 0 34 | Relationship po 3 0 -> 4 0 35 | Relationship po 4 0 -> 5 0 36 | Relationship fr 0 0 -> 1 0 37 | Relationship fr 5 0 -> 1 0 38 | Relationship co 4 0 -> 1 0 39 | Relationship po 0 0 -> 2 0 40 | Relationship po 3 0 -> 5 0 41 | Forbidden 42 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/n5.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 5 | 3 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 6 | Relationship rf 2 0 -> 1 0 7 | Relationship rf 0 0 -> 3 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship fr 3 0 -> 2 0 11 | Relationship co 0 0 -> 2 0 12 | Alternative 13 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 14 | 1 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 15 | 2 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 16 | 3 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 17 | Relationship rf 2 0 -> 1 0 18 | Relationship rf 0 0 -> 3 0 19 | Relationship po 0 0 -> 1 0 20 | Relationship po 2 0 -> 3 0 21 | Relationship fr 1 0 -> 0 0 22 | Relationship co 2 0 -> 0 0 23 | Forbidden 24 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/n6.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 7 | Relationship rf 0 0 -> 1 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 1 0 -> 2 0 10 | Relationship po 3 0 -> 4 0 11 | Relationship fr 2 0 -> 3 0 12 | Relationship co 4 0 -> 0 0 13 | Relationship po 0 0 -> 2 0 14 | (PA 0 0) = 1 15 | Forbidden 16 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/n7.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 2 0 -> 3 0 14 | Relationship fr 5 0 -> 0 0 15 | Relationship po 0 0 -> 2 0 16 | Forbidden 17 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/podwr000.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 6 | Relationship po 0 0 -> 1 0 7 | Relationship po 2 0 -> 3 0 8 | Relationship fr 1 0 -> 2 0 9 | Relationship fr 3 0 -> 0 0 10 | Forbidden 11 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/podwr001.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read (VA 2 0) (PA 2 0) (Data 0)) 6 | 4 2 0 0 (Write (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship po 4 0 -> 5 0 11 | Relationship fr 1 0 -> 2 0 12 | Relationship fr 3 0 -> 4 0 13 | Relationship fr 5 0 -> 0 0 14 | Forbidden 15 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/rfi000.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 2 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 4 0 -> 5 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 3 0 -> 4 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 5 0 -> 0 0 14 | Relationship co 2 0 -> 3 0 15 | Relationship co 4 0 -> 0 0 16 | Relationship po 3 0 -> 5 0 17 | (PA 0 0) = 2 18 | (PA 1 0) = 2 19 | Forbidden 20 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/rfi001.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 7 | Relationship rf 3 0 -> 4 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship po 3 0 -> 4 0 11 | Relationship fr 4 0 -> 0 0 12 | Relationship co 1 0 -> 2 0 13 | Relationship co 3 0 -> 0 0 14 | Relationship po 2 0 -> 4 0 15 | (PA 0 0) = 2 16 | (PA 1 0) = 2 17 | Forbidden 18 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/rfi002.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 3 0 -> 4 0 9 | Relationship rf 3 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 4 0 -> 0 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship co 1 0 -> 2 0 17 | Relationship co 3 0 -> 0 0 18 | Relationship po 2 0 -> 4 0 19 | Relationship po 2 0 -> 5 0 20 | Relationship po 3 0 -> 5 0 21 | (PA 0 0) = 2 22 | (PA 1 0) = 2 23 | Forbidden 24 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/rfi003.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 1 0 0 (Read (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 3 0 -> 4 0 9 | Relationship po 0 0 -> 1 0 10 | Relationship po 2 0 -> 3 0 11 | Relationship po 3 0 -> 4 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 5 0 -> 0 0 14 | Relationship co 1 0 -> 2 0 15 | Relationship po 2 0 -> 4 0 16 | Relationship po 2 0 -> 5 0 17 | Relationship po 3 0 -> 5 0 18 | (PA 1 0) = 2 19 | Forbidden 20 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/rfi004.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 4 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 2 0 -> 3 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship co 1 0 -> 3 0 17 | Relationship co 4 0 -> 0 0 18 | Relationship po 0 0 -> 2 0 19 | Relationship po 3 0 -> 5 0 20 | (PA 0 0) = 2 21 | (PA 1 0) = 2 22 | Forbidden 23 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/rfi005.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 4 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 2 0 -> 3 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship co 4 0 -> 0 0 17 | Relationship po 0 0 -> 2 0 18 | Relationship po 3 0 -> 5 0 19 | (PA 0 0) = 2 20 | Forbidden 21 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/rfi006.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 2 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 4 0 -> 5 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 3 0 -> 4 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 2 0 -> 3 0 14 | Relationship fr 5 0 -> 0 0 15 | Relationship co 4 0 -> 0 0 16 | Relationship po 3 0 -> 5 0 17 | (PA 0 0) = 2 18 | Forbidden 19 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/rfi011.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 2 0 0 (Read (VA 1 0) (PA 1 0) (Data 2)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 3 0 -> 4 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 5 0 -> 0 0 14 | Relationship co 2 0 -> 3 0 15 | Relationship po 3 0 -> 5 0 16 | (PA 1 0) = 2 17 | Forbidden 18 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/rfi012.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 7 | Relationship rf 2 0 -> 3 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship po 3 0 -> 4 0 11 | Relationship fr 4 0 -> 0 0 12 | Relationship co 1 0 -> 2 0 13 | Relationship po 2 0 -> 4 0 14 | (PA 1 0) = 2 15 | Forbidden 16 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/rfi013.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 2 0 -> 3 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship po 0 0 -> 2 0 17 | Relationship po 3 0 -> 5 0 18 | Forbidden 19 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/rfi014.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 6 | 4 2 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 4 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 3 0 -> 0 0 14 | Relationship fr 3 0 -> 4 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship co 4 0 -> 0 0 17 | (PA 0 0) = 2 18 | Forbidden 19 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/rfi015.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 2 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 3 0 -> 4 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 2 0 -> 3 0 14 | Relationship fr 5 0 -> 0 0 15 | Relationship po 3 0 -> 5 0 16 | Forbidden 17 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/rwc-unfenced.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 2 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 7 | Relationship rf 0 0 -> 1 0 8 | Relationship po 1 0 -> 2 0 9 | Relationship po 3 0 -> 4 0 10 | Relationship fr 2 0 -> 3 0 11 | Relationship fr 4 0 -> 0 0 12 | Forbidden 13 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe000.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 5 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 2 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 5 0 -> 0 0 9 | Relationship rf 1 0 -> 2 0 10 | Relationship rf 3 0 -> 4 0 11 | Relationship po 0 0 -> 1 0 12 | Relationship po 2 0 -> 3 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 0 0 -> 1 0 15 | Relationship co 5 0 -> 1 0 16 | (PA 0 0) = 2 17 | Forbidden 18 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe001.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 2 0 0 (Read (VA 1 0) (PA 1 0) (Data 2)) 7 | 5 2 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 2 0 -> 3 0 14 | Relationship co 1 0 -> 3 0 15 | Relationship co 5 0 -> 0 0 16 | (PA 0 0) = 2 17 | (PA 1 0) = 2 18 | Forbidden 19 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe002.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 2 0 0 (Read (VA 1 0) (PA 1 0) (Data 2)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 2 0 -> 3 0 14 | Relationship fr 5 0 -> 0 0 15 | Relationship co 1 0 -> 3 0 16 | (PA 1 0) = 2 17 | Forbidden 18 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe003.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship rf 3 0 -> 5 0 11 | Relationship po 0 0 -> 1 0 12 | Relationship po 2 0 -> 3 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 4 0 -> 0 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship co 3 0 -> 0 0 17 | (PA 0 0) = 2 18 | Forbidden 19 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe004.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 3 0 -> 4 0 9 | Relationship rf 3 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 4 0 -> 0 0 14 | Relationship fr 5 0 -> 0 0 15 | Relationship co 1 0 -> 2 0 16 | Relationship co 3 0 -> 0 0 17 | (PA 0 0) = 2 18 | (PA 1 0) = 2 19 | Forbidden 20 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe006.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 6 | Relationship rf 3 0 -> 0 0 7 | Relationship rf 1 0 -> 2 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Forbidden 11 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe007.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 5 0 -> 0 0 9 | Relationship rf 1 0 -> 2 0 10 | Relationship rf 3 0 -> 4 0 11 | Relationship po 0 0 -> 1 0 12 | Relationship po 2 0 -> 3 0 13 | Relationship po 4 0 -> 5 0 14 | Forbidden 15 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe008.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship co 5 0 -> 0 0 14 | (PA 0 0) = 2 15 | Forbidden 16 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe009.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 7 | Relationship rf 0 0 -> 1 0 8 | Relationship rf 2 0 -> 3 0 9 | Relationship po 1 0 -> 2 0 10 | Relationship po 3 0 -> 4 0 11 | Relationship co 4 0 -> 0 0 12 | (PA 0 0) = 2 13 | Forbidden 14 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe010.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 6 | Relationship rf 1 0 -> 2 0 7 | Relationship po 0 0 -> 1 0 8 | Relationship po 2 0 -> 3 0 9 | Relationship co 3 0 -> 0 0 10 | (PA 0 0) = 2 11 | Forbidden 12 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe011.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 3 0 -> 4 0 9 | Relationship po 0 0 -> 1 0 10 | Relationship po 2 0 -> 3 0 11 | Relationship po 4 0 -> 5 0 12 | Relationship co 1 0 -> 2 0 13 | Relationship co 5 0 -> 0 0 14 | (PA 0 0) = 2 15 | (PA 1 0) = 2 16 | Forbidden 17 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe012.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 5 0 -> 0 0 14 | Forbidden 15 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe014.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 5 | 3 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 5 0 -> 0 0 14 | Relationship fr 5 0 -> 1 0 15 | Relationship co 0 0 -> 1 0 16 | (PA 0 0) = 2 17 | Forbidden 18 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe016.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 3 0 0 (Read (VA 1 0) (PA 1 0) (Data 2)) 7 | 5 3 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 4 0 -> 5 0 12 | Relationship co 2 0 -> 3 0 13 | Relationship co 5 0 -> 0 0 14 | (PA 0 0) = 2 15 | (PA 1 0) = 2 16 | Forbidden 17 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe017.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 2 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 7 | Relationship rf 0 0 -> 1 0 8 | Relationship po 1 0 -> 2 0 9 | Relationship po 3 0 -> 4 0 10 | Relationship co 2 0 -> 3 0 11 | Relationship co 4 0 -> 0 0 12 | (PA 0 0) = 2 13 | (PA 1 0) = 2 14 | Forbidden 15 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe018.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 7 | Relationship rf 0 0 -> 1 0 8 | Relationship rf 2 0 -> 3 0 9 | Relationship po 1 0 -> 2 0 10 | Relationship po 3 0 -> 4 0 11 | Relationship fr 4 0 -> 0 0 12 | Forbidden 13 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe019.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 2 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 3 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 3 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 4 0 -> 5 0 12 | Relationship fr 2 0 -> 3 0 13 | Relationship co 5 0 -> 0 0 14 | (PA 0 0) = 2 15 | Forbidden 16 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe021.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 3 0 -> 4 0 9 | Relationship po 0 0 -> 1 0 10 | Relationship po 2 0 -> 3 0 11 | Relationship po 4 0 -> 5 0 12 | Relationship fr 5 0 -> 0 0 13 | Relationship co 1 0 -> 2 0 14 | (PA 1 0) = 2 15 | Forbidden 16 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe022.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 6 | Relationship rf 1 0 -> 2 0 7 | Relationship po 0 0 -> 1 0 8 | Relationship po 2 0 -> 3 0 9 | Relationship fr 3 0 -> 0 0 10 | Forbidden 11 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe026.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 2 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 7 | Relationship rf 0 0 -> 1 0 8 | Relationship po 1 0 -> 2 0 9 | Relationship po 3 0 -> 4 0 10 | Relationship fr 2 0 -> 3 0 11 | Relationship co 4 0 -> 0 0 12 | (PA 0 0) = 2 13 | Forbidden 14 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe027.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Read (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 2 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 3 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 3 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 4 0 -> 5 0 12 | Relationship fr 2 0 -> 3 0 13 | Relationship fr 5 0 -> 0 0 14 | Forbidden 15 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe029.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 6 | Relationship po 0 0 -> 1 0 7 | Relationship po 2 0 -> 3 0 8 | Relationship co 1 0 -> 2 0 9 | Relationship co 3 0 -> 0 0 10 | (PA 0 0) = 2 11 | (PA 1 0) = 2 12 | Forbidden 13 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/safe030.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Write (VA 2 0) (PA 2 0) (Data 2)) 7 | 5 2 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship po 4 0 -> 5 0 11 | Relationship co 1 0 -> 2 0 12 | Relationship co 3 0 -> 4 0 13 | Relationship co 5 0 -> 0 0 14 | (PA 0 0) = 2 15 | (PA 1 0) = 2 16 | (PA 2 0) = 2 17 | Forbidden 18 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/sb.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | Relationship po 0 0 -> 1 0 7 | Relationship po 2 0 -> 3 0 8 | Relationship fr 1 0 -> 2 0 9 | Relationship fr 3 0 -> 0 0 10 | Forbidden 11 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/ssl.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 5 | Relationship rf 0 0 -> 2 0 6 | Relationship po 0 0 -> 1 0 7 | Relationship po 1 0 -> 2 0 8 | Relationship fr 2 0 -> 1 0 9 | Relationship co 0 0 -> 1 0 10 | Relationship po 0 0 -> 2 0 11 | Alternative 12 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 13 | 1 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 2)) 14 | 2 0 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 15 | Relationship rf 0 0 -> 2 0 16 | Relationship po 0 0 -> 1 0 17 | Relationship po 1 0 -> 2 0 18 | Relationship co 1 0 -> 0 0 19 | Relationship po 0 0 -> 2 0 20 | Forbidden 21 | -------------------------------------------------------------------------------- /tests/rtlcheck/SC/wrc.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Write (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Read (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read (VA 0 0) (PA 0 0) (Data 0)) 7 | Relationship rf 0 0 -> 1 0 8 | Relationship rf 2 0 -> 3 0 9 | Relationship po 1 0 -> 2 0 10 | Relationship po 3 0 -> 4 0 11 | Relationship fr 4 0 -> 0 0 12 | Forbidden 13 | -------------------------------------------------------------------------------- /tests/x86tso/amd10.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | 6 0 0 0 (Fence MFENCE) 9 | 9 1 0 0 (Fence MFENCE) 10 | Relationship po 0 0 -> 6 0 11 | Relationship po 3 0 -> 9 0 12 | Relationship po 6 0 -> 1 0 13 | Relationship po 9 0 -> 4 0 14 | Relationship rf 0 0 -> 1 0 15 | Relationship rf 3 0 -> 4 0 16 | Relationship po 0 0 -> 1 0 17 | Relationship po 1 0 -> 2 0 18 | Relationship po 3 0 -> 4 0 19 | Relationship po 4 0 -> 5 0 20 | Relationship mfence 0 0 -> 1 0 21 | Relationship mfence 0 0 -> 2 0 22 | Relationship mfence 3 0 -> 4 0 23 | Relationship mfence 3 0 -> 5 0 24 | Relationship fr 2 0 -> 3 0 25 | Relationship fr 5 0 -> 0 0 26 | Relationship po 0 0 -> 2 0 27 | Relationship po 6 0 -> 2 0 28 | Relationship po 3 0 -> 5 0 29 | Relationship po 9 0 -> 5 0 30 | Alternative 31 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 32 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 33 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 34 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 35 | 4 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 36 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 37 | 6 0 0 0 (Fence MFENCE) 38 | 9 1 0 0 (Fence MFENCE) 39 | Relationship po 0 0 -> 6 0 40 | Relationship po 3 0 -> 9 0 41 | Relationship po 6 0 -> 1 0 42 | Relationship po 9 0 -> 4 0 43 | Relationship rf 0 0 -> 1 0 44 | Relationship po 0 0 -> 1 0 45 | Relationship po 1 0 -> 2 0 46 | Relationship po 3 0 -> 4 0 47 | Relationship po 4 0 -> 5 0 48 | Relationship mfence 0 0 -> 1 0 49 | Relationship mfence 0 0 -> 2 0 50 | Relationship mfence 3 0 -> 4 0 51 | Relationship mfence 3 0 -> 5 0 52 | Relationship fr 2 0 -> 3 0 53 | Relationship fr 4 0 -> 3 0 54 | Relationship fr 5 0 -> 0 0 55 | Relationship po 0 0 -> 2 0 56 | Relationship po 6 0 -> 2 0 57 | Relationship po 3 0 -> 5 0 58 | Relationship po 9 0 -> 5 0 59 | Alternative 60 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 61 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 62 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 63 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 64 | 4 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 65 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 66 | 6 0 0 0 (Fence MFENCE) 67 | 9 1 0 0 (Fence MFENCE) 68 | Relationship po 0 0 -> 6 0 69 | Relationship po 3 0 -> 9 0 70 | Relationship po 6 0 -> 1 0 71 | Relationship po 9 0 -> 4 0 72 | Relationship rf 3 0 -> 4 0 73 | Relationship po 0 0 -> 1 0 74 | Relationship po 1 0 -> 2 0 75 | Relationship po 3 0 -> 4 0 76 | Relationship po 4 0 -> 5 0 77 | Relationship mfence 0 0 -> 1 0 78 | Relationship mfence 0 0 -> 2 0 79 | Relationship mfence 3 0 -> 4 0 80 | Relationship mfence 3 0 -> 5 0 81 | Relationship fr 1 0 -> 0 0 82 | Relationship fr 2 0 -> 3 0 83 | Relationship fr 5 0 -> 0 0 84 | Relationship po 0 0 -> 2 0 85 | Relationship po 6 0 -> 2 0 86 | Relationship po 3 0 -> 5 0 87 | Relationship po 9 0 -> 5 0 88 | Alternative 89 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 90 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 91 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 92 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 93 | 4 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 94 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 95 | 6 0 0 0 (Fence MFENCE) 96 | 9 1 0 0 (Fence MFENCE) 97 | Relationship po 0 0 -> 6 0 98 | Relationship po 3 0 -> 9 0 99 | Relationship po 6 0 -> 1 0 100 | Relationship po 9 0 -> 4 0 101 | Relationship po 0 0 -> 1 0 102 | Relationship po 1 0 -> 2 0 103 | Relationship po 3 0 -> 4 0 104 | Relationship po 4 0 -> 5 0 105 | Relationship mfence 0 0 -> 1 0 106 | Relationship mfence 0 0 -> 2 0 107 | Relationship mfence 3 0 -> 4 0 108 | Relationship mfence 3 0 -> 5 0 109 | Relationship fr 1 0 -> 0 0 110 | Relationship fr 2 0 -> 3 0 111 | Relationship fr 4 0 -> 3 0 112 | Relationship fr 5 0 -> 0 0 113 | Relationship po 0 0 -> 2 0 114 | Relationship po 6 0 -> 2 0 115 | Relationship po 3 0 -> 5 0 116 | Relationship po 9 0 -> 5 0 117 | Forbidden 118 | -------------------------------------------------------------------------------- /tests/x86tso/amd3.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 7 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 3 0 -> 2 0 9 | Relationship rf 0 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 2 0 -> 4 0 15 | Relationship fr 5 0 -> 1 0 16 | Relationship co 0 0 -> 1 0 17 | Relationship co 3 0 -> 4 0 18 | Relationship po 0 0 -> 2 0 19 | Relationship po 3 0 -> 5 0 20 | Alternative 21 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 22 | 1 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 23 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 24 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 25 | 4 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 26 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 27 | Relationship rf 3 0 -> 2 0 28 | Relationship rf 0 0 -> 5 0 29 | Relationship po 0 0 -> 1 0 30 | Relationship po 1 0 -> 2 0 31 | Relationship po 3 0 -> 4 0 32 | Relationship po 4 0 -> 5 0 33 | Relationship fr 5 0 -> 1 0 34 | Relationship co 0 0 -> 1 0 35 | Relationship co 4 0 -> 3 0 36 | Relationship po 0 0 -> 2 0 37 | Relationship po 3 0 -> 5 0 38 | Alternative 39 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 40 | 1 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 41 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 42 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 43 | 4 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 44 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 45 | Relationship rf 3 0 -> 2 0 46 | Relationship rf 0 0 -> 5 0 47 | Relationship po 0 0 -> 1 0 48 | Relationship po 1 0 -> 2 0 49 | Relationship po 3 0 -> 4 0 50 | Relationship po 4 0 -> 5 0 51 | Relationship fr 2 0 -> 4 0 52 | Relationship co 1 0 -> 0 0 53 | Relationship co 3 0 -> 4 0 54 | Relationship po 0 0 -> 2 0 55 | Relationship po 3 0 -> 5 0 56 | Alternative 57 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 58 | 1 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 59 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 60 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 61 | 4 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 62 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 63 | Relationship rf 3 0 -> 2 0 64 | Relationship rf 0 0 -> 5 0 65 | Relationship po 0 0 -> 1 0 66 | Relationship po 1 0 -> 2 0 67 | Relationship po 3 0 -> 4 0 68 | Relationship po 4 0 -> 5 0 69 | Relationship co 1 0 -> 0 0 70 | Relationship co 4 0 -> 3 0 71 | Relationship po 0 0 -> 2 0 72 | Relationship po 3 0 -> 5 0 73 | Permitted 74 | -------------------------------------------------------------------------------- /tests/x86tso/amd5.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | 4 0 0 0 (Fence MFENCE) 7 | 6 1 0 0 (Fence MFENCE) 8 | Relationship po 0 0 -> 4 0 9 | Relationship po 2 0 -> 6 0 10 | Relationship po 4 0 -> 1 0 11 | Relationship po 6 0 -> 3 0 12 | Relationship po 0 0 -> 1 0 13 | Relationship po 2 0 -> 3 0 14 | Relationship mfence 0 0 -> 1 0 15 | Relationship mfence 2 0 -> 3 0 16 | Relationship fr 1 0 -> 2 0 17 | Relationship fr 3 0 -> 0 0 18 | Forbidden 19 | -------------------------------------------------------------------------------- /tests/x86tso/co-iriw.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 5 | 3 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 6 | 4 3 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 7 | 5 3 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 0 0 -> 2 0 9 | Relationship rf 1 0 -> 3 0 10 | Relationship rf 1 0 -> 4 0 11 | Relationship rf 0 0 -> 5 0 12 | Relationship po 2 0 -> 3 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 2 0 -> 1 0 15 | Relationship fr 5 0 -> 1 0 16 | Relationship co 0 0 -> 1 0 17 | Alternative 18 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 19 | 1 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 20 | 2 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 21 | 3 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 22 | 4 3 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 23 | 5 3 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 24 | Relationship rf 0 0 -> 2 0 25 | Relationship rf 1 0 -> 3 0 26 | Relationship rf 1 0 -> 4 0 27 | Relationship rf 0 0 -> 5 0 28 | Relationship po 2 0 -> 3 0 29 | Relationship po 4 0 -> 5 0 30 | Relationship fr 3 0 -> 0 0 31 | Relationship fr 4 0 -> 0 0 32 | Relationship co 1 0 -> 0 0 33 | Forbidden 34 | -------------------------------------------------------------------------------- /tests/x86tso/co-mp.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 6 | Relationship rf 1 0 -> 2 0 7 | Relationship rf 0 0 -> 3 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship fr 3 0 -> 1 0 11 | Relationship co 0 0 -> 1 0 12 | (PA 0 0) = 2 13 | Forbidden 14 | -------------------------------------------------------------------------------- /tests/x86tso/iriw.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 5 | 3 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 6 | 4 3 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 3 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 2 0 9 | Relationship rf 1 0 -> 4 0 10 | Relationship po 2 0 -> 3 0 11 | Relationship po 4 0 -> 5 0 12 | Relationship fr 3 0 -> 1 0 13 | Relationship fr 5 0 -> 0 0 14 | Forbidden 15 | -------------------------------------------------------------------------------- /tests/x86tso/iwp23b.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 6 | Relationship rf 0 0 -> 1 0 7 | Relationship rf 2 0 -> 3 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Alternative 11 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 12 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 13 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 14 | 3 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 15 | Relationship rf 0 0 -> 1 0 16 | Relationship po 0 0 -> 1 0 17 | Relationship po 2 0 -> 3 0 18 | Relationship fr 3 0 -> 2 0 19 | Alternative 20 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 21 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 22 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 23 | 3 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 24 | Relationship rf 2 0 -> 3 0 25 | Relationship po 0 0 -> 1 0 26 | Relationship po 2 0 -> 3 0 27 | Relationship fr 1 0 -> 0 0 28 | Required 29 | -------------------------------------------------------------------------------- /tests/x86tso/iwp24.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 2 0 -> 3 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship po 0 0 -> 2 0 17 | Relationship po 3 0 -> 5 0 18 | Alternative 19 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 20 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 21 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 22 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 23 | 4 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 24 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 25 | Relationship rf 0 0 -> 1 0 26 | Relationship po 0 0 -> 1 0 27 | Relationship po 1 0 -> 2 0 28 | Relationship po 3 0 -> 4 0 29 | Relationship po 4 0 -> 5 0 30 | Relationship fr 2 0 -> 3 0 31 | Relationship fr 4 0 -> 3 0 32 | Relationship fr 5 0 -> 0 0 33 | Relationship po 0 0 -> 2 0 34 | Relationship po 3 0 -> 5 0 35 | Alternative 36 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 37 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 38 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 39 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 40 | 4 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 41 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 42 | Relationship rf 3 0 -> 4 0 43 | Relationship po 0 0 -> 1 0 44 | Relationship po 1 0 -> 2 0 45 | Relationship po 3 0 -> 4 0 46 | Relationship po 4 0 -> 5 0 47 | Relationship fr 1 0 -> 0 0 48 | Relationship fr 2 0 -> 3 0 49 | Relationship fr 5 0 -> 0 0 50 | Relationship po 0 0 -> 2 0 51 | Relationship po 3 0 -> 5 0 52 | Alternative 53 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 54 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 55 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 56 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 57 | 4 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 58 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 59 | Relationship po 0 0 -> 1 0 60 | Relationship po 1 0 -> 2 0 61 | Relationship po 3 0 -> 4 0 62 | Relationship po 4 0 -> 5 0 63 | Relationship fr 1 0 -> 0 0 64 | Relationship fr 2 0 -> 3 0 65 | Relationship fr 4 0 -> 3 0 66 | Relationship fr 5 0 -> 0 0 67 | Relationship po 0 0 -> 2 0 68 | Relationship po 3 0 -> 5 0 69 | Permitted 70 | -------------------------------------------------------------------------------- /tests/x86tso/iwp24a.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 2 0 -> 3 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship po 0 0 -> 2 0 17 | Relationship po 3 0 -> 5 0 18 | Permitted 19 | -------------------------------------------------------------------------------- /tests/x86tso/iwp27.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Read RMW (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write RMW (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 8 | 6 3 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 9 | 7 3 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 10 | Relationship iico_control 0 0 -> 1 0 11 | Relationship iico_control 2 0 -> 3 0 12 | Relationship rf 1 0 -> 0 0 13 | Relationship rf 3 0 -> 2 0 14 | Relationship rf 1 0 -> 4 0 15 | Relationship rf 3 0 -> 6 0 16 | Relationship po 0 0 -> 1 0 17 | Relationship po 2 0 -> 3 0 18 | Relationship po 4 0 -> 5 0 19 | Relationship po 6 0 -> 7 0 20 | Relationship fr 5 0 -> 3 0 21 | Relationship fr 7 0 -> 1 0 22 | Alternative 23 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 24 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 25 | 2 1 0 0 (Read RMW (VA 1 0) (PA 1 0) (Data 0)) 26 | 3 1 0 0 (Write RMW (VA 1 0) (PA 1 0) (Data 1)) 27 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 28 | 5 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 29 | 6 3 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 30 | 7 3 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 31 | Relationship iico_control 0 0 -> 1 0 32 | Relationship iico_control 2 0 -> 3 0 33 | Relationship rf 1 0 -> 0 0 34 | Relationship rf 1 0 -> 4 0 35 | Relationship rf 3 0 -> 6 0 36 | Relationship po 0 0 -> 1 0 37 | Relationship po 2 0 -> 3 0 38 | Relationship po 4 0 -> 5 0 39 | Relationship po 6 0 -> 7 0 40 | Relationship fr 2 0 -> 3 0 41 | Relationship fr 5 0 -> 3 0 42 | Relationship fr 7 0 -> 1 0 43 | Alternative 44 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 45 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 46 | 2 1 0 0 (Read RMW (VA 1 0) (PA 1 0) (Data 1)) 47 | 3 1 0 0 (Write RMW (VA 1 0) (PA 1 0) (Data 1)) 48 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 49 | 5 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 50 | 6 3 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 51 | 7 3 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 52 | Relationship iico_control 0 0 -> 1 0 53 | Relationship iico_control 2 0 -> 3 0 54 | Relationship rf 3 0 -> 2 0 55 | Relationship rf 1 0 -> 4 0 56 | Relationship rf 3 0 -> 6 0 57 | Relationship po 0 0 -> 1 0 58 | Relationship po 2 0 -> 3 0 59 | Relationship po 4 0 -> 5 0 60 | Relationship po 6 0 -> 7 0 61 | Relationship fr 0 0 -> 1 0 62 | Relationship fr 5 0 -> 3 0 63 | Relationship fr 7 0 -> 1 0 64 | Alternative 65 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 66 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 67 | 2 1 0 0 (Read RMW (VA 1 0) (PA 1 0) (Data 0)) 68 | 3 1 0 0 (Write RMW (VA 1 0) (PA 1 0) (Data 1)) 69 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 70 | 5 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 71 | 6 3 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 72 | 7 3 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 73 | Relationship iico_control 0 0 -> 1 0 74 | Relationship iico_control 2 0 -> 3 0 75 | Relationship rf 1 0 -> 4 0 76 | Relationship rf 3 0 -> 6 0 77 | Relationship po 0 0 -> 1 0 78 | Relationship po 2 0 -> 3 0 79 | Relationship po 4 0 -> 5 0 80 | Relationship po 6 0 -> 7 0 81 | Relationship fr 0 0 -> 1 0 82 | Relationship fr 2 0 -> 3 0 83 | Relationship fr 5 0 -> 3 0 84 | Relationship fr 7 0 -> 1 0 85 | Forbidden 86 | -------------------------------------------------------------------------------- /tests/x86tso/iwp28a.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 1 0 0 (Read RMW (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Write RMW (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship iico_control 0 0 -> 1 0 9 | Relationship iico_control 3 0 -> 4 0 10 | Relationship rf 1 0 -> 0 0 11 | Relationship rf 4 0 -> 3 0 12 | Relationship po 0 0 -> 1 0 13 | Relationship po 1 0 -> 2 0 14 | Relationship po 3 0 -> 4 0 15 | Relationship po 4 0 -> 5 0 16 | Relationship implied 1 0 -> 2 0 17 | Relationship implied 4 0 -> 5 0 18 | Relationship fr 2 0 -> 4 0 19 | Relationship fr 5 0 -> 1 0 20 | Relationship po 0 0 -> 2 0 21 | Relationship po 3 0 -> 5 0 22 | Alternative 23 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 24 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 25 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 26 | 3 1 0 0 (Read RMW (VA 1 0) (PA 1 0) (Data 0)) 27 | 4 1 0 0 (Write RMW (VA 1 0) (PA 1 0) (Data 1)) 28 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 29 | Relationship iico_control 0 0 -> 1 0 30 | Relationship iico_control 3 0 -> 4 0 31 | Relationship rf 1 0 -> 0 0 32 | Relationship po 0 0 -> 1 0 33 | Relationship po 1 0 -> 2 0 34 | Relationship po 3 0 -> 4 0 35 | Relationship po 4 0 -> 5 0 36 | Relationship implied 1 0 -> 2 0 37 | Relationship implied 4 0 -> 5 0 38 | Relationship fr 2 0 -> 4 0 39 | Relationship fr 3 0 -> 4 0 40 | Relationship fr 5 0 -> 1 0 41 | Relationship po 0 0 -> 2 0 42 | Relationship po 3 0 -> 5 0 43 | Alternative 44 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 45 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 46 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 47 | 3 1 0 0 (Read RMW (VA 1 0) (PA 1 0) (Data 1)) 48 | 4 1 0 0 (Write RMW (VA 1 0) (PA 1 0) (Data 1)) 49 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 50 | Relationship iico_control 0 0 -> 1 0 51 | Relationship iico_control 3 0 -> 4 0 52 | Relationship rf 4 0 -> 3 0 53 | Relationship po 0 0 -> 1 0 54 | Relationship po 1 0 -> 2 0 55 | Relationship po 3 0 -> 4 0 56 | Relationship po 4 0 -> 5 0 57 | Relationship implied 1 0 -> 2 0 58 | Relationship implied 4 0 -> 5 0 59 | Relationship fr 0 0 -> 1 0 60 | Relationship fr 2 0 -> 4 0 61 | Relationship fr 5 0 -> 1 0 62 | Relationship po 0 0 -> 2 0 63 | Relationship po 3 0 -> 5 0 64 | Alternative 65 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 66 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 67 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 68 | 3 1 0 0 (Read RMW (VA 1 0) (PA 1 0) (Data 0)) 69 | 4 1 0 0 (Write RMW (VA 1 0) (PA 1 0) (Data 1)) 70 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 71 | Relationship iico_control 0 0 -> 1 0 72 | Relationship iico_control 3 0 -> 4 0 73 | Relationship po 0 0 -> 1 0 74 | Relationship po 1 0 -> 2 0 75 | Relationship po 3 0 -> 4 0 76 | Relationship po 4 0 -> 5 0 77 | Relationship implied 1 0 -> 2 0 78 | Relationship implied 4 0 -> 5 0 79 | Relationship fr 0 0 -> 1 0 80 | Relationship fr 2 0 -> 4 0 81 | Relationship fr 3 0 -> 4 0 82 | Relationship fr 5 0 -> 1 0 83 | Relationship po 0 0 -> 2 0 84 | Relationship po 3 0 -> 5 0 85 | Forbidden 86 | -------------------------------------------------------------------------------- /tests/x86tso/iwp28b.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 7 | Relationship iico_control 0 0 -> 1 0 8 | Relationship rf 1 0 -> 0 0 9 | Relationship rf 2 0 -> 3 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship fr 4 0 -> 1 0 14 | Relationship po 0 0 -> 2 0 15 | Alternative 16 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 17 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 18 | 2 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 19 | 3 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 20 | 4 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 21 | Relationship iico_control 0 0 -> 1 0 22 | Relationship rf 2 0 -> 3 0 23 | Relationship po 0 0 -> 1 0 24 | Relationship po 1 0 -> 2 0 25 | Relationship po 3 0 -> 4 0 26 | Relationship fr 0 0 -> 1 0 27 | Relationship fr 4 0 -> 1 0 28 | Relationship po 0 0 -> 2 0 29 | Forbidden 30 | -------------------------------------------------------------------------------- /tests/x86tso/lb.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 6 | Relationship rf 3 0 -> 0 0 7 | Relationship rf 1 0 -> 2 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Forbidden 11 | -------------------------------------------------------------------------------- /tests/x86tso/mp+fences.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | 4 0 0 0 (Fence MFENCE) 7 | 6 1 0 0 (Fence MFENCE) 8 | Relationship po 0 0 -> 4 0 9 | Relationship po 2 0 -> 6 0 10 | Relationship po 4 0 -> 1 0 11 | Relationship po 6 0 -> 3 0 12 | Relationship rf 1 0 -> 2 0 13 | Relationship po 0 0 -> 1 0 14 | Relationship po 2 0 -> 3 0 15 | Relationship mfence 0 0 -> 1 0 16 | Relationship mfence 2 0 -> 3 0 17 | Relationship fr 3 0 -> 0 0 18 | Forbidden 19 | -------------------------------------------------------------------------------- /tests/x86tso/mp+staleld.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 5 | 3 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 7 | Relationship rf 1 0 -> 3 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship po 3 0 -> 4 0 11 | Relationship fr 2 0 -> 0 0 12 | Relationship fr 4 0 -> 0 0 13 | Relationship po 2 0 -> 4 0 14 | Forbidden 15 | -------------------------------------------------------------------------------- /tests/x86tso/mp.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | Relationship rf 1 0 -> 2 0 7 | Relationship po 0 0 -> 1 0 8 | Relationship po 2 0 -> 3 0 9 | Relationship fr 3 0 -> 0 0 10 | Forbidden 11 | -------------------------------------------------------------------------------- /tests/x86tso/n1.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 8 | Relationship rf 3 0 -> 4 0 9 | Relationship rf 0 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 1 0 -> 2 0 14 | Relationship fr 5 0 -> 3 0 15 | Relationship co 0 0 -> 3 0 16 | Alternative 17 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 18 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 19 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 20 | 3 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 21 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 22 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 23 | Relationship rf 3 0 -> 4 0 24 | Relationship rf 0 0 -> 5 0 25 | Relationship po 0 0 -> 1 0 26 | Relationship po 2 0 -> 3 0 27 | Relationship po 4 0 -> 5 0 28 | Relationship fr 1 0 -> 2 0 29 | Relationship fr 4 0 -> 0 0 30 | Relationship co 3 0 -> 0 0 31 | Permitted 32 | -------------------------------------------------------------------------------- /tests/x86tso/n2.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 5 | 3 1 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 8 | 6 3 0 0 (Read normal (VA 2 0) (PA 2 0) (Data 1)) 9 | 7 3 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 10 | Relationship rf 0 0 -> 4 0 11 | Relationship rf 2 0 -> 5 0 12 | Relationship rf 3 0 -> 6 0 13 | Relationship po 0 0 -> 1 0 14 | Relationship po 2 0 -> 3 0 15 | Relationship po 4 0 -> 5 0 16 | Relationship po 6 0 -> 7 0 17 | Relationship fr 4 0 -> 2 0 18 | Relationship fr 7 0 -> 1 0 19 | Relationship co 0 0 -> 2 0 20 | Alternative 21 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 22 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 23 | 2 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 24 | 3 1 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 25 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 26 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 27 | 6 3 0 0 (Read normal (VA 2 0) (PA 2 0) (Data 1)) 28 | 7 3 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 29 | Relationship rf 0 0 -> 4 0 30 | Relationship rf 2 0 -> 5 0 31 | Relationship rf 3 0 -> 6 0 32 | Relationship po 0 0 -> 1 0 33 | Relationship po 2 0 -> 3 0 34 | Relationship po 4 0 -> 5 0 35 | Relationship po 6 0 -> 7 0 36 | Relationship fr 5 0 -> 0 0 37 | Relationship fr 7 0 -> 1 0 38 | Relationship co 2 0 -> 0 0 39 | Required 40 | -------------------------------------------------------------------------------- /tests/x86tso/n3.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 7 | 5 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 8 | 6 3 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 9 | 7 3 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 10 | 8 3 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 11 | Relationship iico_control 0 0 -> 1 0 12 | Relationship rf 1 0 -> 0 0 13 | Relationship rf 1 0 -> 3 0 14 | Relationship rf 2 0 -> 5 0 15 | Relationship rf 2 0 -> 6 0 16 | Relationship rf 1 0 -> 8 0 17 | Relationship po 0 0 -> 1 0 18 | Relationship po 3 0 -> 4 0 19 | Relationship po 4 0 -> 5 0 20 | Relationship po 6 0 -> 7 0 21 | Relationship po 7 0 -> 8 0 22 | Relationship fr 4 0 -> 2 0 23 | Relationship fr 7 0 -> 1 0 24 | Relationship po 3 0 -> 5 0 25 | Relationship po 6 0 -> 8 0 26 | Alternative 27 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 28 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 29 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 30 | 3 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 31 | 4 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 32 | 5 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 33 | 6 3 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 34 | 7 3 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 35 | 8 3 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 36 | Relationship iico_control 0 0 -> 1 0 37 | Relationship rf 1 0 -> 3 0 38 | Relationship rf 2 0 -> 5 0 39 | Relationship rf 2 0 -> 6 0 40 | Relationship rf 1 0 -> 8 0 41 | Relationship po 0 0 -> 1 0 42 | Relationship po 3 0 -> 4 0 43 | Relationship po 4 0 -> 5 0 44 | Relationship po 6 0 -> 7 0 45 | Relationship po 7 0 -> 8 0 46 | Relationship fr 0 0 -> 1 0 47 | Relationship fr 4 0 -> 2 0 48 | Relationship fr 7 0 -> 1 0 49 | Relationship po 3 0 -> 5 0 50 | Relationship po 6 0 -> 8 0 51 | Forbidden 52 | -------------------------------------------------------------------------------- /tests/x86tso/n4.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 7 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 8 | Relationship rf 4 0 -> 0 0 9 | Relationship rf 1 0 -> 2 0 10 | Relationship rf 1 0 -> 3 0 11 | Relationship rf 4 0 -> 5 0 12 | Relationship po 0 0 -> 1 0 13 | Relationship po 1 0 -> 2 0 14 | Relationship po 3 0 -> 4 0 15 | Relationship po 4 0 -> 5 0 16 | Relationship fr 2 0 -> 4 0 17 | Relationship fr 3 0 -> 4 0 18 | Relationship co 1 0 -> 4 0 19 | Relationship po 0 0 -> 2 0 20 | Relationship po 3 0 -> 5 0 21 | Alternative 22 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 23 | 1 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 24 | 2 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 25 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 26 | 4 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 27 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 28 | Relationship rf 4 0 -> 0 0 29 | Relationship rf 1 0 -> 2 0 30 | Relationship rf 1 0 -> 3 0 31 | Relationship rf 4 0 -> 5 0 32 | Relationship po 0 0 -> 1 0 33 | Relationship po 1 0 -> 2 0 34 | Relationship po 3 0 -> 4 0 35 | Relationship po 4 0 -> 5 0 36 | Relationship fr 0 0 -> 1 0 37 | Relationship fr 5 0 -> 1 0 38 | Relationship co 4 0 -> 1 0 39 | Relationship po 0 0 -> 2 0 40 | Relationship po 3 0 -> 5 0 41 | Forbidden 42 | -------------------------------------------------------------------------------- /tests/x86tso/n5.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 6 | Relationship rf 2 0 -> 1 0 7 | Relationship rf 0 0 -> 3 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship fr 3 0 -> 2 0 11 | Relationship co 0 0 -> 2 0 12 | Alternative 13 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 14 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 15 | 2 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 16 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 17 | Relationship rf 2 0 -> 1 0 18 | Relationship rf 0 0 -> 3 0 19 | Relationship po 0 0 -> 1 0 20 | Relationship po 2 0 -> 3 0 21 | Relationship fr 1 0 -> 0 0 22 | Relationship co 2 0 -> 0 0 23 | Forbidden 24 | -------------------------------------------------------------------------------- /tests/x86tso/n6.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 7 | Relationship rf 0 0 -> 1 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 1 0 -> 2 0 10 | Relationship po 3 0 -> 4 0 11 | Relationship fr 2 0 -> 3 0 12 | Relationship co 4 0 -> 0 0 13 | Relationship po 0 0 -> 2 0 14 | (PA 0 0) = 1 15 | Permitted 16 | -------------------------------------------------------------------------------- /tests/x86tso/n7.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 2 0 -> 3 0 14 | Relationship fr 5 0 -> 0 0 15 | Relationship po 0 0 -> 2 0 16 | Permitted 17 | -------------------------------------------------------------------------------- /tests/x86tso/n8.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 7 | Relationship iico_control 0 0 -> 1 0 8 | Relationship rf 1 0 -> 0 0 9 | Relationship po 0 0 -> 1 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 3 0 -> 4 0 12 | Relationship implied 1 0 -> 2 0 13 | Relationship fr 2 0 -> 3 0 14 | Relationship fr 4 0 -> 1 0 15 | Relationship po 0 0 -> 2 0 16 | Alternative 17 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 18 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 19 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 20 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 21 | 4 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 22 | Relationship iico_control 0 0 -> 1 0 23 | Relationship po 0 0 -> 1 0 24 | Relationship po 1 0 -> 2 0 25 | Relationship po 3 0 -> 4 0 26 | Relationship implied 1 0 -> 2 0 27 | Relationship fr 0 0 -> 1 0 28 | Relationship fr 2 0 -> 3 0 29 | Relationship fr 4 0 -> 1 0 30 | Relationship po 0 0 -> 2 0 31 | Permitted 32 | -------------------------------------------------------------------------------- /tests/x86tso/podwr000.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | Relationship po 0 0 -> 1 0 7 | Relationship po 2 0 -> 3 0 8 | Relationship fr 1 0 -> 2 0 9 | Relationship fr 3 0 -> 0 0 10 | Permitted 11 | -------------------------------------------------------------------------------- /tests/x86tso/podwr001.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 2 0) (PA 2 0) (Data 0)) 6 | 4 2 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship po 4 0 -> 5 0 11 | Relationship fr 1 0 -> 2 0 12 | Relationship fr 3 0 -> 4 0 13 | Relationship fr 5 0 -> 0 0 14 | Permitted 15 | -------------------------------------------------------------------------------- /tests/x86tso/rfi000.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 4 0 -> 5 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 3 0 -> 4 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 5 0 -> 0 0 14 | Relationship co 2 0 -> 3 0 15 | Relationship co 4 0 -> 0 0 16 | Relationship po 3 0 -> 5 0 17 | (PA 0 0) = 2 18 | (PA 1 0) = 2 19 | Forbidden 20 | -------------------------------------------------------------------------------- /tests/x86tso/rfi001.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 7 | Relationship rf 3 0 -> 4 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship po 3 0 -> 4 0 11 | Relationship fr 4 0 -> 0 0 12 | Relationship co 1 0 -> 2 0 13 | Relationship co 3 0 -> 0 0 14 | Relationship po 2 0 -> 4 0 15 | (PA 0 0) = 2 16 | (PA 1 0) = 2 17 | Forbidden 18 | -------------------------------------------------------------------------------- /tests/x86tso/rfi002.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 3 0 -> 4 0 9 | Relationship rf 3 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 4 0 -> 0 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship co 1 0 -> 2 0 17 | Relationship co 3 0 -> 0 0 18 | Relationship po 2 0 -> 4 0 19 | Relationship po 2 0 -> 5 0 20 | Relationship po 3 0 -> 5 0 21 | (PA 0 0) = 2 22 | (PA 1 0) = 2 23 | Forbidden 24 | -------------------------------------------------------------------------------- /tests/x86tso/rfi003.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 1 0 0 (Read normal (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 3 0 -> 4 0 9 | Relationship po 0 0 -> 1 0 10 | Relationship po 2 0 -> 3 0 11 | Relationship po 3 0 -> 4 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 5 0 -> 0 0 14 | Relationship co 1 0 -> 2 0 15 | Relationship po 2 0 -> 4 0 16 | Relationship po 2 0 -> 5 0 17 | Relationship po 3 0 -> 5 0 18 | (PA 1 0) = 2 19 | Permitted 20 | -------------------------------------------------------------------------------- /tests/x86tso/rfi004.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 4 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 2 0 -> 3 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship co 1 0 -> 3 0 17 | Relationship co 4 0 -> 0 0 18 | Relationship po 0 0 -> 2 0 19 | Relationship po 3 0 -> 5 0 20 | (PA 0 0) = 2 21 | (PA 1 0) = 2 22 | Forbidden 23 | -------------------------------------------------------------------------------- /tests/x86tso/rfi005.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 4 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 2 0 -> 3 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship co 4 0 -> 0 0 17 | Relationship po 0 0 -> 2 0 18 | Relationship po 3 0 -> 5 0 19 | (PA 0 0) = 2 20 | Permitted 21 | -------------------------------------------------------------------------------- /tests/x86tso/rfi006.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 4 0 -> 5 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 3 0 -> 4 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 2 0 -> 3 0 14 | Relationship fr 5 0 -> 0 0 15 | Relationship co 4 0 -> 0 0 16 | Relationship po 3 0 -> 5 0 17 | (PA 0 0) = 2 18 | Forbidden 19 | -------------------------------------------------------------------------------- /tests/x86tso/rfi007.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 0 0 0 (Fence MFENCE) 8 | Relationship po 0 0 -> 5 0 9 | Relationship po 5 0 -> 1 0 10 | Relationship rf 3 0 -> 4 0 11 | Relationship po 0 0 -> 1 0 12 | Relationship po 2 0 -> 3 0 13 | Relationship po 3 0 -> 4 0 14 | Relationship mfence 0 0 -> 1 0 15 | Relationship fr 1 0 -> 2 0 16 | Relationship fr 4 0 -> 0 0 17 | Relationship co 3 0 -> 0 0 18 | Relationship po 2 0 -> 4 0 19 | (PA 0 0) = 2 20 | Forbidden 21 | -------------------------------------------------------------------------------- /tests/x86tso/rfi008.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | 6 0 0 0 (Fence MFENCE) 9 | Relationship po 0 0 -> 6 0 10 | Relationship po 6 0 -> 1 0 11 | Relationship rf 3 0 -> 4 0 12 | Relationship rf 3 0 -> 5 0 13 | Relationship po 0 0 -> 1 0 14 | Relationship po 2 0 -> 3 0 15 | Relationship po 3 0 -> 4 0 16 | Relationship po 4 0 -> 5 0 17 | Relationship mfence 0 0 -> 1 0 18 | Relationship fr 1 0 -> 2 0 19 | Relationship fr 4 0 -> 0 0 20 | Relationship fr 5 0 -> 0 0 21 | Relationship co 3 0 -> 0 0 22 | Relationship po 2 0 -> 4 0 23 | Relationship po 2 0 -> 5 0 24 | Relationship po 3 0 -> 5 0 25 | (PA 0 0) = 2 26 | Forbidden 27 | -------------------------------------------------------------------------------- /tests/x86tso/rfi009.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 1 0 0 (Read normal (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | 6 0 0 0 (Fence MFENCE) 9 | Relationship po 0 0 -> 6 0 10 | Relationship po 6 0 -> 1 0 11 | Relationship rf 3 0 -> 4 0 12 | Relationship po 0 0 -> 1 0 13 | Relationship po 2 0 -> 3 0 14 | Relationship po 3 0 -> 4 0 15 | Relationship po 4 0 -> 5 0 16 | Relationship mfence 0 0 -> 1 0 17 | Relationship fr 1 0 -> 2 0 18 | Relationship fr 5 0 -> 0 0 19 | Relationship po 2 0 -> 4 0 20 | Relationship po 2 0 -> 5 0 21 | Relationship po 3 0 -> 5 0 22 | Permitted 23 | -------------------------------------------------------------------------------- /tests/x86tso/rfi010.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 2)) 7 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | 6 0 0 0 (Fence MFENCE) 9 | Relationship po 0 0 -> 6 0 10 | Relationship po 6 0 -> 1 0 11 | Relationship rf 3 0 -> 4 0 12 | Relationship po 0 0 -> 1 0 13 | Relationship po 2 0 -> 3 0 14 | Relationship po 3 0 -> 4 0 15 | Relationship po 4 0 -> 5 0 16 | Relationship mfence 0 0 -> 1 0 17 | Relationship fr 1 0 -> 2 0 18 | Relationship fr 1 0 -> 3 0 19 | Relationship fr 5 0 -> 0 0 20 | Relationship co 2 0 -> 3 0 21 | Relationship po 2 0 -> 4 0 22 | Relationship po 2 0 -> 5 0 23 | Relationship po 3 0 -> 5 0 24 | (PA 1 0) = 2 25 | Permitted 26 | -------------------------------------------------------------------------------- /tests/x86tso/rfi011.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 2)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 3 0 -> 4 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 5 0 -> 0 0 14 | Relationship co 2 0 -> 3 0 15 | Relationship po 3 0 -> 5 0 16 | (PA 1 0) = 2 17 | Permitted 18 | -------------------------------------------------------------------------------- /tests/x86tso/rfi012.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 7 | Relationship rf 2 0 -> 3 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship po 3 0 -> 4 0 11 | Relationship fr 4 0 -> 0 0 12 | Relationship co 1 0 -> 2 0 13 | Relationship po 2 0 -> 4 0 14 | (PA 1 0) = 2 15 | Permitted 16 | -------------------------------------------------------------------------------- /tests/x86tso/rfi013.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 2 0 -> 3 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship po 0 0 -> 2 0 17 | Relationship po 3 0 -> 5 0 18 | Permitted 19 | -------------------------------------------------------------------------------- /tests/x86tso/rfi014.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | 4 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 4 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 3 0 -> 0 0 14 | Relationship fr 3 0 -> 4 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship co 4 0 -> 0 0 17 | (PA 0 0) = 2 18 | Forbidden 19 | -------------------------------------------------------------------------------- /tests/x86tso/rfi015.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 3 0 -> 4 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 2 0 -> 3 0 14 | Relationship fr 5 0 -> 0 0 15 | Relationship po 3 0 -> 5 0 16 | Permitted 17 | -------------------------------------------------------------------------------- /tests/x86tso/rfi016.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | 4 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | 6 1 0 0 (Fence MFENCE) 9 | Relationship po 2 0 -> 6 0 10 | Relationship po 6 0 -> 3 0 11 | Relationship rf 4 0 -> 5 0 12 | Relationship po 0 0 -> 1 0 13 | Relationship po 2 0 -> 3 0 14 | Relationship po 4 0 -> 5 0 15 | Relationship mfence 2 0 -> 3 0 16 | Relationship fr 3 0 -> 0 0 17 | Relationship fr 3 0 -> 4 0 18 | Relationship fr 5 0 -> 0 0 19 | Relationship co 1 0 -> 2 0 20 | Relationship co 4 0 -> 0 0 21 | (PA 0 0) = 2 22 | (PA 1 0) = 2 23 | Forbidden 24 | -------------------------------------------------------------------------------- /tests/x86tso/rfi017.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 7 | 5 0 0 0 (Fence MFENCE) 8 | Relationship po 0 0 -> 5 0 9 | Relationship po 5 0 -> 1 0 10 | Relationship rf 2 0 -> 3 0 11 | Relationship po 0 0 -> 1 0 12 | Relationship po 2 0 -> 3 0 13 | Relationship po 3 0 -> 4 0 14 | Relationship mfence 0 0 -> 1 0 15 | Relationship fr 1 0 -> 2 0 16 | Relationship fr 4 0 -> 0 0 17 | Relationship po 2 0 -> 4 0 18 | Permitted 19 | -------------------------------------------------------------------------------- /tests/x86tso/rfi018.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | 4 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | 6 0 0 0 (Fence MFENCE) 9 | 8 1 0 0 (Fence MFENCE) 10 | Relationship po 0 0 -> 6 0 11 | Relationship po 2 0 -> 8 0 12 | Relationship po 6 0 -> 1 0 13 | Relationship po 8 0 -> 3 0 14 | Relationship rf 4 0 -> 5 0 15 | Relationship po 0 0 -> 1 0 16 | Relationship po 2 0 -> 3 0 17 | Relationship po 4 0 -> 5 0 18 | Relationship mfence 0 0 -> 1 0 19 | Relationship mfence 2 0 -> 3 0 20 | Relationship fr 1 0 -> 2 0 21 | Relationship fr 3 0 -> 0 0 22 | Relationship fr 3 0 -> 4 0 23 | Relationship fr 5 0 -> 0 0 24 | Relationship co 4 0 -> 0 0 25 | (PA 0 0) = 2 26 | Forbidden 27 | -------------------------------------------------------------------------------- /tests/x86tso/rwc-fenced.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 7 | 7 2 0 0 (Fence MFENCE) 8 | Relationship po 3 0 -> 7 0 9 | Relationship po 7 0 -> 4 0 10 | Relationship rf 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship mfence 3 0 -> 4 0 14 | Relationship fr 2 0 -> 3 0 15 | Relationship fr 4 0 -> 0 0 16 | Forbidden 17 | -------------------------------------------------------------------------------- /tests/x86tso/rwc-unfenced.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 7 | Relationship rf 0 0 -> 1 0 8 | Relationship po 1 0 -> 2 0 9 | Relationship po 3 0 -> 4 0 10 | Relationship fr 2 0 -> 3 0 11 | Relationship fr 4 0 -> 0 0 12 | Permitted 13 | -------------------------------------------------------------------------------- /tests/x86tso/safe000.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 5 0 -> 0 0 9 | Relationship rf 1 0 -> 2 0 10 | Relationship rf 3 0 -> 4 0 11 | Relationship po 0 0 -> 1 0 12 | Relationship po 2 0 -> 3 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 0 0 -> 1 0 15 | Relationship co 5 0 -> 1 0 16 | (PA 0 0) = 2 17 | Forbidden 18 | -------------------------------------------------------------------------------- /tests/x86tso/safe001.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 2)) 7 | 5 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 2 0 -> 3 0 14 | Relationship co 1 0 -> 3 0 15 | Relationship co 5 0 -> 0 0 16 | (PA 0 0) = 2 17 | (PA 1 0) = 2 18 | Forbidden 19 | -------------------------------------------------------------------------------- /tests/x86tso/safe002.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 2)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 2 0 -> 3 0 14 | Relationship fr 5 0 -> 0 0 15 | Relationship co 1 0 -> 3 0 16 | (PA 1 0) = 2 17 | Forbidden 18 | -------------------------------------------------------------------------------- /tests/x86tso/safe003.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship rf 3 0 -> 5 0 11 | Relationship po 0 0 -> 1 0 12 | Relationship po 2 0 -> 3 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 4 0 -> 0 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship co 3 0 -> 0 0 17 | (PA 0 0) = 2 18 | Forbidden 19 | -------------------------------------------------------------------------------- /tests/x86tso/safe004.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 3 0 -> 4 0 9 | Relationship rf 3 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 4 0 -> 0 0 14 | Relationship fr 5 0 -> 0 0 15 | Relationship co 1 0 -> 2 0 16 | Relationship co 3 0 -> 0 0 17 | (PA 0 0) = 2 18 | (PA 1 0) = 2 19 | Forbidden 20 | -------------------------------------------------------------------------------- /tests/x86tso/safe005.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | 8 2 0 0 (Fence MFENCE) 9 | Relationship po 4 0 -> 8 0 10 | Relationship po 8 0 -> 5 0 11 | Relationship rf 1 0 -> 2 0 12 | Relationship rf 1 0 -> 3 0 13 | Relationship po 0 0 -> 1 0 14 | Relationship po 2 0 -> 3 0 15 | Relationship po 4 0 -> 5 0 16 | Relationship mfence 4 0 -> 5 0 17 | Relationship fr 2 0 -> 4 0 18 | Relationship fr 3 0 -> 4 0 19 | Relationship fr 5 0 -> 0 0 20 | Relationship co 1 0 -> 4 0 21 | (PA 1 0) = 2 22 | Forbidden 23 | -------------------------------------------------------------------------------- /tests/x86tso/safe006.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 6 | Relationship rf 3 0 -> 0 0 7 | Relationship rf 1 0 -> 2 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Forbidden 11 | -------------------------------------------------------------------------------- /tests/x86tso/safe007.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 5 0 -> 0 0 9 | Relationship rf 1 0 -> 2 0 10 | Relationship rf 3 0 -> 4 0 11 | Relationship po 0 0 -> 1 0 12 | Relationship po 2 0 -> 3 0 13 | Relationship po 4 0 -> 5 0 14 | Forbidden 15 | -------------------------------------------------------------------------------- /tests/x86tso/safe008.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship co 5 0 -> 0 0 14 | (PA 0 0) = 2 15 | Forbidden 16 | -------------------------------------------------------------------------------- /tests/x86tso/safe009.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 7 | Relationship rf 0 0 -> 1 0 8 | Relationship rf 2 0 -> 3 0 9 | Relationship po 1 0 -> 2 0 10 | Relationship po 3 0 -> 4 0 11 | Relationship co 4 0 -> 0 0 12 | (PA 0 0) = 2 13 | Forbidden 14 | -------------------------------------------------------------------------------- /tests/x86tso/safe010.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 6 | Relationship rf 1 0 -> 2 0 7 | Relationship po 0 0 -> 1 0 8 | Relationship po 2 0 -> 3 0 9 | Relationship co 3 0 -> 0 0 10 | (PA 0 0) = 2 11 | Forbidden 12 | -------------------------------------------------------------------------------- /tests/x86tso/safe011.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 3 0 -> 4 0 9 | Relationship po 0 0 -> 1 0 10 | Relationship po 2 0 -> 3 0 11 | Relationship po 4 0 -> 5 0 12 | Relationship co 1 0 -> 2 0 13 | Relationship co 5 0 -> 0 0 14 | (PA 0 0) = 2 15 | (PA 1 0) = 2 16 | Forbidden 17 | -------------------------------------------------------------------------------- /tests/x86tso/safe012.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 5 0 -> 0 0 14 | Forbidden 15 | -------------------------------------------------------------------------------- /tests/x86tso/safe013.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 2)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | 7 2 0 0 (Fence MFENCE) 9 | Relationship po 4 0 -> 7 0 10 | Relationship po 7 0 -> 5 0 11 | Relationship rf 1 0 -> 2 0 12 | Relationship po 0 0 -> 1 0 13 | Relationship po 2 0 -> 3 0 14 | Relationship po 4 0 -> 5 0 15 | Relationship mfence 4 0 -> 5 0 16 | Relationship fr 5 0 -> 0 0 17 | Relationship co 3 0 -> 4 0 18 | (PA 2 0) = 2 19 | Forbidden 20 | -------------------------------------------------------------------------------- /tests/x86tso/safe014.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 1 0 -> 2 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 2 0 -> 3 0 12 | Relationship po 4 0 -> 5 0 13 | Relationship fr 5 0 -> 0 0 14 | Relationship fr 5 0 -> 1 0 15 | Relationship co 0 0 -> 1 0 16 | (PA 0 0) = 2 17 | Forbidden 18 | -------------------------------------------------------------------------------- /tests/x86tso/safe015.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 5 | 3 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | 7 2 0 0 (Fence MFENCE) 9 | Relationship po 4 0 -> 7 0 10 | Relationship po 7 0 -> 5 0 11 | Relationship rf 1 0 -> 2 0 12 | Relationship po 0 0 -> 1 0 13 | Relationship po 2 0 -> 3 0 14 | Relationship po 4 0 -> 5 0 15 | Relationship mfence 4 0 -> 5 0 16 | Relationship fr 5 0 -> 0 0 17 | Relationship fr 5 0 -> 1 0 18 | Relationship co 0 0 -> 1 0 19 | Relationship co 3 0 -> 4 0 20 | (PA 0 0) = 2 21 | (PA 1 0) = 2 22 | Forbidden 23 | -------------------------------------------------------------------------------- /tests/x86tso/safe016.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 3 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 2)) 7 | 5 3 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 4 0 -> 5 0 12 | Relationship co 2 0 -> 3 0 13 | Relationship co 5 0 -> 0 0 14 | (PA 0 0) = 2 15 | (PA 1 0) = 2 16 | Forbidden 17 | -------------------------------------------------------------------------------- /tests/x86tso/safe017.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 7 | Relationship rf 0 0 -> 1 0 8 | Relationship po 1 0 -> 2 0 9 | Relationship po 3 0 -> 4 0 10 | Relationship co 2 0 -> 3 0 11 | Relationship co 4 0 -> 0 0 12 | (PA 0 0) = 2 13 | (PA 1 0) = 2 14 | Forbidden 15 | -------------------------------------------------------------------------------- /tests/x86tso/safe018.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 7 | Relationship rf 0 0 -> 1 0 8 | Relationship rf 2 0 -> 3 0 9 | Relationship po 1 0 -> 2 0 10 | Relationship po 3 0 -> 4 0 11 | Relationship fr 4 0 -> 0 0 12 | Forbidden 13 | -------------------------------------------------------------------------------- /tests/x86tso/safe019.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 3 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 3 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 4 0 -> 5 0 12 | Relationship fr 2 0 -> 3 0 13 | Relationship co 5 0 -> 0 0 14 | (PA 0 0) = 2 15 | Forbidden 16 | -------------------------------------------------------------------------------- /tests/x86tso/safe020.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 6 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 7 | 6 2 0 0 (Fence MFENCE) 8 | Relationship po 3 0 -> 6 0 9 | Relationship po 6 0 -> 4 0 10 | Relationship rf 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship mfence 3 0 -> 4 0 14 | Relationship fr 4 0 -> 0 0 15 | Relationship co 2 0 -> 3 0 16 | (PA 1 0) = 2 17 | Forbidden 18 | -------------------------------------------------------------------------------- /tests/x86tso/safe021.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 3 0 -> 4 0 9 | Relationship po 0 0 -> 1 0 10 | Relationship po 2 0 -> 3 0 11 | Relationship po 4 0 -> 5 0 12 | Relationship fr 5 0 -> 0 0 13 | Relationship co 1 0 -> 2 0 14 | (PA 1 0) = 2 15 | Forbidden 16 | -------------------------------------------------------------------------------- /tests/x86tso/safe022.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | Relationship rf 1 0 -> 2 0 7 | Relationship po 0 0 -> 1 0 8 | Relationship po 2 0 -> 3 0 9 | Relationship fr 3 0 -> 0 0 10 | Forbidden 11 | -------------------------------------------------------------------------------- /tests/x86tso/safe023.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | 4 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | 8 2 0 0 (Fence MFENCE) 9 | Relationship po 4 0 -> 8 0 10 | Relationship po 8 0 -> 5 0 11 | Relationship rf 1 0 -> 2 0 12 | Relationship rf 4 0 -> 5 0 13 | Relationship po 0 0 -> 1 0 14 | Relationship po 2 0 -> 3 0 15 | Relationship po 4 0 -> 5 0 16 | Relationship mfence 4 0 -> 5 0 17 | Relationship fr 3 0 -> 0 0 18 | Relationship fr 3 0 -> 4 0 19 | Relationship fr 5 0 -> 0 0 20 | Relationship co 4 0 -> 0 0 21 | (PA 0 0) = 2 22 | Forbidden 23 | -------------------------------------------------------------------------------- /tests/x86tso/safe024.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 2 0) (PA 2 0) (Data 0)) 6 | 4 2 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | 8 2 0 0 (Fence MFENCE) 9 | Relationship po 4 0 -> 8 0 10 | Relationship po 8 0 -> 5 0 11 | Relationship rf 1 0 -> 2 0 12 | Relationship po 0 0 -> 1 0 13 | Relationship po 2 0 -> 3 0 14 | Relationship po 4 0 -> 5 0 15 | Relationship mfence 4 0 -> 5 0 16 | Relationship fr 3 0 -> 4 0 17 | Relationship fr 5 0 -> 0 0 18 | Forbidden 19 | -------------------------------------------------------------------------------- /tests/x86tso/safe025.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 5 | 3 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 6 | 4 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | 8 2 0 0 (Fence MFENCE) 9 | Relationship po 4 0 -> 8 0 10 | Relationship po 8 0 -> 5 0 11 | Relationship rf 1 0 -> 2 0 12 | Relationship po 0 0 -> 1 0 13 | Relationship po 2 0 -> 3 0 14 | Relationship po 4 0 -> 5 0 15 | Relationship mfence 4 0 -> 5 0 16 | Relationship fr 3 0 -> 4 0 17 | Relationship fr 5 0 -> 0 0 18 | Relationship fr 5 0 -> 1 0 19 | Relationship co 0 0 -> 1 0 20 | (PA 0 0) = 2 21 | Forbidden 22 | -------------------------------------------------------------------------------- /tests/x86tso/safe026.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 7 | Relationship rf 0 0 -> 1 0 8 | Relationship po 1 0 -> 2 0 9 | Relationship po 3 0 -> 4 0 10 | Relationship fr 2 0 -> 3 0 11 | Relationship co 4 0 -> 0 0 12 | (PA 0 0) = 2 13 | Forbidden 14 | -------------------------------------------------------------------------------- /tests/x86tso/safe027.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 3 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 3 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | Relationship rf 0 0 -> 1 0 9 | Relationship rf 3 0 -> 4 0 10 | Relationship po 1 0 -> 2 0 11 | Relationship po 4 0 -> 5 0 12 | Relationship fr 2 0 -> 3 0 13 | Relationship fr 5 0 -> 0 0 14 | Forbidden 15 | -------------------------------------------------------------------------------- /tests/x86tso/safe028.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 5 | 3 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 7 | 7 2 0 0 (Fence MFENCE) 8 | Relationship po 3 0 -> 7 0 9 | Relationship po 7 0 -> 4 0 10 | Relationship rf 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship mfence 3 0 -> 4 0 14 | Relationship fr 2 0 -> 3 0 15 | Relationship fr 4 0 -> 0 0 16 | Forbidden 17 | -------------------------------------------------------------------------------- /tests/x86tso/safe029.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 6 | Relationship po 0 0 -> 1 0 7 | Relationship po 2 0 -> 3 0 8 | Relationship co 1 0 -> 2 0 9 | Relationship co 3 0 -> 0 0 10 | (PA 0 0) = 2 11 | (PA 1 0) = 2 12 | Forbidden 13 | -------------------------------------------------------------------------------- /tests/x86tso/safe030.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 2)) 7 | 5 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship po 4 0 -> 5 0 11 | Relationship co 1 0 -> 2 0 12 | Relationship co 3 0 -> 4 0 13 | Relationship co 5 0 -> 0 0 14 | (PA 0 0) = 2 15 | (PA 1 0) = 2 16 | (PA 2 0) = 2 17 | Forbidden 18 | -------------------------------------------------------------------------------- /tests/x86tso/safe031.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 6 | 4 2 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 2)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | 6 2 0 0 (Fence MFENCE) 9 | Relationship po 4 0 -> 6 0 10 | Relationship po 6 0 -> 5 0 11 | Relationship po 0 0 -> 1 0 12 | Relationship po 2 0 -> 3 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship mfence 4 0 -> 5 0 15 | Relationship fr 5 0 -> 0 0 16 | Relationship co 1 0 -> 2 0 17 | Relationship co 3 0 -> 4 0 18 | (PA 1 0) = 2 19 | (PA 2 0) = 2 20 | Forbidden 21 | -------------------------------------------------------------------------------- /tests/x86tso/safe032.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | 4 2 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 8 | 6 1 0 0 (Fence MFENCE) 9 | 8 2 0 0 (Fence MFENCE) 10 | Relationship po 2 0 -> 6 0 11 | Relationship po 4 0 -> 8 0 12 | Relationship po 6 0 -> 3 0 13 | Relationship po 8 0 -> 5 0 14 | Relationship rf 4 0 -> 5 0 15 | Relationship po 0 0 -> 1 0 16 | Relationship po 2 0 -> 3 0 17 | Relationship po 4 0 -> 5 0 18 | Relationship mfence 2 0 -> 3 0 19 | Relationship mfence 4 0 -> 5 0 20 | Relationship fr 3 0 -> 0 0 21 | Relationship fr 3 0 -> 4 0 22 | Relationship fr 5 0 -> 0 0 23 | Relationship co 1 0 -> 2 0 24 | Relationship co 4 0 -> 0 0 25 | (PA 0 0) = 2 26 | (PA 1 0) = 2 27 | Forbidden 28 | -------------------------------------------------------------------------------- /tests/x86tso/safe033.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | 4 1 0 0 (Fence MFENCE) 7 | Relationship po 2 0 -> 4 0 8 | Relationship po 4 0 -> 3 0 9 | Relationship po 0 0 -> 1 0 10 | Relationship po 2 0 -> 3 0 11 | Relationship mfence 2 0 -> 3 0 12 | Relationship fr 3 0 -> 0 0 13 | Relationship co 1 0 -> 2 0 14 | (PA 1 0) = 2 15 | Forbidden 16 | -------------------------------------------------------------------------------- /tests/x86tso/safe034.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 2)) 5 | 3 1 0 0 (Read normal (VA 2 0) (PA 2 0) (Data 0)) 6 | 4 2 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | 6 1 0 0 (Fence MFENCE) 9 | 8 2 0 0 (Fence MFENCE) 10 | Relationship po 2 0 -> 6 0 11 | Relationship po 4 0 -> 8 0 12 | Relationship po 6 0 -> 3 0 13 | Relationship po 8 0 -> 5 0 14 | Relationship po 0 0 -> 1 0 15 | Relationship po 2 0 -> 3 0 16 | Relationship po 4 0 -> 5 0 17 | Relationship mfence 2 0 -> 3 0 18 | Relationship mfence 4 0 -> 5 0 19 | Relationship fr 3 0 -> 4 0 20 | Relationship fr 5 0 -> 0 0 21 | Relationship co 1 0 -> 2 0 22 | (PA 1 0) = 2 23 | Forbidden 24 | -------------------------------------------------------------------------------- /tests/x86tso/safe035.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 5 | 3 1 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 6 | 4 2 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | 6 0 0 0 (Fence MFENCE) 9 | 8 1 0 0 (Fence MFENCE) 10 | 10 2 0 0 (Fence MFENCE) 11 | Relationship po 0 0 -> 6 0 12 | Relationship po 2 0 -> 8 0 13 | Relationship po 4 0 -> 10 0 14 | Relationship po 6 0 -> 1 0 15 | Relationship po 8 0 -> 3 0 16 | Relationship po 10 0 -> 5 0 17 | Relationship rf 0 0 -> 1 0 18 | Relationship po 0 0 -> 1 0 19 | Relationship po 2 0 -> 3 0 20 | Relationship po 4 0 -> 5 0 21 | Relationship mfence 0 0 -> 1 0 22 | Relationship mfence 2 0 -> 3 0 23 | Relationship mfence 4 0 -> 5 0 24 | Relationship fr 1 0 -> 2 0 25 | Relationship fr 3 0 -> 4 0 26 | Relationship fr 5 0 -> 0 0 27 | Relationship fr 5 0 -> 2 0 28 | Relationship co 0 0 -> 2 0 29 | (PA 0 0) = 2 30 | Forbidden 31 | -------------------------------------------------------------------------------- /tests/x86tso/safe036.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | 4 0 0 0 (Fence MFENCE) 7 | 6 1 0 0 (Fence MFENCE) 8 | Relationship po 0 0 -> 4 0 9 | Relationship po 2 0 -> 6 0 10 | Relationship po 4 0 -> 1 0 11 | Relationship po 6 0 -> 3 0 12 | Relationship po 0 0 -> 1 0 13 | Relationship po 2 0 -> 3 0 14 | Relationship mfence 0 0 -> 1 0 15 | Relationship mfence 2 0 -> 3 0 16 | Relationship fr 1 0 -> 2 0 17 | Relationship fr 3 0 -> 0 0 18 | Forbidden 19 | -------------------------------------------------------------------------------- /tests/x86tso/safe037.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 2 0) (PA 2 0) (Data 0)) 6 | 4 2 0 0 (Write normal (VA 2 0) (PA 2 0) (Data 1)) 7 | 5 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 8 | 6 0 0 0 (Fence MFENCE) 9 | 8 1 0 0 (Fence MFENCE) 10 | 10 2 0 0 (Fence MFENCE) 11 | Relationship po 0 0 -> 6 0 12 | Relationship po 2 0 -> 8 0 13 | Relationship po 4 0 -> 10 0 14 | Relationship po 6 0 -> 1 0 15 | Relationship po 8 0 -> 3 0 16 | Relationship po 10 0 -> 5 0 17 | Relationship po 0 0 -> 1 0 18 | Relationship po 2 0 -> 3 0 19 | Relationship po 4 0 -> 5 0 20 | Relationship mfence 0 0 -> 1 0 21 | Relationship mfence 2 0 -> 3 0 22 | Relationship mfence 4 0 -> 5 0 23 | Relationship fr 1 0 -> 2 0 24 | Relationship fr 3 0 -> 4 0 25 | Relationship fr 5 0 -> 0 0 26 | Forbidden 27 | -------------------------------------------------------------------------------- /tests/x86tso/sb.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 0)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | Relationship po 0 0 -> 1 0 7 | Relationship po 2 0 -> 3 0 8 | Relationship fr 1 0 -> 2 0 9 | Relationship fr 3 0 -> 0 0 10 | Permitted 11 | -------------------------------------------------------------------------------- /tests/x86tso/ssl.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 4 | 2 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 5 | Relationship rf 0 0 -> 2 0 6 | Relationship po 0 0 -> 1 0 7 | Relationship po 1 0 -> 2 0 8 | Relationship fr 2 0 -> 1 0 9 | Relationship co 0 0 -> 1 0 10 | Relationship po 0 0 -> 2 0 11 | Alternative 12 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 13 | 1 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 2)) 14 | 2 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 15 | Relationship rf 0 0 -> 2 0 16 | Relationship po 0 0 -> 1 0 17 | Relationship po 1 0 -> 2 0 18 | Relationship co 1 0 -> 0 0 19 | Relationship po 0 0 -> 2 0 20 | Forbidden 21 | -------------------------------------------------------------------------------- /tests/x86tso/testandset+earlyld.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 3 | 1 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 4 | 2 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | 4 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 7 | 5 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship iico_control 1 0 -> 2 0 9 | Relationship iico_control 4 0 -> 5 0 10 | Relationship po 0 0 -> 1 0 11 | Relationship po 1 0 -> 2 0 12 | Relationship po 3 0 -> 4 0 13 | Relationship po 4 0 -> 5 0 14 | Relationship fr 0 0 -> 2 0 15 | Relationship fr 0 0 -> 5 0 16 | Relationship fr 1 0 -> 2 0 17 | Relationship fr 1 0 -> 5 0 18 | Relationship fr 3 0 -> 2 0 19 | Relationship fr 3 0 -> 5 0 20 | Relationship fr 4 0 -> 2 0 21 | Relationship fr 4 0 -> 5 0 22 | Relationship co 2 0 -> 5 0 23 | Relationship po 0 0 -> 2 0 24 | Relationship po 3 0 -> 5 0 25 | Alternative 26 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 27 | 1 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 28 | 2 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 29 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 30 | 4 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 31 | 5 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 32 | Relationship iico_control 1 0 -> 2 0 33 | Relationship iico_control 4 0 -> 5 0 34 | Relationship po 0 0 -> 1 0 35 | Relationship po 1 0 -> 2 0 36 | Relationship po 3 0 -> 4 0 37 | Relationship po 4 0 -> 5 0 38 | Relationship fr 0 0 -> 2 0 39 | Relationship fr 0 0 -> 5 0 40 | Relationship fr 1 0 -> 2 0 41 | Relationship fr 1 0 -> 5 0 42 | Relationship fr 3 0 -> 2 0 43 | Relationship fr 3 0 -> 5 0 44 | Relationship fr 4 0 -> 2 0 45 | Relationship fr 4 0 -> 5 0 46 | Relationship co 5 0 -> 2 0 47 | Relationship po 0 0 -> 2 0 48 | Relationship po 3 0 -> 5 0 49 | Forbidden 50 | -------------------------------------------------------------------------------- /tests/x86tso/testandset.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 3 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 5 | 3 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 6 | Relationship iico_control 0 0 -> 1 0 7 | Relationship iico_control 2 0 -> 3 0 8 | Relationship po 0 0 -> 1 0 9 | Relationship po 2 0 -> 3 0 10 | Relationship fr 0 0 -> 1 0 11 | Relationship fr 0 0 -> 3 0 12 | Relationship fr 2 0 -> 1 0 13 | Relationship fr 2 0 -> 3 0 14 | Relationship co 1 0 -> 3 0 15 | Alternative 16 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 17 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 18 | 2 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 19 | 3 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 20 | Relationship iico_control 0 0 -> 1 0 21 | Relationship iico_control 2 0 -> 3 0 22 | Relationship po 0 0 -> 1 0 23 | Relationship po 2 0 -> 3 0 24 | Relationship fr 0 0 -> 1 0 25 | Relationship fr 0 0 -> 3 0 26 | Relationship fr 2 0 -> 1 0 27 | Relationship fr 2 0 -> 3 0 28 | Relationship co 3 0 -> 1 0 29 | Forbidden 30 | -------------------------------------------------------------------------------- /tests/x86tso/testandset2+earlyld.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 5 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 6 | 4 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 7 | 5 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 8 | Relationship iico_control 1 0 -> 2 0 9 | Relationship iico_control 4 0 -> 5 0 10 | Relationship rf 5 0 -> 0 0 11 | Relationship rf 5 0 -> 1 0 12 | Relationship po 0 0 -> 1 0 13 | Relationship po 1 0 -> 2 0 14 | Relationship po 3 0 -> 4 0 15 | Relationship po 4 0 -> 5 0 16 | Relationship fr 3 0 -> 2 0 17 | Relationship fr 3 0 -> 5 0 18 | Relationship fr 4 0 -> 2 0 19 | Relationship fr 4 0 -> 5 0 20 | Relationship co 2 0 -> 5 0 21 | Relationship po 0 0 -> 2 0 22 | Relationship po 3 0 -> 5 0 23 | Alternative 24 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 25 | 1 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 26 | 2 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 27 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 28 | 4 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 29 | 5 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 30 | Relationship iico_control 1 0 -> 2 0 31 | Relationship iico_control 4 0 -> 5 0 32 | Relationship rf 5 0 -> 0 0 33 | Relationship rf 5 0 -> 1 0 34 | Relationship po 0 0 -> 1 0 35 | Relationship po 1 0 -> 2 0 36 | Relationship po 3 0 -> 4 0 37 | Relationship po 4 0 -> 5 0 38 | Relationship fr 0 0 -> 2 0 39 | Relationship fr 1 0 -> 2 0 40 | Relationship fr 3 0 -> 2 0 41 | Relationship fr 3 0 -> 5 0 42 | Relationship fr 4 0 -> 2 0 43 | Relationship fr 4 0 -> 5 0 44 | Relationship co 5 0 -> 2 0 45 | Relationship po 0 0 -> 2 0 46 | Relationship po 3 0 -> 5 0 47 | Alternative 48 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 49 | 1 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 50 | 2 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 51 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 52 | 4 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 53 | 5 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 54 | Relationship iico_control 1 0 -> 2 0 55 | Relationship iico_control 4 0 -> 5 0 56 | Relationship rf 5 0 -> 0 0 57 | Relationship rf 2 0 -> 1 0 58 | Relationship po 0 0 -> 1 0 59 | Relationship po 1 0 -> 2 0 60 | Relationship po 3 0 -> 4 0 61 | Relationship po 4 0 -> 5 0 62 | Relationship fr 1 0 -> 5 0 63 | Relationship fr 3 0 -> 2 0 64 | Relationship fr 3 0 -> 5 0 65 | Relationship fr 4 0 -> 2 0 66 | Relationship fr 4 0 -> 5 0 67 | Relationship co 2 0 -> 5 0 68 | Relationship po 0 0 -> 2 0 69 | Relationship po 3 0 -> 5 0 70 | Alternative 71 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 72 | 1 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 73 | 2 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 74 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 75 | 4 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 76 | 5 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 77 | Relationship iico_control 1 0 -> 2 0 78 | Relationship iico_control 4 0 -> 5 0 79 | Relationship rf 5 0 -> 0 0 80 | Relationship rf 2 0 -> 1 0 81 | Relationship po 0 0 -> 1 0 82 | Relationship po 1 0 -> 2 0 83 | Relationship po 3 0 -> 4 0 84 | Relationship po 4 0 -> 5 0 85 | Relationship fr 0 0 -> 2 0 86 | Relationship fr 3 0 -> 2 0 87 | Relationship fr 3 0 -> 5 0 88 | Relationship fr 4 0 -> 2 0 89 | Relationship fr 4 0 -> 5 0 90 | Relationship co 5 0 -> 2 0 91 | Relationship po 0 0 -> 2 0 92 | Relationship po 3 0 -> 5 0 93 | Alternative 94 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 95 | 1 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 96 | 2 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 97 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 98 | 4 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 99 | 5 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 100 | Relationship iico_control 1 0 -> 2 0 101 | Relationship iico_control 4 0 -> 5 0 102 | Relationship rf 2 0 -> 0 0 103 | Relationship rf 5 0 -> 1 0 104 | Relationship po 0 0 -> 1 0 105 | Relationship po 1 0 -> 2 0 106 | Relationship po 3 0 -> 4 0 107 | Relationship po 4 0 -> 5 0 108 | Relationship fr 0 0 -> 5 0 109 | Relationship fr 3 0 -> 2 0 110 | Relationship fr 3 0 -> 5 0 111 | Relationship fr 4 0 -> 2 0 112 | Relationship fr 4 0 -> 5 0 113 | Relationship co 2 0 -> 5 0 114 | Relationship po 0 0 -> 2 0 115 | Relationship po 3 0 -> 5 0 116 | Alternative 117 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 118 | 1 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 119 | 2 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 120 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 121 | 4 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 122 | 5 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 123 | Relationship iico_control 1 0 -> 2 0 124 | Relationship iico_control 4 0 -> 5 0 125 | Relationship rf 2 0 -> 0 0 126 | Relationship rf 5 0 -> 1 0 127 | Relationship po 0 0 -> 1 0 128 | Relationship po 1 0 -> 2 0 129 | Relationship po 3 0 -> 4 0 130 | Relationship po 4 0 -> 5 0 131 | Relationship fr 1 0 -> 2 0 132 | Relationship fr 3 0 -> 2 0 133 | Relationship fr 3 0 -> 5 0 134 | Relationship fr 4 0 -> 2 0 135 | Relationship fr 4 0 -> 5 0 136 | Relationship co 5 0 -> 2 0 137 | Relationship po 0 0 -> 2 0 138 | Relationship po 3 0 -> 5 0 139 | Alternative 140 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 141 | 1 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 142 | 2 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 143 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 144 | 4 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 145 | 5 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 146 | Relationship iico_control 1 0 -> 2 0 147 | Relationship iico_control 4 0 -> 5 0 148 | Relationship rf 2 0 -> 0 0 149 | Relationship rf 2 0 -> 1 0 150 | Relationship po 0 0 -> 1 0 151 | Relationship po 1 0 -> 2 0 152 | Relationship po 3 0 -> 4 0 153 | Relationship po 4 0 -> 5 0 154 | Relationship fr 0 0 -> 5 0 155 | Relationship fr 1 0 -> 5 0 156 | Relationship fr 3 0 -> 2 0 157 | Relationship fr 3 0 -> 5 0 158 | Relationship fr 4 0 -> 2 0 159 | Relationship fr 4 0 -> 5 0 160 | Relationship co 2 0 -> 5 0 161 | Relationship po 0 0 -> 2 0 162 | Relationship po 3 0 -> 5 0 163 | Alternative 164 | 0 0 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 165 | 1 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 166 | 2 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 167 | 3 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 168 | 4 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 169 | 5 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 170 | Relationship iico_control 1 0 -> 2 0 171 | Relationship iico_control 4 0 -> 5 0 172 | Relationship rf 2 0 -> 0 0 173 | Relationship rf 2 0 -> 1 0 174 | Relationship po 0 0 -> 1 0 175 | Relationship po 1 0 -> 2 0 176 | Relationship po 3 0 -> 4 0 177 | Relationship po 4 0 -> 5 0 178 | Relationship fr 3 0 -> 2 0 179 | Relationship fr 3 0 -> 5 0 180 | Relationship fr 4 0 -> 2 0 181 | Relationship fr 4 0 -> 5 0 182 | Relationship co 5 0 -> 2 0 183 | Relationship po 0 0 -> 2 0 184 | Relationship po 3 0 -> 5 0 185 | Required 186 | -------------------------------------------------------------------------------- /tests/x86tso/testandset2.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 5 | 3 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 6 | Relationship iico_control 0 0 -> 1 0 7 | Relationship iico_control 2 0 -> 3 0 8 | Relationship rf 3 0 -> 0 0 9 | Relationship po 0 0 -> 1 0 10 | Relationship po 2 0 -> 3 0 11 | Relationship fr 2 0 -> 1 0 12 | Relationship fr 2 0 -> 3 0 13 | Relationship co 1 0 -> 3 0 14 | Alternative 15 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 16 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 17 | 2 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 18 | 3 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 19 | Relationship iico_control 0 0 -> 1 0 20 | Relationship iico_control 2 0 -> 3 0 21 | Relationship rf 3 0 -> 0 0 22 | Relationship po 0 0 -> 1 0 23 | Relationship po 2 0 -> 3 0 24 | Relationship fr 0 0 -> 1 0 25 | Relationship fr 2 0 -> 1 0 26 | Relationship fr 2 0 -> 3 0 27 | Relationship co 3 0 -> 1 0 28 | Alternative 29 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 30 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 31 | 2 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 32 | 3 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 33 | Relationship iico_control 0 0 -> 1 0 34 | Relationship iico_control 2 0 -> 3 0 35 | Relationship rf 1 0 -> 0 0 36 | Relationship po 0 0 -> 1 0 37 | Relationship po 2 0 -> 3 0 38 | Relationship fr 0 0 -> 3 0 39 | Relationship fr 2 0 -> 1 0 40 | Relationship fr 2 0 -> 3 0 41 | Relationship co 1 0 -> 3 0 42 | Alternative 43 | 0 0 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 1)) 44 | 1 0 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 45 | 2 1 0 0 (Read RMW (VA 0 0) (PA 0 0) (Data 0)) 46 | 3 1 0 0 (Write RMW (VA 0 0) (PA 0 0) (Data 1)) 47 | Relationship iico_control 0 0 -> 1 0 48 | Relationship iico_control 2 0 -> 3 0 49 | Relationship rf 1 0 -> 0 0 50 | Relationship po 0 0 -> 1 0 51 | Relationship po 2 0 -> 3 0 52 | Relationship fr 2 0 -> 1 0 53 | Relationship fr 2 0 -> 3 0 54 | Relationship co 3 0 -> 1 0 55 | Required 56 | -------------------------------------------------------------------------------- /tests/x86tso/wrc.test: -------------------------------------------------------------------------------- 1 | Alternative 2 | 0 0 0 0 (Write normal (VA 0 0) (PA 0 0) (Data 1)) 3 | 1 1 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 1)) 4 | 2 1 0 0 (Write normal (VA 1 0) (PA 1 0) (Data 1)) 5 | 3 2 0 0 (Read normal (VA 1 0) (PA 1 0) (Data 1)) 6 | 4 2 0 0 (Read normal (VA 0 0) (PA 0 0) (Data 0)) 7 | Relationship rf 0 0 -> 1 0 8 | Relationship rf 2 0 -> 3 0 9 | Relationship po 1 0 -> 2 0 10 | Relationship po 3 0 -> 4 0 11 | Relationship fr 4 0 -> 0 0 12 | Forbidden 13 | -------------------------------------------------------------------------------- /uarches/Vscale.uarch: -------------------------------------------------------------------------------- 1 | % Legend: 2 | % "/\" = AND 3 | % "\/" = OR 4 | % "~" = NOT 5 | % "=>" = IMPLIES 6 | % "%" = COMMENT 7 | % 8 | % Graph node = (instruction, (pipeline, stage number)) 9 | % Graph edge = (node, node, label) 10 | % 11 | % "c" is predefined to be the core ID 12 | 13 | StageName 0 "Fetch". 14 | StageName 1 "DecodeExecute". 15 | StageName 2 "Writeback". 16 | %StageName 3 "MemoryHierarchy". 17 | 18 | DefineMacro "NoWritesToSamePABetweenSourceAndRead": 19 | % Read from "w", and there must not exist any writes w' in between w and i 20 | exists microop "w", ( 21 | IsAnyWrite w /\ 22 | SamePhysicalAddress w i /\ 23 | SameData w i /\ 24 | AddEdge ((w, Writeback), (i, Writeback), "rf", "red") /\ 25 | ~(exists microop "w'", 26 | IsAnyWrite w' /\ SamePhysicalAddress i w' /\ ~SameMicroop w w' /\ 27 | EdgesExist [((w , Writeback), (w', Writeback), ""); 28 | ((w', Writeback), (i, Writeback), "")])). 29 | 30 | DefineMacro "BeforeOrAfterEveryWriteToSamePA": 31 | % Either before or after every write to the same physical address 32 | forall microop "w", ( 33 | (IsAnyWrite w /\ SamePhysicalAddress w i) => 34 | (AddEdge ((w, DecodeExecute), (i, DecodeExecute), "wsrf", "crimson") \/ 35 | AddEdge ((i, DecodeExecute), (w, DecodeExecute), "fr", "red"))). 36 | 37 | DefineMacro "BeforeAllWrites": 38 | % Read occurs before all writes to same PA & Data 39 | DataFromInitialStateAtPA i /\ 40 | forall microop "w", ( 41 | (IsAnyWrite w /\ SamePhysicalAddress w i /\ ~SameMicroop i w) => 42 | AddEdge ((i, Writeback), (w, Writeback), "fr", "red")). 43 | 44 | DefineMacro "WriteIsBeforeFinal": 45 | forall microop "w", 46 | forall microop "w'", 47 | (IsAnyWrite w /\ IsAnyWrite w' /\ SamePhysicalAddress w w' /\ 48 | ~SameMicroop w w' /\ DataFromFinalStateAtPA w') => 49 | AddEdge ((w, Writeback), (w', Writeback), "ws_final", "red"). 50 | 51 | % This, in combination with BeforeOrAfterEveryWriteToSamePA establishes the 52 | % required total order on writebacks... 53 | DefineMacro "WriteSerialization": 54 | forall microops "i2", 55 | ( ~(SameMicroop i i2) /\ IsAnyWrite i2 /\ SamePhysicalAddress i i2) => 56 | (AddEdge ((i, DecodeExecute), (i2, DecodeExecute), "ws", "red") \/ 57 | AddEdge ((i2, DecodeExecute), (i, DecodeExecute), "ws", "red")). 58 | 59 | Axiom "Reads": 60 | forall microops "i", 61 | OnCore c i => 62 | IsAnyRead i => 63 | AddEdges [((i, (c, Fetch)), (i, (c, DecodeExecute)), "path"); 64 | ((i, (c, DecodeExecute)), (i, (c, Writeback)), "path")]. 65 | 66 | Axiom "Reads2": 67 | forall microops "i", 68 | OnCore c i => 69 | IsAnyRead i => 70 | ( 71 | ExpandMacro BeforeAllWrites 72 | \/ 73 | ( 74 | ExpandMacro NoWritesToSamePABetweenSourceAndRead 75 | /\ 76 | ExpandMacro BeforeOrAfterEveryWriteToSamePA 77 | ) 78 | ). 79 | 80 | Axiom "Writes": 81 | forall microops "i", 82 | OnCore c i => 83 | IsAnyWrite i => 84 | AddEdges [((i, (c, Fetch)), (i, (c, DecodeExecute)), "path"); 85 | ((i, (c, DecodeExecute)), (i, (c, Writeback)), "path") 86 | ]. 87 | 88 | Axiom "Writes2": 89 | forall microops "i", 90 | OnCore c i => 91 | IsAnyWrite i => 92 | ( 93 | ExpandMacro WriteIsBeforeFinal 94 | ). 95 | 96 | Axiom "Writes3": 97 | forall microops "i", 98 | OnCore c i => 99 | IsAnyWrite i => 100 | ( 101 | ExpandMacro WriteSerialization 102 | ). 103 | 104 | Axiom "PO_Fetch": 105 | forall microops "i1", 106 | forall microops "i2", 107 | (OnCore c i1 /\ OnCore c i2 /\ ProgramOrder i1 i2) => 108 | AddEdge ((i1, (c, Fetch)), (i2, (c, Fetch)), "PO", "blue"). 109 | 110 | Axiom "DecodeExecute_stage_is_in_order": 111 | forall microops "i1", 112 | forall microops "i2", 113 | (OnCore c i1 /\ OnCore c i2 /\ ~SameMicroop i1 i2 /\ ProgramOrder i1 i2) => 114 | EdgeExists ((i1, (c, Fetch)), (i2, (c, Fetch)), "") => 115 | AddEdge ((i1, (c, DecodeExecute)), (i2, (c, DecodeExecute)), "PPO", "darkgreen"). 116 | 117 | Axiom "Writeback_stage_is_in_order": 118 | forall microops "i1", 119 | forall microops "i2", 120 | (OnCore c i1 /\ OnCore c i2 /\ ~SameMicroop i1 i2 /\ ProgramOrder i1 i2) => 121 | EdgeExists ((i1, (c, DecodeExecute)), (i2, (c, DecodeExecute)), "") => 122 | AddEdge ((i1, (c, Writeback)), (i2, (c, Writeback)), "PPO", "darkgreen"). 123 | -------------------------------------------------------------------------------- /x86tso.cat: -------------------------------------------------------------------------------- 1 | "X86 TSO" 2 | 3 | (* Uniproc check *) 4 | let com = rf | fr | co 5 | acyclic po-loc | com 6 | 7 | (* DJL: for some reason, herd omits some po edges... *) 8 | let po_workaround = RR(po) | RW(po) | WR(po) | WW(po) 9 | show po_workaround as po 10 | 11 | (* Atomic *) 12 | empty atom & (fre;coe) 13 | 14 | (* GHB *) 15 | #ppo 16 | let po_ghb = WW(po) | RM(po) 17 | 18 | #mfence 19 | let mfence = (po & (_ * MFENCE)) ; po 20 | 21 | #implied barriers 22 | let poWR = WR(po) 23 | let i1 = PA(poWR) 24 | let i2 = AP(poWR) 25 | let implied = i1 | i2 26 | 27 | let GHB = mfence | implied | po_ghb | rfe | fr | co 28 | show mfence 29 | show implied 30 | acyclic GHB 31 | --------------------------------------------------------------------------------