VIPに追加まず、PPMフォーマットのイメージの読み出し/ダンプ機能を追加しました[3]。VIPは、入力PPMファイルとしてsnps_dp_dsc_input_file.ppmを読み込みます。このファイルはソフト・リンクで、任意のPPMファイルを参照先にできるため、VIPのコードは変更する必要がありません。このPPMファイルを解析して読み込んだデータは、ドライバ(シノプシスVIPまたはカスタマーDUT)に渡されます。DSCアルゴリズムを使用してソース・イメージを圧縮し、DisplayPortリンクに送信します。DSCアルゴリズムを使用して圧縮展開し、そのデータをsvt_dp_main_link_<frame_number>.ppmという名前のPPMファイルにダンプします。VIPの柔軟性を高めるには、処理対象の画像のフォーマットを識別して任意のPPMファイルを読み出せるようにする必要があります。VIPには、PPMファイルのヘッダを解析し、画像のフォーマット、高さ、幅、色深度などの情報を取得してVIPコンフィギュレーションに値を割り当てる機能があります。DSCでサポートされているフォーマットに準拠しているかどうかを確認する機能もあります。シンク側ではイメージをフレーム単位でダンプし、シミュレーションの最終段階で圧縮展開後のイメージとソース・イメージを比較して、その差分をSNPS_DP_DSC_PIC_DIFF.ppmファイルに格納します。ここでも、画像フォーマットが維持されているかどうかがチェックされます。フォーマットが一致しない場合は、ソース・イメージのフォーマットが使用されます。概要ディスプレイ装置の品質はここ数年でめざましい向上を遂げ、今や4Kディスプレイが主流になったばかりでなく、8Kおよび10K時代の到来も迫っています。これに伴い、ディスプレイ・リンクのデータ転送量も飛躍的に増大しているため、現在ほとんどのディスプレイ・インターフェイスが何らかの圧縮技術を利用しています。Compression)1.2/1.2aです[1]。Interface(DSI)2.0/1.3に採用されています。DSCを評価した結果をご紹介します。V1.2)のセクション1.2には以下の記載があります。「DSCアルゴリズムは、ディスプレイ・リンク上で視覚的に品質劣化のないビデオ圧縮を低コストでハードウェア実装することを目的として設計されています。」ほとんどの圧縮アルゴリズムでは、多かれ少なかれ何らかのデータが失われます。したがって、「視覚的に品質劣化のない」圧縮とは、その違いが人間の目ではほとんど識別できないことを意味しています。Pixmap)形式のファイルにダンプして視覚的に解析できるようにするとともに、数学的証明によって定量的解析も可能にするアルゴリズムを開発しました。このアルゴリズムは任意の2つのPPM形式画像を比較し、その差分をPPM画像として保存し、ピクセル単位でデータを比較して不一致率を求めます。VIPには、このアルゴリズムがモジュールとして追加されています。図1:全体的なトポロジ差分ダンプのアルゴリズムソース・イメージと圧縮展開後のイメージの差分を視覚的に評価するのは純粋に主観的な問題であるため、差分を表現する方法はいくつもあります。ここでは2つの方法について説明します。グレースケール法この方法では、差分にオフセット値128を加え、負の値を0~255の正のスケールにシフトします。差分が(-128,-128,-128)の場合、このスケールでは(0,0,0)となります。同様に、(0,0,0)は(128,128,128)となり、(127,127,127)は(255,255,255)となります。すると、すべての差分がグレーを基準に測定されます。グレースケール法という名前はここから由来しています。y)におけるピクセル値の差分が(+1,+1,+1)の場合、グレースケール法では(129,129,129)にマップされます。グレーほとんどの場合、差分はそれほど大きくないため画像全体がグレーになります。このことは、視覚的に品質劣化のない圧縮アルゴリズムであることを証明しています。差分にオフセット値128を加えるのではなく、差分の値の絶対値をとると差分画像は黒になります。黒これら2つの方法は基本的に同じものです。グレースケール法ではカバーできる値の範囲が半分になりますが、-128~+127の範囲でカバーできないような差分値となることは考えにくいため、大きな問題ではありません。例として、DSCアルゴリズムによる圧縮前の画像と、圧縮展開した後の画像を示します。差分画像を見ると明らかなように、視覚的にはデータの違いが認められず、定性的には非常に良好な圧縮/展開アルゴリズムであると言えます。VIPから出力された圧縮展開後のイメージ図4:圧縮前と展開後のイメージの差分(グレースケール)図2をソース・イメージとして圧縮を実行した場合、snps_dp_dsc_pic_diff.svモジュールからは以下の内容が出力されます。8.988163不一致率は10.33%ですが、どのコンポーネントも差は小さいため、グレーからかけ離れた色にはならず、図4で大きな差異は認められません。絶対スケール法では、ソース・イメージと圧縮展開後のイメージの全コンポーネントを比較し、符号ビットなしの絶対差分をとります。色深度8ビットの場合、差分は-256~+255の範囲をとり、これを表現するには9ビットが必要です。これでは実質的に2倍の色深度となるため、符号ビットを取り除きます。この方法では2つの値が同じ色になるという重複が発生しますが、ここではどの位置にどれだけの差があるかを知ることが最大の目的であるため、このことは問題になりません。表1:カラー・コード[4]差分量が同じでも、符号付きの値がどのコンポーネントで変わるかによってまったく異なる色になります。差分量は非常に小さいことがほとんどですが、この性質を活用することによって、ソース・イメージと圧縮展開後のイメージの違いを明確に視覚化できます。図5に、ソース・イメージと圧縮展開後のイメージの差分(不一致率1.84%)を絶対スケールで表示した例を示します。入力には、図2と同じ画像を使用しています。この場合のスライス数は垂直4、水平4で、ピクセルあたりビット数(bpp)は12.125です。図5:絶対スケールで表示したソース・イメージと圧縮展開後のイメージの差分(不一致率1.84%)snps_dp_dsc_pic_diff.svモジュールからは以下の内容が出力されます。1.842012不一致率が高くなると、下図に示すようにより多くのピクセルが目立ってきます。不一致はエッジおよびテクスチャ部分に集中していることが分かります。図6:絶対スケールで表示したソース・イメージと圧縮展開後のイメージの差分(不一致率8.85%)同じ画像をグレースケールに変換すると、圧縮による劣化は小さくなります。今回の検証では多くのデータが得られました。ここでは、これらのデータから明らかになった全体的傾向について見ていきます。スライス数とコンポーネントあたりビット数(bpc)を固定した場合の不一致率を調べてみると、ターゲットのピクセルあたりビット数(bpp)が大きいほど不一致率が低下することが分かりました。これは予想に一致しています。bppの値が大きいと、同じ量のデータをより多くのビットで符号化でき、圧縮が弱くなるためです。図7は、解像度640x480、bpc=8、スライス数16*1の画像の場合のグラフです。図7:ピクセルあたりビット数(bpp)と不一致率の関係スライス数を横軸、不一致率を縦軸にとると、スライス数が増えるにつれ不一致率が大きくなっています。スライス幅が小さいほど劣化は大きくなります。このグラフを見ると分かるように、スライス数12、24のようにスライス幅が整数でない場合には不一致率が低下します。各スライスは別々に処理されるため、スライス数はスループットに大きく影響します。図8は、解像度640x480、bpc=8、ターゲットbpp=15の画像の場合のグラフです。図8:スライス数と不一致率の関係(640x480フレームの場合)次のグラフに示すように、bpp=15、bpc=8に設定し、画像サイズを大きくすると不一致率が上昇します。図9:スライス数と不一致率の関係(3840x2160フレームの場合)まとめPPMファイルの読み出しおよびダンプ機能をVIPに追加することにより、圧縮アルゴリズムが正しく実装されているかどうかを独自の観点から評価できるようになります。VIPを設計する際には、トランザクションをスコアボードに記録してサンプルしたデータと駆動したデータが一致するかどうかを見るのが一般的な手法ですが、圧縮の場合はソース・データと圧縮展開後のデータが全く同じであることはほとんどないため、このようなアプローチはあまり意味がありません。データ・セットが異なると不一致率も異なります。本稿で紹介した方法を使用して差分をPPMファイルにダンプして画像を比較すると、圧縮による品質劣化を現実的な方法で評価できます。この方法はあらゆる種類の圧縮アルゴリズムに適用できるという利点もあります。Program)を使用。