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

2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

  • Upload
    lydat

  • View
    216

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

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

Page 2: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

・ 志望動機

LSI設計にとても興味があり、LSIについてより多くの知識を習得したい為。また、大学では学ぶことのできない内容を学習したい。

・ 実習の目的

大学で学ぶことのできない知識を学び、大学で学んだことがある内容をいかに応用して実習の課題をこなして自分の知識として習得することができること。会社という企業の雰囲気など肌で感じる。8ビットカウンタの設計を体験する。

Page 3: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

・実習の内容(スケジュール)

8/19(火) LSIができるまでの設計フロー学習

   仕様→論理設計→機能検証→合成→レイアウト設計→検証→マスク→LSI製造

8/20(水) スタンダードセル動作を机上学習、演習を実施

   NOT、NAND、NOR、EXOR、D-Latch、D-F/FF2進数から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ビットカウンタの機能検証項目の抽出(机上)     機能検証用テストパターン作成

Page 4: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

8/27(水) 8ビットカウンタのRTLネットリスト機能検証(Verilog-XL)シミュレーションを実行し、波形を目視で確認

8/28(木) 8ビットカウンタの論理合成(RTL→Gateレベル)RTL⇔Gateレベルのネットリストを等価検証(Conformal-LEC)

8/29(金) 8ビットカウンタのGateレベルネットリスト機能検証(Verilog-XL)報告書作成

9/1(月) 報告書作成

・実習の内容(スケジュール)

Page 5: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

製品企画

システムレベル設計

LSI設計ソフトウェア設計プリント基板回路設計

プリント基板実装設計

システム評価

以下URLより抜粋http://www.adwin.com/e-learning/adwin_demo/products/lsi/index.html

LSI仕様

LSI構成の検討

回路設計

機能(回路)検証

機能分割

論理設計

論理検証

論理合成

ダイナミック検証

タイミング検証

レイアウト設計

ダイナミック検証

タイミング検証

フィジカル検証

ディジタル回路 アナログ回路

今回の実習8ビットカウンタを題材

Page 6: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

8ビットカウンタ仕様書

VerilogHDLコーディング

RTLネットリスト

HDL文法チェック(Spyglass)

検証項目抽出

テストベンチ作成

論理検証(Verilog-XL)

合成(DesignCompiler)

エラーがあればRTL修正

ライブラリタイミング

制約

Gateネットリスト

SDF論理等価検証

(Conformal-LEC)

ゲートSim(Verilog-XL)

エラーがあればRTL修正

Page 7: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

D Latch

論理代数

CLK

D Q

図1-1.D-Latch

I3=I2I3=1の時、ON  (O1=I1)I2=1の時、OFF (O1=Hi-Z)

I2 I3

I1 O1

図1-2.クロックドインバータ

インプット アウトプット

CLK D Qn

0 0   Qn-1

0 1   Qn-1

1 0   0

1 1   1

表1 D-Latchの真理値表

Page 8: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

CLK

D

Q

図1-3 D-Latchのタイミングチャート

D-FF(Flip Flop)

CLK

D Q

図2-1 D-FF

Page 9: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

インプット アウトプット

CLK D Qn

0 0   Qn-1

0 1   Qn-1

↑ 0   0

↑ 1   1

↑:立ち上がり

表2.D-FF の真理値表

図2-2 D-FF のタイミングチャート

CLK

D

Q

Page 10: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

module dec2to4 ( in, out );input [1:0] in;output [3:0] out;assign out = dec(in);function [3:0] dec;input [1:0] in;begincase (in)2'b00: dec = 4'b0001;2'b01: dec = 4'b0010;2'b10: dec = 4'b0100;2'b11: dec = 4'b1000;

endcaseendendfunctionendmodule

テラタームによる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#100in = 2'b00;#100in = 2'b01;#100in = 2'b10;#100in = 2'b11;$finish;end

initialbegin

$shm_open("test.shm");$shm_probe(test,"AS");

endendmodule

in に00が入力された場合、decに0001を代入する。

2’b 00 4’b00012’b 01 4’b00102’b 10 4’b01002’b 11 4’b1000

in[1:0] out[2:0]

実行結果

Verilog-HDL

Page 11: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

module FF1( D, CK, Q, QB );input D,CK;output Q,QB;reg Q;always @( posedge CK )

Q <= D;assign QB = ~Q;

endmodule

