2008インターンシップ 株式会社DNPエル・エス・アイ・デザイン. ・ 志望動機 LSI設計にとても興味があり、LSIについてより多くの知識を習得したい為。 また、大学では学ぶことのできない内容を学習したい。 ・ 実習の目的 大学で学ぶことのできない知識を学び、大学で学んだことがある 内容をいかに応用して実習の課題をこなして自分の知識として.

Slides:



Advertisements
Similar presentations
論理回路 第 11 回
Advertisements

論理回路 第 4 回 TkGate 実習 - 組み合わせ論理回路 38 号館 4 階 N-411 内線 5459
論理回路 第 12 回 TkGate 実習 - 順序回路 38 号館 4 階 N-411 内線 5459
計算機工学特論A 10/17  テキスト内容 1.1~1.4.
VLSI設計論第4回 アキュムレータマシンと 仮遅延シミュレーション
第12回 順序回路の解析方法 瀬戸 順序回路から,以下を導き、解析を行えるようにする タイムチャート 状態遷移関数・出力関数 状態遷移表
ハードウェア記述言語による 論理回路設計とFPGAへの実装 1
PWM ICのデバイスモデリングとフライバックコンバータのシミュレーションセミナー :2015年7月3日(金曜日)13:30-16:00
電子回路設計 電子制御設計製図Ⅰ  2009年11月17日 Ⅳ限目.
5.3 各種カウンタ 平木.
Verilog設計演習 Ⅰ 入 門 編 広島県立西部工業技術センター
Handel-C基礎 および 7セグとマウスのハンドリング
第2回 真理値表,基本ゲート, 組合せ回路の設計
Verilog HDL 12月21日(月).
テープ(メモリ)と状態で何をするか決める
Quartus II 使用法 (ver 9 sp2, 一部ver. 5)
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
Fire Tom Wada IE dept. Univ. of the Ryukyus
VLSI設計論第2回 組み合わせ回路の記述と 論理シミュレーション
集積回路 6.回路・レイアウト設計 松澤 昭 2004年 9月 2004年 9月 新大VLSI工学.
4.2.2 4to1セレクタ.
第10回 Dフリップフロップ ディジタル回路で特に重要な D-FF 仕組みを理解する タイミング図を読み書きできるようにする 瀬戸
CSP記述によるモデル設計と ツールによる検証
基本情報技術概論(第3回) 埼玉大学 理工学研究科 堀山 貴史
7. 順序回路 五島 正裕.
8. 順序回路の簡単化,機能的な順序回路 五島 正裕.
集積回路 2. VLSIの設計から製造まで 松澤 昭 2004年 9月 月 新大 集積回路.
2005年11月2日(木) 計算機工学論A 修士1年 No, 堀江準.
計算機工学特論A 第4回 論理合成 山越研究室 増山 知東 2007年11月7日 .
VLSI設計論 慶應義塾大学 理工学部 情報工学科 山﨑 信行
生産実習(インターンシップ) 株式会社DNPエル・エス・アイ・デザイン 設計本部第1部第1課 日本大学 生産工学部
ハードウェア記述言語による 論理回路設計とFPGAへの実装 2
計算機構成 第1回 ガイダンス VerilogHDLのシミュレーション環境
汎用テストベンチ作成ツール を用いた シミュレーションからテストまで
6. 順序回路の基礎 五島 正裕.
OpenMPハードウェア動作合成システムの検証(Ⅰ)
アルゴリズムとチューリングマシン 「もの」(商品)としてのコンピュータ 「こと」(思想)としてのコンピュータ アルゴリズム
計算機工学特論A   テキスト内容 5.6.
電子回路設計 電子制御設計製図Ⅰ  2010年11月30日 Ⅲ限目.
高速剰余算アルゴリズムとそのハードウェア実装についての研究
PCPU物理設計 ~マクロレベルの配置配線~
各種波形フォーマット変換 / タイミングダイアグラム描画ツール
ディジタル回路 2. ブール代数 と 論理ゲート 五島 正裕.
ディジタル回路 6. 順序回路の実現 五島 正裕.
巡回冗長検査CRC32の ハード/ソフト最適分割の検討
第二部  回路記述編 第3章 文法概略と基本記述スタイル 3.1 文法を少々 3.1.1~3.1.3.
ディジタル回路の設計と CADによるシステム設計
計算機構成 第2回 ALUと組み合わせ回路の記述
ICトレーナーの構成 7セグメントLED ブレッドボード XOR OR AND NAND 電源端子 スイッチ端子 LED端子 データLED
4点FFT設計 ファイヤー和田 知久 琉球大学・工学部・情報工学科 教授
コンピュータアーキテクチャ 第 7 回.
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
計算機構成 第4回 アキュムレータマシン テキスト第3章
VLSI設計論第3回 順序回路の記述と論理合成
情報処理 タイマの基礎 R8C タイマの基礎.
計算機構成 第11回 マルチサイクルCPU 慶應大学 天野英晴.
信号伝搬時間の電源電圧依存性の制御 による超伝導単一磁束量子回路の 動作余裕度の改善
第11回 よく使われる順序回路 複数のFFを接続した回路を解析する際の考え方を学ぶ カウンタ回路の仕組みを理解し,設計できるようにする 瀬戸.
Fire Tom Wada IE dept. Univ. of the Ryukyus
電気回路学I演習 2012/11/16 (金) I1 I2 問1 Z0 V1 V2 問2 I1 I2 V1 Z0 V2 Z,Y,K行列の計算
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
論理回路 第12回
  第3章 論理回路  コンピュータでは,データを2進数の0と1で表現している.この2つの値,すなわち,2値で扱われるデータを論理データという.論理データの計算・判断・記憶は論理回路により実現される.  コンピュータのハードウェアは,基本的に論理回路で作られている。              論理積回路.
