版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、集成电路设计综合技术Synthesis Technology for IC Design,任课教师: 周莉 联系电话E - mail: zhou_ QQ : 1257109456,2,教学目标,熟练掌握Verilog语法与RTL设计方法 熟练掌握综合的基本概念 熟练掌握时序基本概念 熟练掌握时序的分析方法 熟练掌握综合工具 熟练分析综合结果,3,参考书目,Advanced Digital Design with the Verilog HDL Michachel D. Ciletti (Verilog HDL高级数字系统设计) 电子工业出版社, Verilog HDL
2、 A Guide to Digital Design and Synthesis Samir Palnitakar (Verilog HDL数字设计与综合) 电子工业出版社, Verilog HDL Synthesis J.Bhasker (Verilog HDL综合实用教程)清华大学出版社, ,Verilog 语言,5,主要内容,目的: 通过具体实例讲解Verilog 的语法,快速掌握Verilog的语法与结构 内容: Verilog概述 Verilog HDL结构 Verilog 语法与实例,6,Verilog概述,Verilog是在C语言的基础上发展起来的一
3、种硬件描述语言 由Gateway Automation 于1983年首创,并于1995年成为IEEE标准,即IEEE standard 1364 支持不同抽象层次的精确描述以及混合模拟,如行为级、 RTL级、开关级等 设计、测试、模拟所用的语法都相同,7,Verilog概述,较高层次的描述与具体工艺无关 提供了类似C语言的高级程序语句,如if-else, for, while, break, case,loop以及int等数据类型 提供了算术、逻辑、位操作等运算符 包含完整的组合逻辑元件,如and、or、xor等,无需自行定义 支持元件门级延时和元件门级驱动强度(nmos, pmos),8,V
4、erilog概述,与C语言的联系与区别,9,Verilog概述,抽象层次 系统级:C等高级语言描述 行为级:模块的功能描述 RTL级:寄存器与组合电路的合成 逻辑门级:基本逻辑门的组合(and, or, nand) 开关级:晶体管开关的组合(nmos, pmos),10,Verilog概述,Verilog 语言的描述风格 行为描述 只对系统行为与功能进行描述,不涉及时序电路实现,是一种高级语言描述的方法,有很强的通用性 结构型描述 描述实体连接的结构形式,通过实例描述,将verilog已定义的基本实例嵌入到语言中 数据流型描述 通过assign连续赋值实现组合逻辑功能的描述,描述复杂度,11,
5、Verilog HDL结构,Verilog HDL是由module模块组成,模块定义关键词 module开始,到关键词 endmodule结束 每条Verilog语句以分号“;”作为结束(块语句、编译向导、endmodule等除外) module module_name(Port_list); 端口声明; 数据类型声明; 电路描述; endmodule 例:上升沿D触发器 module dff_pos(data,clk,q); input data,clk;/端口声明 output q;/端口声明 reg q;/数据类型声明 always (posedge clk) q=data;/电路描述
6、endmodule,12,Verilog 语法与实例,/* 2-to-1 multiplexer; out = a when sel = 0;out = b when sel = 1; */ module MUX_2(out, a, b, sel); output out; input a, b, sel; /netlist INV my_inv(sel_n, sel); AND2X2 and1(a1, a, sel_n); AND2X2 and2 (b1, b, sel); OR2X2 my_or(out, a1, b1); endmodule,13,Verilog 语法与实例,数字表示:
7、整数:+/- :指定整数的大小,以bit为单位。 :指定整数的基数. b(binary)二进制;o(octal)八进制; d(decimal)十进制;h(hexadecimal)十六进制。 :指定整数的值。,14,整数: 17 /位宽, 基数符号不写会采用default值 (32bit十进制) 8d32 /8-bit十进制值为32 8h12 8h1A 8b0001_1100 /* ”_”无特別意义,只是为了方便二进制数易读*/ 8o37 32bx / ”x”表unknown 实数: 7.2 1.8e-4/1.8*10-4 9.5E6,15,Verilog 语法与实例,取名规则 标识符必须是由a
8、-z, A-Z, 0-9,_, $这些字符組成,最長只能到1024个字符 开头必须由a-z, A-Z或下划线_开头,16,Verilog 语法与实例,关键词keywords 是指一些Verilog语言内部已经使用的词,主要是用来定义语言的架构,并且所有的keyword都是用小写表示,用户应避免使用 module, endmodule input, output, inout reg, integer, real not, and, or, xor, nor begin, end,17,Verilog 语法与实例,特殊字符: $,#, $:以$开头的标识符代表系统命令 $time:返回目前的仿真
9、时间 $display:显示出信号的值 $stop:停止仿真 #: 时间延迟 not #3 not1(sel_, sel);/ cell delay : define,include,timescale,18,define define 例: define ADD 3h0 define SUB 3h1 . case(opcode) ADD:. SUB:. end case include 例: include “user_define_task.v” timescale 例: timescale /,19,例: timescale 10ns / 1ps module MUX2(out, a,
10、b, sel); output out; input a, b, sel; INV #3 not1(sel_, sel); / delay 3个10ns . endmodule 例: timescale 10ns / 1ns module MUX2(out, a, b, sel); output out; input a, b, sel; INV #2.63 not1(sel_, sel); /* 2.63*10ns = 26.3ns . 四舍五入26ns. delay 26ns */ endmodule,20,Verilog 语法与实例,Verilog的四种逻辑状态: 0:逻辑零、逻辑非、低
11、电平 1:逻辑1、逻辑真、高电平 x或X:不定态 z或Z:高阻态,21,Verilog 语法与实例,数据类型:为了能对硬件电路中的信号连线和寄存器等物理量进行描述,引入特定数据类型 连线类(Net):反映硬件电路的物理连接特性的变量 寄存器类(Register):具有数据存储特性的变量,22,Verilog 语法与实例,连线型与寄存器型区别: 连线型: 驱动方式(赋值方式): 连接到一个门或模块的输出端; 用assign赋值 电荷保持作用:没有电荷保持作用,未被驱动时将处于高阻态 对应硬件:物理信号连接 寄存器型 驱动方式(赋值方式) :通过过程赋值语句赋值 电荷保持作用:在下一次赋值之前保持
12、不变 对应硬件:触发器、锁存器,23,Verilog 语法与实例,连线类,24,Verilog 语法与实例,连线型变量声明: *; 例:wire net1; wire 15:0 bus_in; 当沒指定 net 是何种 type 时,Verilog 会以 default 值来设定,default 为一位的 wire型,25,Verilog 语法与实例,寄存器类,26,Verilog 语法与实例,寄存器类变量声明: *; 例: reg a; reg 7:0 a; reg 31:0 a, b; reg 0:7 b; reg 7:0 mem 0:1023;,27,Verilog 语法与实例,参数(P
13、arameter):常量定义,用文字参数代替一个数字量 module var_mux (out, a, b, sel); parameter width = 8, delay = 3; output width-1:0 out; input width-1:0 a, b; input sel; assign #delay out = sel ? a : b; endmodule,28,Verilog 语法与实例,模拟时间定标timescale timescale / 例:timescale 1ns/100ps 合法的整数:1、10、100 合法时间单位:s、ms、s、ns、ps、fs 定标只是
14、一个相对的概念,不会影响模拟器工作状态 计时单位必须大于精度单位 timescale定义必须在模块描述的外部进行 允许对不同模块定义不同时标,以最小精度进行模拟,29,Verilog 语法与实例,运算符,30,Verilog 语法与实例,位运算符:按位进行运算,结果的位数不变 按位取反: 按位与:/三态,33,Verilog 语法与实例,行为级描述: 侧重对模块行为功能的抽象描述 要先知道电路的行为, 如果电路有多种行为,要知道如何分开描述它们。 时间控制, 包括: 什么时间做什么事,例如:经过多少个clock就要做什么事。 什么状况做什么事,例如:某一控制信号进来就要做什么事。,34,Ver
15、ilog 语法与实例,行为级模块描述 由多个并行运行的过程块组成 过程块由过程语句(initial与always)和块语句(串行块begin-end与并行块fork-join)组成 块语句由过程赋值语句和高级程序语句构成 过程赋值语句:阻塞与非阻塞式赋值 高级程序语句:if-else、case、while、wait,35,Verilog 语法与实例,模块行为描述的构成框架 例:上升沿D触发器 module dff_pos(data,clk,q); input data,clk;/端口声明 output q;/端口声明 reg q;/数据类型声明 always (posedge clk) q=d
16、ata;/描述体,过程块 endmodule,36,Verilog 语法与实例,过程块( Procedural block ) “initial” 和 “always” procedural block,condition,37,38,块语句:“串行块” and “并行块”,39,Verilog 语法与实例,begin-end串行块顺序执行 fork-join 并行块同时执行,begin # 10 r = h35; # 10 r = hE2; # 10 r = h00; end,fork # 10 r = h35; # 20 r = hE2; # 30 r = h00; join,40,Ver
17、ilog 语法与实例,定时控制 延时控制 例: #100 clk = clk; 事件控制 例:(en)r0 = 1; (a or b or ci)sum = a+b+ci; (posedge clock)q=d; (posedge clk or negedge clear)q=0; 当括弧內的值有任何改变时,就称为事件,41,Verilog 语法与实例,阻塞型赋值:用“”赋值,前一条语句的执行阻塞了后面语句的执行 非阻塞型赋值:用“”赋值,一条语句的执行不影响其他语句的执行 一个块语句中不许同时使用上述2种赋值方式,begin a=#10 1; b=#5 0; c=#1 1; end,begi
18、n a=#10 1; b=#5 0; c=#1 1; end,42,Verilog 语法与实例,连续赋值语句assign 基本格式: = ,43,Verilog 语法与实例,Assign用于对连线类变量赋值 右端表达式的信号有任何变化都反映在左端的连线变量中 Assign不能出现在过程块中 连续赋值语句以assign为先导(可缺省),并且只有阻塞型一种,44,连续赋值图示,45,Verilog 语法与实例,高级程序语句: if-else、case、循环语句(forever、repeat、while、for),例:具有同步清零(低有效)的上升沿触发器: module dff_sync(q,d,c
19、lear,clock) always (posedge clock) if(!reset_b) q=0; else q=d; endmodule,46,Verilog 语法与实例,if,if-else 语法如下: if(expression) statement else statement,if(expression) statement else if(expression) statement else if . else statement,47,例: if(rega = regb) result = 1; else result = 0; 例: if(index 0) if(rega
20、 regb) result = rega; else result = 0; else $display(”Warning!”);,48,if-else语句,module mux4_1 (out, a, b, c, d, sel); output out; inputa, b, c, d; input 1:0 sel; reg out; always (sel or a or b or c or d) begin if(sel=2b00) out = a; else if (sel=2b01) out =b; else if (sel=2b10) out =c; else if (sel=2b
21、11) out =d; else out = 1bx; end endmodule,49,Verilog 语法与实例,case 语句 例: define pass_accum 4b0000 define pass_data 4b0001 define ADD 4b0010 . Initial begin case(opcode) pass_accum:#3.5 alu_out = accum; pass_data: #3.5 alu_out = data; ADD: #3.5 alu_out = accum+data; AND: #3.5 alu_out = accum outputout;
22、inputin0,in1,in2,in3; input 1:0 sel; reg out; always (in0 or in1 or in2 or in3 or sel) case(sel) 2b00: out = in0; 2b10: out = in1; 2b01: out = in2; 2b11: out = in3; default: out = 1bx; endcase endmodule,51,case 语句的例子,Case的缺省语句是可选的而不是必需的 在always (in0 or in1 or in2 or in3 or sel)中的时间控制部分是完整电平敏感列表,只要任意
23、信号发生变化,便会输出更新值 如果敏感列表不完整,例 always (in0 or in1 or in2 or sel),则在in3变化时则可能不会产生更新值 取决于不同的综合工具,这种写法会被认为是非法或者作为完整列表处理,另外还可能造成综合出的电路和程序描述不一致的情况,因此建议使用完全敏感列表,52,casez的例子,module mux_casez (out, a, b, c, d, sel); output out; inputa, b, c, d; input 3:0 sel; reg out; always (sel or a or b or c or d) begin case
24、z(sel) 4b?1: out = a; 4b?1? : out = b; 4b?1? : out = c; 4b1? : out = d; endcase end endmodule,Case语句处理无关值的情况 处理高阻态无关值:casez 处理高阻态和未知态无关值:casex,53,case 和 if else的缺省项问题,对 if else语句,else是缺省项 对case语句,default是缺省项 缺省项在语法上可以忽略,但是省略会使综合工具综合出Latch,而不是Register。Latch在RTL设计中是不建议使用的(除非特殊的必要情况)。因此不建议省略缺省项。,54,cas
25、e 和 if else的缺省项问题,module ex3reg(y, a, b, c) input a, b, c; output y; reg y; always (a or b or c) begin if (a end endmodule,55,case 和 if else的缺省项问题,module ex4reg(y, a, b, c) input a, b, c; output y; reg y; always (a or b or c) begin if (a /无缺省项 end endmodule,If else的缺省项省略了,当a input a,b,c,d; output e;
26、 reg e; always (a or b or c or d) case (a,b) 2b11: e=d; 2b10: e=c; endcase endmodule,57,Verilog 语法与实例,repeat module multiplier(result, op_a, op_b); . reg shift_opa, shift_opb; parameter size = 8; initial begin result = 0;shift_opa = op_a;shift_opb = op_b; repeat(size) begin /default repeat 8 times #
27、10 if(shift_opb0) result = result + shift_opa; shift_opa = shift_opa 1; end end endmodule,58,Verilog 语法与实例-行为级描述,while initial begin reg 7:0 tempreg; count = 0; tempreg = rega; while(tempreg) begin if(tempreg0)count = count + 1; tempreg = tempreg 1; end end,59,Verilog 语法与实例-行为级描述,for parameter size
28、= 8, longsize = 16; reg size: 1 opa, opb; reg longsize:1 result; initial begin integer bindex; result = 0; for(bindex = 1;bindex = size;bindex = bindex+1) begin if(opbbindex) result = result +(opa (bindex-1); end end,60,Verilog 语法与实例,Verilog还提供了任务(task)和函数(function) 可重复调用 定义和调用都包含在module内部 task task
29、 任务名;/无需定义端口名列表 端口与类型说明;/调用时按顺序和类型列出 局部变量说明; 块语句 endtask,61,Verilog中的任务task . always (posedge sys_clk) begin if(read_request = 1) begin read_mem(IR,PC); /Event and function calls end end task read_mem; output 15:0 data_in; input 15:0 addr; always (posedge read_grant) begin ADDRESS = addr; #15 data_i
30、n = data; end endtask .,62,Verilog 语法与实例-行为级描述,Function function 函数名; 输入端口与类型说明; 局部变量说明; 块语句 endfunction 注意:1.函数不能调用任务,任务可调用任何其他函数和任务 2.函数只有输入变量且至少一个 3.函数定义的块语句不许出现定时控制 4.函数通过函数名返回一个值,63,Verilog中的函数function always (posedge sys_clk) begin . IR = 0; I = I-1) temp_reg15-i = in_veci; swap_bits = temp_re
31、g; end endfunctioin,64,Verilog 语法与实例,65,module half_adder (sum, cout, a, b); output sum, cout; input a, b; XORX2 U0(sum, a, b); AND2X2 U1(cout, a, b); endmoudle,结构级描述侧重对模块内部结构实现的具体描述:半加器,66,67,Verilog 语法与实例,模块调用 模块调用 基本门调用,68,Verilog 语法与实例,模块调用方式 位置对应 端口名对应,69,Verilog 语法与实例,例: module DEF(q, qb, din,
32、 clk); output q, qb; input din, clk; . endmodule module port_map; DEF U0(q1, qb1, din_1, clock); /位置对应 DEF U1(.din(D0), .clk(clock),.q(O0),.qb(_O0); /端口名对应 DEF U2(Q, , DIN, clock); /允许出现不连接的端口 DEF U3(.din(A), .clk(B), .qb(c), ); endmodule,70,行为级描述和结构级描述,例:全加器,(b)门级,71,行为级描述和结构级描述,(C)行为级 当a、b或cin逻辑状态
33、发生变化,采用如下等式得到sum及cout: sum = abc cout = ab+bc+ca,72,行为级描述和结构级描述,全加器行为级描述实例: module fadder (sum, cout, a, b, cin); output sum, cout; input a, b, cin; reg sum, cout; always (a or b or cin)/过程语句 begin /过程块 sum = abcin; /过程赋值语句 cout = (a output sum, cout; input a, b, cin; XORX2 U0(sum, a, b, cin); AND2X
34、2 U1(net1, a, b); AND2X2 U2(net2, a, cin); AND2X2 U3(net3, b, cin); OR3X4 U4(cout, net1, net2, net3); endmodule,74,Verilog 语法与实例,为了方便对仿真过程的控制与仿真结果的分析,Verilog提供了系统函数,统一以“$”开头 输出控制:$display,$write,$monitor 模拟时标:$time,$realtime 进程控制:$finish,$stop 文件读写:$readmem 其它: $random,75,Verilog 语法与实例,$display与 $wr
35、ite $write和$display列出所指定信号的值,它们的功能都相同,唯一不同点在$display输出结束后会自动换行,而$write不会换行。 例: $write (%b t %h t %d t %on, a, b, c, d); $display (%b t %h t %d t %o, a, b, c, d);,76,输出格式说明符以及转义字符,77,Verilog 语法与实例,$monitor:输出变量的任何变化,都会输出一次结果;而$write和$display每调用一次执行一次 例: module monitor_test; reg in; wire out; not #1 U
36、0(out, in); initial $monitor($time, out = %b in = %b, out, in); initial begin in = 0; # 10 in = 1; # 10 in = 0; end endmodule,78,输出结果为:(注意延迟!) 0 out = x in = 0 1 out = 1 in = 0 10 out = 1 in = 1 11 out = 0 in = 1 20 out = 0 in = 0 21 out = 1 in = 0,79,例: module monitor_test; reg in;wire out; not #1
37、U0(out, in); initial $display($time, out = %b in = %b, out, in); initial begin in = 0; #10 in = 1; #10 in = 0; end endmodule 输出结果为: out = x in = 0,80,Verilog 语法与实例,模拟时标:返回从执行到调用时刻的时间 $time : 返回一个 64-bit 的整数。 $realtime : 返回一个实数。 例: $monitor($time, out = %b in = %b, out, in);,81,Verilog 语法与实例,$finish与
38、$stop $finish终止仿真器的运行 $stop暂停模拟程序的执行,不退出仿真进程 $readmem:把文件内容读入指定存储器 readmemb(“文件名”,存储器名,起始地址,结束地址); readmemh(“文件名”,存储器名,起始地址,结束地址); 例: reg 7:0 mem1:256; initial $readmemh(”mem.data”, mem); initial $readmemh(”mem.data”, mem, 128, 156);,82,设计流程,83,测试系统,DUT,Testbench,84,测试系统组成,测试目的:功能 /施加激励 initial begi
39、n a = 0;b = 0;cin = 0; #5 cin = 1; #5 cin = 0;b = 1; #5 cin = 1; #5 a = 1;b = 0;cin = 0; #5 cin = 1;,#5 cin =0;b = 1; #5 cin = 1; #10 $finish;/结束仿真 end endmodule,87,数据选择器设计,module mux4_1c(out, in0,in1,in2,in3,sel) output out; input in0, in1, in2, in3; input 1:0 sel; assign out = sel1? (sel0?in3:in2)
40、: (sel0?in1:in0); A B endmodule 上述模块为4选1选择器,首先通过sel1选择表达式A或者B,然后用sel0进行二次选择决定最终的输出。,88,数据选择器设计,module mux4_1d(out, in0,in1,in2,in3,sel) output out; input in0, in1, in2, in3; input 1:0 sel; assign out = (in0 endmodule 上述模块为4选1选择器的另外一种表达形式,是通过verilog直接描述组合电路逻辑关系的形式来实现的,通过真值表比较可以发现与上一个例子的功能是相同的。,89,数据选
41、择器设计,module mux4_1a(out, in0,in1,in2,in3,sel) output out; input in0, in1, in2, in3; input 1:0 sel; wire notsel1, notsel0, w, x, y, z; not (notsel1, sel1), (notsel0, sel0); and (w, in0, notsel1, notsel0), (x, in1, notsel1, sel0), (y, in2, sel1, notsel0), (z, in3, sel1, sel0); or(out, w, x, y, z); end
42、module 上述模块为4选1选择器的门级表达形式, 通过分析可以看到,这种形式是用门的形式把上例中的组合逻辑实现了,但两个例子的功能是完全等价的。 从上述例子可以看到,实现一个电路的途径有很多,可以根据实际情况灵活运用,同时也可以看到,verilog语言描述的基础还是数字逻辑电路,90,计数器设计,module count4(out, reset, clk); output 3:0 out; input reset, clk; reg 3:0 out; always (posedge clk or negedge reset_b) begin if (!reset_b) out=0; els
43、e out=out+1; end endmodule,91,计数器的仿真程序,timescale 1ns/1ns include “count4.v” module count4_top; reg clk, reset, wire 3:0 out; parameter DELAY = 100; count4 mycount(out, reset, clk); always # (DELAY/2) clk = clk; initial begin clk = 0; reset = 0; #DELAY reset = 1; #DELAY reset = 0; #(DELAY*20) $finish
44、; end initial $monitor($time, “clk = %d reset = %d out = %d”, clk, reset, out); endmodule,92,同步置数同步清零计数器设计,module count4(out, data, load, reset, clk); output 7:0 out; input 7:0 data; input load, reset, clk; reg 7:0 out; always (posedge clk) begin if (!reset) out=8h00; else if (load) out = data; else
45、 out=out+1; end endmodule,93,状态机,有限状态机是绝大部分控制电路的核心 有限状态机可以分为 Moore有限状态机 状态输出仅依赖于内部状态,跟输入无关 Mealy有限状态机 状态输出不仅决定于内部状态,还跟外部输入有关 有限状态机可以使用always语句和case语句描述,状态保存在寄存器中,根据寄存器的不同的值执行不同的操作,case语句的多个分支代表了不同状态的行为,94,moore状态机,module moore_fsm(clk, reset, A, Z, finish) parameter STATE_INT = 0; parameter STATE_ST
46、1 = 1; parameter STATE_ST2 = 2; parameter STATE_FINISH =3; input clk, reset; input A; output 1:0 Z; output finish; reg 1:0 state; reg 1:0 Z; reg finish;,95,moore状态机,always (negedge reset or posedge clk) begin if(!reset) begin state = STATE_INIT; Z = 2b00; finish = 1b0; end else begin case (state) ST
47、ATE_INIT: begin state = STATE_ST1; Z = 2b01; finish = 1b0; end STATE_ST1: begin if (A) state = STATE_ST2; else state = STATE_FINISH; Z = 2b11; finish = 1b0; end,STATE_ST2: begin state = STATE_FINISH; Z = 2b10; finish = 1b0; end STATE_FINISH: begin Z = 2b01; finish = 1b1; end endcase end end endmodul
48、e,96,moore状态机,实现过程 首先通过parameter定义了moore状态机的几个状态参数,为常量,用于给状态的变量赋值 moore状态机的功能在always结构中得到实现。Always结构中通过clk的上升沿控制。 在clk的上升沿,如果复位信号无效,则进行状态控制,根据当前的状态确定下一个状态的值,同时进行本状态要执行的操作,在本例中改变Z的值,并且只要不是最后一个状态STATE_FINISH,标示finish都为零 状态机的输出Z仅与moore状态机的状态有关,与输入无关。,97,mealy状态机,module mealy_fsm(clk, reset, A, Z, finis
49、h); parameter STATE_INIT = 4b0001; parameter STATE_ST1 = 4b0010; parameter STATE_ST2 = 4b0100; parameter STATE_FINISH = 4b1000; input clk, reset; input A; output 1:0 Z; output finish; reg 3:0 current_state, next_state; reg 1:0 Z; reg finish;,98,mealy状态机,always (negedge reset or posedge clk) begin if
50、 (!reset) current_state = STATE_INIT; else current_state = next_state; end always (current_state or A) begin finish = 1b0; case (current_state) STATE_INIT: begin next_state = STATE_ST1; Z = 2b01; end STATE_ST1:begin if (A) begin next_state = STATE_ST2; Z = 2b11; end,else begin next_state = STATE_FIN
51、ISH; Z = 2b10; end end STATE_ST2: begin next_state = STATE_FINISH; Z = 2b10; end STATE_FINISH: begin / next_state= STATE_FINISH Z = 2b01; finish = 1b1; end endcase end endmodule,99,状态机编码方式,One-hot 方式,如上例,占用寄存器多,但是电路简单。 另外可以选择 Gray Code,因为格雷码每次只有一位发生变化,可以避免电路上的竞争现象出现。,100,moore 和mealy的区别,实现机理上并无不同 只是
52、mealy机在实现上把状态的变化和输出开关的控制分开考虑,形成各自独立的always控制块,在设计较复杂的状态机上常采用,101,售货机的例子,任务要求 设计一个自动售货机的电路 投币口每次只能投入一枚五角或者一元的硬币,投入一元五角,则售货机自动给出一杯饮料,投入两枚一元的硬币,则在给出一杯饮料同时退出一枚五角硬币 变量分析:共有四个变量。投入一元为一个变量A(输入);投入五角为一个变量B(输入);售货机给出一杯饮料,定义为Y(输出);售货机退出一枚五角硬币,定义为Z(输出)。 状态定义,三个状态:S0, 未投入任何硬币;S1,投入一枚五角硬币;S2,投入一枚一元硬币,102,售货机,mod
53、ule machine (A, B, Y, Z, reset); parameter state0 = 2b00; parameter state1 = 2b01; parameter state2 = 2b10; input A, B, reset; output Y, Z; reg Y, Z; reg 1:0 state; always (A, B,state) begin,103,售货机,case (state) state0: if (A =0 end,state2: /有一元 if (A = 0 end endcase End endmodule,高级芯片综合 Advanced Ch
54、ip Synthesis,105,教学目标,熟练掌握Verilog语法与RTL设计方法 熟练掌握综合的基本概念 熟练掌握时序基本概念 熟练掌握时序的分析方法 熟练掌握综合工具 熟练分析综合结果,106,教学内容,ASIC design flow 综合的定义基本概念 Synopsys 基本工具介绍 时序基本概念与分析 Synopsys technology library Logic synthesis的过程 Synthesis 和 layout的接口 Post_layout optimization SDF文件的生成,107,设计流程,Simulation on System Level,RT
55、L Coding Design,Function Simulation,Design Requirement,Micro-Architecture and Function Specification,Synthesis,Simulation on Gate Level,Static Timing Analysis,Formality,lib,Layout,Physics Verification,Static Timing Analysis,lib,Tape out,FPGA,108,为什么需要综合这一步骤,109,综合的定义,逻辑综合:决定设计电路逻辑门的相互连接。 逻辑综合的目的:决定电
56、路门级结构、寻求时序和与面积的平衡、寻求功耗与时序的平衡、增强电路的测试性。 逻辑综合的过程: 首先,综合工具分析HDL代码,用一种工具内嵌模型对HDL进行映射,这个模型是与技术库无关的; 然后,在设计者的控制下,对这个模型进行逻辑优化; 最后一步,针对时序、面积、功耗进行逻辑映射和门级优化,根据逻辑约束映射为专门的技术目标单元库(target cell library)中的cell,形成了综合后的网表。,110,综合的依据,综合由约束驱动 综合是基于路径的过程 RTL设计+ 约束文件,111,约束,时序约束 综合是一个重复的过程,为设计的每个模块定义时序约束。 这些时序约束定义了该模块的各个
57、信号与时钟信号之间的关系。 综合工具通过静态时序分析 (STA)计算每个路径的时间,并尽量去优化设计以满足特殊的时序约束。 环境约束 环境约束定义了标准单元库和其他相关的信息,比如芯片的工作温度等。 约束文件:tcl,Synopsys 产品,113,Synopsys 产品,Synopsys设计相关产品包括:,VCS Design Compiler and Design Vision (综合) PrimeTime (STA, power) DFT Compiler (DFT) Formality (形式验证) HAL (CDC 检查, 代码覆盖率分析),114,Synopsys 产品(cont.
58、),Astro (版图) Herculus (DRC、LVS) Astro Rail (功耗分析) Jupiter (布图) ICC (从ploorplan 到后端实现),115,Design Compiler and Design Vision,DC和DV构成构成一套功能强大的逻辑综合工具,根据设计规范和时序约束,提供最优的门级综合网表。 启动: /data/asic dc_shell /data/asic dc_shell-t /data/asic design_vision /data/asic dvt,116,117,4. PrimeTime,Synopsys的全芯片、门级静态时序分析工具,用于最终的timing signoff。 启动:,/data/asic pt_shell /data/asic pri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年宁波卫生职业技术学院单招职业倾向性考试题库附答案详解(培优)
- 2026年大连装备制造职业技术学院单招职业倾向性测试题库附参考答案详解(b卷)
- 2026年安徽审计职业学院单招职业技能考试题库附答案详解ab卷
- 2026年宁德职业技术学院单招职业技能测试题库附参考答案详解(考试直接用)
- 2026年大理护理职业学院单招职业技能考试题库含答案详解ab卷
- 2026年天津艺术职业学院单招综合素质考试题库附答案详解(轻巧夺冠)
- 2026年宁夏工业职业学院单招职业技能测试题库附参考答案详解(综合题)
- 国家电网副总经理职位面试经验
- 2026年安徽工商职业学院单招职业倾向性测试题库带答案详解(综合题)
- 2026年安徽工商职业学院单招职业倾向性考试题库附答案详解(培优a卷)
- 离婚协议合同2025
- 重庆市拔尖强基联盟2024-2025学年高一下学期3月联合练习数学试题(原卷版+解析版)
- 外研版(三起)(2024)三年级下册英语Unit 1 Animal friends单元备课教案
- 重庆交通大学《无机化学》2023-2024学年第二学期期末试卷
- TCTSS 90-2024 茶叶碳足迹核算方法
- 2025年枣庄科技职业学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 眼科日间手术流程标准化管理
- 2024年长沙民政职业技术学院单招职业技能测试题库及答案解析
- ABB工业机器人应用技术 故障诊断与维护 课件全套 杨金鹏 项目1-4 工业机器人的安全作业事项- 工业机器人本体的维护
- 【班主任工作】2024-2025学年秋季安全主题班会教育周记录
- 大学英语第1堂课自我介绍课程介绍
评论
0/150
提交评论