VLSI設計論第3回 順序回路の記述と論理合成

Slides:



Advertisements
Similar presentations
情報アプリケーション1 2006 年 10 月 12 日 第四回資料 担当 重定 如彦. 目次 データの送信とフォーム クイズ CGI 複数のパーツのデータの分割方法 配列変数.
Advertisements

論理回路 第 12 回 TkGate 実習 - 順序回路 38 号館 4 階 N-411 内線 5459
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
計算機工学特論A 10/17  テキスト内容 1.1~1.4.
UNIX利用法.
PROCESS 14:一般情報(2) InstallShieldLecture
UNIX利用法 情報ネットワーク特論資料.
VLSI設計論第4回 アキュムレータマシンと 仮遅延シミュレーション
3DCGコンテンツの基礎 第5回授業:最終課題制作
ファイルやフォルダを検索する ①「スタート」→「検索」→「ファイルとフォルダ」とクリックする。
計算機システムⅡ 主記憶装置とALU,レジスタの制御
5.3 各種カウンタ 平木.
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
数値計算及び実習 第3回 プログラミングの基礎(1).
Accessによる SQLの操作 ~実際にテーブルを操作してみよう!~.
Handel-C基礎 および 7セグとマウスのハンドリング
Verilog HDL 12月21日(月).
5.チューリングマシンと計算.
テープ(メモリ)と状態で何をするか決める
5.チューリングマシンと計算.
Quartus II 使用法 (ver 9 sp2, 一部ver. 5)
計算機構成 第7回 サブルーチンコールとスタック テキストp85-90
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
VLSI設計論第2回 組み合わせ回路の記述と 論理シミュレーション
4.2.2 4to1セレクタ.
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
スクリプト言語を用いたPHITSの連続実行
8. 順序回路の簡単化,機能的な順序回路 五島 正裕.
2005年11月2日(木) 計算機工学論A 修士1年 No, 堀江準.
計算機工学特論A 第4回 論理合成 山越研究室 増山 知東 2007年11月7日 .
VLSI設計論 慶應義塾大学 理工学部 情報工学科 山﨑 信行
ハードウェア記述言語による 論理回路設計とFPGAへの実装 2
計算機構成 第1回 ガイダンス VerilogHDLのシミュレーション環境
汎用テストベンチ作成ツール を用いた シミュレーションからテストまで
第7回 条件による繰り返し.
6. 順序回路の基礎 五島 正裕.
OpenMPハードウェア動作合成システムの検証(Ⅰ)
PCPU物理設計 ~マクロレベルの配置配線~
第6回 dc_shellを使った論理合成 慶應義塾大学 理工学部 天野.
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
第7回 条件による繰り返し.
巡回冗長検査CRC32の ハード/ソフト最適分割の検討
単語登録(1) ◎MS-IMEの「単語登録」に、単語、語句、記号など自分がよく使うものを登録しておくと、便利である。
第二部  回路記述編 第3章 文法概略と基本記述スタイル 3.1 文法を少々 3.1.1~3.1.3.
計算機構成 第2回 ALUと組み合わせ回路の記述
コンピュータアーキテクチャ 第 7 回.
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
計算機構成 第4回 アキュムレータマシン テキスト第3章
計算機構成 第8回 POCOの構造とVerilog記述 テキスト第5章-第6章
合成用システムの使い方 計算機構成用 天野.
計算機構成 第11回 マルチサイクルCPU 慶應大学 天野英晴.
第11回 よく使われる順序回路 複数のFFを接続した回路を解析する際の考え方を学ぶ カウンタ回路の仕組みを理解し,設計できるようにする 瀬戸.
  第3章 論理回路  コンピュータでは,データを2進数の0と1で表現している.この2つの値,すなわち,2値で扱われるデータを論理データという.論理データの計算・判断・記憶は論理回路により実現される.  コンピュータのハードウェアは,基本的に論理回路で作られている。              論理積回路.
