集成電路設(shè)計(jì)綜合技術(shù)講座PPT.ppt
《集成電路設(shè)計(jì)綜合技術(shù)講座PPT.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《集成電路設(shè)計(jì)綜合技術(shù)講座PPT.ppt(357頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
集成電路設(shè)計(jì)綜合技術(shù)SynthesisTechnologyforICDesign 任課教師 周莉聯(lián)系電話 13006592410E mail zhou li QQ 1257109456 2 教學(xué)目標(biāo) 熟練掌握Verilog語法與RTL設(shè)計(jì)方法熟練掌握綜合的基本概念熟練掌握時(shí)序基本概念熟練掌握時(shí)序的分析方法熟練掌握綜合工具熟練分析綜合結(jié)果 3 參考書目 AdvancedDigitalDesignwiththeVerilogHDL MichachelD Ciletti VerilogHDL高級(jí)數(shù)字系統(tǒng)設(shè)計(jì) 電子工業(yè)出版社 VerilogHDLAGuidetoDigitalDesignandSynthesis SamirPalnitakar VerilogHDL數(shù)字設(shè)計(jì)與綜合 電子工業(yè)出版社 VerilogHDLSynthesis J Bhasker VerilogHDL綜合實(shí)用教程 清華大學(xué)出版社 Verilog語言 5 主要內(nèi)容 目的 通過具體實(shí)例講解Verilog的語法 快速掌握Verilog的語法與結(jié)構(gòu)內(nèi)容 Verilog概述VerilogHDL結(jié)構(gòu)Verilog語法與實(shí)例 6 Verilog概述 Verilog是在C語言的基礎(chǔ)上發(fā)展起來的一種硬件描述語言由GatewayAutomation于1983年首創(chuàng) 并于1995年成為IEEE標(biāo)準(zhǔn) 即IEEEstandard1364支持不同抽象層次的精確描述以及混合模擬 如行為級(jí) RTL級(jí) 開關(guān)級(jí)等設(shè)計(jì) 測試 模擬所用的語法都相同 7 Verilog概述 較高層次的描述與具體工藝無關(guān)提供了類似C語言的高級(jí)程序語句 如if else for while break case loop以及int等數(shù)據(jù)類型提供了算術(shù) 邏輯 位操作等運(yùn)算符包含完整的組合邏輯元件 如and or xor等 無需自行定義支持元件門級(jí)延時(shí)和元件門級(jí)驅(qū)動(dòng)強(qiáng)度 nmos pmos 8 Verilog概述 與C語言的聯(lián)系與區(qū)別 9 Verilog概述 抽象層次系統(tǒng)級(jí) C等高級(jí)語言描述行為級(jí) 模塊的功能描述RTL級(jí) 寄存器與組合電路的合成邏輯門級(jí) 基本邏輯門的組合 and or nand 開關(guān)級(jí) 晶體管開關(guān)的組合 nmos pmos 10 Verilog概述 Verilog語言的描述風(fēng)格行為描述只對(duì)系統(tǒng)行為與功能進(jìn)行描述 不涉及時(shí)序電路實(shí)現(xiàn) 是一種高級(jí)語言描述的方法 有很強(qiáng)的通用性結(jié)構(gòu)型描述描述實(shí)體連接的結(jié)構(gòu)形式 通過實(shí)例描述 將verilog已定義的基本實(shí)例嵌入到語言中數(shù)據(jù)流型描述通過assign連續(xù)賦值實(shí)現(xiàn)組合邏輯功能的描述 描述復(fù)雜度 11 VerilogHDL結(jié)構(gòu) VerilogHDL是由module模塊組成 模塊定義關(guān)鍵詞module開始 到關(guān)鍵詞endmodule結(jié)束每條Verilog語句以分號(hào) 作為結(jié)束 塊語句 編譯向?qū)?endmodule等除外 modulemodule name Port list 端口聲明 數(shù)據(jù)類型聲明 電路描述 endmodule例 上升沿D觸發(fā)器moduledff pos data clk q inputdata clk 端口聲明outputq 端口聲明regq 數(shù)據(jù)類型聲明always posedgeclk q data 電路描述endmodule 12 Verilog語法與實(shí)例 2 to 1multiplexer out awhensel 0 out bwhensel 1 moduleMUX 2 out a b sel outputout inputa b sel netlistINVmy inv sel n sel AND2X2and1 a1 a sel n AND2X2and2 b1 b sel OR2X2my or out a1 b1 endmodule 13 Verilog語法與實(shí)例 數(shù)字表示 整數(shù) 指定整數(shù)的大小 以bit為單位 指定整數(shù)的基數(shù) b binary 二進(jìn)制 o octal 八進(jìn)制 d decimal 十進(jìn)制 h hex adecimal 十六進(jìn)制 指定整數(shù)的值 14 整數(shù) 17 位寬 基數(shù)符號(hào)不寫會(huì)采用default值 32bit十進(jìn)制 8 d32 8 bit十進(jìn)制值為328 h128 h1A8 b0001 1100 無特別意義 只是為了方便二進(jìn)制數(shù)易讀 8 o3732 bx x 表unknown實(shí)數(shù) 7 21 8e 4 1 8 10 49 5E6 15 Verilog語法與實(shí)例 取名規(guī)則標(biāo)識(shí)符必須是由a z A Z 0 9 這些字符組成 最長只能到1024個(gè)字符開頭必須由a z A Z或下劃線 開頭 16 Verilog語法與實(shí)例 關(guān)鍵詞keywords是指一些Verilog語言內(nèi)部已經(jīng)使用的詞 主要是用來定義語言的架構(gòu) 并且所有的keyword都是用小寫表示 用戶應(yīng)避免使用module endmoduleinput output inoutreg integer realnot and or xor norbegin end 17 Verilog語法與實(shí)例 特殊字符 以 開頭的標(biāo)識(shí)符代表系統(tǒng)命令 time 返回目前的仿真時(shí)間 display 顯示出信號(hào)的值 stop 停止仿真 時(shí)間延遲not 3not1 sel sel celldelay define include timescale 18 define define例 defineADD3 h0 defineSUB3 h1 case opcode ADD SUB endcase include例 include user define task v timescale例 timescale 19 例 timescale10ns 1psmoduleMUX2 out a b sel outputout inputa b sel INV 3not1 sel sel delay3個(gè)10ns endmodule例 timescale10ns 1nsmoduleMUX2 out a b sel outputout inputa b sel INV 2 63not1 sel sel 2 63 10ns 26 3ns 四舍五入 26ns delay26ns endmodule 20 Verilog語法與實(shí)例 Verilog的四種邏輯狀態(tài) 0 邏輯零 邏輯非 低電平1 邏輯1 邏輯真 高電平x或X 不定態(tài)z或Z 高阻態(tài) 21 Verilog語法與實(shí)例 數(shù)據(jù)類型 為了能對(duì)硬件電路中的信號(hào)連線和寄存器等物理量進(jìn)行描述 引入特定數(shù)據(jù)類型連線類 Net 反映硬件電路的物理連接特性的變量寄存器類 Register 具有數(shù)據(jù)存儲(chǔ)特性的變量 22 Verilog語法與實(shí)例 連線型與寄存器型區(qū)別 連線型 驅(qū)動(dòng)方式 賦值方式 連接到一個(gè)門或模塊的輸出端 用assign賦值電荷保持作用 沒有電荷保持作用 未被驅(qū)動(dòng)時(shí)將處于高阻態(tài)對(duì)應(yīng)硬件 物理信號(hào)連接寄存器型驅(qū)動(dòng)方式 賦值方式 通過過程賦值語句賦值電荷保持作用 在下一次賦值之前保持不變對(duì)應(yīng)硬件 觸發(fā)器 鎖存器 23 Verilog語法與實(shí)例 連線類 24 Verilog語法與實(shí)例 連線型變量聲明 例 wirenet1 wire 15 0 bus in 當(dāng)沒指定net是何種type時(shí) Verilog會(huì)以default值來設(shè)定 default為一位的wire型 25 Verilog語法與實(shí)例 寄存器類 26 Verilog語法與實(shí)例 寄存器類變量聲明 例 rega reg 7 0 a reg 31 0 a b reg 0 7 b reg 7 0 mem 0 1023 27 Verilog語法與實(shí)例 參數(shù) Parameter 常量定義 用文字參數(shù)代替一個(gè)數(shù)字量modulevar mux out a b sel parameterwidth 8 delay 3 output width 1 0 out input width 1 0 a b inputsel assign delayout sel a b endmodule 28 Verilog語法與實(shí)例 模擬時(shí)間定標(biāo) timescale timescale 例 timescale1ns 100ps合法的整數(shù) 1 10 100合法時(shí)間單位 s ms s ns ps fs定標(biāo)只是一個(gè)相對(duì)的概念 不會(huì)影響模擬器工作狀態(tài)計(jì)時(shí)單位必須大于精度單位 timescale定義必須在模塊描述的外部進(jìn)行允許對(duì)不同模塊定義不同時(shí)標(biāo) 以最小精度進(jìn)行模擬 29 Verilog語法與實(shí)例 運(yùn)算符 30 Verilog語法與實(shí)例 位運(yùn)算符 按位進(jìn)行運(yùn)算 結(jié)果的位數(shù)不變按位取反 按位與 按位或 按位異或 按位同或 或 例 a 4 b1011 a 4 b0100b 4 b0011 a b 4 b1011 31 Verilog語法與實(shí)例 縮位運(yùn)算符是單目運(yùn)算符 按位進(jìn)行邏輯運(yùn)算 結(jié)果是一位值 與縮位運(yùn)算符 或縮位運(yùn)算符 異或縮位運(yùn)算符 與 或 異或運(yùn)算符和非運(yùn)算符組成的復(fù)合運(yùn)算符 例 a 4 b1011 a 1 b0 a 1 b1 a 1 b1 a 1 b0 a 1 b1 a 1 b0 32 Verilog語法與實(shí)例 連接運(yùn)算符例 a b c 4 b0011 3 a a a a 條件運(yùn)算符 例 tri data en data out 32 bz 三態(tài) 33 Verilog語法與實(shí)例 行為級(jí)描述 側(cè)重對(duì)模塊行為功能的抽象描述要先知道電路的行為 如果電路有多種行為 要知道如何分開描述它們 時(shí)間控制 包括 什么時(shí)間做什么事 例如 經(jīng)過多少個(gè)clock就要做什么事 什么狀況做什么事 例如 某一控制信號(hào)進(jìn)來就要做什么事 34 Verilog語法與實(shí)例 行為級(jí)模塊描述由多個(gè)并行運(yùn)行的過程塊組成過程塊由過程語句 initial與always 和塊語句 串行塊begin end與并行塊fork join 組成塊語句由過程賦值語句和高級(jí)程序語句構(gòu)成過程賦值語句 阻塞與非阻塞式賦值高級(jí)程序語句 if else case while wait 35 Verilog語法與實(shí)例 模塊行為描述的構(gòu)成框架例 上升沿D觸發(fā)器moduledff pos data clk q inputdata clk 端口聲明outputq 端口聲明regq 數(shù)據(jù)類型聲明always posedgeclk q data 描述體 過程塊endmodule 36 Verilog語法與實(shí)例 過程塊 Proceduralblock initial 和 always proceduralblock condition 37 38 塊語句 串行塊 and 并行塊 39 Verilog語法與實(shí)例 begin end串行塊順序執(zhí)行fork join并行塊同時(shí)執(zhí)行 begin 10r h35 10r hE2 10r h00 end fork 10r h35 20r hE2 30r h00 join 40 Verilog語法與實(shí)例 定時(shí)控制延時(shí)控制例 100clk clk 事件控制例 en r0 1 aorborci sum a b ci posedgeclock q d posedgeclkornegedgeclear q 0 當(dāng)括弧內(nèi)的值有任何改變時(shí) 就稱為事件 41 Verilog語法與實(shí)例 阻塞型賦值 用 賦值 前一條語句的執(zhí)行阻塞了后面語句的執(zhí)行非阻塞型賦值 用 賦值 一條語句的執(zhí)行不影響其他語句的執(zhí)行一個(gè)塊語句中不許同時(shí)使用上述2種賦值方式 begina 101 b 50 c 11 end begina 101 b 50 c 11 end 42 Verilog語法與實(shí)例 連續(xù)賦值語句assign基本格式 43 Verilog語法與實(shí)例 Assign用于對(duì)連線類變量賦值右端表達(dá)式的信號(hào)有任何變化都反映在左端的連線變量中Assign不能出現(xiàn)在過程塊中連續(xù)賦值語句以assign為先導(dǎo) 可缺省 并且只有阻塞型一種 44 連續(xù)賦值圖示 45 Verilog語法與實(shí)例 高級(jí)程序語句 if else case 循環(huán)語句 forever repeat while for 例 具有同步清零 低有效 的上升沿觸發(fā)器 moduledff sync q d clear clock always posedgeclock if reset b q 0 elseq d endmodule 46 Verilog語法與實(shí)例 if if else語法如下 if expression statementelsestatement if expression statementelseif expression statementelseif elsestatement 47 例 if rega regb result 1 elseresult 0 例 if index 0 if rega regb result rega elseresult 0 else display Warning 48 if else語句 modulemux4 1 out a b c d sel outputout inputa b c d input 1 0 sel regout always seloraorborcord beginif sel 2 b00 out a elseif sel 2 b01 out b elseif sel 2 b10 out c elseif sel 2 b11 out d elseout 1 bx endendmodule 49 Verilog語法與實(shí)例 case語句例 definepass accum4 b0000 definepass data4 b0001 defineADD4 b0010 Initialbegincase opcode pass accum 3 5alu out accum pass data 3 5alu out data ADD 3 5alu out accum data AND 3 5alu out accum data XOR 3 5alu out accum data default 3 5alu out 8 bx endcaseend 50 case語句的例子 case語句描述的4選1數(shù)據(jù)選擇器modulemux4 1 out in0 in1 in2 in3 sel outputout inputin0 in1 in2 in3 input 1 0 sel regout always in0orin1orin2orin3orsel case sel 2 b00 out in0 2 b10 out in1 2 b01 out in2 2 b11 out in3 default out 1 bx endcaseendmodule 51 case語句的例子 Case的缺省語句是可選的而不是必需的在always in0orin1orin2orin3orsel 中的時(shí)間控制部分是完整電平敏感列表 只要任意信號(hào)發(fā)生變化 便會(huì)輸出更新值如果敏感列表不完整 例always in0orin1orin2orsel 則在in3變化時(shí)則可能不會(huì)產(chǎn)生更新值取決于不同的綜合工具 這種寫法會(huì)被認(rèn)為是非法或者作為完整列表處理 另外還可能造成綜合出的電路和程序描述不一致的情況 因此建議使用完全敏感列表 52 casez的例子 modulemux casez out a b c d sel outputout inputa b c d input 3 0 sel regout always seloraorborcord begincasez sel 4 b 1 out a 4 b 1 out b 4 b 1 out c 4 b1 out d endcaseendendmodule Case語句處理無關(guān)值的情況處理高阻態(tài)無關(guān)值 casez處理高阻態(tài)和未知態(tài)無關(guān)值 casex 53 case和ifelse的缺省項(xiàng)問題 對(duì)ifelse語句 else是缺省項(xiàng)對(duì)case語句 default是缺省項(xiàng)缺省項(xiàng)在語法上可以忽略 但是省略會(huì)使綜合工具綜合出Latch 而不是Register Latch在RTL設(shè)計(jì)中是不建議使用的 除非特殊的必要情況 因此不建議省略缺省項(xiàng) 54 case和ifelse的缺省項(xiàng)問題 moduleex3reg y a b c inputa b c outputy regy always aorborc beginif aendendmodule 55 case和ifelse的缺省項(xiàng)問題 moduleex4reg y a b c inputa b c outputy regy always aorborc beginif a 無缺省項(xiàng)endendmodule Ifelse的缺省項(xiàng)省略了 當(dāng)a b 1時(shí) y c 當(dāng)a b 0時(shí) y會(huì)保持原值 綜合器會(huì)引用一個(gè)Latch把y的值保存下來 PREDQENACLR 0 1 rega y b a c 56 case和ifelse的缺省項(xiàng)問題 對(duì)case語句同樣存在類似的情況 如 moduleincrease a b c d e inputa b c d outpute rege always aorborcord case a b 2 b11 e d 2 b10 e c endcaseendmodule 57 Verilog語法與實(shí)例 repeatmodulemultiplier result op a op b regshift opa shift opb parametersize 8 initialbeginresult 0 shift opa op a shift opb op b repeat size begin defaultrepeat8times 10if shift opb 0 result result shift opa shift opa shift opa 1 endendendmodule 58 Verilog語法與實(shí)例 行為級(jí)描述 whileinitialbeginreg 7 0 tempreg count 0 tempreg rega while tempreg beginif tempreg 0 count count 1 tempreg tempreg 1 endend 59 Verilog語法與實(shí)例 行為級(jí)描述 forparametersize 8 longsize 16 reg size 1 opa opb reg longsize 1 result initialbeginintegerbindex result 0 for bindex 1 bindex size bindex bindex 1 beginif opb bindex result result opa bindex 1 endend 60 Verilog語法與實(shí)例 Verilog還提供了任務(wù) task 和函數(shù) function 可重復(fù)調(diào)用定義和調(diào)用都包含在module內(nèi)部tasktask任務(wù)名 無需定義端口名列表端口與類型說明 調(diào)用時(shí)按順序和類型列出局部變量說明 塊語句endtask 61 Verilog中的任務(wù)task always posedgesys clk beginif read request 1 beginread mem IR PC Eventandfunctioncallsendendtaskread mem output 15 0 data in input 15 0 addr always posedgeread grant beginADDRESS addr 15data in data endendtask 62 Verilog語法與實(shí)例 行為級(jí)描述 Functionfunction函數(shù)名 輸入端口與類型說明 局部變量說明 塊語句endfunction注意 1 函數(shù)不能調(diào)用任務(wù) 任務(wù)可調(diào)用任何其他函數(shù)和任務(wù)2 函數(shù)只有輸入變量且至少一個(gè)3 函數(shù)定義的塊語句不許出現(xiàn)定時(shí)控制4 函數(shù)通過函數(shù)名返回一個(gè)值 63 Verilog中的函數(shù)functionalways posedgesys clk begin IR 0 I I 1 temp reg 15 i in vec i swap bits temp reg endendfunctioin 64 Verilog語法與實(shí)例 65 modulehalf adder sum cout a b outputsum cout inputa b XORX2U0 sum a b AND2X2U1 cout a b endmoudle 結(jié)構(gòu)級(jí)描述側(cè)重對(duì)模塊內(nèi)部結(jié)構(gòu)實(shí)現(xiàn)的具體描述 半加器 66 67 Verilog語法與實(shí)例 模塊調(diào)用模塊調(diào)用基本門調(diào)用 68 Verilog語法與實(shí)例 模塊調(diào)用方式位置對(duì)應(yīng)端口名對(duì)應(yīng) 69 Verilog語法與實(shí)例 例 moduleDEF q qb din clk outputq qb inputdin clk endmodulemoduleport map DEFU0 q1 qb1 din 1 clock 位置對(duì)應(yīng)DEFU1 din D 0 clk clock q O 0 qb O 0 端口名對(duì)應(yīng)DEFU2 Q DIN clock 允許出現(xiàn)不連接的端口DEFU3 din A clk B qb c endmodule 70 行為級(jí)描述和結(jié)構(gòu)級(jí)描述 例 全加器 b 門級(jí) 71 行為級(jí)描述和結(jié)構(gòu)級(jí)描述 C 行為級(jí)當(dāng)a b或cin邏輯狀態(tài)發(fā)生變化 采用如下等式得到sum及cout sum a b ccout ab bc ca 72 行為級(jí)描述和結(jié)構(gòu)級(jí)描述 全加器行為級(jí)描述實(shí)例 modulefadder sum cout a b cin outputsum cout inputa b cin regsum cout always aorborcin 過程語句begin 過程塊sum a b cin 過程賦值語句cout a b b cin cin a endendmodule 73 行為級(jí)描述和結(jié)構(gòu)級(jí)描述 全加器結(jié)構(gòu)級(jí)描述實(shí)例modulefadder sum cout a b cin outputsum cout inputa b cin XORX2U0 sum a b cin AND2X2U1 net1 a b AND2X2U2 net2 a cin AND2X2U3 net3 b cin OR3X4U4 cout net1 net2 net3 endmodule 74 Verilog語法與實(shí)例 為了方便對(duì)仿真過程的控制與仿真結(jié)果的分析 Verilog提供了系統(tǒng)函數(shù) 統(tǒng)一以 開頭輸出控制 display write monitor模擬時(shí)標(biāo) time realtime進(jìn)程控制 finish stop文件讀寫 readmem其它 random 75 Verilog語法與實(shí)例 display與 write write和 display列出所指定信號(hào)的值 它們的功能都相同 唯一不同點(diǎn)在 display輸出結(jié)束后會(huì)自動(dòng)換行 而 write不會(huì)換行 例 write b t h t d t o n a b c d display b t h t d t o a b c d 76 輸出格式說明符以及轉(zhuǎn)義字符 77 Verilog語法與實(shí)例 monitor 輸出變量的任何變化 都會(huì)輸出一次結(jié)果 而 write和 display每調(diào)用一次執(zhí)行一次例 modulemonitor test regin wireout not 1U0 out in initial monitor time out bin b out in initialbeginin 0 10in 1 10in 0 endendmodule 78 輸出結(jié)果為 注意延遲 0out xin 01out 1in 010out 1in 111out 0in 120out 0in 021out 1in 0 79 例 modulemonitor test regin wireout not 1U0 out in initial display time out bin b out in initialbeginin 0 10in 1 10in 0 endendmodule輸出結(jié)果為 out xin 0 80 Verilog語法與實(shí)例 模擬時(shí)標(biāo) 返回從執(zhí)行到調(diào)用時(shí)刻的時(shí)間 time 返回一個(gè)64 bit的整數(shù) realtime 返回一個(gè)實(shí)數(shù) 例 monitor time out bin b out in 81 Verilog語法與實(shí)例 finish與 stop finish終止仿真器的運(yùn)行 stop暫停模擬程序的執(zhí)行 不退出仿真進(jìn)程 readmem 把文件內(nèi)容讀入指定存儲(chǔ)器readmemb 文件名 存儲(chǔ)器名 起始地址 結(jié)束地址 readmemh 文件名 存儲(chǔ)器名 起始地址 結(jié)束地址 例 reg 7 0 mem 1 256 initial readmemh mem data mem initial readmemh mem data mem 128 156 82 設(shè)計(jì)流程 83 測試系統(tǒng) DUT Testbench 84 測試系統(tǒng)組成 測試目的 功能 時(shí)序正確性測試系統(tǒng)組成 待測模塊 DUT Fulladder測試文件通過仿真器觀察結(jié)果 85 完整的測試文件 測試文件結(jié)構(gòu) 數(shù)據(jù)類型聲明 調(diào)用待測模塊 產(chǎn)生testpattern 觀察輸出結(jié)果 moduletest file endmodule 86 TestBenchmoduletest fadder rega b cin fadderU0 sum cout a b cin 施加激勵(lì)initialbegina 0 b 0 cin 0 5cin 1 5cin 0 b 1 5cin 1 5a 1 b 0 cin 0 5cin 1 5cin 0 b 1 5cin 1 10 finish 結(jié)束仿真endendmodule 87 數(shù)據(jù)選擇器設(shè)計(jì) modulemux4 1c out in0 in1 in2 in3 sel outputout inputin0 in1 in2 in3 input 1 0 sel assignout sel 1 sel 0 in3 in2 sel 0 in1 in0 ABendmodule上述模塊為4選1選擇器 首先通過sel 1 選擇表達(dá)式A或者B 然后用sel 0 進(jìn)行二次選擇決定最終的輸出 88 數(shù)據(jù)選擇器設(shè)計(jì) modulemux4 1d out in0 in1 in2 in3 sel outputout inputin0 in1 in2 in3 input 1 0 sel assignout in0endmodule上述模塊為4選1選擇器的另外一種表達(dá)形式 是通過verilog直接描述組合電路邏輯關(guān)系的形式來實(shí)現(xiàn)的 通過真值表比較可以發(fā)現(xiàn)與上一個(gè)例子的功能是相同的 89 數(shù)據(jù)選擇器設(shè)計(jì) modulemux4 1a out in0 in1 in2 in3 sel outputout inputin0 in1 in2 in3 input 1 0 sel wirenotsel1 notsel0 w x y z not notsel1 sel 1 notsel0 sel 0 and w in0 notsel1 notsel0 x in1 notsel1 sel 0 y in2 sel 1 notsel0 z in3 sel 1 sel 0 or out w x y z endmodule上述模塊為4選1選擇器的門級(jí)表達(dá)形式 通過分析可以看到 這種形式是用門的形式把上例中的組合邏輯實(shí)現(xiàn)了 但兩個(gè)例子的功能是完全等價(jià)的 從上述例子可以看到 實(shí)現(xiàn)一個(gè)電路的途徑有很多 可以根據(jù)實(shí)際情況靈活運(yùn)用 同時(shí)也可以看到 verilog語言描述的基礎(chǔ)還是數(shù)字邏輯電路 90 計(jì)數(shù)器設(shè)計(jì) modulecount4 out reset clk output 3 0 out inputreset clk reg 3 0 out always posedgeclkornegedgereset b beginif reset b out 0 elseout out 1 endendmodule 91 計(jì)數(shù)器的仿真程序 timescale1ns 1ns include count4 v modulecount4 top regclk reset wire 3 0 out parameterDELAY 100 count4mycount out reset clk always DELAY 2 clk clk initialbeginclk 0 reset 0 DELAYreset 1 DELAYreset 0 DELAY 20 finish endinitial monitor time clk dreset dout d clk reset out endmodule 92 同步置數(shù)同步清零計(jì)數(shù)器設(shè)計(jì) modulecount4 out data load reset clk output 7 0 out input 7 0 data inputload reset clk reg 7 0 out always posedgeclk beginif reset out 8 h00 elseif load out data elseout out 1 endendmodule 93 狀態(tài)機(jī) 有限狀態(tài)機(jī)是絕大部分控制電路的核心有限狀態(tài)機(jī)可以分為Moore有限狀態(tài)機(jī)狀態(tài)輸出僅依賴于內(nèi)部狀態(tài) 跟輸入無關(guān)Mealy有限狀態(tài)機(jī)狀態(tài)輸出不僅決定于內(nèi)部狀態(tài) 還跟外部輸入有關(guān)有限狀態(tài)機(jī)可以使用always語句和case語句描述 狀態(tài)保存在寄存器中 根據(jù)寄存器的不同的值執(zhí)行不同的操作 case語句的多個(gè)分支代表了不同狀態(tài)的行為 94 moore狀態(tài)機(jī) modulemoore fsm clk reset A Z finish parameterSTATE INT 0 parameterSTATE ST1 1 parameterSTATE ST2 2 parameterSTATE FINISH 3 inputclk reset inputA output 1 0 Z outputfinish reg 1 0 state reg 1 0 Z regfinish 95 moore狀態(tài)機(jī) always negedgeresetorposedgeclk beginif reset beginstate STATE INIT Z 2 b00 finish 1 b0 endelsebegincase state STATE INIT beginstate STATE ST1 Z 2 b01 finish 1 b0 endSTATE ST1 beginif A state STATE ST2 elsestate STATE FINISH Z 2 b11 finish 1 b0 end STATE ST2 beginstate STATE FINISH Z 2 b10 finish 1 b0 endSTATE FINISH beginZ 2 b01 finish 1 b1 endendcaseendendendmodule 96 moore狀態(tài)機(jī) 實(shí)現(xiàn)過程首先通過parameter定義了moore狀態(tài)機(jī)的幾個(gè)狀態(tài)參數(shù) 為常量 用于給狀態(tài)的變量賦值moore狀態(tài)機(jī)的功能在always結(jié)構(gòu)中得到實(shí)現(xiàn) Always結(jié)構(gòu)中通過clk的上升沿控制 在clk的上升沿 如果復(fù)位信號(hào)無效 則進(jìn)行狀態(tài)控制 根據(jù)當(dāng)前的狀態(tài)確定下一個(gè)狀態(tài)的值 同時(shí)進(jìn)行本狀態(tài)要執(zhí)行的操作 在本例中改變Z的值 并且只要不是最后一個(gè)狀態(tài)STATE FINISH 標(biāo)示finish都為零狀態(tài)機(jī)的輸出Z僅與moore狀態(tài)機(jī)的狀態(tài)有關(guān) 與輸入無關(guān) 97 mealy狀態(tài)機(jī) modulemealy fsm clk reset A Z finish parameterSTATE INIT 4 b0001 parameterSTATE ST1 4 b0010 parameterSTATE ST2 4 b0100 parameterSTATE FINISH 4 b1000 inputclk reset inputA output 1 0 Z outputfinish reg 3 0 current state next state reg 1 0 Z regfinish 98 mealy狀態(tài)機(jī) always negedgeresetorposedgeclk beginif reset current state STATE INIT elsecurrent state next state endalways current stateorA beginfinish 1 b0 case current state STATE INIT beginnext state STATE ST1 Z 2 b01 endSTATE ST1 beginif A beginnext state STATE ST2 Z 2 b11 end elsebeginnext state STATE FINISH Z 2 b10 endendSTATE ST2 beginnext state STATE FINISH Z 2 b10 endSTATE FINISH begin next state STATE FINISHZ 2 b01 finish 1 b1 endendcaseendendmodule 99 狀態(tài)機(jī)編碼方式 One hot方式 如上例 占用寄存器多 但是電路簡單 另外可以選擇GrayCode 因?yàn)楦窭状a每次只有一位發(fā)生變化 可以避免電路上的競爭現(xiàn)象出現(xiàn) 100 moore和mealy的區(qū)別 實(shí)現(xiàn)機(jī)理上并無不同只是mealy機(jī)在實(shí)現(xiàn)上把狀態(tài)的變化和輸出開關(guān)的控制分開考慮 形成各自獨(dú)立的always控制塊 在設(shè)計(jì)較復(fù)雜的狀態(tài)機(jī)上常采用 101 售貨機(jī)的例子 任務(wù)要求設(shè)計(jì)一個(gè)自動(dòng)售貨機(jī)的電路投幣口每次只能投入一枚五角或者一元的硬幣 投入一元五角 則售貨機(jī)自動(dòng)給出一杯飲料 投入兩枚一元的硬幣 則在給出一杯飲料同時(shí)退出一枚五角硬幣變量分析 共有四個(gè)變量 投入一元為一個(gè)變量A 輸入 投入五角為一個(gè)變量B 輸入 售貨機(jī)給出一杯飲料 定義為Y 輸出 售貨機(jī)退出一枚五角硬幣 定義為Z 輸出 狀態(tài)定義 三個(gè)狀態(tài) S0 未投入任何硬幣 S1 投入一枚五角硬幣 S2 投入一枚一元硬幣 102 售貨機(jī) modulemachine A B Y Z reset parameterstate0 2 b00 parameterstate1 2 b01 parameterstate2 2 b10 inputA B reset outputY Z regY Z reg 1 0 state always A B state begin 103 售貨機(jī) case state state0 if A 0end state2 有一元if A 0endendcaseEndendmodule 高級(jí)芯片綜合AdvancedChipSynthesis 105 教學(xué)目標(biāo) 熟練掌握Verilog語法與RTL設(shè)計(jì)方法熟練掌握綜合的基本概念熟練掌握時(shí)序基本概念熟練掌握時(shí)序的分析方法熟練掌握綜合工具熟練分析綜合結(jié)果 106 教學(xué)內(nèi)容 ASICdesignflow綜合的定義基本概念Synopsys基本工具介紹時(shí)序基本概念與分析SynopsystechnologylibraryLogicsynthesis的過程Synthesis和layout的接口Post layoutoptimizationSDF文件的生成 107 設(shè)計(jì)流程 SimulationonSystemLevel RTLCodingDesign FunctionSimulation DesignRequirement Micro ArchitectureandFunctionSpecification Synthesis SimulationonGateLevel StaticTimingAnalysis Formality lib Layout PhysicsVerification StaticTimingAnalysis lib Tapeout FPGA 108 為什么需要綜合這一步驟 109 綜合的定義 邏輯綜合 決定設(shè)計(jì)電路邏輯門的相互連接 邏輯綜合的目的 決定電路門級(jí)結(jié)構(gòu) 尋求時(shí)序和與面積的平衡 尋求功耗與時(shí)序的平衡 增強(qiáng)電路的測試性 邏輯綜合的過程 首先 綜合工具分析HDL代碼 用一種工具內(nèi)嵌模型對(duì)HDL進(jìn)行映射 這個(gè)模型是與技術(shù)庫無關(guān)的 然后 在設(shè)計(jì)者的控制下 對(duì)這個(gè)模型進(jìn)行邏輯優(yōu)化 最后一步 針對(duì)時(shí)序 面積 功耗進(jìn)行邏輯映射和門級(jí)優(yōu)化 根據(jù)邏輯約束映射為專門的技術(shù)目標(biāo)單元庫 targetcelllibrary 中的cell 形成了綜合后的網(wǎng)表 110 綜合的依據(jù) 綜合由約束驅(qū)動(dòng)綜合是基于路徑的過程RTL設(shè)計(jì) 約束文件 111 約束 時(shí)序約束綜合是一個(gè)重復(fù)的過程 為設(shè)計(jì)的每個(gè)模塊定義時(shí)序約束 這些時(shí)序約束定義了該模塊的各個(gè)信號(hào)與時(shí)鐘信號(hào)之間的關(guān)系 綜合工具通過靜態(tài)時(shí)序分析 STA 計(jì)算每個(gè)路徑的時(shí)間 并盡量去優(yōu)化設(shè)計(jì)以滿足特殊的時(shí)序約束 環(huán)境約束環(huán)境約束定義了標(biāo)準(zhǔn)單元庫和其他相關(guān)的信息 比如芯片的工作溫度等 約束文件 tcl Synopsys產(chǎn)品 113 Synopsys產(chǎn)品 Synopsys設(shè)計(jì)相關(guān)產(chǎn)品包括 VCSDesignCompilerandDesignVision 綜合 PrimeTime STA power DFTCompiler DFT Formality 形式驗(yàn)證 HAL CDC檢查 代碼覆蓋率分析 114 Synopsys產(chǎn)品 cont Astro 版圖 Herculus DRC LVS AstroRail 功耗分析 Jupiter 布圖 ICC 從ploorplan到后端實(shí)現(xiàn) 115 DesignCompilerandDesignVision DC和DV構(gòu)成構(gòu)成一套功能強(qiáng)大的邏輯綜合工具 根據(jù)設(shè)計(jì)規(guī)范和時(shí)序約束 提供最優(yōu)的門級(jí)綜合網(wǎng)表 啟動(dòng) data asic dc shell data asic dc shell t data asic design vision data asic dvt 116 117 4 PrimeTime Synopsys的全芯片 門級(jí)靜態(tài)時(shí)序分析工具 用于最終的timingsignoff 啟動(dòng) data asic pt shell data asic primetime data asic pt 118 5 DFTCompiler 包含在DC全套工具中的測試插入工具 它用于向設(shè)計(jì)插入DFT特性 如掃描鏈插入和邊界掃描 產(chǎn)生DFT測試向量 119 6 Formality 形式化驗(yàn)證工具 即邏輯等價(jià)檢測工具 包含待驗(yàn)證的邏輯的原理圖表示標(biāo)注在原理圖上作為可能的錯(cuò)誤指示的可視建議提供修正設(shè)計(jì)的建議 啟動(dòng) data asic formality 120 時(shí)序分析與設(shè)計(jì)約束 121 約束 Constraints 122 時(shí)序約束與時(shí)序問題 信號(hào)亞穩(wěn)態(tài)問題Setup hold時(shí)序問題Recovery removal時(shí)序問題傳輸時(shí)間問題CDC問題時(shí)鐘相關(guān)問題多時(shí)鐘相關(guān)問題 123 信號(hào)的亞穩(wěn)態(tài) metastability 當(dāng)兩個(gè)輸入 例如數(shù)據(jù)和時(shí)鐘 或者時(shí)鐘和復(fù)位 在同一時(shí)間變化時(shí) 則輸出信號(hào)的狀態(tài)依賴于輸入信號(hào)的順序 當(dāng)輸入信號(hào)的順序不確定時(shí) 在一段時(shí)間內(nèi) 輸出信號(hào)也是不確定的 并且輸出信號(hào)的不確定會(huì)持續(xù)較長的時(shí)間才能穩(wěn)定到一個(gè)狀態(tài) 甚至穩(wěn)定之前會(huì)出現(xiàn)震蕩 這一狀態(tài)成為亞穩(wěn)態(tài) 如果另一個(gè)電路需要用到處于亞穩(wěn)態(tài)狀態(tài)的輸出信號(hào) 則會(huì)造成數(shù)據(jù)采樣錯(cuò)誤 特別是 當(dāng)兩個(gè)不同的邏輯電路都用到觸發(fā)器的輸出信號(hào)時(shí) 一路電路可能將采樣到輸出信號(hào)為0 而另一路電路則可能會(huì)采樣到輸出電路為1 從而造成邏輯錯(cuò)誤 124 Setupandholdtime Setuptime 建立時(shí)間 在有效時(shí)鐘沿到來之前輸入信號(hào)需要保持穩(wěn)定的最少時(shí)間 它間接約束了組合邏輯的最大延遲 用來保證信號(hào)能夠被時(shí)鐘可靠的采樣 應(yīng)用于同步電路 Holdtime 保持時(shí)間 在有效時(shí)鐘沿到來之后輸入信號(hào)需要保持穩(wěn)定的最少時(shí)間 間接約束了組合邏輯的最小延遲 用來保證信號(hào)能夠被時(shí)鐘可靠的采樣 應(yīng)用于同步電路 125 Setupandholdtime 保證信號(hào)的Setup hold時(shí)間 能夠避免觸發(fā)器的亞穩(wěn)態(tài) Setup hold時(shí)間通常在數(shù)據(jù)手冊(cè)中給出 現(xiàn)代工藝中一般在幾個(gè)ns 或者幾百個(gè)ps的數(shù)量級(jí) 126 Setupandholdtime Setup表明了FF1上一個(gè)時(shí)鐘到FF2下一個(gè)時(shí)鐘的關(guān)系 即兩個(gè)不同時(shí)鐘沿的關(guān)系 Hold表明FF1當(dāng)前時(shí)鐘與FF2當(dāng)前時(shí)鐘的關(guān)系 即同一個(gè)時(shí)鐘沿的關(guān)系 127 Setupandholdtime 128 Recovery和Removaltime Recovery 異步控制邏輯信號(hào)在下一個(gè)時(shí)鐘有效沿到來之前需要保持穩(wěn)定的最少時(shí)間 Removal 異步控制邏輯信號(hào)在時(shí)鐘有效沿到來之后需要保持穩(wěn)定的最少時(shí)間 129 傳輸時(shí)間 有效時(shí)鐘沿到來到輸出信號(hào)有效的最大時(shí)間延遲稱為F F的傳輸時(shí)間 通常表示為tCO或者tp 指F F在時(shí)鐘沿之后輸出信號(hào)變化所需要的時(shí)間 從高到低的傳輸時(shí)間tPHL與從低到高的傳輸時(shí)間tPLH有時(shí)不同 當(dāng)同一時(shí)鐘的幾個(gè)F F級(jí)聯(lián)時(shí) 要保證tCO th 從而保證后續(xù)F F的輸入數(shù)據(jù)能夠穩(wěn)定 并被正確采樣 130 CDC問題及其解決 什么是CDC問題 ClockDomainCrossing異步時(shí)鐘域的RTL設(shè)計(jì)問題異步時(shí)鐘域設(shè)計(jì)中的信號(hào)亞穩(wěn)態(tài)問題 signalMeta stability解決方法信號(hào)多級(jí)鎖存FIFO 131 CDC問題的重要性 CDC問題的重要性和嚴(yán)重性往往無法被仿真過程發(fā)現(xiàn)往往是在設(shè)計(jì)過程的后期才能發(fā)現(xiàn) 甚至在流片后才能發(fā)現(xiàn)需要在STA中針對(duì)異步時(shí)鐘域設(shè)置falsepath 如果沒有正確設(shè)置 則遺留了潛在的問題CDC所造成的問題很難發(fā)現(xiàn) 很難調(diào)試 很難復(fù)制所以需要盡早的對(duì)CDC問題進(jìn)行處理在RTL設(shè)計(jì)階段對(duì)CDC問題進(jìn)行處理時(shí)鐘命名規(guī)則合理的設(shè)計(jì)分割RTL同步設(shè)計(jì)策略DFFsFIFOsMUXenabledsynchronizerCustomizedsynchronizer亞穩(wěn)態(tài)不可能100 消除 只能盡量避免 132 CDC問題概述 亞穩(wěn)態(tài)問題 133 CDC問題概述 134 兩級(jí)DFF鎖存同步方法 135 兩級(jí)DFF鎖存選擇器控制 136 兩級(jí)DFF鎖存遺留的問題 信號(hào)容易被誤判成Glitch會(huì)造成后續(xù)邏輯的功能錯(cuò)誤同步只能解決無法預(yù)測的信號(hào)值 但是不能預(yù)測不可知的延遲只能減少CDC發(fā)生的概率 不能做到100 消除 137 兩級(jí)DFF鎖存的問題 138 兩級(jí)DFF鎖存的問題 139 兩級(jí)DFF鎖存的問題 140 兩級(jí)DFF鎖存的問題 141 兩級(jí)DFF鎖存遺留問題的解決 Gray codingIDcomparatorStaticre convergencecheckDynamicsimulationcheckToolcheck blacktie 0 in 142 快信號(hào)到慢時(shí)鐘域的同步 143 快信號(hào)到慢時(shí)鐘域的同步 144 快信號(hào)到慢時(shí)鐘域的同步 145 多個(gè)控制信號(hào)的同步 146 多個(gè)控制信號(hào)的同步 147 數(shù)據(jù)通路的同步 多比特?cái)?shù)據(jù)同步的處理利用同步電路不太可取 數(shù)據(jù)之間的變化變得不確定 造成功能錯(cuò)誤需要較多的寄存器資源對(duì)于多比特?cái)?shù)據(jù)同步 通常采用握手信號(hào)在不同時(shí)鐘域之間傳遞數(shù)據(jù)FIFO存儲(chǔ)數(shù)據(jù) 讀寫分別為不同時(shí)鐘域的時(shí)鐘 148 數(shù)據(jù)通路的同步 149 不同時(shí)鐘域設(shè)計(jì) 150 時(shí)鐘相關(guān)參數(shù) 時(shí)鐘占空比 clockdutycycleClocktransitiontime 時(shí)鐘傳輸時(shí)間 Slewrate 上升時(shí)間下降時(shí)間Clockskew 時(shí)鐘歪斜Clockjitter 時(shí)鐘跳變Clockuncertaintytime 時(shí)鐘不確定時(shí)間Clock uncertainty time skew jitterClockinsertiondelay clocksourcedelay 時(shí)鐘插入延遲Clocknetworklatency 151 Clockskew 在一個(gè)時(shí)鐘域或者兩個(gè)時(shí)鐘域之間時(shí)鐘信號(hào)到達(dá)寄存器的最大時(shí)間差別產(chǎn)生原因 時(shí)鐘源到達(dá)各端點(diǎn)的路徑長度不同各端點(diǎn)負(fù)載不同時(shí)鐘網(wǎng)絡(luò)中插入的緩沖器不同在兩個(gè)點(diǎn)之間 大致可以認(rèn)為clockskew是固定值 Clockskew影響的是時(shí)鐘的到達(dá)時(shí)間不同 也就是時(shí)鐘發(fā)生了相移 并不影響時(shí)鐘的周期寬度 152 Clockskew 153 Clockjitter 在某一給定點(diǎn)上 時(shí)鐘周期寬度的變化 不同的時(shí)鐘周期其持續(xù)時(shí)間可能縮短或變寬 一般用兩個(gè)相鄰時(shí)鐘周期之間其周期寬度的最大變化來表示clockjitter 154 Clockjitter 155 Clockjitter 156 Clockuncertainty uncertainty是不同時(shí)鐘網(wǎng)絡(luò)分支之間的延時(shí)的不同 由clockjitter clockskew組成uncertainty用于計(jì)算同步邏輯的抖動(dòng) 157 Clockinsertiondelay 158 Clocknetworkdelay Clockdefinitionpoint 159 多時(shí)鐘周期路徑 多時(shí)鐘周期路徑 需要多個(gè)時(shí)鐘周期進(jìn)行信號(hào)傳播的路徑 需要對(duì)多時(shí)鐘周期路徑信號(hào)的setup hold進(jìn)行檢查 同一時(shí)鐘的多時(shí)鐘周期信號(hào)快時(shí)鐘到慢時(shí)鐘的多時(shí)鐘周期信號(hào)慢時(shí)鐘到快時(shí)鐘的多時(shí)鐘周期信號(hào) 160 同一時(shí)鐘的多時(shí)鐘周期信號(hào) ExampleI set multicycle path2 from to 或者set multicycle path2 setup 161 同一時(shí)鐘的多時(shí)鐘周期信號(hào) ExampleII set multicycle path1 hold from to 162 同一時(shí)鐘的多時(shí)鐘周期信號(hào) ExampleIII set multicycle path2 setupset multicycle path1 hold 163 快時(shí)鐘到慢時(shí)鐘的多時(shí)鐘周期信號(hào) Example1 set multicycle path2 setup from startExample2 set multicycle path2 setup from start 1 hold start 默認(rèn)的setup hold 164 慢時(shí)鐘到快時(shí)鐘的多時(shí)鐘周期信號(hào) Example1 set multicycle path2 setup from endExample2 set multicycle path2 setup from end 1 hold end 默認(rèn)的setup hold 165 多時(shí)鐘周期信號(hào)總結(jié) 先確定Multicycle之前的setup和hold的所指向時(shí)鐘沿是不是想要的setup hold 是不是Critical的setup hold 如果不是 畫出想要的或者critical的setup hold先寫出setup的個(gè)數(shù) 后面加上 source endHold跟著setup的設(shè)置變化了 在調(diào)整Hold到想要的位置 166 虛假路徑設(shè)置set false path 167 時(shí)序slack Slack 期望數(shù)據(jù)到達(dá)時(shí)間 實(shí)際數(shù)據(jù)到達(dá)時(shí)間Slack為正 表示數(shù)據(jù)提前到達(dá) 此時(shí)組合邏輯延遲滿足條件 Slack為負(fù) 表示數(shù)據(jù)比預(yù)期的時(shí)間晚到達(dá) 此時(shí)不滿足F F的建立時(shí)間 不滿足約束 168 時(shí)鐘樹 由Buffer組成的時(shí)鐘樹 ClockInput Level1 Level2 Leveln 169 時(shí)鐘樹的布局 ClockGenerator 170 時(shí)鐘樹 最基本的時(shí)鐘樹結(jié)構(gòu) 比較適合于規(guī)則陣列網(wǎng)絡(luò) 171 時(shí)鐘樹 時(shí)鐘網(wǎng)絡(luò)結(jié)構(gòu) Trunk 172 布線后的時(shí)鐘樹- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
19.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 集成電路設(shè)計(jì) 綜合 技術(shù)講座 PPT
鏈接地址:http://www.szxfmmzy.com/p-6221068.html