Presentation is loading. Please wait.

Presentation is loading. Please wait.

生産実習(インターンシップ) 株式会社DNPエル・エス・アイ・デザイン 設計本部第1部第1課 日本大学 生産工学部

Similar presentations


Presentation on theme: "生産実習(インターンシップ) 株式会社DNPエル・エス・アイ・デザイン 設計本部第1部第1課 日本大学 生産工学部"— Presentation transcript:

1 生産実習(インターンシップ) 株式会社DNPエル・エス・アイ・デザイン 設計本部第1部第1課 日本大学 生産工学部
日本大学 生産工学部 生産実習(インターンシップ)株式会社DNPエル・エス・アイ・デザイン 設計本部第1部第1課 日本大学 生産工学部 数理情報工学科数理情報工学コース コンピュータ設計CAD研究室 67030番  大野 真枝 数理情報工学科数理情報工学コース コンピュータ設計CAD研究室 67030番  大野 真枝

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

3 ・実習の内容(スケジュール) 8/19(火) LSIができるまでの設計フロー学習
8/19(火) LSIができるまでの設計フロー学習    仕様→論理設計→機能検証→合成→レイアウト設計→検証→マスク→LSI製造 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ビットカウンタの機能検証項目の抽出(机上)      機能検証用テストパターン作成 実習内容

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

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

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

7 論理代数 D Latch I3=I2 I3=1の時、ON (O1=I1) I2=1の時、OFF (O1=Hi-Z)
D Latch I2 I3 CLK I1 O1 I3=I2 I3=1の時、ON  (O1=I1) I2=1の時、OFF (O1=Hi-Z) 図1-2.クロックドインバータ 図1-1.D-Latch 表1 D-Latchの真理値表 論理代数について学習した。 論理代数では基本的なAND、OR、NORなどを机上で学習した後、D-Latchを学習した。 D-Latchの真理値表や論理回路図を見て学習した。 インプット アウトプット CLK Qn   Qn-1   0   1

8 D-FF(Flip Flop) D-FFについてはD-Latchと同様に真理値表や論理回路図を見て学習した。 CLK D Q
図1-3 D-Latchのタイミングチャート D-FF(Flip Flop) CLK D-FFについてはD-Latchと同様に真理値表や論理回路図を見て学習した。 図2-1 D-FF

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

10 Verilog-HDL テラタームによる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; in = 2'b01; in = 2'b10; in = 2'b11;  $finish;  end initial begin $shm_open("test.shm"); $shm_probe(test,"AS"); end endmodule module dec2to4 ( in, out ); input [1:0] in; output [3:0] out; assign out = dec(in); function [3:0] dec; 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 実行結果 例題でVerilog-HDLを記述し波形を確認した。 Verilog-HDLではUNIX上で記述したので vi などのコマンドの使い方を学ぶことができた。 in[1:0] out[2:0] 2’b ’b0001 2’b ’b0010 2’b ’b0100 2’b ’b1000 in に00が入力された場合、decに0001を代入する。

11 D-FF 実行結果 例題でVerilog-HDLを記述し波形を確認した。 `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; D = 1'b1; $finish;  end initial begin $shm_open("test.shm"); $shm_probe(test,"AS"); endmodule  module FF1( D, CK, Q, QB ); input D,CK; output Q,QB; reg Q; posedge CK ) Q <= D; assign QB = ~Q; endmodule 実行結果 D Q QB 例題でVerilog-HDLを記述し波形を確認した。 CK

12 8ビットカウンタ仕様書 ブロック図 図3. カウンタブロック図 8ビットカウンタの仕様書を理解した。 DATAバス 下位部 カウンタ LD
下位4bit Qバス (Q3-0) DATAバス 4bit(D3-0) 下位部 カウンタ LD CI EN CP CE 上位4bit Qバス (Q7-4) 上位部 カウンタ 8ビットカウンタの仕様書を理解した。 CO CL CDN 図3. カウンタブロック図

13 入力 出力 内部信号 表3.端子一覧 端子一覧を確認し、その端子の細かい仕様を理解した。
    入力   出力 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) 端子一覧を確認し、その端子の細かい仕様を理解した。

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

15 入力 出力 表4.真理値表 真理値表の確認をした。 ↑… クロック立上がり × … Don’t Care CP CDN LD CL EN
CI D3-0 Q3-0 Q7-4 CO × L H DATA No Change Q3-0が 1111で Up Count それ以外は Q7-0が all 1でH 真理値表の確認をした。

16 If 文ではリセットの強さなどを考えて記述した。
下位部モジュール 上位部モジュール `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) Q <= 4'b0000; end else if(!CL) else if(!LD && !CI) Q <= DATA; else if(!LD && CI) else if(LD && !CI) Q <= Q; else if(!EN) else Q <= Q + 4'b0001; 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) Q <= 4'b0000; end else if(!CL) else if(!CE) Q <= Q; else Q <= Q + 4'b0001; endmodule Verilog-HDLの記述を行った。 If 文ではリセットの強さなどを考えて記述した。