コンピュータアーキテクチャ 第 9 回.
計算機工学特論 スライド 電気電子工学専攻 修士1年 弓仲研究室 河西良介
8. 順序回路の実現 五島 正裕.
各種波形フォーマット変換 / タイミングダイアグラム描画
コンピュータアーキテクチャ 第 9 回.
ディジタル回路 8. 機能的な順序回路 五島 正裕.
信号伝搬時間の電源電圧依存性の制御 による超伝導単一磁束量子回路の 動作余裕度の改善
Presentation transcript:

2008インターンシップ 株式会社DNPエル・エス・アイ・デザイン

・ 志望動機 LSI設計にとても興味があり、LSIについてより多くの知識を習得したい為。 また、大学では学ぶことのできない内容を学習したい。 ・ 実習の目的 大学で学ぶことのできない知識を学び、大学で学んだことがある 内容をいかに応用して実習の課題をこなして自分の知識として 習得することができること。会社という企業の雰囲気など肌で感じる。 8ビットカウンタの設計を体験する。

・実習の内容(スケジュール) 8/19( 火 ) LSIができるまでの設計フロー学習 仕様 → 論理設計 → 機能検証 → 合成 → レイアウト設計 → 検証 → マスク → LS I製造 8/20( 水 ) スタンダードセル動作を机上学習、演習を実施 NOT 、 NAND 、 NOR 、 EXOR 、 D-Latch 、 D-F/FF 2進数から10進数への変換、ド・モルガンの証明、論理図の作成 D- Latch 、D-FFの違い。タイミングチャートの作成。 8/21( 木 ) スタンダードセルの動作を学習 Verilog-XL を使って実際に波形で動作を学習 Verilog-HDL ⇔スタンダードセルの対応も実施 NOT,NAND,NOR,AND,OR の MOS 展開 8/22( 金 ) 8ビットカウンタの仕様説明 8/25( 月 ) 8ビットカウンタの RTL コーディング (Verilog) HDL文法チェック (spyglass) 8/26( 火 ) 8ビットカウンタの機能検証項目の抽出 ( 机上 ) 機能検証用テストパターン作成

8/27( 水 ) 8ビットカウンタのRTLネットリスト機能検証 (Verilog- XL) シミュレーションを実行し、波形を目視で確認 8/28( 木 ) 8ビットカウンタの論理合成 (RTL→Gate レベル ) RTL ⇔ Gate レベルのネットリストを等価検証 (Conformal- LEC) 8/29( 金 ) 8ビットカウンタの Gate レベルネットリスト機能検証 (Verilog-XL) 報告書作成 9/1( 月 ) 報告書作成 ・実習の内容(スケジュール)

製品企画 システムレベル設計 LSI 設計ソフトウェア設計 プリント基板 回路設計 プリント基板 実装設計 システム評価 以下 URL より抜粋 LSI 仕様 LSI 構成の検討 回路設計 機能(回路)検証 機能分割 論理設計 論理検証 論理合成 ダイナミック検証 タイミング検証 レイアウト設計 ダイナミック検証 タイミング検証 フィジカル検証 ディジタル回路アナログ回路 今回の実習 8ビットカウンタを題材

