ASIC课程设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

ASIC课程设计报告班级:**********班姓名:王克勤学号:**********日期:2012-04-10ASIC课程设计实验一Linux入门一、实验目的1.熟悉Linux系统及常用命令2.熟悉并熟练掌握Perl语言的使用二、实验要求1.熟悉Linux操作系统包括在windows系统环境下登陆Linux,以及Linux常用命令,主要为熟悉路径。2.使用Vi编辑软件用Vi编辑一个文件,要求长度达到1K;同时熟练使用查找-替换等功能,熟悉正则表达式。3.熟悉Perl使用在已有的一个50M左右的数据文件中抽出需要信息,形成新的文件。三、实验步骤1.熟悉Linux系统a)通过客户端登陆服务器中的Linux系统运行putty.exe,在地址中键入服务器的地址:192.168.1.110,连接类型选择SSH,点击“open”。在弹出的登陆界面里输入用户名(student)和密码(123456),进入服务器里的Linux系统。键入“vncserver”命令,申请服务器内对应PC客户端的桌面端口号,如图Fig.1-1所示,申请的端口号为2。Figure1-1用vncserver申请PC客户端端口号运行vncserver.exe,在地址里输入“192.168.1.110:端口号(2)”,再输入密码(123456),即可打开对应于自己用户的桌面端口。b)熟悉Linux里的常用命令命令pwd:在屏幕上输出当前的工作目录。命令cd:用于更改当前的目录。命令ls:列出当前目录的内容。命令less:显示文件时允许用户既可以向前又可以向后翻阅文件。命令more:同less命令,一次显示一屏信息。命令rm:删除目录或文件。命令cp:复制目录或文件。输出重定向””:将标准输出保存在一个文件中。2.Vi编辑器的使用在终端界面里键入“vi”和想编辑或建立的文件名,进入vi编辑器的界面。键入“i”:进入输入模式。此时可以编辑插入文本。ESC键:退出输入模式。键入“:w”:保存当前编辑的内容。键入“:q”:退出vi编辑器。键入“/str”:从当前光标开始向右移动到有str的地方。3.Perl语言的使用抽出报告中所有endpoint和lack的所在行的perl程序:open(FILE,$ARGV[0]);open(FILE1,$ARGV[1]);while(defined($line=FILE)){chmod$line;$_=$line;if(/Endpoint|slack/){printFILE1($line);}}closeFILE;closeFILE1;从REG-REG_3360.rpt中抽出Endpoint和slack,输出到Endpoint_In_REG-REG.rpt,打开输出结果如下:Figure1-2Endpoint和slack输出结果四、实验总结通过这次试验,我们初步学习了Linux系统和Perl语言,熟悉了集成电路EDA软件运行的环境。Linux虽然也支持图形界面操作,但是指令操作更快捷方便,其文件系统结构也与windows有很大差别。在大规模集成电路的设计中,一个设计的分析报告可能很大,如果人工的逐行看,会非常浪费时间且效率较低。通过Perl这种脚本语言,结合正则表达式,便可以抽出报告中所要的信息,省时省力。实验二DC的使用一、实验目的熟悉Synopsys的DesignCompiler的使用,了解集成电路前端设计的流程。二、实验步骤1.启动DCa)在工作目录“/home/student/Chipsythesis_2/lab_wangkeqin/”下键入“csh”,即将系统默认的bashell切换成cshell,为下一步运行csh脚本做准备。b)继续键入“source../../dc.csh”或是“source/home/student/”命令,前者是相对命令,后者是绝对路径。即运行在当前工作目录上两级的文件dc.csh,设置DC运行所需的初始环境变量。c)键入“dc_shell”命令,即DesignCompiler的启动命令。进入DC的命令行界面。2.运行DCDC运行的操作脚本为tcl_scripts目录下的top_down.tcl,所以在dc_shell里键入“sourcetcl_scripts/top_down.tcl”,运行编译的脚本,脚本内的内容包括读入设计相关的数据库,编译,输出设计报告等内容。三、报告分析与优化在dc_shell里键入“report_qorqor0329.rpt”,可得设计电路的设计质量(qualityofresults)报告。Figure2-1qorresults部分信息通过qor报告可以得到该设计的整体信息:时序上不符合要求的路径有78条,时间裕度为-0.46,单元数为22+964+2353+509=3848,设计面积为25815.927594,其中cell的面积是4993.740094。在dc_shell里键入“report_powerpower0329.rpt”,可得设计电路的功率报告。Figure2-2Powerresult部分信息从Fig.2-2可以看出此设计的动态功率是19.5178mW。在dc_shell里键入“report_timingTiming.rpt”,可得设计电路的时序报告。Figure2-3Timing.rpt部分信息时间裕度slack是requiretime(RT)与arrivetime(AT)之差。如果差为大于零的数,即说明信号实际到达的时间比要求的时间早,这样就符合了时序要求,反之则不符合要求。在dc_shell里键入“report_timing–max_path200maxpath0329.rpt”,可得设计电路的时序最差的200条路径。Figure2-4Maxpath0390.rpt部分信息如图Fig.2-4所示,可以看出里面slack最小的200条路径的具体情况,并可以看到信号在每一段模块与连线中传递时的占用的时间情况。为下一步优化时序提供信息。Figure2-5Cell.rpt部分信息如图Fig.2-5所示,本设计所用单元总面积为4993.740094.由上图的报告结果可以看出这个设计并不满足时序要求,所以要么改变设计电路的布局布线优化逻辑,要么放松对电路的要求。本实验采用减小输入延迟的方法来增加时间裕度。修改约束脚本方法如下:根据编译脚本文件top_down.tcl里面的语句setTOP_LEVEL_SCRIPT{tcl_scripts/top_level_cons.tcl}可知,设计的顶层约束文件是tcl_scripts目录下的top_level_down.tcl文件,所以编辑下列文件里对输出延迟的设置即可使时序符合要求。#****GenericDesignBudgetforRISC_COREteam***reset_design#suppresswarningsfromset_driving_cellandset_wire_loadsetsuppress_errors$suppress_errorsUID-401UID-439create_clock-p9[get_portsClk]set_clock_uncertainty-setup02[get_clocksClk]set_dont_touch_network[get_portsClk]set_operating_conditionstyp_70_4.50set_wire_load-modetoptc6a120m2set_driving_cell-lib_cellbuf1a4[remove_from_collection[all_inputs]Clk]set_load[load_ofcba_core/buf1a2/A][all_outputs]set_input_delay5.5-clockClk-max[remove_from_collection[all_inputs]Clk]set_output_delay6-clockClk-max[all_outputs]set_scan_configuration-stylemultiplexed_flip_flopgroup_path-nameREG-REG-from[all_registers-clock_pin]-to[all_registers-data_pin]group_path-nameIN-REG-from[all_inputs]-to[all_registers-data_pin]group_path-nameREG-OUT-from[all_registers-clock_pin]-to[all_outputs]将set_output_delay6-clockClk–max[all_outputs]中的6改为5。修改后对DC重新编译可以得到如下的结果。Figure2-6修改后qor.rptFigure2-7修改后Power.rpt部分信息Figure2-8修改后REG-REG中的slack从Fig.2-6、Fig.2-7、Fig.2-8可以看出,修改output_delay之后,slack并没有得到改善,反而恶化了。功耗也相应增加了,说明修改效果不好,应重新修改约束,来优化设计。四、实验总结经过这次实验,我们学习了如何使用DesignCompiler。了解了大规模集成电路里前端设计电路的流程,并通过修改时序约束使电路时序达到要求,对课堂上抽象的时序分析有了感性的认识与了解,并通过图形界面对不满足时序要求的电路有直观的认识。修约束后,可以看出电路的单元数变增多了,功耗增加了,这可能是因为修改约束时,把约束改大了,DC在综合优化时序时加入了更多的buffer等单元使原本就存在slack的电路slack变得更大。由于单元数目增加了,功率同时也同时增加了。DC可以同时支持图形界面和tcl脚本,使用tcl命令更加快捷,执行效率高。而且可以把想执行的命令都写在一个脚本里,使用灵活。实验三ICC的使用一、实验目的熟悉Synopsys的ICCompiler的使用,对大规模集成电路的后端设计有所了解。二、实验步骤1.启动ICCa)在工作目录下“/home/students/ICC_wangkeqin/orca_top/”键入命令“csh”,切换shell命令解释器。b)键入“source../../icc.csh”,与DC类似,运行这个icc.csh的脚本,设置ICC启动所需的初始环境变量。c)键入“icc_shell”这一ICC的启动命令,启动ICCompiler。2.运行ICC运行ICC可以有两种方式可以选择:第一种是直接运行脚本文件run_all.tcl,即“sourcerun_all.tcl”;另一种就是将run_all.tcl脚本中的命令一条条分别执行,run_all.tcl脚本内容如下:sourcelogic_lib_set.tclsourcecreate_mw_lib.tclsourceinitialize_floorplan.tclsourceplacement.tclsourcects.tclsourceroute.tclsourcedfm.tcl文件中每一行source的脚本文件对应着集成电路后端设计中流程的每一步。logic_lib_set.tcl文件用来导入设计所需的目标库与连接工艺库。create_mw_lib.tcl创建自己的设计库并读入前端综合好的verilog文件,指定当前设计。initialize_floorplan.tcl只是读入def工艺文件,所以版图并无变化。placement.tcl做整个设计的全局布线的初试布局划分。cts.tcl进行时钟树综合,主要是为了控制时钟的延迟与扭斜,时钟偏斜过大会引起竞争条件,增加在触发器中锁存错误数据的几率。route.tcl负责详细布线。dfm.tcl用来做可制造性设计DFM,这是为了避免天线效应、金属密度不均匀、光刻图形畸变等问题。在65nm以前做DFM,效

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功