コンピュータアーキテクチャ 第 9 回.
Handel-Cを用いた パックマンの設計
計算機工学特論 スライド 電気電子工学専攻 修士1年 弓仲研究室 河西良介
プログラミング演習I 2003年7月2日(第11回) 木村巌.
5.チューリングマシンと計算.
8. 順序回路の実現 五島 正裕.
本当は消去できていない!? ~データを完全消去する方法~
本当は消去できていない!? ~データを完全消去する方法~
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
精密工学科プログラミング基礎 第7回資料 (11/27実施)
コンピュータアーキテクチャ 第 9 回.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
単語登録(1) ◎MS-IMEの「単語登録」に、単語、語句、記号など自分がよく使うものを登録しておくと、便利である。
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
Presentation transcript:

VLSI設計論第3回 順序回路の記述と論理合成 慶應義塾大学 理工学部 情報工学科 天野

always文を使った順序回路 assign文を使って常に出力する組み合わせ回路と違って順序回路はレジスタに値をセットするタイミングを示す必要がある。 reg [3:0] accum; alu alu0(.ina(accum), .inb(din), .com(com), .y(alu_y)); always@(posedge clock) begin    accum <= alu_y; end clockがL→Hに変化した際に生じるregへの値のセットについての操作をbegin end内に記述 値のセットは<=を利用 if, caseが利用可 複数のレジスタを同じ文中で扱える。でも注意! タイミング記述 negedge : 立下り or : 値のセットするタイミングが複数ある場合