`timescale 1ns/1psmodule test;

reg D;reg CK;wire Q;wire QB;

FF1 FF1 (.D(D),.CK(CK),.Q(Q),.QB(QB) );

always #50 CK <= ~CK;initial beginCK = 1'b0;

#120D = 1'b0;#880;#120D = 1'b1;#880;$finish;end

initialbegin

$shm_open("test.shm");$shm_probe(test,"AS");

endendmodule

D-FF

Q

QB

D

CK

実行結果

Page 12: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

下位部カウンタ

上位部カウンタ

CE

DATAバス4bit(D3-0)

LDCI

EN

CL

CP

CDN

下位4bit Qバス(Q3-0)

上位4bit Qバス(Q7-4)

CO

図3. カウンタブロック図

ブロック図

8ビットカウンタ仕様書

Page 13: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

    入力   出力

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.端子一覧

Page 14: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

概要

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

 本カウンタは以下の動作モードを持ちます。

1. リセット動作2. 8bitカウントアップ動作(1) 3. 8bitカウントアップ動作(2) (Data Load)4. 上位部単独カウントアップ動作

Page 15: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

入力 出力

CP CDN LD CL EN CI D3-0 Q3-0 Q7-4 CO

× L × × × × × L L L

↑ H × L × × ×

↑ H L H × L DATA

DATA No Change L

↑ H L H × H DATA

DATA

Q3-0が1111で

Up Countそれ以外はNo Change

Q7-0がall 1でH

↑ H H H H H × Up Count

↑ H H H L H × No Change

Q3-0が1111で

Up Countそれ以外はNo Change

↑ H H H × L × No Change L

↑…クロック立上がり ×… Don’t Care

表4.真理値表

Page 16: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

`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 ;

always @( posedge CP or negedge CDN )beginif(!CDN)beginQ <= 4'b0000;

endelse if(!CL)beginQ <= 4'b0000;

endelse if(!LD && !CI)beginQ <= DATA;

endelse if(!LD && CI)beginQ <= DATA;

endelse if(LD && !CI)beginQ <= Q;

endelse if(!EN)beginQ <= Q;

endelsebeginQ <= Q + 4'b0001;

endend

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 ;

always @( posedge CP or negedge CDN )beginif(!CDN)beginQ <= 4'b0000;

endelse if(!CL)beginQ <= 4'b0000;

endelse if(!CE)beginQ <= Q;

endelsebeginQ <= Q + 4'b0001;

endendendmodule

下位部モジュール上位部モジュール

Page 17: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

`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階層モジュール

Page 18: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

########################################################### This file has been generated by SpyGlass:# Report Name : moresimple# Report Created by: masae# Report Created on: 29-08-2008# Working Directory: /user/DLD/INTERN/masae/verilog# Report Location : ./spyglass.rpt# SpyGlass Version : 3.7.2.2# 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は気にし

なくていい。

Page 19: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

検証項目の作成

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)

検証する項目をすべて抽出すること。

自分で作成した検証項目一覧

Page 20: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

検証項目一覧

リセット動作 CDNカウントアップ動作中(CDN=1'b1, LD=1'b1, CL=1'b1, EN=1'b1, CI=1'b1, DATA=4'b0101) に、CDN=1'b1⇒1'b0とすることで、非同期にリセット(Q[7:0]=8'b0000_0000, CE=1'b0)がかかること

CL

カウントアップ動作中(CDN=1'b1, LD=1'b1, CL=1'b1, EN=1'b1, CI=1'b1, DATA=4'b0101) に、CL=1'b1⇒1'b0とすることで、クロックに同期してリセット(Q[7:0]=8'b0000_0000, CE=1'b0)がかかること

カウントアップ -CDN=1'b1, LD=1'b1, CL=1'b1, EN=1'b1, CI=1'b1, DATA=4'b0101を入力し、Q[7:0]=8'b0000_0000⇒8'b1111_1111までカウントアップすること

CE Q[7:0]=8'bxxxx_1111のときにCE=1CO Q[7:0]=8'b1111_1111のときにCO=1'b1となること- Q[7:0]=8'b1111_1111⇒8'b0000_0000となること

データロード LD

カウントアップ動作中(CDN=1'b1, LD=1'b1, CL=1'b1, EN=1'b1, CI=1'b1, DATA=4'b0101) に、LD=1'b1⇒1'b0とすることで、クロックに同期して下位部のカウンタ出力(Q[3:0])がDATAに入力した値(4'b0101)となる

LD

カウントアップ動作中(CDN=1'b1, LD=1'b1, CL=1'b1, EN=1'b1, CI=1'b1, DATA=4'b1111) に、LD=1'b1⇒1'b0とすることで、クロックに同期して下位部のカウンタ出力(Q[3:0])がDATAに入力した値(4'b1111)となり、またCE=1'b1が出力され、上位部カウンタのみカウントアップすること

LD データロード後、LD=1'b0期間中は、カウント停止することLD データロード後、LD=1'b0⇒1'b1とすると、ロードしたデータからカウントアップを再開すること

カウント停止 CIカウントアップ動作中(CDN=1'b1, LD=1'b1, CL=1'b1, EN=1'b1, CI=1'b1, DATA=4'b1111) に、CI=1'b1⇒1'b0とすることでカウントアップが停止すること、出力Qはそのまま保持

ENカウントアップ動作中(CDN=1'b1, LD=1'b1, CL=1'b1, EN=1'b1, CI=1'b1, DATA=4'b1111) に、EN=1'b1⇒1'b0とすることでカウントアップが停止すること、出力Qはそのまま保持

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

Page 21: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

//`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;

