source: vis_dev/vis-2.1/examples/treearbiter/8-arbit.mv @ 14

Last change on this file since 14 was 11, checked in by cecile, 13 years ago

Add vis

File size: 22.5 KB
RevLine 
[11]1# /projects/vl2mv/vl2mvt/mips/bin/vl2mv 8-arbit.v
2# version: 0.2
3# date:    09:05:18 03/01/97 (PST)
4.model main
5# I/O ports
6.mv sa 2 myTRUE myFALSE
7.mv xa 2 myTRUE myFALSE
8.mv yr 4 idle request lock release
9.mv sr 4 idle request lock release
10.mv xr 4 idle request lock release
11.mv ya 2 myTRUE myFALSE
12.mv constTRUE 2 myTRUE myFALSE
13# assign sa  = 1
14.mv sa$raw_n0 2 myTRUE myFALSE
15.names sa$raw_n0
16myFALSE
17# assign constTRUE  = 0
18.mv constTRUE$raw_n1 2 myTRUE myFALSE
19.names constTRUE$raw_n1
20myTRUE
21.subckt arbitCell F0 topCell=constTRUE  urLeft=xr  urRight=yr  uaLeft=xa  uaRight=ya  xr=sr  xa=sa 
22.subckt fourCells G1 sa=xa  sr=xr 
23.subckt fourCells G2 sa=ya  sr=yr 
24# conflict arbitrators
25.names sa$raw_n0  sa
26- =sa$raw_n0
27.names constTRUE$raw_n1  constTRUE
28- =constTRUE$raw_n1
29# non-blocking assignments
30# latches
31# quasi-continuous assignment
32.end
33
34
35.model arbitCell
36# I/O ports
37.outputs uaLeft
38.inputs topCell
39.inputs xa
40.inputs urRight
41.inputs urLeft
42.outputs xr
43.outputs uaRight
44.mv processedLeft 2 myTRUE myFALSE
45.mv prevLeft 2 myTRUE myFALSE
46.mv holdToken 2 myTRUE myFALSE
47.mv processedRight 2 myTRUE myFALSE
48.mv uaLeft 2 myTRUE myFALSE
49.mv topCell 2 myTRUE myFALSE
50.mv xa 2 myTRUE myFALSE
51.mv urRight 4 idle request lock release
52.mv giveChild 2 myTRUE myFALSE
53.mv urLeft 4 idle request lock release
54.mv mustGiveParent 2 myTRUE myFALSE
55.mv xr 4 idle request lock release
56.mv uaRight 2 myTRUE myFALSE
57.mv childOwns 2 myTRUE myFALSE
58.mv prevRight 2 myTRUE myFALSE
59# prevLeft  = 1
60.mv prevLeft$raw_n2 2 myTRUE myFALSE
61.names prevLeft$raw_n2
62myFALSE
63# non-blocking assignments for initial
64# prevRight  = 0
65.mv prevRight$raw_n3 2 myTRUE myFALSE
66.names prevRight$raw_n3
67myTRUE
68# non-blocking assignments for initial
69# processedLeft  = 1
70.mv processedLeft$raw_n4 2 myTRUE myFALSE
71.names processedLeft$raw_n4
72myFALSE
73# non-blocking assignments for initial
74# processedRight  = 1
75.mv processedRight$raw_n5 2 myTRUE myFALSE
76.names processedRight$raw_n5
77myFALSE
78# non-blocking assignments for initial
79# assign mustGiveParent  = (processedLeft  == 0) && (processedRight  == 0) && (!(topCell  == 0)) ? 0 : 1
80.mv mustGiveParent$raw_n6 2 myTRUE myFALSE
81.mv _n8 2 myTRUE myFALSE
82.names _n8
83myTRUE
84# processedLeft  == 0
85.names processedLeft _n8 _n7
86.def 0
87- =processedLeft 1
88.mv _na 2 myTRUE myFALSE
89.names _na
90myTRUE
91# processedRight  == 0
92.names processedRight _na _n9
93.def 0
94- =processedRight 1
95# (processedLeft  == 0) && (processedRight  == 0)
96.names _n7 _n9 _nb
97.def 0
981 1 1
99.mv _nd 2 myTRUE myFALSE
100.names _nd
101myTRUE
102# topCell  == 0
103.names topCell _nd _nc
104.def 0
105- =topCell 1
106.names _nc _ne
1070 1 
1081 0 
109# (processedLeft  == 0) && (processedRight  == 0) && (!(topCell  == 0))
110.names _nb _ne _nf
111.def 0
1121 1 1
113.mv _n10 2 myTRUE myFALSE
114.names _n10
115myTRUE
116.mv _n11 2 myTRUE myFALSE
117.names _n11
118myFALSE
119# (processedLeft  == 0) && (processedRight  == 0) && (!(topCell  == 0)) ? 0 : 1
120.mv _n12 2 myTRUE myFALSE
121.names _n10 _n11 _nf _n12
122- - 0 =_n11
123- - 1 =_n10
124.names _n12 mustGiveParent$raw_n6
125- =_n12
126# holdToken  = topCell
127.mv holdToken$raw_n13 2 myTRUE myFALSE
128.names topCell holdToken$raw_n13
129- =topCell
130# non-blocking assignments for initial
131# assign childOwns  = (urLeft  == lock  || urRight  == lock ) ? 0 : 1
132.mv childOwns$raw_n14 2 myTRUE myFALSE
133.mv _n16 4 idle request lock release
134.names _n16
135lock
136# urLeft  == 2
137.names urLeft _n16 _n15
138.def 0
139- =urLeft 1
140.mv _n18 4 idle request lock release
141.names _n18
142lock
143# urRight  == 2
144.names urRight _n18 _n17
145.def 0
146- =urRight 1
147# urLeft  == 2 || urRight  == 2
148.names _n15 _n17 _n19
149.def 1
1500 0 0
151.mv _n1a 2 myTRUE myFALSE
152.names _n1a
153myTRUE
154.mv _n1b 2 myTRUE myFALSE
155.names _n1b
156myFALSE
157# (urLeft  == 2 || urRight  == 2) ? 0 : 1
158.mv _n1c 2 myTRUE myFALSE
159.names _n1a _n1b _n19 _n1c
160- - 0 =_n1b
161- - 1 =_n1a
162.names _n1c childOwns$raw_n14
163- =_n1c
164# assign giveChild  = (uaLeft  == 0 || uaRight  == 0) ? 0 : 1
165.mv giveChild$raw_n1d 2 myTRUE myFALSE
166.mv _n1f 2 myTRUE myFALSE
167.names _n1f
168myTRUE
169# uaLeft  == 0
170.names uaLeft _n1f _n1e
171.def 0
172- =uaLeft 1
173.mv _n21 2 myTRUE myFALSE
174.names _n21
175myTRUE
176# uaRight  == 0
177.names uaRight _n21 _n20
178.def 0
179- =uaRight 1
180# uaLeft  == 0 || uaRight  == 0
181.names _n1e _n20 _n22
182.def 1
1830 0 0
184.mv _n23 2 myTRUE myFALSE
185.names _n23
186myTRUE
187.mv _n24 2 myTRUE myFALSE
188.names _n24
189myFALSE
190# (uaLeft  == 0 || uaRight  == 0) ? 0 : 1
191.mv _n25 2 myTRUE myFALSE
192.names _n23 _n24 _n22 _n25
193- - 0 =_n24
194- - 1 =_n23
195.names _n25 giveChild$raw_n1d
196- =_n25
197# assign uaLeft  = (!(mustGiveParent  == 0) && (holdToken  == 0 && urLeft  == request  && (!(urRight  == request ) || prevRight  == 0))) ? 0 : 1
198.mv uaLeft$raw_n26 2 myTRUE myFALSE
199.mv _n28 2 myTRUE myFALSE
200.names _n28
201myTRUE
202# mustGiveParent  == 0
203.names mustGiveParent _n28 _n27
204.def 0
205- =mustGiveParent 1
206.names _n27 _n29
2070 1 
2081 0 
209.mv _n2b 2 myTRUE myFALSE
210.names _n2b
211myTRUE
212# holdToken  == 0
213.names holdToken _n2b _n2a
214.def 0
215- =holdToken 1
216.mv _n2d 4 idle request lock release
217.names _n2d
218request
219# urLeft  == 1
220.names urLeft _n2d _n2c
221.def 0
222- =urLeft 1
223# holdToken  == 0 && urLeft  == 1
224.names _n2a _n2c _n2e
225.def 0
2261 1 1
227.mv _n30 4 idle request lock release
228.names _n30
229request
230# urRight  == 1
231.names urRight _n30 _n2f
232.def 0
233- =urRight 1
234.names _n2f _n31
2350 1 
2361 0 
237.mv _n33 2 myTRUE myFALSE
238.names _n33
239myTRUE
240# prevRight  == 0
241.names prevRight _n33 _n32
242.def 0
243- =prevRight 1
244# !(urRight  == 1) || prevRight  == 0
245.names _n31 _n32 _n34
246.def 1
2470 0 0
248# holdToken  == 0 && urLeft  == 1 && (!(urRight  == 1) || prevRight  == 0)
249.names _n2e _n34 _n35
250.def 0
2511 1 1
252# !(mustGiveParent  == 0) && (holdToken  == 0 && urLeft  == 1 && (!(urRight  == 1) || prevRight  == 0))
253.names _n29 _n35 _n36
254.def 0
2551 1 1
256.mv _n37 2 myTRUE myFALSE
257.names _n37
258myTRUE
259.mv _n38 2 myTRUE myFALSE
260.names _n38
261myFALSE
262# (!(mustGiveParent  == 0) && (holdToken  == 0 && urLeft  == 1 && (!(urRight  == 1) || prevRight  == 0))) ? 0 : 1
263.mv _n39 2 myTRUE myFALSE
264.names _n37 _n38 _n36 _n39
265- - 0 =_n38
266- - 1 =_n37
267.names _n39 uaLeft$raw_n26
268- =_n39
269# assign uaRight  = (!(mustGiveParent  == 0) && (holdToken  == 0 && urRight  == request  && (!(urLeft  == request ) || prevLeft  == 0))) ? 0 : 1
270.mv uaRight$raw_n3a 2 myTRUE myFALSE
271.mv _n3c 2 myTRUE myFALSE
272.names _n3c
273myTRUE
274# mustGiveParent  == 0
275.names mustGiveParent _n3c _n3b
276.def 0
277- =mustGiveParent 1
278.names _n3b _n3d
2790 1 
2801 0 
281.mv _n3f 2 myTRUE myFALSE
282.names _n3f
283myTRUE
284# holdToken  == 0
285.names holdToken _n3f _n3e
286.def 0
287- =holdToken 1
288.mv _n41 4 idle request lock release
289.names _n41
290request
291# urRight  == 1
292.names urRight _n41 _n40
293.def 0
294- =urRight 1
295# holdToken  == 0 && urRight  == 1
296.names _n3e _n40 _n42
297.def 0
2981 1 1
299.mv _n44 4 idle request lock release
300.names _n44
301request
302# urLeft  == 1
303.names urLeft _n44 _n43
304.def 0
305- =urLeft 1
306.names _n43 _n45
3070 1 
3081 0 
309.mv _n47 2 myTRUE myFALSE
310.names _n47
311myTRUE
312# prevLeft  == 0
313.names prevLeft _n47 _n46
314.def 0
315- =prevLeft 1
316# !(urLeft  == 1) || prevLeft  == 0
317.names _n45 _n46 _n48
318.def 1
3190 0 0
320# holdToken  == 0 && urRight  == 1 && (!(urLeft  == 1) || prevLeft  == 0)
321.names _n42 _n48 _n49
322.def 0
3231 1 1
324# !(mustGiveParent  == 0) && (holdToken  == 0 && urRight  == 1 && (!(urLeft  == 1) || prevLeft  == 0))
325.names _n3d _n49 _n4a
326.def 0
3271 1 1
328.mv _n4b 2 myTRUE myFALSE
329.names _n4b
330myTRUE
331.mv _n4c 2 myTRUE myFALSE
332.names _n4c
333myFALSE
334# (!(mustGiveParent  == 0) && (holdToken  == 0 && urRight  == 1 && (!(urLeft  == 1) || prevLeft  == 0))) ? 0 : 1
335.mv _n4d 2 myTRUE myFALSE
336.names _n4b _n4c _n4a _n4d
337- - 0 =_n4c
338- - 1 =_n4b
339.names _n4d uaRight$raw_n3a
340- =_n4d
341# assign xr  = (holdToken  == myFALSE  && (urLeft  == 1 || urRight  == 1)) ? 1 : (childOwns  == myTRUE ) ? 2 : (holdToken  == myTRUE  && (((mustGiveParent  == myTRUE ) || !((urLeft  == 1 || urRight  == 1))) && !(topCell  == myTRUE ))) ? 3 : 0
342.mv xr$raw_n4e 4 idle request lock release
343.mv _n50 2 myTRUE myFALSE
344.names _n50
345myFALSE
346# holdToken  == 1
347.names holdToken _n50 _n4f
348.def 0
349- =holdToken 1
350.mv _n52 4 idle request lock release
351.names _n52
352request
353# urLeft  == 1
354.names urLeft _n52 _n51
355.def 0
356- =urLeft 1
357.mv _n54 4 idle request lock release
358.names _n54
359request
360# urRight  == 1
361.names urRight _n54 _n53
362.def 0
363- =urRight 1
364# urLeft  == 1 || urRight  == 1
365.names _n51 _n53 _n55
366.def 1
3670 0 0
368# holdToken  == 1 && (urLeft  == 1 || urRight  == 1)
369.names _n4f _n55 _n56
370.def 0
3711 1 1
372.mv _n58 2 myTRUE myFALSE
373.names _n58
374myTRUE
375# childOwns  == 0
376.names childOwns _n58 _n57
377.def 0
378- =childOwns 1
379.mv _n5a 2 myTRUE myFALSE
380.names _n5a
381myTRUE
382# holdToken  == 0
383.names holdToken _n5a _n59
384.def 0
385- =holdToken 1
386.mv _n5c 2 myTRUE myFALSE
387.names _n5c
388myTRUE
389# mustGiveParent  == 0
390.names mustGiveParent _n5c _n5b
391.def 0
392- =mustGiveParent 1
393.mv _n5e 4 idle request lock release
394.names _n5e
395request
396# urLeft  == 1
397.names urLeft _n5e _n5d
398.def 0
399- =urLeft 1
400.mv _n60 4 idle request lock release
401.names _n60
402request
403# urRight  == 1
404.names urRight _n60 _n5f
405.def 0
406- =urRight 1
407# urLeft  == 1 || urRight  == 1
408.names _n5d _n5f _n61
409.def 1
4100 0 0
411.names _n61 _n62
4120 1 
4131 0 
414# (mustGiveParent  == 0) || !((urLeft  == 1 || urRight  == 1))
415.names _n5b _n62 _n63
416.def 1
4170 0 0
418.mv _n65 2 myTRUE myFALSE
419.names _n65
420myTRUE
421# topCell  == 0
422.names topCell _n65 _n64
423.def 0
424- =topCell 1
425.names _n64 _n66
4260 1 
4271 0 
428# ((mustGiveParent  == 0) || !((urLeft  == 1 || urRight  == 1))) && !(topCell  == 0)
429.names _n63 _n66 _n67
430.def 0
4311 1 1
432# holdToken  == 0 && (((mustGiveParent  == 0) || !((urLeft  == 1 || urRight  == 1))) && !(topCell  == 0))
433.names _n59 _n67 _n68
434.def 0
4351 1 1
436.mv _n69 4 idle request lock release
437.names _n69
438release
439.mv _n6a 4 idle request lock release
440.names _n6a
441idle
442# (holdToken  == 0 && (((mustGiveParent  == 0) || !((urLeft  == 1 || urRight  == 1))) && !(topCell  == 0))) ? 3 : 0
443.mv _n6b 4 idle request lock release
444.names _n69 _n6a _n68 _n6b
445- - 0 =_n6a
446- - 1 =_n69
447.mv _n6c 4 idle request lock release
448.names _n6c
449lock
450# (childOwns  == 0) ? 2 : (holdToken  == 0 && (((mustGiveParent  == 0) || !((urLeft  == 1 || urRight  == 1))) && !(topCell  == 0))) ? 3 : 0
451.mv _n6d 4 idle request lock release
452.names _n6c _n6b _n57 _n6d
453- - 0 =_n6b
454- - 1 =_n6c
455.mv _n6e 4 idle request lock release
456.names _n6e
457request
458# (holdToken  == 1 && (urLeft  == 1 || urRight  == 1)) ? 1 : (childOwns  == 0) ? 2 : (holdToken  == 0 && (((mustGiveParent  == 0) || !((urLeft  == 1 || urRight  == 1))) && !(topCell  == 0))) ? 3 : 0
459.mv _n6f 4 idle request lock release
460.names _n6e _n6d _n56 _n6f
461- - 0 =_n6d
462- - 1 =_n6e
463.names _n6f xr$raw_n4e
464- =_n6f
465.mv _n71 2 myTRUE myFALSE
466.names _n71
467myTRUE
468# xa  == 0
469.names xa _n71 _n70
470.def 0
471- =xa 1
472.names _n70 _n72
473- =_n70
474# holdToken  = 0
475.mv holdToken$_n70_n73$true 2 myTRUE myFALSE
476.names holdToken$_n70_n73$true
477myTRUE
478.mv _n75 2 myTRUE myFALSE
479.names _n75
480myTRUE
481# giveChild  == 0
482.names giveChild _n75 _n74
483.def 0
484- =giveChild 1
485.names _n74 _n76
486- =_n74
487# holdToken  = 1
488.mv holdToken$_n74_n77$true 2 myTRUE myFALSE
489.names holdToken$_n74_n77$true
490myFALSE
491.mv _n79 4 idle request lock release
492.names _n79
493release
494# urLeft  == 3
495.names urLeft _n79 _n78
496.def 0
497- =urLeft 1
498.mv _n7b 4 idle request lock release
499.names _n7b
500release
501# urRight  == 3
502.names urRight _n7b _n7a
503.def 0
504- =urRight 1
505# urLeft  == 3 || urRight  == 3
506.names _n78 _n7a _n7c
507.def 1
5080 0 0
509.names _n7c _n7d
510- =_n7c
511# holdToken  = 0
512.mv holdToken$_n7c_n7e$true 2 myTRUE myFALSE
513.names holdToken$_n7c_n7e$true
514myTRUE
515.mv _n80 4 idle request lock release
516.names _n80
517release
518# xr  == 3
519.names xr _n80 _n7f
520.def 0
521- =xr 1
522.names _n7f _n81
523- =_n7f
524# holdToken  = 1
525.mv holdToken$_n7f_n82$true 2 myTRUE myFALSE
526.names holdToken$_n7f_n82$true
527myFALSE
528# if/else (xr  == 3)
529.mv holdToken$_n7f$raw_n85 2 myTRUE myFALSE
530.names holdToken$_n7f_n82$true holdToken _n7f holdToken$_n7f$raw_n85
531- - 0 =holdToken
532- - 1 =holdToken$_n7f_n82$true
533# if/else (urLeft  == 3 || urRight  == 3)
534.mv holdToken$_n7c$raw_n87 2 myTRUE myFALSE
535.names holdToken$_n7c_n7e$true holdToken$_n7f$raw_n85 _n7c holdToken$_n7c$raw_n87
536- - 0 =holdToken$_n7f$raw_n85
537- - 1 =holdToken$_n7c_n7e$true
538# if/else (giveChild  == 0)
539.mv holdToken$_n74$raw_n8b 2 myTRUE myFALSE
540.names holdToken$_n74_n77$true holdToken$_n7c$raw_n87 _n74 holdToken$_n74$raw_n8b
541- - 0 =holdToken$_n7c$raw_n87
542- - 1 =holdToken$_n74_n77$true
543# if/else (xa  == 0)
544.mv holdToken$_n70$raw_n8f 2 myTRUE myFALSE
545.names holdToken$_n70_n73$true holdToken$_n74$raw_n8b _n70 holdToken$_n70$raw_n8f
546- - 0 =holdToken$_n74$raw_n8b
547- - 1 =holdToken$_n70_n73$true
548.mv _n93 2 myTRUE myFALSE
549.names _n93
550myTRUE
551# uaLeft  == 0
552.names uaLeft _n93 _n92
553.def 0
554- =uaLeft 1
555.names _n92 _n94
556- =_n92
557# prevLeft  = 0
558.mv prevLeft$_n92_n95$true 2 myTRUE myFALSE
559.names prevLeft$_n92_n95$true
560myTRUE
561# prevRight  = 1
562.mv prevRight$_n92_n96$true 2 myTRUE myFALSE
563.names prevRight$_n92_n96$true
564myFALSE
565.mv _n98 2 myTRUE myFALSE
566.names _n98
567myTRUE
568# uaRight  == 0
569.names uaRight _n98 _n97
570.def 0
571- =uaRight 1
572.names _n97 _n99
573- =_n97
574# prevLeft  = 1
575.mv prevLeft$_n97_n9a$true 2 myTRUE myFALSE
576.names prevLeft$_n97_n9a$true
577myFALSE
578# prevRight  = 0
579.mv prevRight$_n97_n9b$true 2 myTRUE myFALSE
580.names prevRight$_n97_n9b$true
581myTRUE
582# if/else (uaRight  == 0)
583.mv prevLeft$_n97$raw_na2 2 myTRUE myFALSE
584.names prevLeft$_n97_n9a$true prevLeft _n97 prevLeft$_n97$raw_na2
585- - 0 =prevLeft
586- - 1 =prevLeft$_n97_n9a$true
587.mv prevRight$_n97$raw_na4 2 myTRUE myFALSE
588.names prevRight$_n97_n9b$true prevRight _n97 prevRight$_n97$raw_na4
589- - 0 =prevRight
590- - 1 =prevRight$_n97_n9b$true
591# if/else (uaLeft  == 0)
592.mv prevLeft$_n92$raw_na9 2 myTRUE myFALSE
593.names prevLeft$_n92_n95$true prevLeft$_n97$raw_na2 _n92 prevLeft$_n92$raw_na9
594- - 0 =prevLeft$_n97$raw_na2
595- - 1 =prevLeft$_n92_n95$true
596.mv prevRight$_n92$raw_nab 2 myTRUE myFALSE
597.names prevRight$_n92_n96$true prevRight$_n97$raw_na4 _n92 prevRight$_n92$raw_nab
598- - 0 =prevRight$_n97$raw_na4
599- - 1 =prevRight$_n92_n96$true
600.mv _nb3 4 idle request lock release
601.names _nb3
602release
603# urLeft  == 3
604.names urLeft _nb3 _nb2
605.def 0
606- =urLeft 1
607.names _nb2 _nb4
608- =_nb2
609# processedLeft  = 0
610.mv processedLeft$_nb2_nb5$true 2 myTRUE myFALSE
611.names processedLeft$_nb2_nb5$true
612myTRUE
613.mv _nb7 4 idle request lock release
614.names _nb7
615release
616# urRight  == 3
617.names urRight _nb7 _nb6
618.def 0
619- =urRight 1
620.names _nb6 _nb8
621- =_nb6
622# processedRight  = 0
623.mv processedRight$_nb6_nb9$true 2 myTRUE myFALSE
624.names processedRight$_nb6_nb9$true
625myTRUE
626.mv _nbb 2 myTRUE myFALSE
627.names _nbb
628myTRUE
629# processedLeft  == 0
630.names processedLeft _nbb _nba
631.def 0
632- =processedLeft 1
633.mv _nbd 2 myTRUE myFALSE
634.names _nbd
635myTRUE
636# processedRight  == 0
637.names processedRight _nbd _nbc
638.def 0
639- =processedRight 1
640# (processedLeft  == 0) && (processedRight  == 0)
641.names _nba _nbc _nbe
642.def 0
6431 1 1
644.names _nbe _nbf
645- =_nbe
646# processedLeft  = 1
647.mv processedLeft$_nbe_nc0$true 2 myTRUE myFALSE
648.names processedLeft$_nbe_nc0$true
649myFALSE
650# processedRight  = 1
651.mv processedRight$_nbe_nc1$true 2 myTRUE myFALSE
652.names processedRight$_nbe_nc1$true
653myFALSE
654# if/else ((processedLeft  == 0) && (processedRight  == 0))
655.mv processedLeft$_nbe$raw_ncc 2 myTRUE myFALSE
656.names processedLeft$_nbe_nc0$true processedLeft _nbe processedLeft$_nbe$raw_ncc
657- - 0 =processedLeft
658- - 1 =processedLeft$_nbe_nc0$true
659.mv processedRight$_nbe$raw_nce 2 myTRUE myFALSE
660.names processedRight$_nbe_nc1$true processedRight _nbe processedRight$_nbe$raw_nce
661- - 0 =processedRight
662- - 1 =processedRight$_nbe_nc1$true
663# if/else (urRight  == 3)
664.mv processedRight$_nb6$raw_nd9 2 myTRUE myFALSE
665.names processedRight$_nb6_nb9$true processedRight$_nbe$raw_nce _nb6 processedRight$_nb6$raw_nd9
666- - 0 =processedRight$_nbe$raw_nce
667- - 1 =processedRight$_nb6_nb9$true
668.mv processedLeft$_nb6$raw_ne0 2 myTRUE myFALSE
669.names processedLeft processedLeft$_nbe$raw_ncc _nb6 processedLeft$_nb6$raw_ne0
670- - 0 =processedLeft$_nbe$raw_ncc
671- - 1 =processedLeft
672# if/else (urLeft  == 3)
673.mv processedLeft$_nb2$raw_ne9 2 myTRUE myFALSE
674.names processedLeft$_nb2_nb5$true processedLeft$_nb6$raw_ne0 _nb2 processedLeft$_nb2$raw_ne9
675- - 0 =processedLeft$_nb6$raw_ne0
676- - 1 =processedLeft$_nb2_nb5$true
677.mv processedRight$_nb2$raw_nf3 2 myTRUE myFALSE
678.names processedRight processedRight$_nb6$raw_nd9 _nb2 processedRight$_nb2$raw_nf3
679- - 0 =processedRight$_nb6$raw_nd9
680- - 1 =processedRight
681# conflict arbitrators
682.names _nb4 _nb8 _nbf _nf6
683.def 0
684 1 - - 1
685 0 0 1 1
686.mv _nf7 2 myTRUE myFALSE
687.names _nf6 processedLeft$_nb2$raw_ne9 processedLeft _nf7
6881 - - =processedLeft$_nb2$raw_ne9
6890 - - =processedLeft
690.names _n94 _n99 _n104
691.def 0
692 1 - 1
693 0 1 1
694.mv _n105 2 myTRUE myFALSE
695.names _n104 prevLeft$_n92$raw_na9 prevLeft _n105
6961 - - =prevLeft$_n92$raw_na9
6970 - - =prevLeft
698.names _n72 _n76 _n7d _n81 _n112
699.def 0
700 1 - - - 1
701 0 1 - - 1
702 0 0 1 - 1
703 0 0 0 1 1
704.mv _n113 2 myTRUE myFALSE
705.names _n112 holdToken$_n70$raw_n8f holdToken _n113
7061 - - =holdToken$_n70$raw_n8f
7070 - - =holdToken
708.names _nb4 _nb8 _nbf _n120
709.def 0
710 0 1 - 1
711 0 0 1 1
712.mv _n121 2 myTRUE myFALSE
713.names _n120 processedRight$_nb2$raw_nf3 processedRight _n121
7141 - - =processedRight$_nb2$raw_nf3
7150 - - =processedRight
716.names uaLeft$raw_n26  uaLeft
717- =uaLeft$raw_n26
718.names giveChild$raw_n1d  giveChild
719- =giveChild$raw_n1d
720.names mustGiveParent$raw_n6  mustGiveParent
721- =mustGiveParent$raw_n6
722.names xr$raw_n4e  xr
723- =xr$raw_n4e
724.names uaRight$raw_n3a  uaRight
725- =uaRight$raw_n3a
726.names childOwns$raw_n14  childOwns
727- =childOwns$raw_n14
728.names _n94 _n99 _n12e
729.def 0
730 1 - 1
731 0 1 1
732.mv _n12f 2 myTRUE myFALSE
733.names _n12e prevRight$_n92$raw_nab prevRight _n12f
7341 - - =prevRight$_n92$raw_nab
7350 - - =prevRight
736# non-blocking assignments
737# latches
738.r prevLeft$raw_n2 prevLeft
739- =prevLeft$raw_n2
740.latch _n105 prevLeft
741.r processedLeft$raw_n4 processedLeft
742- =processedLeft$raw_n4
743.latch _nf7 processedLeft
744.r processedRight$raw_n5 processedRight
745- =processedRight$raw_n5
746.latch _n121 processedRight
747.r holdToken$raw_n13 holdToken
748- =holdToken$raw_n13
749.latch _n113 holdToken
750.r prevRight$raw_n3 prevRight
751- =prevRight$raw_n3
752.latch _n12f prevRight
753# quasi-continuous assignment
754.end
755
756
757.model fourCells
758# I/O ports
759.inputs sa
760.outputs sr
761.mv constFALSE 2 myTRUE myFALSE
762.mv sa 2 myTRUE myFALSE
763.mv ur1 4 idle request lock release
764.mv xa 2 myTRUE myFALSE
765.mv ur2 4 idle request lock release
766.mv yr 4 idle request lock release
767.mv ur3 4 idle request lock release
768.mv ua1 2 myTRUE myFALSE
769.mv ur4 4 idle request lock release
770.mv ua2 2 myTRUE myFALSE
771.mv ua3 2 myTRUE myFALSE
772.mv sr 4 idle request lock release
773.mv ua4 2 myTRUE myFALSE
774.mv xr 4 idle request lock release
775.mv ya 2 myTRUE myFALSE
776.mv constTRUE 2 myTRUE myFALSE
777# assign constTRUE  = 0
778.mv constTRUE$raw_n13c 2 myTRUE myFALSE
779.names constTRUE$raw_n13c
780myTRUE
781# assign constFALSE  = 1
782.mv constFALSE$raw_n13d 2 myTRUE myFALSE
783.names constFALSE$raw_n13d
784myFALSE
785.subckt arbitCell C0 topCell=constFALSE  urLeft=xr  urRight=yr  uaLeft=xa  uaRight=ya  xr=sr  xa=sa 
786.subckt arbitCell C1 topCell=constFALSE  urLeft=ur1  urRight=ur2  uaLeft=ua1  uaRight=ua2  xr=xr  xa=xa 
787.subckt arbitCell C2 topCell=constFALSE  urLeft=ur3  urRight=ur4  uaLeft=ua3  uaRight=ua4  xr=yr  xa=ya 
788.subckt procModel P1 ack=ua1  req=ur1 
789.subckt procModel P2 ack=ua2  req=ur2 
790.subckt procModel P3 ack=ua3  req=ur3 
791.subckt procModel P4 ack=ua4  req=ur4 
792# conflict arbitrators
793.names constFALSE$raw_n13d  constFALSE
794- =constFALSE$raw_n13d
795.names constTRUE$raw_n13c  constTRUE
796- =constTRUE$raw_n13c
797# non-blocking assignments
798# latches
799# quasi-continuous assignment
800.end
801
802
803.model procModel
804# I/O ports
805.outputs req
806.inputs ack
807.mv req 4 idle request lock release
808.mv procState 4 idle request lock release
809.mv ack 2 myTRUE myFALSE
810# assign req  = procState
811.mv req$raw_n13e 4 idle request lock release
812.names procState req$raw_n13e
813- =procState
814# assign randChoice  = $NDset ( 0,1 )
815.names randChoice
8160
8171
818# procState  = 0
819.mv procState$raw_n141 4 idle request lock release
820.names procState$raw_n141
821idle
822# non-blocking assignments for initial
823.mv _n143 4 idle request lock release
824.names _n143
825idle
826# procState  == 0
827.names procState _n143 _n142
828.def 0
829- =procState 1
830.names _n145
8311
832# randChoice  == 1
833.names randChoice _n145 _n146
834.def 0
8350 1 1
8361 0 1
837.names _n146 _n144
8380 1 
8391 0 
840# procState  == 0 && (randChoice  == 1)
841.names _n142 _n144 _n148
842.def 0
8431 1 1
844.names _n148 _n149
845- =_n148
846# procState  = 1
847.mv procState$_n148_n14a$true 4 idle request lock release
848.names procState$_n148_n14a$true
849request
850.mv _n14c 4 idle request lock release
851.names _n14c
852request
853# procState  == 1
854.names procState _n14c _n14b
855.def 0
856- =procState 1
857.mv _n14e 2 myTRUE myFALSE
858.names _n14e
859myTRUE
860# ack  == 0
861.names ack _n14e _n14d
862.def 0
863- =ack 1
864# procState  == 1 && ack  == 0
865.names _n14b _n14d _n14f
866.def 0
8671 1 1
868.names _n14f _n150
869- =_n14f
870# procState  = 2
871.mv procState$_n14f_n151$true 4 idle request lock release
872.names procState$_n14f_n151$true
873lock
874.mv _n153 4 idle request lock release
875.names _n153
876lock
877# procState  == 2
878.names procState _n153 _n152
879.def 0
880- =procState 1
881.names _n155
8821
883# randChoice  == 1
884.names randChoice _n155 _n156
885.def 0
8860 1 1
8871 0 1
888.names _n156 _n154
8890 1 
8901 0 
891# procState  == 2 && (randChoice  == 1)
892.names _n152 _n154 _n158
893.def 0
8941 1 1
895.names _n158 _n159
896- =_n158
897# procState  = 3
898.mv procState$_n158_n15a$true 4 idle request lock release
899.names procState$_n158_n15a$true
900release
901.mv _n15c 4 idle request lock release
902.names _n15c
903release
904# procState  == 3
905.names procState _n15c _n15b
906.def 0
907- =procState 1
908.names _n15b _n15d
909- =_n15b
910# procState  = 0
911.mv procState$_n15b_n15e$true 4 idle request lock release
912.names procState$_n15b_n15e$true
913idle
914# if/else (procState  == 3)
915.mv procState$_n15b$raw_n161 4 idle request lock release
916.names procState$_n15b_n15e$true procState _n15b procState$_n15b$raw_n161
917- - 0 =procState
918- - 1 =procState$_n15b_n15e$true
919# if/else (procState  == 2 && (randChoice  == 1))
920.mv procState$_n158$raw_n163 4 idle request lock release
921.names procState$_n158_n15a$true procState$_n15b$raw_n161 _n158 procState$_n158$raw_n163
922- - 0 =procState$_n15b$raw_n161
923- - 1 =procState$_n158_n15a$true
924# if/else (procState  == 1 && ack  == 0)
925.mv procState$_n14f$raw_n167 4 idle request lock release
926.names procState$_n14f_n151$true procState$_n158$raw_n163 _n14f procState$_n14f$raw_n167
927- - 0 =procState$_n158$raw_n163
928- - 1 =procState$_n14f_n151$true
929# if/else (procState  == 0 && (randChoice  == 1))
930.mv procState$_n148$raw_n16b 4 idle request lock release
931.names procState$_n148_n14a$true procState$_n14f$raw_n167 _n148 procState$_n148$raw_n16b
932- - 0 =procState$_n14f$raw_n167
933- - 1 =procState$_n148_n14a$true
934# conflict arbitrators
935.names req$raw_n13e  req
936- =req$raw_n13e
937.names _n149 _n150 _n159 _n15d _n16e
938.def 0
939 1 - - - 1
940 0 1 - - 1
941 0 0 1 - 1
942 0 0 0 1 1
943.mv _n16f 4 idle request lock release
944.names _n16e procState$_n148$raw_n16b procState _n16f
9451 - - =procState$_n148$raw_n16b
9460 - - =procState
947# non-blocking assignments
948# latches
949.r procState$raw_n141 procState
950- =procState$raw_n141
951.latch _n16f procState
952# quasi-continuous assignment
953.end
954
955
Note: See TracBrowser for help on using the repository browser.