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