※2025/05/19:つたない文をChatGPTに調整してもらいました。ちょっとはマシになったような…?変更内容を一度確定しておきますが、あとで余裕あればもう少し文を調整したいです
目次
機能検証には、ぜひスコアボードを使いましょう。理由はいろいろありますが、特に大きなメリットのひとつがリアルタイム比較です。
たとえば、「100回ライトして、100回リードして、100回比較する」ようなテストを考えてみてください。通常は、100回のリードがすべて終わった後に比較処理を行うことになります。
……まさか、100回すべてを if 文で比較しようなんて思いませんよね?(笑)
もちろん、「リードと比較をタスク化」することで繰り返し記述は避けられますが、もう一歩踏み込めます。
では、入力信号をテキストファイルから読み込んでスティミュラスとして使い、回路出力を別のモデルが受け取って、受信データをファイルに保存するような構成だったらどうでしょうか。この場合、比較はたいていシミュレーション終了後に行われます。
ところが、それだと「どのシミュレーション時間で不一致が起きたのか」がわからず、波形を追いながら
「んー、どの転送で起きたんだろう……?」
と手探りで調査する羽目になります。これ、けっこう面倒です。
「でもスコアボードって、どうやって作るの?」
「そもそも、作る時間なんてないよ……」
そんな声も聞こえてきそうですがご安心を。このサイトでは、汎用比較器という名前で、誰でも使えるスコアボードの例を公開しています(※UVM用です)。
「え、UVMってなに? 勉強する余裕ないんだけど……」
という方も多いと思います。
そこで、UVMはもちろん、OVMでもVMMでも使える、SystemVerilog対応シミュレータさえあれば動く「シンプルスコアボード」を準備中です。スコアボードの考え方は、それほど難しくありません。近日中に「シンプルスコアボードの作り方」をこのサイトに掲載したいと思います。そんなもの書いても、ぼくにお金は入らないんですがね(笑)
でも、いろんなパターンを自分でコードにしていくと、スキルがどんどん自分の血肉になっていくんですよね。HDLに振り回されず、HDLを使いこなす。
まさに「SystemVerilogで遊ぼう」ってことです。
多くの人に、スコアボードの存在を知ってほしい。そして、実際に使ってほしい。それによって、機能検証の品質と効率が少しでも向上することを願っています。