8ビットカウンタ 仕様書 VerilogHDL コーディング RTL ネットリスト HDL 文法チェック (Spyglass) 検証項目抽出 テストベンチ 作成 論理検証 (Verilog-XL) 合成 (DesignCompiler) エラーがあれば RTL 修正 ライブラリ タイミング 制約 Gate ネットリスト SDF 論理等価検証 (Conformal-LEC) ゲート Sim (Verilog-XL) エラーがあれば RTL 修正

D Latch 論理代数 CLK DQ 図 1-1. D-Latch I3=I2 I3=1 の時、 ON (O1=I1) I2=1 の時、 OFF (O1=Hi-Z) I2 I3 I1 O1 図 1-2. クロックドインバータ インプットアウトプット CLK D Q n 0 0 Q n-1 0 1 Q n-1 1 0 0 1 1 1 表 1 D - Latchの真理値表

CLK D Q 図 1-3 D - Latchのタイミングチャート D - FF (Flip Flop) CLK DQ 図 2-1 D -FF

インプットアウトプット CLK D Q n 0 0 Q n-1 0 1 Q n-1 ↑ 0 0 ↑ 1 1 ↑ :立ち上がり 表 2. D -FF の真理値表 図 2-2 D -FF のタイミングチャート CLK D Q

module dec2to4 ( in, out ); input [1:0] in; output [3:0] out; assign out = dec(in); function [3:0] dec; input [1:0] in; begin case (in) 2'b00: dec = 4'b0001; 2'b01: dec = 4'b0010; 2'b10: dec = 4'b0100; 2'b11: dec = 4'b1000; endcase end endfunction endmodule テラタームによる UNIX 上での Verilog-HDL の例題を記述し、シミュレーションを波形で目視 //`define MF 1.9 //`define MO 0.0 `timescale 1ns/1ps module test; reg [1:0] in; wire [2:0] out; dec2to3 dec2to3 (.in(in),.out(out)); initial begin #100 in = 2'b00; #100 in = 2'b01; #100 in = 2'b10; #100 in = 2'b11; $finish; end initial begin $shm_open("test.shm"); $shm_probe(test,"AS"); end endmodule in に 00 が入力された場合、 dec に 0001 を代入する。 in[1:0] out[2:0] 2’b 00 4’b0001 2’b 01 4’b0010 2’b 10 4’b0100 2’b 11 4’b1000 実行結果 Verilog-HDL

