• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Blogs
  2. カスタムIC/ミックスシグナル
  3. Spectre Tech Tips: Spectre SQLデータベースでビッグデータを扱う
Custom IC Japan
Custom IC Japan

Community Member

Blog Activity
Options
  • Subscribe by email
  • More
  • Cancel
APS
Dynamic Checks
assert
Spectre
japanese blog
check
static checks

Spectre Tech Tips: Spectre SQLデータベースでビッグデータを扱う

20 Oct 2021 • Less than one minute read

 デザインが大きくなると、シミュレーションによってビッグデータが発生します。データが大きくなればなるほど、後処理やディスクへの効率的な保存が求められます。

Disk Space

Spectreには、データを様々なフォーマットで出力する機能がいくつかあります。このブログでは、回路チェックやアサートといった機能に焦点を当てます。大規模な設計では、回路チェックやアサートによる違反が何千件も発生する可能性があります。 それぞれの違反は、デバイス名、ノード名、タイミング情報で構成されています。これはリーフレベルの情報(またはデータ)です。デバイス名やノード名が同じでも、タイミングが異なる違反が存在する可能性があります。このような違反データをASCIIフォーマットで保存すると、同じデバイス名やノード名の情報を何度も書き込んでしまうため、多くのディスクスペースを消費してしまいます。

SQLiteはこのようなリーフレベルの情報を別々のテーブルに保存します。例えば、デバイス名はデバイステーブルに保存され、ノード名はノードテーブルに保存されます。SQLiteはリーフレベルのテーブルを使って、VIEW技術を用いてバイオレーションテーブルを作成します。VIEWはあらかじめ定義されたSQLクエリで、複数のリーフレベルのテーブルをリンク(データベース理論ではJOINとも呼ばれます)して、新しい上位レベルのテーブルを形成します。この上位レベルのテーブルには、ユーザーが必要とするすべての情報が含まれています。

Spectreは、SQLiteデータベースを、rawディレクトリにあるinput.sqldbファイルに書き込みます。input.sqldbでは、名前がVIEWで終わるテーブルはすべて上位のテーブルです。以下は、dyn_highzチェックのVIEWの例です。dyn_highz_0Viewは、"dyn_highz_0"、"checker"、"node"、"analysis "などのリーフレベルのテーブルをリンクしています。

結論として、ASCIIフォーマットで保存されたビッグデータも、SQLiteフォーマットで保存されたビッグデータも、ユーザーに与える情報は同じです。しかし、SQLiteはビッグデータをより効率的にディスクに保存するため、ディスクコストを節約できます。

Post-processing

ビッグデータのポストプロセスの需要は避けられません。ビッグデータでは、ユーザーは違反を放棄したり、違反をソートしたり、データを他のフォーマットに変換したりしたいと考えます。

  • すべての違反が深刻なものではありません。ユーザーは、ユーザー固有の基準を用いて、そのような違反を放棄することができます。
  • 違反の中には重大なものもあります。ユーザーはそのような違反を深刻度でソートすることができます。
  • 市場には多くのデータ可視化ツールが出回っています。https://github.com/d3/d3/wiki/Gallery このようなツールは、JSONなどの特定のフォーマットのデータを必要とします。そのため、ユーザーはSQLiteフォーマットをJSONフォーマットに変換する必要があります。

SQLiteフォーマットのポストプロセスは、ASCIIフォーマットよりも効率的です。PerlやPythonなど、さまざまなプログラミング言語で書かれたスクリプトを使って行うことができます。

スクリプトによるASCIIフォーマットのポストプロセスは、次の2つのステップで行われます:

  1. テキストファイルを、リーフレベルのデータに解析します。このデータは構造化された形でコンピュータのメモリに保存されます。
  2. ユーザーは、コンピュータのメモリ上のデータ構造を、ユーザー定義の基準を用いて操作します。

SQLiteによるポストプロセスは、その最初のステップを取り除きます。データはすでに構造化された形でSQLiteファイルに保存されています。スクリプトはSQLiteファイルを開くだけで、ASCIIフォーマットのように解析する必要はありません。このため、SQLiteは、カラムの追加、カラムの位置の変更、デリミタの変更などに対して、あまり神経質ではありません。ASCIIフォーマットでは、このような変更があるとスクリプトが壊れてしまい、スクリプトの更新が必要になります。そのため、SQLiteフォーマットのポストプロセスを行うことで、スクリプトのメンテナンスコストを削減することができます。

SQLiteフォーマットを読むことができるサードパーティのツールがいくつかあります。Linuxオペレーティングシステムにもsqlite3というSQLiteリーダーがあります。Linux のシェルで which sqlite3 と入力すると、そのパスが表示されます。通常は、/bin/sqlite3にあります。

Amaninder

Translator: Naoto Hasegawa

関連リソース

  • Rapid Adoption Kit: Querying Spectre SQL database with design checks
  • SQLite Reference: https://www.sqlite.org/index.html
  • SPECTRE 日本語資料 (Cadence LEARNING & SUPPORT)

担当のCadence Support AEにコンタクトを取ってガイダンスを受けることも可能です。

Cadenceの回路設計プロダクトとサービスの詳細については、www.cadence.comをご参照ください。

Spectre Tech Tipsについて

Spectre Tech Tips は、Spectre®の機能や可能性を探求することを目的としたブログシリーズです。このシリーズでは、Spectreの有用な機能や改善についての知見を提供することに加えて、Spectreに関連するあらゆることについての知識と経験を共有する、様々なブロガーや専門家の声を届けます。