OSDN Git Service

* public snapshot of sid simulator
[pf3gnuchains/pf3gnuchains3x.git] / sid / component / testsuite / sidcomp.glue / seqvalid.exp
1 set test "sid configuration"
2 sid_config_component_test_with_tracing "base4.conf" \
3     "load [sid_find_file libglue.la] glue_component_library" \
4     "hw-glue-sequence"
5 pass $test
6
7 set test "sid startup"
8 if [sid_start "base4.conf"] then { pass $test } else { fail $test ; return }
9
10 set test "check attribute list"
11 sid_assert_includes_all "sid::component::attribute_names $victim" {"num-outputs" "state-snapshot" "input"}
12
13 set test "check bus names"
14 set bus [sid_cmd "sid::component::bus_names $victim"]
15 if {$bus == ""} then { pass $test } else { fail $test }
16
17 set test "check setting attribute list"
18 set category "setting"
19 sid_assert_includes_all "sid::component::attribute_names_in_category $victim $category" {"num-outputs"}                      
20
21 set test "check pin attribute list"
22 set category "pin"
23 sid_assert_includes_all "sid::component::attribute_names_in_category $victim $category" {"input"}                      
24
25 set test "check register attribute list"
26 set category "register"
27 set regs [sid_cmd "sid::component::attribute_names_in_category $victim $category"]
28 if {$regs == ""} then { pass $test } else { fail $test }
29
30 set test "check register watchable list"
31 set category "watchable"
32 sid_assert_includes_all "sid::component::attribute_names_in_category $victim $category" {"input" "num-outputs"}                      
33
34 set test "check accessor names"
35 set accessors [sid_cmd "sid::component::accessor_names $victim"]
36 if {$accessors == ""} then { pass $test } else { fail $test }
37
38 set test "check relationships names"
39 set rel [sid_cmd "sid::component::relationship_names $victim" ]
40 if { $rel == "" } then { pass $test } else { fail $test }
41
42 # cr 101195
43 set test "check pin names"
44 sid_assert_includes_all "sid::component::pin_names $victim" {"input"}                      
45 set test "get input pin"
46 set ipin [sid_cmd "sid::component::find_pin $victim input"]
47 if {$ipin != ""} then { pass $test } else { fail $test }
48
49 set test "erroneously connect input pin"
50 set pin [sid_cmd "sid::pin::new"]
51 set status [sid_cmd "sid::component::connect_pin $victim input $pin"]
52 if {$status != "ok"} then { pass $test } else { fail $test }
53
54 set test "erroneously check connected input pin"
55 set pins [sid_cmd "sid::component::connected_pins $victim input"]
56 if {$pins == ""} then { pass $test } else { fail $test }
57
58 set test "erroneously disconnect input pin"
59 set status [sid_cmd "sid::component::disconnect_pin $victim input $pin"]
60 if {$status != "ok"} then { pass $test } else { fail $test }
61
62 set test "check default num-outputs"
63 set noutput [sid_cmd "sid::component::attribute_value $victim num-outputs"]
64 if {$noutput == 0} then { pass $test } else { fail $test }
65
66 set test "set outputs=0"
67 sid_assert_success "sid::component::set_attribute_value $victim num-outputs 0"
68
69 set test "check num-outputs=0"
70 set noutput [sid_cmd "sid::component::attribute_value $victim num-outputs"]
71 if {$noutput == 0} then { pass $test } else { fail $test }
72
73 set test "attempt setting bad output"
74 set junkpin [sid_cmd "sid::pin::new"]
75 set result [sid_cmd "sid::component::connect_pin $victim output-4 $junkpin"]
76 if {$result == "not_found"} then { pass $test } else { fail $test }
77
78 set size 10
79 set test "set outputs=$size"
80 sid_assert_success "sid::component::set_attribute_value $victim num-outputs $size"
81
82 set test "check num-outputs=10"
83 set noutput [sid_cmd "sid::component::attribute_value $victim num-outputs"]
84 if {$noutput == 10} then { pass $test } else { fail $test }
85
86 # cr 101195
87 set test "check pin names for num-outputs=10"
88 sid_assert_includes_all "sid::component::pin_names $victim" {"input" "output-0" "output-1" "output-2" "output-3" "output-4" "output-5" "output-6" "output-7" "output-8" "output-9"}
89
90 set test "set $size output pins"
91 for {set i 0} {$i < $size} {incr i} {
92     set pin [sid_cmd "sid::pin::new"]
93     sid_cmd "set hook_driven_h4($pin) { global driven_h4_value driven_history ; lappend driven_history $i \$driven_h4_value }"
94     set status [sid_cmd "sid::component::connect_pin $victim output-$i $pin"]
95     if {$status != "ok" } then { fail $test ; return }
96 }
97 pass $test
98
99 set test "drive with value"
100 sid_cmd "set driven_history {}"
101 sid_cmd "sid::pin::driven_h4 $ipin 0xAA"
102 set status [sid_cmd "set driven_history"]
103 if {$status == {0 170 1 170 2 170 3 170 4 170 5 170 6 170 7 170 8 170 9 170}} then { pass $test } else { fail $test }
104
105 set test "check connected pins"
106 for {set i 0} {$i < 10} {incr i} {
107     set pin [sid_cmd "sid::component::connected_pins $victim output-$i"]
108     if {$pin == "" } then { fail $test ; return }
109 }
110 pass $test
111
112 set test "shrink output list"
113 set result [sid_cmd "sid::component::set_attribute_value $victim num-outputs 4"]
114 if {$result == "ok"} then { pass $test } else { fail $test }
115
116 set test "drive after shrinking"
117 sid_cmd "set driven_history {}"
118 sid_cmd "sid::pin::driven_h4 $ipin 8"
119 set status [sid_cmd "set driven_history"]
120 if {$status == {0 8 1 8 2 8 3 8}} then { pass $test } else { fail $test }
121
122 set test "disconnect pins"
123 set opin [sid_cmd [list sid::component::connected_pins $victim output-1]]
124 set status [sid_cmd [list sid::component::disconnect_pin $victim output-1 $opin]]
125 if {$status != "ok" } then { fail $test } else { pass $test }
126  
127 set test "check connected pins after disconnect pins"
128 for {set i 0} {$i < 4} {incr i} {
129     if { $i == 1 } then {
130        set pin [sid_cmd "sid::component::connected_pins $victim output-1"]
131        if {$pin != "" } then { fail $test ; return }
132     } else {
133        set pin [sid_cmd "sid::component::connected_pins $victim output-$i"]
134        if {$pin == "" } then { fail $test ; return }
135     }
136 }
137 pass $test
138
139 set i 100
140 while { $i < 256 } {
141    set test "set num-outputs attribute to be $i"
142    set status [sid_cmd "sid::component::set_attribute_value $victim num-outputs $i"]
143    if { $status != "ok" } then { fail $test ; return } 
144    set test "check num-outputs attribute is $i"
145    set noutput [sid_cmd "sid::component::attribute_value $victim num-outputs"]
146    if {$noutput != $i} then { fail $test ; return }
147    set i [ expr $i*2 ]
148 }
149 pass $test 
150
151 set test "set num-outputs too high"
152 set r1 [sid_cmd "sid::component::set_attribute_value $victim num-outputs 256"]
153 set r2 [sid_cmd "sid::component::set_attribute_value $victim num-outputs 10000000"]
154 if {$r1 == "bad_value" && $r2 == "bad_value"} then { pass $test } else { fail $test }
155
156 # cr 101214
157 set test "set num-outputs before state snapshot"
158 set status [sid_cmd "sid::component::set_attribute_value $victim num-outputs 17"]
159 if { $status == "ok" } then { pass "$test - A" } else { fail "$test - A" }
160 set numoutput [sid_cmd "sid::component::attribute_value $victim num-outputs"]
161 if { $numoutput == 17 } then { pass "$test - B" } else { fail "$test - B" }
162
163 set test "get state snapshot"
164 set state [sid_cmd "sid::component::attribute_value $victim state-snapshot"]
165 if {$state != ""} then { pass $test } else { fail $test }
166
167 set test "set num-outputs to 5 after save state"
168 set size 5
169 set status [sid_cmd "sid::component::set_attribute_value $victim num-outputs $size"]
170 if { $status == "ok" } then { pass $test } else { fail $test }
171
172 set test "check num-outputs=5 after save state"
173 set noutput [sid_cmd "sid::component::attribute_value $victim num-outputs"]
174 if {$noutput == 5} then { pass $test } else { fail $test }
175
176 set test "restore state snapshot"
177 set result [sid_cmd "sid::component::set_attribute_value $victim state-snapshot [list $state]"]
178 if {$result == "ok"} then { pass $test } else { fail $test }
179
180 set test "check num-outputs=17 after restore state"
181 set noutput [sid_cmd "sid::component::attribute_value $victim num-outputs"]
182 if {$noutput == 17} then { pass $test } else { fail $test }
183
184
185 set test "sid stop"
186 if [sid_stop] then { pass $test } else { fail $test ; return }
187
188
189 # zap temp file if tests were successful 
190 global exit_status
191 if {$exit_status == "0"} then { file delete "base4.conf" }