module FF1( D, CK, Q, QB ); input D,CK; output Q,QB; reg Q; posedge CK ) Q <= D; assign QB = ~Q; endmodule `timescale 1ns/1ps module test; reg D; reg CK; wire Q; wire QB; FF1 FF1 (.D(D),.CK(CK),.Q(Q),.QB(QB) ); always #50 CK <= ~CK; initial begin CK = 1'b0; #120 D = 1'b0; #880; #120 D = 1'b1; #880; $finish; end initial begin $shm_open("test.shm"); $shm_probe(test,"AS"); end endmodule D-FF Q QB D CK 実行結果

下位部 カウンタ 上位部 カウンタ CE DATA バス 4bit( D 3-0 ) LD CI EN CL CP CDN 下位 4bit Q バス ( Q 3-0 ) 上位 4bit Q バス ( Q 7-4 ) CO 図 3. カウンタブロック図 ブロック図 8ビットカウンタ仕様書

入力 出力 DATA(D3-0) 下位部 DATA バス (4bit) D3 (MSB) ~ D0 (LSB) Q(Q7-0) アップカウント出力 (8bit) Q7 (MSB) ~ Q0 (LSB) LD 下位部 DATA Load 端子 (Low Active) CO キャリーアウト出力 CI 桁上がり入力端子 EN 動作設定端子 CP クロック入力端子 内部信号 CL 同期リセット端子 (Low Active)CE 上位カウントイネーブル CDN 非同期リセット端子 (Low Active) 表 3 .端子一覧

概要 出力幅 8bit の 2 進数同期式アップカウンタです。入力されたクロック信号の立ち上がりの数を、 0 から 255 まで数えることができます。 数えた値は正の 2 進数 (Binary Code) で出力されます。 255 まで数えたとき、キャリーアウト出力 CO が High となります。 本カウンタの内部は下位部カウンタ、上位部カウンタの二つが接続された 2 段構成となって います。 下位部と上位部のそれぞれに別の構成、機能を持ったカウンタが使用されています。 上位部、下位部は同一のクロック信号で動作しています。 本カウンタは以下の動作モードを持ちます。 1. リセット動作 2. 8 bit カウントアップ動作 (1) 3. 8 bit カウントアップ動作 (2) (Data Load) 4. 上位部単独カウントアップ動作

入力出力 CP CDNLDCL ENCID 3-0 Q 3-0 Q 7-4 CO ×L×××××LLL ↑H×L××× ↑HLH×LDAT A No ChangeL ↑ H L H × H DAT A DATA Q 3-0 が 1111 で Up Count それ以外は No Change Q 7-0 が all 1 で H ↑HHHHH× Up Count ↑ H H H L H × No Change Q 3-0 が 1111 で Up Count それ以外は No Change ↑HHH×L× L ↑… クロック立上がり × … Don ’ t Care 表 4. 真理値表

`timescale 1ns/1ps module lowcount8 ( DATA, LD, CI, EN, CP, CL, CDN, CE, Q ); input[3:0] DATA; input LD, CI, EN, CP, CL, CDN; output[3:0] Q; output CE; reg[3:0] Q; assign CE = (Q == 4'b1111)? 1'b1 : 1'b0 ; posedge CP or negedge CDN ) begin if(!CDN) begin Q <= 4'b0000; end else if(!CL) begin Q <= 4'b0000; end else if(!LD && !CI) begin Q <= DATA; end else if(!LD && CI) begin Q <= DATA; end else if(LD && !CI) begin Q <= Q; end else if(!EN) begin Q <= Q; end else begin Q <= Q + 4'b0001; end endmodule `timescale 1ns/1ps module highcount8 ( CP, CL, CDN, CE, Q, CO ); input CE, CP, CL, CDN; output[3:0] Q; output CO; reg[3:0] Q; assign CO = (Q == 4'b1111) ? 1'b1 : 1'b0 ; posedge CP or negedge CDN ) begin if(!CDN) begin Q <= 4'b0000; end else if(!CL) begin Q <= 4'b0000; end else if(!CE) begin Q <= Q; end else begin Q <= Q + 4'b0001; end endmodule 下位部モジュール 上位部モジュール

`timescale 1ns/1ps module top ( DATA, LD, CI, EN, CP, CDN, CL, Q, CO ); input[3:0] DATA; input LD, CI, EN, CP, CL, CDN; output[7:0] Q; output CO; wire CE, CO2; lowcount8 lowcount8 (.DATA(DATA),.LD(LD),.CI(CI),.EN(EN),.CP(CP),.CL(CL),.CDN(CDN),.CE(CE),.Q(Q[3:0]) ); highcount8 highcount8(.CP(CP),.CL(CL),.CDN(CDN),.CE(CE),.CO(CO2),.Q(Q[7:4]) ); assign CO = CO2 && CE; endmodule Top 階層モジュール

######################################################### # # This file has been generated by SpyGlass: # Report Name : moresimple # Report Created by: masae # Report Created on: # Working Directory: /user/DLD/INTERN/masae/verilog # Report Location :./spyglass.rpt # SpyGlass Version : # Policy Name : SpyGlass(3.7.2) # starc(3.7.2) # ######################################################### Spyglass のかけ方 必要なファイル run_spyglass spyglass 実行スクリプト spyglass_CLK_define クロックを定義しているファイル spyglass_rtl_list RTL のありか (path) を定義しているファイル (1)まず、 vi で spyglass_rtl_list を修正します。 > vi spyglass_rtl_list /user/DLD/INTERN/masae/verilog/lowcount8.v /user/DLD/INTERN/masae/verilog/highcount8.v /user/DLD/INTERN/masae/verilog/top.v チェックした RTL を追加します。 (2)次に、クロックを設定します。 > vi spyglass_CLK_define -CLK1=“lowcount8.CP“→ -CLK1=“top.CP“ クロックの書き込み。 (3) spyglass 実行 > run_spyglass (4)レポートを確認する > less spyglass.rpt SpyGlass について(会社名: atrenta ) HDL 文法チェックをするためのも の 実行結果 error 発生 →Q<=4'b0000; bがなかったため error 発生 Spyglass には気にしなくてもいいルールが出てくる。 大切なルールを見逃さないようにする。 気にしなくてもいいルールは、今回リセットは CDN だけ れども、 Spyglass のルール的には RST/i といった名前にして ほしいなどとの error が発生した。 しかし今回の仕様書通りに作成するためにこの error は気に しなくていい。

検証項目の作成 DATA="1101" とする。 ① Q7-0="0001_1010" の時に、 CDN="0" で非同期に Q7-0="0000_0000" となること ② Q7-0="0001_1010" の時に、 CL="0" で同期で Q7-0="0000_0000" となること ③ Q7-0="0001_1010" の時に、 LD="0",CI="0" で Q7-0="0001_1101" となること (No Change_DATA) ④ Q7-0="0001_1010" の時に、 LD="0",CI="1" で Q7-0="0001_1101" となること (No Change_DATA) ⑤ Q7-0="0001_1010" の時に、 LD="0",CI="1" で Q7-0="0001_1111" となること (Up Count_DATA="1111") ⑥ Q7-0="0001_1010" の時に、 LD="1",CI="0" で Q7-0="0001_1010" となること (No Change) ⑦ Q7-0="0001_1010" の時に、 EN="0" で Q7-0="0001_1010" となること (No Change) ⑧ Q7-0="0001_1111" の時に、 EN="0" で Q7-0="0001_1111" となること (Up Count_DATA="1111") ⑨ Q7-0="0001_1010" の時に、 CDN="1",CL="1",CI="1",LD="1",EN="1",Q7-0="0001_1010" となること (Up Count) 検証する項目をすべて抽出すること。 自分で作成した検証項目一覧

検証項目一覧 自分の検証項目には抜けているところがあった。 当たり前のことでもすべて列挙するのが検証項目の抽出である。 この検証項目をすべて満たすようにテストパターンを作成。

//`define MF 1.9 //`define MO 0.0 `timescale 1ns/1ps module toptest; reg[3:0] DATA; reg LD, CI, EN, CP, CL, CDN; wire[7:0] Q; wire CO; top top(.DATA(DATA),.LD(LD),.CI(CI),.EN(EN),.CP(CP),.CDN(CDN),.CL(CL),.Q(Q),.CO(CO) ); always #50 CP <= ~CP; initial begin CP = 1'b0; DATA = 4'b1110; #15{ CDN, CL, LD, CI, EN } = 5'b0_1111; //CDN #130 //up { CDN, CL, LD, CI, EN } = 5'b1_1111; #1800 { CDN, CL, LD, CI, EN } = 5'b0_1111; //CDN 1945CP #130 //up { CDN, CL, LD, CI, EN } = 5'b1_1111; #1800 { CDN, CL, LD, CI, EN } = 5'b1_0111; //CL 3875CP #130 //up { CDN, CL, LD, CI, EN } = 5'b1_1111; テストパターン CP = 1'b0; EN = 1'b1; CI = 1'b1; CDN = 1'b1; CL = 1'b1; DATA = 4'b0100; LD = 1'b1; #880; #120 CDN = 1'b0; #120 CDN = 1'b1; 始めはこのような記述を していた。 しかしこの記述ではわかりづらい。 プログラムが長くなってしまうため { CDN, CL, LD, CI, EN } = 5'b0_1111; このような記述に変更した。

#1800 { CDN, CL, LD, CI, EN } = 5'b1_1001; //No Change_DATA 5805CP #130 //up { CDN, CL, LD, CI, EN } = 5'b1_1111; #1800 { CDN, CL, LD, CI, EN } = 5'b1_1011; //No Change_DATA 7735CP #130 //up { CDN, CL, LD, CI, EN } = 5'b1_1111; #100 DATA = 4'b1111; #1800 { CDN, CL, LD, CI, EN } = 5'b1_1011; //Up Count_DATA 9765CP #530 //up { CDN, CL, LD, CI, EN } = 5'b1_1111; DATA = 4'b1110; #1800 { CDN, CL, LD, CI, EN } = 5'b1_1101; //No Change 11695CP #130 //up { CDN, CL, LD, CI, EN } = 5'b1_1111; #1800 { CDN, CL, LD, CI, EN } = 5'b1_1110; //No Change 13625CP #130 //up { CDN, CL, LD, CI, EN } = 5'b1_1111; #100 DATA =4'b1111; #1150 { CDN, CL, LD, CI, EN } = 5'b1_1110; //Up Count_DATA 15005CP #530 //up { CDN, CL, LD, CI, EN } = 5'b1_1111; #25700 { CDN, CL, LD, CI, EN } = 5'b1_1111; //Up Count 18035CP #130 //up { CDN, CL, LD, CI, EN } = 5'b1_1111; #500; $finish; end initial begin $shm_open("test.shm"); $shm_probe(toptest,"AS"); end endmodule この RTL 文法チェックにおいては error が発生した。 assign CO2 <= CO && CE; 2を入れるのを忘れていた。 error をすべて取り除いた後、シミュレーションを実行し 波形を目視で確認した。

波形 波形 Viewer には、 Cadence (ベンダー名)の SimVision (ツール名)を使用する。 図 4 . 波形1

図 5 . 波形2 図 6 . 波形3

図 7 . 波形4 図 8 . 波形5

図 9 . 波形6 図 10 . 波形 7

図 11 . 波形 8 図 12 . 波形 9

図1 3 . 波形10 すべての検証項目に対してシミュレーションを行い、波形を目視して確認した。

合成 RTLネットリスト 合成ツール Design Compiler ログ ライブラリ NOT NAND NOR F / F LATCH Gateネットリスト DC Professional (TM) DC Expert (TM) DC Ultra (TM) VHDL Compiler (TM) HDL Compiler (TM) Library Compiler (TM) Power Compiler (TM) DFT Compiler (TM) DesignPower (TM) Version for sparcOS5 -- May 20, 2003 Copyright (c) by Synopsys, Inc. ALL RIGHTS RESERVED This program is proprietary and confidential information of Synopsys, Inc. and may be used and disclosed only as authorized in a license agreement controlling such use and disclosure. Initializing... <中略> Warning: /user/DLD/INTERN/masae/verilog/highcount8.v:7: signed to unsigned assignment occurs. (VER-318) Inferred memory devices in process in routine highcount8 line 9 in file '/user/DLD/INTERN/masae/verilog/highcount8.v'. Warning: /user/DLD/INTERN/masae/verilog/lowcount8.v:8: signed to unsigned assignment occurs. (VER-318) Inferred memory devices in process in routine lowcount8 line 10 in file '/user/DLD/INTERN/masae/verilog/lowcount8.v'. assign CO = (Q == 4'b1111)? 1 : 0 ; 変更してみると⇒⇒ assign CO = (Q == 4'b1111)? 1'b1 : 1'b0 ; ( Warning はなぜ出ているかを確認し 問題ない場合は何もしない。) 実行で生じた Waring

論理合成 Gate ネットリ スト module lowcount8 ( DATA, LD, CI, EN, CP, CL, CDN, CE, Q ); input [3:0] DATA; output [3:0] Q; input LD, CI, EN, CP, CL, CDN; output CE; wire n42, n49, n50, n51, n3, n4, n5, n6, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20, n21, n22, n23, n24, n25, n26, n27, n28, n29, n30, n31, n32, n33, n34, n35, n36, n37, n38, n39, n40, n41, n43, n44; inv0d1 U3 (.ZN(n6),.I(n42) ); inv0d1 U4 (.ZN(CE),.I(n6) ); oai22d1 U5 (.ZN(n41),.A1(n8),.A2(n9),.B1(n10),.B2(n11) ); oai22d1 U6 (.ZN(n40),.A1(n12),.A2(n4),.B1(n13),.B2(n14) ); oai22d1 U7 (.ZN(n39),.A1(n15),.A2(n5),.B1(n16),.B2(n17) ); nd02d1 U8 (.ZN(n38),.A1(n18),.A2(n19) ); nr03d1 U9 (.ZN(n42),.A1(n3),.A2(n20),.A3(n4) ); nd02d1 U10 (.ZN(n20),.A1(n43),.A2(n51) ); nd02d1 U11 (.ZN(n21),.A1(CI),.A2(EN) ); nr02d1 U12 (.ZN(n22),.A1(Q[1]),.A2(n8) ); nr02d1 U13 (.ZN(n12),.A1(n22),.A2(n23) ); aoi22d1 U14 (.ZN(n14),.A1(n24),.A2(n25),.B1(DATA[2]),.B2(n26) ); nr02d1 U15 (.ZN(n26),.A1(n27),.A2(LD) ); nr02d1 U16 (.ZN(n28),.A1(n21),.A2(n20) ); nd02d1 U17 (.ZN(n8),.A1(LD),.A2(CL) ); nr02d1 U18 (.ZN(n15),.A1(n13),.A2(n29) ); nr02d1 U19 (.ZN(n30),.A1(n4),.A2(n31) ); nd02d1 U20 (.ZN(n32),.A1(n28),.A2(Q[2]) ); mx02d1 U21 (.Z(n9),.I0(n32),.I1(n30),.S(n49) ); nd02d1 U22 (.ZN(n33),.A1(Q[0]),.A2(n5) ); inv0d1 U23 (.ZN(n34),.I(DATA[1]) ); mx02d1 U24 (.Z(n16),.I0(n34),.I1(n33),.S(LD) ); nr02d1 U25 (.ZN(n24),.A1(n50),.A2(n20) ); nd02d1 U26 (.ZN(n17),.A1(CL),.A2(n35) ); inv0d1 U27 (.ZN(n25),.I(n8) ); nd02d1 U28 (.ZN(n35),.A1(n25),.A2(n21) ); inv0d1 U29 (.ZN(n13),.I(n35) ); nr02d1 U30 (.ZN(n29),.A1(n8),.A2(n43) ); inv0d1 U31 (.ZN(n23),.I(n15) ); nd02d1 U32 (.ZN(n19),.A1(DATA[0]),.A2(n26) ); nr02d1 U33 (.ZN(n36),.A1(n8),.A2(n21) ); mx02d1 U34 (.Z(n37),.I0(n36),.I1(n13),.S(n43) ); inv0d1 U35 (.ZN(n27),.I(CL) ); inv0d1 U36 (.ZN(n31),.I(n28) ); inv0d1 U37 (.ZN(n10),.I(n26) ); inv0d1 U38 (.ZN(n11),.I(DATA[3]) ); inv0d1 U39 (.ZN(n18),.I(n37) ); dfcrb1 \Q_reg[0] (.Q(n43),.QN(n44),.CDN(CDN),.CP(CP),.D(n38) ); dfcrb1 \Q_reg[1] (.Q(n51),.QN(n5),.CDN(CDN),.CP(CP),.D(n39) ); dfcrb1 \Q_reg[2] (.Q(n50),.QN(n4),.CDN(CDN),.CP(CP),.D(n40) ); dfcrb1 \Q_reg[3] (.Q(n49),.QN(n3),.CDN(CDN),.CP(CP),.D(n41) ); inv0d2 UU40 (.ZN(Q[3]),.I(n3) ); inv0d2 UU41 (.ZN(Q[2]),.I(n4) ); inv0d2 UU42 (.ZN(Q[1]),.I(n5) ); inv0d2 UU43 (.ZN(Q[0]),.I(n44) ); endmodule 下位部モジュール(合成後)

module highcount8 ( CP, CL, CDN, CE, Q, CO ); output [3:0] Q; input CP, CL, CDN, CE; output CO; wire n27, n28, n29, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20, n21, n22; nr02d1 U3 (.ZN(n17),.A1(n5),.A2(n6) ); nr02d1 U4 (.ZN(n18),.A1(n7),.A2(n6) ); nr02d1 U5 (.ZN(n19),.A1(n8),.A2(n6) ); nr02d1 U6 (.ZN(n20),.A1(n9),.A2(n6) ); nr03d1 U7 (.ZN(CO),.A1(n10),.A2(n3),.A3(n2) ); nr02d1 U8 (.ZN(n11),.A1(n12),.A2(n3) ); aoi22d1 U9 (.ZN(n9),.A1(n27),.A2(n13),.B1(n2),.B2(n11) ); aoi22d1 U10 (.ZN(n8),.A1(n3),.A2(n14),.B1(n28),.B2(n12) ); mx02d1 U11 (.Z(n7),.I0(n29),.I1(n4),.S(n15) ); mx02d1 U12 (.Z(n5),.I0(n16),.I1(CE),.S(n21) ); nd03d1 U13 (.ZN(n12),.A1(CE),.A2(Q[1]),.A3(n21) ); inv0d1 U14 (.ZN(n6),.I(CL) ); nd02d1 U15 (.ZN(n10),.A1(n21),.A2(n29) ); nd02d1 U16 (.ZN(n15),.A1(Q[0]),.A2(CE) ); inv0d1 U17 (.ZN(n13),.I(n11) ); inv0d1 U18 (.ZN(n14),.I(n12) ); inv0d1 U19 (.ZN(n16),.I(CE) ); dfcrb1 \Q_reg[0] (.Q(n21),.QN(n22),.CDN(CDN),.CP(CP),.D(n17) ); dfcrb1 \Q_reg[1] (.Q(n29),.QN(n4),.CDN(CDN),.CP(CP),.D(n18) ); dfcrb1 \Q_reg[2] (.Q(n28),.QN(n3),.CDN(CDN),.CP(CP),.D(n19) ); dfcrb1 \Q_reg[3] (.Q(n27),.QN(n2),.CDN(CDN),.CP(CP),.D(n20) ); inv0d2 UU20 (.ZN(Q[3]),.I(n2) ); inv0d2 UU21 (.ZN(Q[2]),.I(n3) ); inv0d2 UU22 (.ZN(Q[1]),.I(n4) ); inv0d2 UU23 (.ZN(Q[0]),.I(n22) ); endmodule 上位部モジュール(合成後) module top ( DATA, LD, CI, EN, CP, CDN, CL, Q, CO ); input [3:0] DATA; output [7:0] Q; input LD, CI, EN, CP, CDN, CL; output CO; wire CE, CO2, n1; lowcount8 lowcount8 (.DATA(DATA),.LD(LD),.CI(CI),.EN(EN),.CP(CP),.CL(CL),.CDN(CDN),.CE(CE),.Q(Q[3:0]) ); highcount8 highcount8 (.CP(CP),.CL(CL),.CDN(CDN),.CE(CE),.Q(Q[7:4]),.CO(CO2) ); nd02d1 U1 (.ZN(n1),.A1(CO2),.A2(CE) ); inv0d2 UU3 (.ZN(CO),.I(n1) ); endmodule トップ階層モジュール(合成後)

TOP階層

上位部

下位部

RTL ⇔G ate レベルのネットリストを等価検証( Conformal-LEC ) CONFORMAL (TM) Logic Equivalence Checker Version a (05-Apr-2002) Copyright (c) Verplex Systems, Inc., All Rights Reserved This program is proprietary and confidential information belonging to Verplex Systems, Inc., and may be used and disclosed only as authorized in a license agreement controlling such use and disclosure. ============================================================ Mapped points: SYSTEM class Mapped points PI PO DFF Total Golden Revised ============================================================ // Command: add compared points -all // 17 compared points added to compare list // Command: compare -NONEQ_Print ^MNon-equivalent points: (G) PO /CO (R) PO /CO ============================================================ Compared points PO DFF Total Equivalent Non-equivalent ============================================================ // Command: usage CPU time : 0.26 seconds Memory usage : M bytes // Command: exit -force

合成後の波形 図 14 . 波形1(合 成)

図 15 . 波形2(合 成) 図 16 . 波形3(合 成)

図 17 . 波形4(合 成) 図 18 . 波形5(合 成)

図 19 . 波形6(合 成) 図 20 . 波形7(合 成)

図 21 . 波形8(合 成) 図 22 . 波形9(合 成)

図 23 . 波形10(合 成) 図 24 . 波形全体図(合 成)

図 25 . 波形(合 成) RTL Gate 上図をよく見てみるとRTLネットリストとGateネットリストの波形には少々異なっている点があることがわかる。 Qの出力部分に注目してみると、ズレが生じていることがわかる。 このズレの原因は、Gateにした時の配線などの遅延が生じているためである。

レイアウト設計

実習先へのメッセージ 今回このインターシップを通してたくさんのことを学ばせていただきました。 LSI についての知識、 UNIX についての知識がとても少なかった私にいろいろ教えていただきとても 勉強に なりました。 Verilog-HDL から Gate になったときには本当に感動しました。 今回は8ビットカウンタの設計を体験すると同時に会社の雰囲気、働くために必要な知識など肌で 感じることができました。 インターシップの経験をこれからの自分に役立てていきたいと思います。本当に10日間ありがと うございました。 大学へのメッセージ インターシップではゼミの勉強の延長でした。 今まで大学で学習してきた成果を出そうと思いましたが、知識が思うように活用できなかったです。 知識が活用できるには実践も必要だと改めて教えていただきました。 ” 慣れ ” という言葉を何回聞いたかわかりません。 自分の知識を活用できるようになるまで大学で勉強しこれからの人生に役立てていきたいと思います。 今回このような体験ができて本当によかったです。 以上