連絡事項
実験内容に関する注意事項
- スイッチの数が足りない場合は拡張ボードのスイッチを使用しても良い.
拡張ボード利用ガイド.pdf - 指導書のALUの回路にキャリーフラグの値を利用する加減算モードについても実装すること。
- 今回の実験はALU回路の設計・実装よりも確実にテストを行うテストケースの設計がメインである。
- 際を狙うテストケース(限界値分析によるテストケース)はソフトウェアのループの境界をチェックするテストケースの手法(テストケースに順序が付けられるものに対しての限界値/境界値)であり、ループしないで入力によって結果が変わるテストには向いていないことを認識して欲しい。
- ハードウェアは各ビットが独立に動作をしているため、境界値/限界値を求めることに意味がない。更には、入力されるデータの組に対して、有効/無効は定義できない(しいて言うなら全て有効同値クラスとなる)。
- 今回の実験では各ビットが独立に間違いなく動作していて、全てのビットの組合せ(00,01,10,11)で正しく結果が求まっているかをテストする必要がある。
- 「テストケース」とは何でしょうか?テストのための入力パターンを定めることではありません。言葉に対する正確な理解や概念形成を心がけましょう
レポートに関する注意事項
- レポートの実験結果にLEDx[x]等の結果と記載されているレポートが多い。実験結果はどの信号が1/0(H/L)だったかを示すべきであってどこのLEDで観測したかが重要ではない。どの信号の観測結果かをレポートには明示すること。
- 実験結果を示す際、0/1の羅列では、正しいのかどうかの判断ができない。入力として数値/ビットパターンはいくつを想定しているのか?符号付き2進か/符号なし2進か?読み手のことを考えて実験結果の表を記載してください。
- レポート全体を通して、キャリーとオーバーフローの定義が曖昧である(正しくない)。この理解の元でテストケースを作ったのであれば、実験結果の妥当性、正当性は検証できない。
- 実験結果(特に、キャリーとオーバーフローの出力)が正しいとどうして言えますか?
- キャリーとオーバーフローの「定義」とそれらの「検出の条件」は別です。ちゃんと区別して使い分けてください。
- 実験方法では、テストケースの作成方法の説明は必要でしょう。具体的なテストケース並びにテストケースの説明は実験方法の中に書きます。
- この実験ではハードウェアのテストケースの作成を期待している。ハードウェアは各ビット独立に動作するため、ソフトウェアのループの上限下限の正当性をテストする「境界値分析」のテストは適切ではない。
- ハードウェアのバグとして考えられるのは以下のような項目が考えられる。少ないテストケースで以下のようなバグを検出する効果的なテストケースを考えてほしい。
- ALUの入力データ線や出力データ線の誤配線/未配線(ビットが入れ替わっていたり、1や0固定になっている場合)
- 各ビットのキャリー信号の誤配線/未配線
- 制御信号線の誤配線/未配線
- 各ビットで論理演算が正しく行われていない(制御信号の誤配線含む)
- 論理演算が各ビット独立に行われていない(他のビットとの依存関係が存在する)
- テストケースの作成の方針、十分である理由/解説、網羅の度合い等について、自分たちの宣言(「これで十分だ!!」)ではなく、論理的、合理的な説明をすること。
- 例えば、正の数,0,負の数に対して演算を施した結果、キャリーが発生する場合、発生しない場合、オーバーフローの場合、オーバーフローでない場合などがテストケースに網羅されているのか?
- 論理演算では、各ビットが独立に演算結果を出力していることを確認できるテストケースが必要である。0xFFFFと0xFFFF, 0xFFFFと0x0000, 0x0000と0xFFFF, 0x0000と0x0000の演算は、すべての組み合わせを確認しているように見えるが、各ビットが独立であるかどうかはわからない。上のビット/下のビットと同じ出力にならないようにテストケースを定める辺ではないか?
- オーバーフロー回路等の出てきた根拠、導出の過程、論理関数などを示すこと。この回路を用いて、実験結果のオーバーフローがちゃんと検出できるかどうかを検証すること。
- 実験回路図は、パッケージとピン番号を書くのではない。
- ピン番号が重要なのではなく、指導書の図6.2のようなどの入出力にどのような信号が入出力されるのかが重要。
- 何を求められているのか、それを見極めて読み手の立場で記述することが大切。
- * 検討事項(1)では、答えを書いて終わりでは困る。
- 導出の過程、正しさの証明、抜けがないことの説明など、ちゃんと書かなければならないことは沢山ある(たくさん書けば良いわけではないが…)。
※「テストケースがたりないのでは?」と指摘されて即再実験と言うわけではない。ほとんどの場合において、説明不足であったり、理由かなかったりというのが主な原因である。また、直接テストケースを観測していなくても、他のケースで説明できる/他の複数のケースから論理的に導出できるなら再実験をする必要はない。考えることをあきらめて安易に再実験に走らないように!! しっかり考えて、論理的・合理的な説明をするよう努力しよう。
- 導出の過程、正しさの証明、抜けがないことの説明など、ちゃんと書かなければならないことは沢山ある(たくさん書けば良いわけではないが…)。
注意事項
- 今回はスイッチと表示を使います。実験開始時までにスイッチと表示回路を完成し、正しく動作することを確認しておくこと。
実験のテストパターン
- 入力の信号線は、全て合わせても32+5本(A15-A0,B15-B0,x,y,z,u,v)である。 全ての組合せを試すには237通り(たかだか有限!)であるが、各演算において、その演算の結果が分かる5〜10通り程度のテストパターンで実験結果を記録する。 どのようなテストパターンを準備すれば良いのか、そのテストパターンで十分か?/他に必要ないか?を各班で考えてもらいたい。
- レアケースばかりに着目してしまって、本来使うようなパターンを見逃していないだろうか?
- 選んだパターンすべてで変化していない出力がある場合、入力の組み合わせを見直す・追加することが必要ではないか?
- ビット演算のテストケースにおいて、桁あげや借りが生じていないことを示すテストパターンになっているか?
- 入出力をすべてLEDを用いて観測すること。スイッチが上側、下側に倒れているという観測ではダメ。指導書の回路図では、入力のスイッチの一部をLEDで観測する回路になっていませんが、実験では入力SWの信号を必ずLEDで観測してください。また、レポートにはその時に使用した回路図を記載してください。
レポート(報告書)のチェックシート(H4用)
共通項目
□ 章や節の構成を意識して、文章を構成する。
□ 段落を意識して文章を構成すること。1文が1段落のような文章は良くない。
□ 段落のはじめは1文字字下げする (Wordでは空白を入れなくてもスタイルで調整することができる)。
□ コピーを使用していないこと。回路図を書く練習を目的にしているので、 指導書等の図のイメージを取り込んで張り付けるのもダメ。
□ 実験結果を一目で理解できるように観測データを整理し実験した証として提示保存する。
□ 観測データを見やすいように、表やグラフとして提示する。
□ 図表には全体の通し番号と説明文(キャプション)を付ける(図2 xxxx,表1 ~~~ のように)。
□ キャプション(図のタイトル・説明文)は、図の場合は図の下側、表の場合は表の上側に付ける。
□ 図表は必ず本文から参照し、本文では簡単な説明を書く。「~の実験結果を図●に示す。図●は~」のように本文から参照すること。
□ 一つの図表はページをまたがらないように配置する。
□ 論理回路図の書き方に従い、定められた記号を用いて正しい回路図を記載する。
□ 論理式も標準的な書き方/記法に従い正しい論理式を記載する。
□ レポート用紙の周囲1インチ(2.5cm)程度、余白を設ける。
□ レポートの上部を3箇所程度(左上、上、右上)、上にめくりやすいようにホチキスで止めること。
□ 作成した回路の回路図にはピン番号やIC番号が正確に記されているか?
□ 使用した論理素子や測定機器等の実験装置は正確に記載されているか?
□ 実験データは入力・出力が正しく分かりやすく示されていること。
個別項目
□ 今回の実験は膨大な表になると思われるが、できるだけ分かりやすく実験データを提示するように努力すること。
□ 表はページを分けないことが原則である。表をいくつかに分割するのも1ページに納める方法のひとつである。
□ 見やすい位置に表を配置しているか?
□ 測定したデータがそのまま記載されているか?
□ 表のデータや計算に誤りはないか?
□ 観測方法に誤りはないか? LEDを使用して観測した入出力か?
□ 適切なテストパターンか(レアケースばかりを狙ったパターンになっていないか)? 適切なテストケースが選択されているか? テストケースとは入力を定めるだけではダメ。
□ 適切な量のテストパターンか? 適切なテストケースが選択されているか?
□ 実験データがすべて記載されているか?
□ 検討事項(1)は、実現方法は一つだけではない。複数考えられるのであれば、それを記載すること。
□ 検討事項(2)は、回路図を示すだけでなく、なぜそのような回路になったのか,なぜそうすればよいのか等を本文中に示すこと。
□ 検討事項(3)は、各班でオーバーフローを定義(「どんな演算で」、「どんな入力値をいれ」、「どうなったらオーバーフロー」)し、それを検出する回路について示しなさい。 また、実験結果から、それをどのように検出すれば良いかを考察しなさい。 実現の方法は複数ある可能性がある。