2016-04-08 17 views
5

私は、VerilogでのASICデザインのベストプラクティスについて理解したり、研究したりしようとしています。私は〜20サブモジュール(各〜1000行のコード)と中規模のブロックに取り組んでいます。すべてのサブモジュールを手動でインスタンス化し、ポート接続を行ってトップレベルのRTLを作成するのは骨の折れる仕事です。モジュールのポート接続を自動化する方法はありますか?

これを自動化するスクリプトを作成したいと思います。すべてのサブモジュールの入出力と各サブモジュールの接続方法を定義できる限り、最上位レベルを自動生成するのは非常に困難です。私は設計自動化に十分な専門知識を持っていません。誰かが私にどのように始めるべきかについてのいくつかの示唆を与えることができるかどうか疑問に思っていた。

  • 私がやろうとしていることを達成するためのオープンソースのツールはありますか?私はこれまで何も見つかりませんでした。
  • このような合成可能なコードを生成する標準的な方法はありますか?

入力やアドバイスをいただければ幸いです。

+2

あなたは '使用することができます*'暗黙のポート接続の特許モジュールはサブモジュールのポート名と同じ変数を持っている場合。しかし、注意深く使用してください。 – rahulcodesinverilog

+0

perlスクリプトを作成し、モジュールのファイルを入力し、1つのトップファイルを生成して、いくつかのストーミングロジックを実行し、トップモジュールにサブモジュールをインスタンス化することができます。小さなモジュールで試してから、あなたの要件に合わせて展開してください。直接のスクリプトを求めることはできませんが、可能ですが、可能です。 –

+0

自動的な解決策ではありませんが、私がよくやることはここにあります。サブモジュールの定義に貼り付け(例: 'module#(...)(入力ロジック...、出力ロジック...);')、インスタンス名を追加してポートの方向とタイプをすべて削除します。あなたはエディタで次のように 'CUT。PASTE(PASTE)'を実行し、各ポート名をダブルクリックして強調表示し、マクロを実行すると、 'some_name'が' .some_name(some_name) 'に変更されます。接続名が同じであれば、仕事が終わってしまいます。そうでなければ、もう少しダブルクリック、コピー、貼り付けをするのは簡単です。私は '。*'が好きではありません。 –

答えて

4

使用しているテキストエディタによっては、既存のツールを使用できる場合があります。アドオンのEmacsの自動インスタンス化および接続信号をサポートしていますが、特定の命名規則に従うことを仮定して、ある:

そこにvimのユーザーのために

http://www.veripool.org/wiki/verilog-mode/Verilog-mode_veritedium

、使用できるようにプラグインのカップルがありますなど、この一つとしてEmacsのスクリプトは、:

http://www.vim.org/scripts/script.php?script_id=1875

関連する問題