initialbeginCP = 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;

#120CDN = 1'b0;

#120CDN = 1'b1;

始めはこのような記述をしていた。しかしこの記述ではわかりづらい。プログラムが長くなってしまうため{ CDN, CL, LD, CI, EN } = 5'b0_1111;このような記述に変更した。

Page 22: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

#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

initialbegin

$shm_open("test.shm");$shm_probe(toptest,"AS");

endendmodule

このRTL文法チェックにおいてはerrorが発生した。assign CO2 <= CO && CE; 2を入れるのを忘れていた。

errorをすべて取り除いた後、シミュレーションを実行し

波形を目視で確認した。

Page 23: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

波形

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

図4. 波形1

Page 24: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

図5. 波形2

図6. 波形3

Page 25: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

図7. 波形4

図8. 波形5

Page 26: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

図9. 波形6

図10. 波形7

Page 27: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

図11. 波形8

図12. 波形9

Page 28: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

図13. 波形10

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

Page 29: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

合成

RTLネットリスト合成ツール

Design Compiler

ログ

ライブラリ

NOTNANDNORF/FLATCH

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 2003.03-3 for sparcOS5 -- May 20, 2003Copyright (c) 1988-2003 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 processin 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 processin 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

Page 30: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

論理合成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

下位部モジュール(合成後)

Page 31: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

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

トップ階層モジュール(合成後)

Page 32: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

TOP階層

Page 33: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

上位部

Page 34: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

下位部

Page 35: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

RTL⇔Gateレベルのネットリストを等価検証(Conformal-LEC)

CONFORMAL (TM) Logic Equivalence CheckerVersion 3.3.0.a (05-Apr-2002)

Copyright (c) Verplex Systems, Inc., 1997-2002. All Rights Reserved

This program is proprietary and confidential information belonging toVerplex Systems, Inc., and may be used and disclosed only as authorizedin a license agreement controlling such use and disclosure.

============================================================Mapped points: SYSTEM classMapped points PI PO DFF Total--------------------------------------------------------------------------------Golden 10 9 8 27--------------------------------------------------------------------------------Revised 10 9 8 27============================================================// Command: add compared points -all// 17 compared points added to compare list// Command: compare -NONEQ_Print

^MNon-equivalent points:(G) + 128 PO /CO(R) + 200 PO /CO

============================================================Compared points PO DFF Total--------------------------------------------------------------------------------Equivalent 8 8 16--------------------------------------------------------------------------------Non-equivalent 1 0 1============================================================// Command: usageCPU time : 0.26 secondsMemory usage : 32.58 M bytes// Command: exit -force

Page 36: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

合成後の波形

図14. 波形1(合成)

Page 37: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

図15. 波形2(合成)

図16. 波形3(合成)

Page 38: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

図17. 波形4(合成)

図18. 波形5(合成)

Page 39: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

図19. 波形6(合成)

図20. 波形7(合成)

Page 40: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

図21. 波形8(合成)

図22. 波形9(合成)

Page 41: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

図23. 波形10(合成)

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

Page 42: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

図25. 波形(合成)

RTL

Gate

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

Page 43: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

レイアウト設計

Page 44: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog
Page 45: 2008インターンシップ - j-acd.org · PDF fileVerilogHDL ... # Report Name : moresimple # Report Created by: masae # Report Created on: 29-08-2008 # Working Directory: /user/DLD/INTERN/masae/verilog

実習先へのメッセージ

今回このインターシップを通してたくさんのことを学ばせていただきました。LSIについての知識、UNIXについての知識がとても少なかった私にいろいろ教えていただきとても勉強になりました。Verilog-HDLからGateになったときには本当に感動しました。

今回は8ビットカウンタの設計を体験すると同時に会社の雰囲気、働くために必要な知識など肌で感じることができました。インターシップの経験をこれからの自分に役立てていきたいと思います。本当に10日間ありがとうございました。

大学へのメッセージ

インターシップではゼミの勉強の延長でした。今まで大学で学習してきた成果を出そうと思いましたが、知識が思うように活用できなかったです。知識が活用できるには実践も必要だと改めて教えていただきました。”慣れ”という言葉を何回聞いたかわかりません。

自分の知識を活用できるようになるまで大学で勉強しこれからの人生に役立てていきたいと思います。今回このような体験ができて本当によかったです。

以上