17 Top階層モジュール `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), .CO(CO2), .Q(Q[7:4]) ); assign CO = CO2 && CE; endmodule

18 SpyGlassについて(会社名:atrenta)
HDL文法チェックをするためのもの 実行結果 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 error発生→Q<=4'b0000; bがなかったためerror発生 Spyglassには気にしなくてもいいルールが出てくる。 大切なルールを見逃さないようにする。 気にしなくてもいいルールは、今回リセットはCDNだけれども、Spyglassのルール的にはRST/iといった名前にしてほしいなどとのerrorが発生した。 しかし今回の仕様書通りに作成するためにこのerrorは気にしなくていい。 ######################################################### # # 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をかけた。 実行結果にはerrorが生じた。errorでは基本的な文法の間違いを指摘するerrorがでてきた。 今回はQ<=4‘b0000; bがなかったためerror発生した。

19 検証項目の作成 自分で作成した検証項目一覧 検証する項目をすべて抽出すること。 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) 検証項目を作成した。

20 検証項目一覧 自分の検証項目には抜けているところがあった。 当たり前のことでもすべて列挙するのが検証項目の抽出である。
自分の検証項目と比較すると不十分なところがいくつかあった。 当たり前のことでもすべて列挙するのが検証項目の抽出なのでこれからは漏れなく検証項目を作っていきたい。 この検証項目をすべて確認するためにテストパターンを作成した。 自分の検証項目には抜けているところがあった。 当たり前のことでもすべて列挙するのが検証項目の抽出である。 この検証項目をすべて満たすようにテストパターンを作成。

21 テストパターン テストパターンを作成した。 //`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 # //up { CDN, CL, LD, CI, EN } = 5'b1_1111; #1800 { CDN, CL, LD, CI, EN } = 5'b0_1111; //CDN 1945CP #130 //up #1800 { CDN, CL, LD, CI, EN } = 5'b1_0111; //CL 3875CP 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; 始めはこのような記述を していた。 しかしこの記述ではわかりづらい。 プログラムが長くなってしまうため { CDN, CL, LD, CI, EN } = 5'b0_1111; このような記述に変更した。 テストパターンを作成した。

22 このRTL文法チェックにおいてはerrorが発生した。 assign CO2 <= CO && CE; 2を入れるのを忘れていた。
#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"); endmodule #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 #100 DATA = 4'b1111; #1800 { CDN, CL, LD, CI, EN } = 5'b1_1011; //Up Count_DATA 9765CP #530 //up DATA = 4'b1110; #1800 { CDN, CL, LD, CI, EN } = 5'b1_1101; //No Change 11695CP #1800 { CDN, CL, LD, CI, EN } = 5'b1_1110; //No Change 13625CP #100 DATA =4'b1111; #1150 { CDN, CL, LD, CI, EN } = 5'b1_1110; //Up Count_DATA 15005CP このRTL文法チェックにおいてはerrorが発生した。 assign CO2 <= CO && CE; 2を入れるのを忘れていた。 errorをすべて取り除いた後、シミュレーションを実行し 波形を目視で確認した。

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

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

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

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

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

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

29 合成 RTLネットリスト Gateネットリスト 合成ツール Design Compiler ログ ライブラリ NOT NAND NOR F/F LATCH 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) in routine lowcount8 line 10 in file '/user/DLD/INTERN/masae/verilog/lowcount8.v'. 合成とはRTLネットリストをライブラリと合成ツールを使用することで、Gateネットリストを作成することである。 assign CO = (Q == 4'b1111)? 1 : 0 ; 変更してみると⇒⇒ assign CO = (Q == 4'b1111)? 1'b1 : 1'b0 ;        (Warningはなぜ出ているかを確認し 問題ない場合は何もしない。) 実行で生じたWaring

30 論理合成 Gateネットリスト 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 Gateネットリストはこのように作成された。

31 上位部モジュール(合成後) トップ階層モジュール(合成後)
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

32 TOP階層 Gateに表した。 自分が作成したRTLネットリストがあっていたのかはこのGate図を見て端子を確認することができた。

33 上位部 上位部のGate図はとても複雑なGateになっていた。

34 下位部 下位部のGate図はとても複雑なGateになっていた。

35 RTL⇔Gateレベルのネットリストを等価検証(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 : seconds Memory usage : M bytes // Command: exit -force RTL⇔Gateレベルのネットリストを等価検証(Conformal-LEC)を行った。

36 合成後の波形 合成後の波形とRTLネットリストの波形を確認した。 図14. 波形1(合成)

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

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

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

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

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

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

43 レイアウト設計 今回は行わなかったがレイアウト設計とはこのようなものである。

44

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


Download ppt "生産実習(インターンシップ) 株式会社DNPエル・エス・アイ・デザイン 設計本部第1部第1課 日本大学 生産工学部"

Similar presentations


Ads by Google