北邮-电子科学与技术-ASIC专业实验-实验报告.pdf
- 文档编号:30839363
- 上传时间:2024-01-30
- 格式:PDF
- 页数:21
- 大小:2.37MB
北邮-电子科学与技术-ASIC专业实验-实验报告.pdf
《北邮-电子科学与技术-ASIC专业实验-实验报告.pdf》由会员分享,可在线阅读,更多相关《北邮-电子科学与技术-ASIC专业实验-实验报告.pdf(21页珍藏版)》请在冰豆网上搜索。
ASIC专业实验指导老师:
刘雯电子工程电子工程学院学院ASICASIC专业实验专业实验实验报告实验报告班级:
2012211205姓名:
翁雪妍学号:
2012210961指导老师:
刘雯ASIC专业实验指导老师:
刘雯一、课程任务一、课程任务1.完整完成一个CPU芯片的功能设计并通过验证(包括前端逻辑设计和仿真),主要对应课程的LAB1LAB8部分2.熟悉综合的过程,并验证综合后的电路(逻辑综合)3.对关键部件进行布局布线(版图设计)二、课程内容二、课程内容1.1.语言级仿真语言级仿真半期前的实验内容主要是语言级仿真,在两个晚上由韩可老师和路卫军老师代授的理论课后,我们正式进入了实验室。
首先由Xmanager登录到Linux界面,由于对实验环境不是很熟悉,我们在输入命令时比较慢。
因为比较依赖同组的小伙伴,每次编写文件时都问一遍“保存是什么指令啊”“是:
wq保存吧?
”,再加上后期熟悉了Linux界面以及文档基本创建完成后,多是使用图形界面的命令,造成了期中验收时的操作不熟悉,使我非常沮丧。
总的来说,我们完成的是Top-down自顶向下的CPU设计,一个基本的CPU要包括三部分功能:
数据存储、数据运算和控制部分。
与之相对应的硬件结构也分为三部分:
存储器、数据通路和控制器。
存储器存放指令和数据;数据通路包括ALU、程序计数器等,主要功能是对操作数进行运算,得到结果,并产生程序计数器的值,作为要执行的下一条指令的地址;控制器内有指令寄存器,它对指令进行译码,产生相应的控制信号,完成对存储器和数据通路部分的控制。
存储器、数据通路和控制器这三部分的基本关系下图所示:
图2-1CPU基本结构对图2-1中的结构进行细化,可以得到一个简单的架构,如下图所示。
该CPU采用总线结构,即控制器所需的指令和数据通路所需的数据都是从总线上得到的。
ASIC专业实验指导老师:
刘雯图2-2CPU的简单架构然后是按部就班的每个模块的逻辑设计,现将我们自行添加的代码部分附于下:
LAB3register.v/自行添加dffr及mux模块调用代码muxm7(.a(out7),.b(data7),.out(n17),.sel(load);dffrd7(.d(n17),.q(out7),.clk(clk),.rst_(rst_);muxm6(.a(out6),.b(data6),.out(n16),.sel(load);dffrd6(.d(n16),.q(out6),.clk(clk),.rst_(rst_);muxm5(.a(out5),.b(data5),.out(n15),.sel(load);dffrd5(.d(n15),.q(out5),.clk(clk),.rst_(rst_);muxm4(.a(out4),.b(data4),.out(n14),.sel(load);dffrd4(.d(n14),.q(out4),.clk(clk),.rst_(rst_);muxm3(.a(out3),.b(data3),.out(n13),.sel(load)ASIC专业实验指导老师:
刘雯);dffrd3(.d(n13),.q(out3),.clk(clk),.rst_(rst_);muxm2(.a(out2),.b(data2),.out(n12),.sel(load);dffrd2(.d(n12),.q(out2),.clk(clk),.rst_(rst_);muxm1(.a(out1),.b(data1),.out(n11),.sel(load);dffrd1(.d(n11),.q(out1),.clk(clk),.rst_(rst_);muxm0(.a(out0),.b(data0),.out(n10),.sel(load);dffrd0(.d(n10),.q(out0),.clk(clk),.rst_(rst_);register-test.v/例化寄存器/例化时钟/添加检测信号registerr(.out(out),.data(data),.load(load),.rst_(rst_),.clk(clk);clockc(.clk(clk);initialbegin$timeformat(-9,1,ns,9);$monitor(time=%t,clk=%b,data=%h,load=%b,out=%h,$stime,clk,data,load,out);$dumpvars(2,register_test);endLAB4alu.v/电路描述always(opcodeordataoraccum)ASIC专业实验指导老师:
刘雯beginif(accum=8b00000000)#1.2zero=1b1;else#1.2zero=1b0;case(opcode)3b000:
#3.5out=accum;3b001:
#3.5out=accum;3b010:
#3.5out=accum+data;3b011:
#3.5out=accum&data;3b100:
#3.5out=accumdata;3b101:
#3.5out=data;3b110:
#3.5out=accum;3b111:
#3.5out=accum;default:
#3.5out=8bx;endcaseendLAB7control.v/状态转移代码always(state)nextstate=state+1;/剩余代码case(state)3b000:
/0beginsel=0;rd=alu_op;ld_ir=0;inc_pc=(opcode=SKZ)&zero|(opcode=JMP);halt=0;ld_pc=opcode=JMP;data_e=!
alu_op;ld_ac=alu_op;wr=opcode=STO;end3b001:
/1beginsel,rd,ld_ir,inc_pc,halt,ld_pc,data_e,ld_ac,wr=9b1_0_0_0_0_0_0_0_0;ASIC专业实验指导老师:
刘雯end3b010:
/2beginsel,rd,ld_ir,inc_pc,halt,ld_pc,data_e,ld_ac,wr=9b1_1_0_0_0_0_0_0_0;end3b011:
/3beginsel,rd,ld_ir,inc_pc,halt,ld_pc,data_e,ld_ac,wr=9b1_1_1_0_0_0_0_0_0;end3b100:
/4beginsel,rd,ld_ir,inc_pc,halt,ld_pc,data_e,ld_ac,wr=9b1_1_1_0_0_0_0_0_0;end3b101:
/5beginsel,rd,ld_ir,inc_pc,ld_pc,data_e,ld_ac,wr=8b0_0_0_1_0_0_0_0;halt=opcode=HLT;end3b110:
/6beginsel,ld_ir,inc_pc,halt,ld_pc,data_e,ld_ac,wr=8b0_0_0_0_0_0_0_0;rd=alu_op;end3b111:
/7beginsel=0;rd=alu_op;ld_ir=0;inc_pc=(opcode=SKZ)&zero;halt=0;ld_pc=opcode=JMP;data_e=!
alu_op;ld_ac=0;wr=0;endendcase到这一步(即逻辑综合前)的control.v代码如截图所示:
ASIC专业实验指导老师:
刘雯ASIC专业实验指导老师:
刘雯ASIC专业实验指导老师:
刘雯我写的测试文件是佩尔数列,一开始是觉得有斐波那契数列的例子在那儿,数列类型的都比较容易实现,最开始我模仿示例,想得太过简单,只添加了一行ADDN2,运行时程序一直在跑,没有halt,仔细推敲了逻辑之后,添加了一个变量N3放数据,使得逻辑清楚,得到了理想的结果。
ASIC专业实验指导老师:
刘雯在cpu_test.v里添加的字段如图所示:
理论课的时候老师说要完成一个CPU的设计是我觉得这个课程特别难,岂不是学完了就能做电脑了?
拿到实验书后,我发现核心的代码是现成的,我们要做的不过是敲进去的工作,没有通过就反复查找有没有讹误的地方,只追求最后仿真的实现,而忽略了理解的过程,使得在验收的时候对于老师的问题表现十分不佳,这种失败也使得我在后半期的实验中打起了十二分精神,每一步都自己再过一遍。
22.逻辑综合逻辑综合1.综合是在做什么?
i.综合的对象综合的对象:
控制器control.vii.本实验本实验综合综合采用的工具采用的工具:
SYNOPSYS公司的DesignCompileriii.库是什么库是什么:
EDA工具能够完成各种自动化设计,关键是各种库的支持。
如逻辑模拟时的模拟库,逻辑综合时综合库,版图综合时的版图库,测试综合时的测试库等。
这些库都是EDA设计公司与半导体生成厂家紧密合作,共同开发。
iv.逻辑综合的目标逻辑综合的目标:
将前面的RTL级HDL代码映射到具体的工艺加以实现,对层次化的时序电路的速度、面积、功耗和可布性进行优化因而从这一步开始,设计过程与工艺实现联。
逻辑综合的前提是有逻辑综合库的支持,综合库内部包含有相应的工艺参数,如门级延时,单元面积,扇入扇出系数等。
设计一电子系统,总有相应的设计指标,如时钟频率,芯片面积和端口驱动能力等,自动综合工具将这些设计指标作为综合过程的约束条件,在给定的综合库中选取最佳单元,实现综合。
对与复杂的电子系统,需要考率测试问题,可通过测试综合工具在逻辑电路内部安排相应的测试电路。
v.具体具体用了什么工艺库用了什么工艺库:
DC使用.synopsys_dc.setup来启动文件,.synopsys_dc.setup运行时调用了common_setup.tcl,dc_setup.tcl,这两个脚本文件设置了综合单元库和符号库。
ASIC专业实验指导老师:
刘雯#common_setup.tclsetTARGET_LIBRARY_FILES“/home1/lib/smic/aci/sc-x/synopsys/typical_1v2c25.db/home1/lib/smic/SP013D3_V1p4/syn/SP013D3_V1p2_typ.db”;target_library用于设置综合时所要映射的库,包含有单元电路的延迟信息,DC综合时就是根据target_library中给出的单元电路的延迟信息来计算路径的延迟。
setSYMBOL_LIBRARY_FILES/home1/lib/smic/aci/sc-x/synopsys/smic13g.sdb;symbol_library为指定的符号库,是定义了单元电路显示的Schematic的库。
用户如果想启动design_analyzer或design_vision来查看、分析电路时需要设置symbol_library。
#dc_setup.tclset_app_varlink_library”*$target_library”link_library是链接库,它是DC在解释综合后网表时用来参考的库。
一般情况下,它和目标库相同;当使用综合库时,需要将该综合库加入链接库列表中。
代码中set_app_var是设置工具内置变量,使link_library和target_library相同。
注意:
在link_library的设置中必须包含*,表示DC在引用实例化模块或者单元电路时首先搜索已经调进DCmemory的模块和单元电路,如果在linklibrary中不包含*,DC就不会使用DCmemory中已有的模块,因此,会出现无法匹配的模块或单元电路的警告信息(unresolveddesignreference).综合以上,本实验采取的工艺库是目标库typical_1v2c25.db,SP013D3_V1p2_typ.db和符号库smic13g.sdb。
生成的control_pad.sdf:
ASIC专业实验指导老师:
刘雯ASIC专业实验指导老师:
刘雯时序分析:
ASIC专业实验指导老师:
刘雯面积分析:
ASIC专业实验指导老师:
刘雯功耗分析:
ASIC专业实验指导老师:
刘雯生成的电路网表:
ASIC专业实验指导老师:
刘雯仿真:
课后问题:
1control.vg文件是verilog语言级的描述还是结构化的描述?
答:
control.vg是门级描述,故为结构化的描述。
2control.sdf文件中,对触发器的延迟包括哪些信息,请一一列出。
答:
control.sdf文件中,对触发器的延迟信息包括每一个逻辑单元的每一个管脚的上升时延与下降时延的最大值,典型值和最小值。
3.3.版图设计版图设计把每个原件的电路表示转换成集合表示,同时,元件间连接的线网也被转换成几何连线图形。
主要进行的工作是:
模块划分:
模块划分:
为了将处理问题的规模缩小,通常把整个电路划分成若干个模块。
版图规划和布局是为了每个模块和整个芯片选择一个好的布图方案。
布局布线布局布线:
布局图应该和功能框图或者电路图大体一致,然后根据各个模块的面积大小进行调整,接着完成模块间的互连,并进一步优化布线结果。
版图压缩版图压缩:
ASIC专业实验指导老师:
刘雯压缩是布线完成后的优化处理过程,试图进一步减小芯片的占用面积。
可分为五个步骤:
数据准备:
数据准备:
设计库和最初设计单元的创建、网表和sdc文件读入,reference库和工艺库的设置等,存放在design_data目录下。
首先是设置referencelibrary,包括standcelllibrary,padlibrary,macrolibrary(IPlibrary)。
布图规划:
布图规划:
对芯片大小形状、输入输出单元、hongdanyuan的规划,电源网络的设计等。
与整个设计的timing和布通率有密切关系,十分重要。
通常情况下,一个芯片由corearea和padarea组成。
布局规划要进行预布线,即布电源地网络。
布局:
布局:
布局出来的结果是要满足时序需求,尽量减少布线的拥挤度。
在布局阶段需要模拟时钟树的影响。
ASIC专业实验指导老师:
刘雯时钟树综合:
减小时钟偏斜。
时钟树是电路性能的主要标志。
ASIC专业实验指导老师:
刘雯布线:
布图规划阶段已经完成了电源地网络的布线,布线阶段主要是标准单元的信号线的连接,并优化互联结果。
仿真:
ASIC专业实验指导老师:
刘雯三、课程感想三、课程感想我对ASIC专业实验课程的理解实际上是在老师不断验收的过程中升华的,刘老师反复强调我们理解的过程,机械的敲代码,跑出正确结果不是实验的目的,用什么工具不是最重要的,而是我们是否明白我们在做什么,我们能够做成什么。
通过这一学期的学习,我对ASIC设计有了整体概念,对版图设计有了整体印象,明白了芯片设计的整体流程。
同时,在写实验报告的过程中,我对验收时老师提出的问题反复查阅相关手册和相关软件使用实验报告,对每一步具体在做什么有了更加深刻的了解。
从实验教材把主要代码列出可以看出来,这门课的主要目的不是让我们学了就能设计个8086或是什么,而是等到日后我们真正重新接触到ASIC设计之后,不再陌生,是为以后的具体学习打下基础。
感谢刘老师及助教这一学期的指导!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北邮 电子 科学 技术 ASIC 专业 实验 报告