Verilogから回路図ブロック図のイメージファイルを生成するにはどうすればよいですか。


9

どのブロックが他のどのブロックに接続されているかを示す特定のVerilogモジュール階層の回路図を作成したいと思います。Novas / SpringsoftのDebussy / Verdi nschemaツール、またはRTLにグラフィカルなデザインブラウザーを提供する多くのEDAツールのいずれかによく似ています。

verilogまたはvhdlの定義から、または他のテキストベースの入力形式からプログラムで回路図を描画するために利用できるツール領域は何ですか?

回答:


10

無料でオープンソースの素晴らしい HDL合成ツールボックスであるYosysを使用して、クールな(そして無料の)(そして最新のVivadoよりも高速な)追加の用量を使用します(スピーチやビールのように無料について言及しましたか?)(そして素晴らしい)!

yosysとxdotユーティリティ(多くの場合、python-xdotと呼ばれるパッケージの一部)だけでなく、graphvizも入手してください。

次に、verilogファイルのようにします(これをと呼びましょうminifsm.v)。

module piggybank (
                  input         clk,
                  input         reset,
                  input [8:0]   deposit,
                  input [8:0]   withdrawal,
                  output [16:0] balance,
                  output        success
                  );
   reg [16:0]                   _balance;
   assign balance = _balance;
   wire [8:0]                   interest = _balance [16:9];
   reg [5:0]                    time_o_clock;
   localparam STATE_OPEN = 0;
   localparam STATE_CLOSED = 1;
   reg                          openness;
   assign success = (deposit == 0 && withdrawal == 0) || (openness == STATE_OPEN && (withdrawal <= _balance));
   always @(posedge clk)
     if(reset) begin
        _balance <= 0;
        openness <= STATE_CLOSED;
        time_o_clock <= 0;
     end else begin
        if (openness == STATE_CLOSED) begin
           if(time_o_clock == 5'd7) begin
              openness <= STATE_OPEN;
              time_o_clock <= 0;
           end else begin
              time_o_clock <= time_o_clock + 1;
           end
           if (time_o_clock == 0) begin //add interest at closing
              _balance <= _balance + interest;
           end;
        end else begin //We're open!
           if(time_o_clock == 5'd9) begin // open for 9h
              openness <= STATE_CLOSED;
              time_o_clock <= 0;
           end else begin
              _balance <= (success) ? _balance + deposit - withdrawal : _balance;
              time_o_clock <= time_o_clock + 1;
           end
        end // else: !if(openness == STATE_CLOSED)
     end // else: !if(reset)
endmodule // piggybank

そしてyosysを実行します:

yosys

 /----------------------------------------------------------------------------\
 |                                                                            |
 |  yosys -- Yosys Open SYnthesis Suite                                       |
 |                                                                            |
 |  Copyright (C) 2012 - 2016  Clifford Wolf <clifford@clifford.at>           |
 |                                                                            |
 |  Permission to use, copy, modify, and/or distribute this software for any  |
 |  purpose with or without fee is hereby granted, provided that the above    |
 |  copyright notice and this permission notice appear in all copies.         |
 |                                                                            |
 |  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES  |
 |  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF          |
 |  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR   |
 |  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES    |
 |  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN     |
 |  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   |
 |  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.            |
 |                                                                            |
 \----------------------------------------------------------------------------/

 Yosys 0.6+155 (git sha1 a72fb85, clang 3.7.0 -fPIC -Os)

verilogファイルをロードし、階層を確認してから、プロセスを抽出し、最適化し、ステートマシンを見つけ、最適化してグラフを表示します。

yosys> read_verilog minifsm.v
 
yosys> hierarchy -check;
yosys> proc;
yosys> opt;
yosys> fsm;
yosys> opt;
yosys> show;

そしてあなたは次のようなものを得るでしょう

画像表現  論理

showコマンドのさまざまなオプションを使用して、グラフをファイルに保存することもできます。Yosysを使用すると、verilog、EDIF、BLIFなどで「フラット化された」ロジックを記述し、ArachnePnRでサポートされているものを含む特定の技術プラットフォーム用に合成してマップし、さらに興味深いことができます。本質的に、Yosysは、コンパイラの作成方法を知っている人にVerilogシンセサイザを記述させるようなものです。


1

何がありますか?これらの機能には、さまざまな出力品質の機能があります。

  • Synplicity
  • Synopsys Design Compiler
  • アルテラQuartus II
  • ザイリンクスISE

1
私は、GUIインタラクションなしでこれをオンデマンドで実行したいと考えています。つまり、プログラムで。DCにアクセスできます。
ロスロジャース、

0

アルテラクォータスはそれを実行できるはずです。

私がVHDLを研究していたとき、Quartus Web Editionで時々逆変換(回路図から始めてVHDLの同等物を取得)を実行しましたが、うまくいきました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.