CatalystAD

SPICEネットリスト/Verilogゲート・コンバータ

Catalyst AD™は、トランジスタ・レベルの記述をVerilog ゲート・レベルに変換するツールとして最適です。 マイクロプロセッサ、DSP、グラフィック、高速通信分野などの用途に対応しています。

特長

  • トランジスタ・レベルのネットリストから、Verilogゲート・レベルのネットリストおよびモデルを生成するための、自動ソリューションを提供
  • ハードIPの設計資産およびカスタム・ロジックの、デザイン再利用/マイグレーションのための、リバース・エンジニアリングに理想的
  • HSPICETM/SPECTRETMおよびDSPF階層/フラット・ネットリストに対応
  • あらゆるCMOS/SOIデザイン・スタイルに対応(スタンダード・セル、カスタム、スタティック、ダイナミック、コンビネーション、シーケンス、ドミノ、フット付、フットレス、セルフ・タイムド、ポスト・チャージ、カスコード、DCVS、パス・トランジスタ、バレル・シフタ、クロスバー・スイッチ構造、m–nロジック・ツリーなどに対応)
  • 24入力以上の幅広いファンインを持つパスゲート、スネーク・パス、数十万もの並列パスを含む出力パスの深さのモデリングを適切に制御
  • Catalyst ADとAccuCoreを共に用いることで、完全な検証およびタイミング・モデリングのソリューションを提供
トランジスタ・レベルのネットリストから、ゲート・レベルのファンクションを自動抽出

ツール・フロー手順

  1. 完全な階層パス情報を含み、モジュール/ポート/ネットの名前およびバスを保持しながら、平坦化したSPICE/DSPFネットリストを読み込む。
  2. クロック分周器、クロック逓倍器、フェーズ・シフタ、PLLなどの非静的素子に定義されたクロックを、ブール代数解析により回路内に伝播させる。
  3. アナログ回路を、ブラック・ボックス・コマンドで定義したユーザ定義のパターンにより、論理回路から切り分ける。
  4. ラッチおよびフリップ・フロップの構造やそのバリエーションを自動認識する。 
  5. デザインをセルに分割する。
  6. アルゴリズムとパターンに基づいたファンクション抽出およびセル分類を自動的に実行する。
  7. Verilogセル・ネットリストを生成する。(素子のブラック・ボックス化オプションあり)
  8. ゲート・レベルのVerilogモデルを生成する。

入力

  • オプションのRC情報を含む、階層またはフラットSPICE/DSPFネットリスト
  • コマンド、変数設定、ピン情報、ファイル名を含む、コンフィグレーション・ファイル(.cfg)
  • 基本のランタイム・スクリプト・ファイル(.tcl)

出力

  • Verilogセル・ネットリスト
  • ゲート・レベルのVerilogモデル・ライブラリ
  • Verilogテンプレート・ライブラリ

入力ファイル例:

Example “and.cfg” input file:

inputs a b c
outputs out
powers vdd
grounds gnd
TOP_VLOG_MODULE and
TOP_SPICE_SUBCKT and
IN_FILE_NAME and.cir
MOSFET_TYPE p pmos
MOSFET_TYPE n nmos

Example “and.tcl” input file:

gen_model and.cfg

Run-time command:

catalystad and.tcl |& tee and.log

出力ファイル例:

Example “and.v” netlist output file:
module and( out , a , b , c );
output out ;
input a , b , c ;
supply1 vdd ;
supply0 gnd ;
wire z;
and_dc_2 i_and_dc_2( .z(z) , .a(a) , .b(b) , .c(c) );
and_dc_3 i_and_dc_3( .out(out) , .z(z) );
endmodule


Example “and_vlg.lib” model output file(partial):


`include “template.v”
`celldefine
module and_dc_2( z , \a<1> , \a<0> );
output z ;
input \a<1> , \a<0> ;
// gate type static for z
wire net_z_1_0 ;
wire z_out_0 ;
wire net_z_1_1 ;
wire z_out_1 ;
buf( net_z_1_0 , \a<0> );
mux mux_inst_z_0_0( z_out_0 , \a<1> , 1’b0 , net_z_1_0 );
not( net_z_1_1 , \a<0> );
mux mux_inst_z_0_1( z_out_1 , \a<1> , 1’b1 , net_z_1_1 );
// inverter for 0 term
wire z_out_0_bar ;
not( z_out_0_bar , z_out_0 );
// output driver
and( z , z_out_0_bar , z_out_1 );
endmodule
`endcelldefine

デザイン・センター・ツール・フロー

Rev.042513_04