欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > PPT文档下载
 

集成电路设计综合技术讲座PPT.ppt

  • 资源ID:6221068       资源大小:4.91MB        全文页数:357页
  • 资源格式: PPT        下载积分:19.9积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要19.9积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

集成电路设计综合技术讲座PPT.ppt

集成电路设计综合技术SynthesisTechnologyforICDesign 任课教师 周莉联系电话 13006592410E mail zhou li QQ 1257109456 2 教学目标 熟练掌握Verilog语法与RTL设计方法熟练掌握综合的基本概念熟练掌握时序基本概念熟练掌握时序的分析方法熟练掌握综合工具熟练分析综合结果 3 参考书目 AdvancedDigitalDesignwiththeVerilogHDL MichachelD Ciletti VerilogHDL高级数字系统设计 电子工业出版社 VerilogHDLAGuidetoDigitalDesignandSynthesis SamirPalnitakar VerilogHDL数字设计与综合 电子工业出版社 VerilogHDLSynthesis J Bhasker VerilogHDL综合实用教程 清华大学出版社 Verilog语言 5 主要内容 目的 通过具体实例讲解Verilog的语法 快速掌握Verilog的语法与结构内容 Verilog概述VerilogHDL结构Verilog语法与实例 6 Verilog概述 Verilog是在C语言的基础上发展起来的一种硬件描述语言由GatewayAutomation于1983年首创 并于1995年成为IEEE标准 即IEEEstandard1364支持不同抽象层次的精确描述以及混合模拟 如行为级 RTL级 开关级等设计 测试 模拟所用的语法都相同 7 Verilog概述 较高层次的描述与具体工艺无关提供了类似C语言的高级程序语句 如if else for while break case loop以及int等数据类型提供了算术 逻辑 位操作等运算符包含完整的组合逻辑元件 如and or xor等 无需自行定义支持元件门级延时和元件门级驱动强度 nmos pmos 8 Verilog概述 与C语言的联系与区别 9 Verilog概述 抽象层次系统级 C等高级语言描述行为级 模块的功能描述RTL级 寄存器与组合电路的合成逻辑门级 基本逻辑门的组合 and or nand 开关级 晶体管开关的组合 nmos pmos 10 Verilog概述 Verilog语言的描述风格行为描述只对系统行为与功能进行描述 不涉及时序电路实现 是一种高级语言描述的方法 有很强的通用性结构型描述描述实体连接的结构形式 通过实例描述 将verilog已定义的基本实例嵌入到语言中数据流型描述通过assign连续赋值实现组合逻辑功能的描述 描述复杂度 11 VerilogHDL结构 VerilogHDL是由module模块组成 模块定义关键词module开始 到关键词endmodule结束每条Verilog语句以分号 作为结束 块语句 编译向导 endmodule等除外 modulemodule name Port list 端口声明 数据类型声明 电路描述 endmodule例 上升沿D触发器moduledff pos data clk q inputdata clk 端口声明outputq 端口声明regq 数据类型声明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语法与实例 数字表示 整数 指定整数的大小 以bit为单位 指定整数的基数 b binary 二进制 o octal 八进制 d decimal 十进制 h hex adecimal 十六进制 指定整数的值 14 整数 17 位宽 基数符号不写会采用default值 32bit十进制 8 d32 8 bit十进制值为328 h128 h1A8 b0001 1100 无特別意义 只是为了方便二进制数易读 8 o3732 bx x 表unknown实数 7 21 8e 4 1 8 10 49 5E6 15 Verilog语法与实例 取名规则标识符必须是由a z A Z 0 9 这些字符組成 最長只能到1024个字符开头必须由a z A Z或下划线 开头 16 Verilog语法与实例 关键词keywords是指一些Verilog语言内部已经使用的词 主要是用来定义语言的架构 并且所有的keyword都是用小写表示 用户应避免使用module endmoduleinput output inoutreg integer realnot and or xor norbegin end 17 Verilog语法与实例 特殊字符 以 开头的标识符代表系统命令 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的四种逻辑状态 0 逻辑零 逻辑非 低电平1 逻辑1 逻辑真 高电平x或X 不定态z或Z 高阻态 21 Verilog语法与实例 数据类型 为了能对硬件电路中的信号连线和寄存器等物理量进行描述 引入特定数据类型连线类 Net 反映硬件电路的物理连接特性的变量寄存器类 Register 具有数据存储特性的变量 22 Verilog语法与实例 连线型与寄存器型区别 连线型 驱动方式 赋值方式 连接到一个门或模块的输出端 用assign赋值电荷保持作用 没有电荷保持作用 未被驱动时将处于高阻态对应硬件 物理信号连接寄存器型驱动方式 赋值方式 通过过程赋值语句赋值电荷保持作用 在下一次赋值之前保持不变对应硬件 触发器 锁存器 23 Verilog语法与实例 连线类 24 Verilog语法与实例 连线型变量声明 例 wirenet1 wire 15 0 bus in 当沒指定net是何种type时 Verilog会以default值来设定 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语法与实例 参数 Parameter 常量定义 用文字参数代替一个数字量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语法与实例 模拟时间定标 timescale timescale 例 timescale1ns 100ps合法的整数 1 10 100合法时间单位 s ms s ns ps fs定标只是一个相对的概念 不会影响模拟器工作状态计时单位必须大于精度单位 timescale定义必须在模块描述的外部进行允许对不同模块定义不同时标 以最小精度进行模拟 29 Verilog语法与实例 运算符 30 Verilog语法与实例 位运算符 按位进行运算 结果的位数不变按位取反 按位与 按位或 按位异或 按位同或 或 例 a 4 b1011 a 4 b0100b 4 b0011 a b 4 b1011 31 Verilog语法与实例 缩位运算符是单目运算符 按位进行逻辑运算 结果是一位值 与缩位运算符 或缩位运算符 异或缩位运算符 与 或 异或运算符和非运算符组成的复合运算符 例 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 三态 33 Verilog语法与实例 行为级描述 侧重对模块行为功能的抽象描述要先知道电路的行为 如果电路有多种行为 要知道如何分开描述它们 时间控制 包括 什么时间做什么事 例如 经过多少个clock就要做什么事 什么状况做什么事 例如 某一控制信号进来就要做什么事 34 Verilog语法与实例 行为级模块描述由多个并行运行的过程块组成过程块由过程语句 initial与always 和块语句 串行块begin end与并行块fork join 组成块语句由过程赋值语句和高级程序语句构成过程赋值语句 阻塞与非阻塞式赋值高级程序语句 if else case while wait 35 Verilog语法与实例 模块行为描述的构成框架例 上升沿D触发器moduledff pos data clk q inputdata clk 端口声明outputq 端口声明regq 数据类型声明always posedgeclk q data 描述体 过程块endmodule 36 Verilog语法与实例 过程块 Proceduralblock initial 和 always proceduralblock condition 37 38 块语句 串行块 and 并行块 39 Verilog语法与实例 begin end串行块顺序执行fork join并行块同时执行 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 当括弧內的值有任何改变时 就称为事件 41 Verilog语法与实例 阻塞型赋值 用 赋值 前一条语句的执行阻塞了后面语句的执行非阻塞型赋值 用 赋值 一条语句的执行不影响其他语句的执行一个块语句中不许同时使用上述2种赋值方式 begina 101 b 50 c 11 end begina 101 b 50 c 11 end 42 Verilog语法与实例 连续赋值语句assign基本格式 43 Verilog语法与实例 Assign用于对连线类变量赋值右端表达式的信号有任何变化都反映在左端的连线变量中Assign不能出现在过程块中连续赋值语句以assign为先导 可缺省 并且只有阻塞型一种 44 连续赋值图示 45 Verilog语法与实例 高级程序语句 if else case 循环语句 forever repeat while for 例 具有同步清零 低有效 的上升沿触发器 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数据选择器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 中的时间控制部分是完整电平敏感列表 只要任意信号发生变化 便会输出更新值如果敏感列表不完整 例always in0orin1orin2orsel 则在in3变化时则可能不会产生更新值取决于不同的综合工具 这种写法会被认为是非法或者作为完整列表处理 另外还可能造成综合出的电路和程序描述不一致的情况 因此建议使用完全敏感列表 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语句处理无关值的情况处理高阻态无关值 casez处理高阻态和未知态无关值 casex 53 case和ifelse的缺省项问题 对ifelse语句 else是缺省项对case语句 default是缺省项缺省项在语法上可以忽略 但是省略会使综合工具综合出Latch 而不是Register Latch在RTL设计中是不建议使用的 除非特殊的必要情况 因此不建议省略缺省项 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的缺省项省略了 当a b 1时 y c 当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还提供了任务 task 和函数 function 可重复调用定义和调用都包含在module内部tasktask任务名 无需定义端口名列表端口与类型说明 调用时按顺序和类型列出局部变量说明 块语句endtask 61 Verilog中的任务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函数名 输入端口与类型说明 局部变量说明 块语句endfunction注意 1 函数不能调用任务 任务可调用任何其他函数和任务2 函数只有输入变量且至少一个3 函数定义的块语句不许出现定时控制4 函数通过函数名返回一个值 63 Verilog中的函数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 结构级描述侧重对模块内部结构实现的具体描述 半加器 66 67 Verilog语法与实例 模块调用模块调用基本门调用 68 Verilog语法与实例 模块调用方式位置对应端口名对应 69 Verilog语法与实例 例 moduleDEF q qb din clk outputq qb inputdin clk endmodulemoduleport map DEFU0 q1 qb1 din 1 clock 位置对应DEFU1 din D 0 clk clock q O 0 qb O 0 端口名对应DEFU2 Q DIN clock 允许出现不连接的端口DEFU3 din A clk B qb c endmodule 70 行为级描述和结构级描述 例 全加器 b 门级 71 行为级描述和结构级描述 C 行为级当a b或cin逻辑状态发生变化 采用如下等式得到sum及cout sum a b ccout ab bc ca 72 行为级描述和结构级描述 全加器行为级描述实例 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 行为级描述和结构级描述 全加器结构级描述实例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语法与实例 为了方便对仿真过程的控制与仿真结果的分析 Verilog提供了系统函数 统一以 开头输出控制 display write monitor模拟时标 time realtime进程控制 finish stop文件读写 readmem其它 random 75 Verilog语法与实例 display与 write write和 display列出所指定信号的值 它们的功能都相同 唯一不同点在 display输出结束后会自动换行 而 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 输出格式说明符以及转义字符 77 Verilog语法与实例 monitor 输出变量的任何变化 都会输出一次结果 而 write和 display每调用一次执行一次例 modulemonitor test regin wireout not 1U0 out in initial monitor time out bin b out in initialbeginin 0 10in 1 10in 0 endendmodule 78 输出结果为 注意延迟 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输出结果为 out xin 0 80 Verilog语法与实例 模拟时标 返回从执行到调用时刻的时间 time 返回一个64 bit的整数 realtime 返回一个实数 例 monitor time out bin b out in 81 Verilog语法与实例 finish与 stop finish终止仿真器的运行 stop暂停模拟程序的执行 不退出仿真进程 readmem 把文件内容读入指定存储器readmemb 文件名 存储器名 起始地址 结束地址 readmemh 文件名 存储器名 起始地址 结束地址 例 reg 7 0 mem 1 256 initial readmemh mem data mem initial readmemh mem data mem 128 156 82 设计流程 83 测试系统 DUT Testbench 84 测试系统组成 测试目的 功能 时序正确性测试系统组成 待测模块 DUT Fulladder测试文件通过仿真器观察结果 85 完整的测试文件 测试文件结构 数据类型声明 调用待测模块 产生testpattern 观察输出结果 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 结束仿真endendmodule 87 数据选择器设计 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 数据选择器设计 modulemux4 1d out in0 in1 in2 in3 sel outputout inputin0 in1 in2 in3 input 1 0 sel assignout in0endmodule上述模块为4选1选择器的另外一种表达形式 是通过verilog直接描述组合电路逻辑关系的形式来实现的 通过真值表比较可以发现与上一个例子的功能是相同的 89 数据选择器设计 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选择器的门级表达形式 通过分析可以看到 这种形式是用门的形式把上例中的组合逻辑实现了 但两个例子的功能是完全等价的 从上述例子可以看到 实现一个电路的途径有很多 可以根据实际情况灵活运用 同时也可以看到 verilog语言描述的基础还是数字逻辑电路 90 计数器设计 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 计数器的仿真程序 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 同步置数同步清零计数器设计 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 状态机 有限状态机是绝大部分控制电路的核心有限状态机可以分为Moore有限状态机状态输出仅依赖于内部状态 跟输入无关Mealy有限状态机状态输出不仅决定于内部状态 还跟外部输入有关有限状态机可以使用always语句和case语句描述 状态保存在寄存器中 根据寄存器的不同的值执行不同的操作 case语句的多个分支代表了不同状态的行为 94 moore状态机 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状态机 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状态机 实现过程首先通过parameter定义了moore状态机的几个状态参数 为常量 用于给状态的变量赋值moore状态机的功能在always结构中得到实现 Always结构中通过clk的上升沿控制 在clk的上升沿 如果复位信号无效 则进行状态控制 根据当前的状态确定下一个状态的值 同时进行本状态要执行的操作 在本例中改变Z的值 并且只要不是最后一个状态STATE FINISH 标示finish都为零状态机的输出Z仅与moore状态机的状态有关 与输入无关 97 mealy状态机 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状态机 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 状态机编码方式 One hot方式 如上例 占用寄存器多 但是电路简单 另外可以选择GrayCode 因为格雷码每次只有一位发生变化 可以避免电路上的竞争现象出现 100 moore和mealy的区别 实现机理上并无不同只是mealy机在实现上把状态的变化和输出开关的控制分开考虑 形成各自独立的always控制块 在设计较复杂的状态机上常采用 101 售货机的例子 任务要求设计一个自动售货机的电路投币口每次只能投入一枚五角或者一元的硬币 投入一元五角 则售货机自动给出一杯饮料 投入两枚一元的硬币 则在给出一杯饮料同时退出一枚五角硬币变量分析 共有四个变量 投入一元为一个变量A 输入 投入五角为一个变量B 输入 售货机给出一杯饮料 定义为Y 输出 售货机退出一枚五角硬币 定义为Z 输出 状态定义 三个状态 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 教学目标 熟练掌握Verilog语法与RTL设计方法熟练掌握综合的基本概念熟练掌握时序基本概念熟练掌握时序的分析方法熟练掌握综合工具熟练分析综合结果 106 教学内容 ASICdesignflow综合的定义基本概念Synopsys基本工具介绍时序基本概念与分析SynopsystechnologylibraryLogicsynthesis的过程Synthesis和layout的接口Post layoutoptimizationSDF文件的生成 107 设计流程 SimulationonSystemLevel RTLCodingDesign FunctionSimulation DesignRequirement Micro ArchitectureandFunctionSpecification Synthesis SimulationonGateLevel StaticTimingAnalysis Formality lib Layout PhysicsVerification StaticTimingAnalysis lib Tapeout FPGA 108 为什么需要综合这一步骤 109 综合的定义 逻辑综合 决定设计电路逻辑门的相互连接 逻辑综合的目的 决定电路门级结构 寻求时序和与面积的平衡 寻求功耗与时序的平衡 增强电路的测试性 逻辑综合的过程 首先 综合工具分析HDL代码 用一种工具内嵌模型对HDL进行映射 这个模型是与技术库无关的 然后 在设计者的控制下 对这个模型进行逻辑优化 最后一步 针对时序 面积 功耗进行逻辑映射和门级优化 根据逻辑约束映射为专门的技术目标单元库 targetcelllibrary 中的cell 形成了综合后的网表 110 综合的依据 综合由约束驱动综合是基于路径的过程RTL设计 约束文件 111 约束 时序约束综合是一个重复的过程 为设计的每个模块定义时序约束 这些时序约束定义了该模块的各个信号与时钟信号之间的关系 综合工具通过静态时序分析 STA 计算每个路径的时间 并尽量去优化设计以满足特殊的时序约束 环境约束环境约束定义了标准单元库和其他相关的信息 比如芯片的工作温度等 约束文件 tcl Synopsys产品 113 Synopsys产品 Synopsys设计相关产品包括 VCSDesignCompilerandDesignVision 综合 PrimeTime STA power DFTCompiler DFT Formality 形式验证 HAL CDC检查 代码覆盖率分析 114 Synopsys产品 cont Astro 版图 Herculus DRC LVS AstroRail 功耗分析 Jupiter 布图 ICC 从ploorplan到后端实现 115 DesignCompilerandDesignVision DC和DV构成构成一套功能强大的逻辑综合工具 根据设计规范和时序约束 提供最优的门级综合网表 启动 data asic dc shell data asic dc shell t data asic design vision data asic dvt 116 117 4 PrimeTime Synopsys的全芯片 门级静态时序分析工具 用于最终的timingsignoff 启动 data asic pt shell data asic primetime data asic pt 118 5 DFTCompiler 包含在DC全套工具中的测试插入工具 它用于向设计插入DFT特性 如扫描链插入和边界扫描 产生DFT测试向量 119 6 Formality 形式化验证工具 即逻辑等价检测工具 包含待验证的逻辑的原理图表示标注在原理图上作为可能的错误指示的可视建议提供修正设计的建议 启动 data asic formality 120 时序分析与设计约束 121 约束 Constraints 122 时序约束与时序问题 信号亚稳态问题Setup hold时序问题Recovery removal时序问题传输时间问题CDC问题时钟相关问题多时钟相关问题 123 信号的亚稳态 metastability 当两个输入 例如数据和时钟 或者时钟和复位 在同一时间变化时 则输出信号的状态依赖于输入信号的顺序 当输入信号的顺序不确定时 在一段时间内 输出信号也是不确定的 并且输出信号的不确定会持续较长的时间才能稳定到一个状态 甚至稳定之前会出现震荡 这一状态成为亚稳态 如果另一个电路需要用到处于亚稳态状态的输出信号 则会造成数据采样错误 特别是 当两个不同的逻辑电路都用到触发器的输出信号时 一路电路可能将采样到输出信号为0 而另一路电路则可能会采样到输出电路为1 从而造成逻辑错误 124 Setupandholdtime Setuptime 建立时间 在有效时钟沿到来之前输入信号需要保持稳定的最少时间 它间接约束了组合逻辑的最大延迟 用来保证信号能够被时钟可靠的采样 应用于同步电路 Holdtime 保持时间 在有效时钟沿到来之后输入信号需要保持稳定的最少时间 间接约束了组合逻辑的最小延迟 用来保证信号能够被时钟可靠的采样 应用于同步电路 125 Setupandholdtime 保证信号的Setup hold时间 能够避免触发器的亚稳态 Setup hold时间通常在数据手册中给出 现代工艺中一般在几个ns 或者几百个ps的数量级 126 Setupandholdtime Setup表明了FF1上一个时钟到FF2下一个时钟的关系 即两个不同时钟沿的关系 Hold表明FF1当前时钟与FF2当前时钟的关系 即同一个时钟沿的关系 127 Setupandholdtime 128 Recovery和Removaltime Recovery 异步控制逻辑信号在下一个时钟有效沿到来之前需要保持稳定的最少时间 Removal 异步控制逻辑信号在时钟有效沿到来之后需要保持稳定的最少时间 129 传输时间 有效时钟沿到来到输出信号有效的最大时间延迟称为F F的传输时间 通常表示为tCO或者tp 指F F在时钟沿之后输出信号变化所需要的时间 从高到低的传输时间tPHL与从低到高的传输时间tPLH有时不同 当同一时钟的几个F F级联时 要保证tCO th 从而保证后续F F的输入数据能够稳定 并被正确采样 130 CDC问题及其解决 什么是CDC问题 ClockDomainCrossing异步时钟域的RTL设计问题异步时钟域设计中的信号亚稳态问题 signalMeta stability解决方法信号多级锁存FIFO 131 CDC问题的重要性 CDC问题的重要性和严重性往往无法被仿真过程发现往往是在设计过程的后期才能发现 甚至在流片后才能发现需要在STA中针对异步时钟域设置falsepath 如果没有正确设置 则遗留了潜在的问题CDC所造成的问题很难发现 很难调试 很难复制所以需要尽早的对CDC问题进行处理在RTL设计阶段对CDC问题进行处理时钟命名规则合理的设计分割RTL同步设计策略DFFsFIFOsMUXenabledsynchronizerCustomizedsynchronizer亚稳态不可能100 消除 只能尽量避免 132 CDC问题概述 亚稳态问题 133 CDC问题概述 134 两级DFF锁存同步方法 135 两级DFF锁存选择器控制 136 两级DFF锁存遗留的问题 信号容易被误判成Glitch会造成后续逻辑的功能错误同步只能解决无法预测的信号值 但是不能预测不可知的延迟只能减少CDC发生的概率 不能做到100 消除 137 两级DFF锁存的问题 138 两级DFF锁存的问题 139 两级DFF锁存的问题 140 两级DFF锁存的问题 141 两级DFF锁存遗留问题的解决 Gray codingIDcomparatorStaticre convergencecheckDynamicsimulationcheckToolcheck blacktie 0 in 142 快信号到慢时钟域的同步 143 快信号到慢时钟域的同步 144 快信号到慢时钟域的同步 145 多个控制信号的同步 146 多个控制信号的同步 147 数据通路的同步 多比特数据同步的处理利用同步电路不太可取 数据之间的变化变得不确定 造成功能错误需要较多的寄存器资源对于多比特数据同步 通常采用握手信号在不同时钟域之间传递数据FIFO存储数据 读写分别为不同时钟域的时钟 148 数据通路的同步 149 不同时钟域设计 150 时钟相关参数 时钟占空比 clockdutycycleClocktransitiontime 时钟传输时间 Slewrate 上升时间下降时间Clockskew 时钟歪斜Clockjitter 时钟跳变Clockuncertaintytime 时钟不确定时间Clock uncertainty time skew jitterClockinsertiondelay clocksourcedelay 时钟插入延迟Clocknetworklatency 151 Clockskew 在一个时钟域或者两个时钟域之间时钟信号到达寄存器的最大时间差别产生原因 时钟源到达各端点的路径长度不同各端点负载不同时钟网络中插入的缓冲器不同在两个点之间 大致可以认为clockskew是固定值 Clockskew影响的是时钟的到达时间不同 也就是时钟发生了相移 并不影响时钟的周期宽度 152 Clockskew 153 Clockjitter 在某一给定点上 时钟周期宽度的变化 不同的时钟周期其持续时间可能缩短或变宽 一般用两个相邻时钟周期之间其周期宽度的最大变化来表示clockjitter 154 Clockjitter 155 Clockjitter 156 Clockuncertainty uncertainty是不同时钟网络分支之间的延时的不同 由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 多时钟周期信号总结 先确定Multicycle之前的setup和hold的所指向时钟沿是不是想要的setup hold 是不是Critical的setup hold 如果不是 画出想要的或者critical的setup hold先写出setup的个数 后面加上 source endHold跟着setup的设置变化了 在调整Hold到想要的位置 166 虚假路径设置set false path 167 时序slack Slack 期望数据到达时间 实际数据到达时间Slack为正 表示数据提前到达 此时组合逻辑延迟满足条件 Slack为负 表示数据比预期的时间晚到达 此时不满足F F的建立时间 不满足约束 168 时钟树 由Buffer组成的时钟树 ClockInput Level1 Level2 Leveln 169 时钟树的布局 ClockGenerator 170 时钟树 最基本的时钟树结构 比较适合于规则阵列网络 171 时钟树 时钟网络结构 Trunk 172 布线后的时钟树

注意事项

本文(集成电路设计综合技术讲座PPT.ppt)为本站会员(za****8)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!