同期リセット、非同期リセット rst_がLになったらすぐにリセット:非同期 rst_がLになり、クロックが立ち下がったときにリセット:同期 always@(posedge clock or negedge rst_) begin    if(rst_ == `Enable_) accm <= 4’b0000; else accum <= alu_y; end rst_がLになったらすぐにリセット:非同期 always@(posedge clock) begin rst_がLになり、クロックが立ち下がったときにリセット:同期

アキュムレータデータパスの記述 module acdpath(clock, din, com, acout);  input clock; input [3:0] din;  input [2:0] com;  output [3:0] acout;  reg [3:0] accum; wire [3:0] alu_y;  assign acout = accum;  alu alu0(.ina(accum), .inb(din), .com(com), .y(alu_y));  always@(posedge clock) begin    accum <= alu_y;  end endmodule 本当はちゃんと`defineで定義して

メモリの記述 regの配列で記述 reg [3:0] mem[0:15]; assign dr = mem[adr]; 読み出し 4ビット幅、16エントリのメモリが宣言される 深さ方向は、2のべき乗でなくても良いが、半端な値にしても通常意味はない assign dr = mem[adr]; 読み出し mem[adr] <= dw; 書き込み(通常always文中) 通常合成はしないので注意!(今回は小さいのでやってしまうが、、) bit幅 深さ エントリ数

メモリを付けてみる module acdpath(clock, adr, com, acout); input clock;  input [3:0] adr;  input [2:0] com;  output [3:0] acout;  reg [3:0] accum; reg [3:0] mem[15:0]; wire [3:0] alu_y, rd;  assign acout = accum; assign rd = mem[adr];  alu alu0(.ina(accum), .inb(rd), .com(com), .y(alu_y));  always@(posedge clock) begin if(com == `ST) mem[adr] <= accum; else     accum <= alu_y;  end endmodule

always文ではなぜなんでも書けるのか? 動作がクロックのエッジに同期している 左に来るのはレジスタ、メモリのみ 条件に合わないものは、今までのデータを保持していれば良い 複数のレジスタ、メモリを同じalways文で扱える しかし、やりすぎてはいけない always@(posedge clock) begin if(com == `ST) mem[adr] <= accum; end if(com!=`ST)     accum <= alu_y; end の方がベターかも。もっとも厳格には、一つのレジスタについて一つのalways文を使う。しかし、見易さを重視すべきかもしれない、、 この機能を利用して組み合わせ回路を書いてしまうこともある

テストベンチ 一定の幅のクロックを発生 → always文の利用 メモリの初期設定 → ファイルから入力することが可能 メモリの初期設定 → ファイルから入力することが可能 一定時間経過後に$finish;で止めてやる

論理合成:design_visionの起動 コマンドラインに以下のように入力   % design_vision & 左記のようなウィンドウが立ち上がる。 注意 論理合成をするファイルがあるディレクトリで実行 すること Verilog-XLと同様にVDECでライセンスの認証を行うため、それに失敗すると起動しない。 論理合成をしたいファイルを読み込む時に、別のディレクトリのファイルを指定するとErrorとなる。

design_vision:設定の確認 Setup を選択すると.synopsys_dc.setupで 指定された情報が表示

design_vision:ファイルリード 論理合成をするファイルは File → Read を選択し表示されるウィンドウから選択 注意! Readコマンドを用いる場合は論理合成するファイルを読み込む前に、カレントディレクトリにWORKというディレクトリを作っておく必要がある。これはdesign_analyzerがファイルを読み込む時に、WORKディレクトリに一時ファイルを作成するからである。もしWORKディレクトリがないとErrorとなってファイルを読み込むことができない。なお、AnalyzeコマンドとElaborateコマンドを用いると自動でWORKディレクトリを作成することができる。

design_vision:読み込みのログ 読み込んだverilogファイルに文法エラー がなければ論理合成可能 ファイルを読み込む時のログは、カレントディレクトリのview_command.logというファイルに書き込まれる。desigan_alalyzerを起動している間、ログはこのファイルには追加書き込みされていく。一度design_analyzerを終了させてもう一度起動させると、ログファイルは上書きされる。

design_vision:論理合成前 問題がなくファイルを読み込めた場合、読み込んだモジュール名と、まだネットリストではないことを示す箱が表示 複数のモジュールを同時に読み込むと、それらも同時に表示される。どれか1つを選択したいときはそのモジュールをクリックすれば良い。またマウスボタンを押しながらカーソルを移動させ、複数モジュールを選択することもできる。 重要! 同じモジュールをその上位モジュールで複数使用する場合は、その上位モジュールを選択してから File → hierarchy → uniquify と指定する。

design_vision:論理合成前 箱をクリックすると 回路図っぽいのが 現れるが、これは 実は合成前 複数のモジュールを同時に読み込むと、それらも同時に表示される。どれか1つを選択したいときはそのモジュールをクリックすれば良い。またマウスボタンを押しながらカーソルを移動させ、複数モジュールを選択することもできる。 重要! 同じモジュールをその上位モジュールで複数使用する場合は、その上位モジュールを選択してから File → hierarchy → uniquify と指定する。

design_vision:合成条件指定 Atributes:動作クロックやチップ面積など論理合成で与える条件の指定 ここで指定できる値はあくまで目標値である。そのためチップ面積を0に指定することもできる。勿論面積0というのは実現できないが、それにできるだけ近づけるように、つまり面積が最小となるように論理合成を行う。 同じように出力の遅延時間が0になるように指定すると、より高速な回路を合成する。

design_vision:論理合成開始 Design → Compile Design を選択し、ウィンドウのOKを押すと論理合成を開始 複数のモジュールから構成される回路を合成する場合、トップモジュールを指定して論理合成を行うと下位モジュールの合成も同時に行う。

design_vision:合成の終了 メニューのAND印をクリックすると回路図を表示 レジスタなどを使わずに、全てがassign文によって配線されているだけのモジュールではファイルを読み込んだ時点で既にこの表示になっている。

design_vision: レポート 論理合成の結果を保存するファイルには、netやgateといった単語を付けてネットリストであると分かりやすくしておくと良い。また保存する形式をverilog形式にしておくと、後でverilogでのシミュレーションが可能である。保存したファイルの中身を見てみると、普通にverilogの文法で書かれたファイルとなっている。

design_vision: 階層構造があっても、Readする順番は問わない 最上位から合成を掛ければ大丈夫 最適化等細かい使い方は次回 合成後の仮遅延シミュレーションも次回

演習 1から6まで数えてstopを1にすると停止するサイコロカウンタを設計せよ テストベンチはdatapath_test.vを改造のこと シミュレーションして結果を確認、合成してゲート数を確認の上、天野(hunga@am.ics.keio.ac.jp)までソースとセル数をメールのこと