IC实习研究报告文本记录.docx
- 文档编号:12871140
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:31
- 大小:2.45MB
IC实习研究报告文本记录.docx
《IC实习研究报告文本记录.docx》由会员分享,可在线阅读,更多相关《IC实习研究报告文本记录.docx(31页珍藏版)》请在冰豆网上搜索。
IC实习研究报告文本记录
实习报告
课程名称实习设计报告
题目名称IC集成芯片设计
学生学院材料与能源
专业班级微电子
(2)班
学号
学生姓名
指导教师
2015年7月25日
目录:
前言·······························································1
正文·······························································3
第一部分——LINUX介绍与常用指令···································3
第二部分——VCS实验设计步骤简要说明·······························5
实验一··························································5
实验二··························································7
实验三··························································8
第三部分——DC实验设计步骤简要说明································9
第四部分——ICC实验设计步骤简要说明······························17
一、给你的设计先创建一个Milkwaylibrary·······················17
二、加载网络表,TLU+:
的约束和控制·······························18
三、基本流程:
设计规划···········································20
四、布局·························································20
五、CTS··························································21
六、布线·························································21
第五部分——PT实验设计步骤简要说明································22
实习总结:
··························································24
前言:
终于迎来了期盼已久的实习,毕业实习是每个大学生必须拥有的一段经历,它使我们在实践中了解社会,让我们学到了很多在课堂上根本就学不到的知识,受益匪浅,也打开了视野,增长了见识,使我认识到将所学的知识具体应用到工作中去,为以后进一步走向社会打下坚实的基础,只有在实习期间尽快调整好自己的学习方式,适应社会,才能被这个社会所接纳,进而生存发展。
刚进入单位的时候我有些担心,经历了一连串的实习之后,我努力调整观念,正确认识了单位和个人的地位以及发展方向,我相信只要我们立足于现实,改变和调整看问题的角度,锐意进取,在成才的道路上不断攀登,有朝一日,那些成才的机遇就会纷至沓来,促使我们成为社会公认的人才。
1、培训目的
IC集成芯片设计的设计流程主要包括代码设计和验证VCS(VerilogCompiledSimulator)、前端设计与逻辑综合DC(DesignCompiler)、后端实体设计ICC(ICCompiler)和时序验证PT(PrimeTime)。
此次实习根据初学者的知识掌握程度合理地安排了实习的实习难度,也让实习生同学能够初步了解IC芯片设计的整个流程,充分的了解芯片设计每一阶段所需要掌握的基本知识和技能。
HDMI芯片的仿真验证设计是本次实习的主要研究内容,其中每一阶段从工具介绍、指令操作、仿真设计和最后所要达到的实验目的都有严格的标准,能够达到本次实习要求的目的。
2、实习时间
2015年7月11日至2015年7月25日
3、实习地点
广州星海集成电路基地有限公司(广东工业大学IC基地内)
4、实习内容:
IC设计培训与实习。
具体内容:
前期准备:
Linux系统;
代码设计和验证:
VCS(VerilogCompiledSimulator);
前端设计与逻辑综合:
DC(DesignCompiler);
后端实体设计:
ICC(ICCompiler);
时序验证:
PT(PrimeTime)
5、实习经过:
实验时间
实验内容
大纲要求
两天
前期准备:
Linux系统
工具简介;
操作指令基本说明。
两天
代码设计和验证:
VCS(VerilogCompiledSimulator)
编写HDMI的Testbench文件;
进行VCS仿真并验证RTL编码逻辑功能的正确性。
两天
前端设计与逻辑综合:
DC(DesignCompiler)
工具简介;
根据HDMI设计的要求,编写约束脚本;
按流程编译导出HDMI的Netlist网表文件。
四天
后端实体设计:
ICC(ICCompiler)
ICC工具简介;
HDMI的FloorPlan,Preroute设计;
布局优化和时钟树综合;
布线以及优化。
两天
时序验证:
PT(PrimeTime)
与时序相关的概念介绍;
进行HDMI的时序分析。
三天
总结并提交实验报告
6、实习结论:
本次实习通过Linux系统上应用VCS,DC,ICC,PT这四个工具来设计出一个HDMI系统,熟悉这个设计的流程。
其中VCS是Verilog代码的仿真验证工具;DC是逻辑综合工具,将Verilog代码描述转化成优化的门级网表;ICC是后端设计工具;PT是时序验证工具。
其实HDMI的代码已经给出,它包括顶层模块hdmi_encoder(信号源)发射模块和他下面的帧时序产生模块(Timing)、周期时序产生模块(Timing_dly)、编码模块(Encoder)。
所以我们就是先用VCS仿真验证HDMI的硬件描述代码无错误,再用DC将这代码翻译成逻辑门电路,再用ICC将其转变为IC版图文件,最后用PT验证HDMI版图是否符合时序要求。
正文:
第一部分——LINUX介绍与常用指令
VCS,DC,ICC,PT这些工具都是在LINUX系统上运行的工具,所以第一步是了解和认识LINUX系统及其在设计中设计的常用指令。
LINUX的基本介绍这里不再赘述,这里主要叙述Linux的目录结构和基本命令:
1、Linux目录结构
•/:
根目录,一般根目录下只存放目录,不存放文件;
•/bin:
/usr/bin:
可执行二进制文件的目录,如常用的命令ls,tar,mv,cat等;
•/boot:
放置linux系统启动时用到的一些文件;
/boot/vmlinuz为系统的内核文件,以及/boot/grub;
•/dev:
存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的挂载光驱如:
mount/dev/cdrom/mnt;
•/lib:
/usr/lib:
/usr/local/lib:
系统使用的函数库的目录,程序执行过程中,需要调用一些额外的参数时需要的函数库;
•/tmp:
一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问;
•/usr:
应用程序存放的目录;
•/var:
放置系统执行过程中经常变化的文件,如随时更改的日志文件/var/log;
2、基本命令
2.1目录与文件
•显示用户当前路径:
pwd
•查看显示命令:
ls[选项]目录(如果目录缺省,即显示当前目录及文件信息)
ls命令常用选项:
-a全部文件包括隐藏;
-h以M为单位显示文件大小结果;
-s统计此目录中所有文件大小总和;
如du–sh.(查看当前目录下的文件大小总和)
•切换目录
.cd目录
.cd..回到上级目录
.cd~回到自己主目录
.cd/home/eda目录
•新建目录
.mkdir目录
常用选项:
-p
mkdir/home/eda/AAA/BBB,即在/home/eda目录下,新建AAA目录及AAA目录下的子目录BBB;
•删除目录
.rm[选项]文件名或目录名
.常用选项:
.-r删除目录
.-f强制删除
.-i删除前询问
如强制删除/home/tmp目录:
rm-rf/home/tmp
2.2复制
.cp[选项]源路径/源文件目标路径/新文件名
.常用选项:
.-r复制目录
.-b覆盖同名文件
.-f强制复制
如复制/home/tmp/cpp目录到/tmp:
cp-r/home/tmp/cpp/tmp
2.3压缩管理
•解压缩
.tar[选项]生成文件目录/文件
.常用选项:
.-c创建一个压缩文件的参数指令
.-x解开一个压缩文件的参数指令
.-t查看tarfile文件里面的文件
.-z是否同时具有gzip的属性
.-j是否同时具有bzip的属性
.-v压缩过程中显示文件
.-f使用档名,在f之后要立即接档名
•解压缩tar实例:
打包:
tar-cvflab2015.tarlab2015仅打包,不压缩(lab2015为目录)
tar-zcvflab2015.tar.gzlab2015以gzip压缩方式打包
解压缩:
tar-xvflab2015.tar解压缩包
tar-ztvflab2015.tar.gz查阅包中文件内容
tar-zxvflab2015.tar.gz解压缩gz格式的压缩包
2.4系统账户环境
•finger:
显示系统账号的相关信息
常用选项:
-l列出账户的信息
例如:
finger-l[用户名](不加用户名即查询当前用户信息)
•chsh:
改变登入系统时的shell
常用选项:
-s指定系统登入时的shell
-l列出系统支持的所有shell
例如:
chsh-s/bin/csh
第二部分——VCS实验设计步骤简要说明
实验一
1、打开终端,进入VCS_Tranning文件夹下面的Lab1子文件夹parta。
指令:
shell>pwd
shell>cdvcs/lab1
shell>ls
2、使用VCS对在parta里的4个Verilog文件,分别为:
hdmi_encoder.v,encoder.v,timing.v,timing_dly.v,进行编译产生可以执行的二进制文件simv。
指令:
shell>vcshdmi_encoder.vencoder.vtiming.vtiming_dly.v
结果:
3、运行simv这个二进制文件。
指令:
shell>./simv
结果:
4、产生hdmiv的可执行文件,而不产生simv
指令:
shell>vcshdmi_encoder.vencoder.vtiming.vtiming_dly.v-ohdmiv
5、运行hdmiv文件
指令:
shell>./hdmiv
结果:
运行完毕后的结果和第3步骤的结果进行对比,你会发现CPUTime显示时间基本上是一样的
6、是终端进入文件夹partb,并查看其中的文件。
指令:
shell>cd../lab2
shell>ls
结果:
进入lab2文件夹,发现只有两个文件hdmi_encoder.vencoder.v。
7、若是需要重新编译这个设计,我们需要关联到library目录下的文件,这用的是“-ylib_dir”开关选项,lib_dir是参考库的目录,vcs从该目录下寻找包含引用的Verilog文件;“+libext+.v”参考目录的.v文件,多个文件使用“+”连接;“-R”这个开关选项是编译之后立即进行仿真。
指令:
shell>vcshdmi_encoder.vencoder.v-y../library+libext+.v-R
8、在当前文件夹中创建名称为hdmi2.f的文件,并使用编辑工具打开hdmi2.f文件,输入如下的内容:
指令:
shell>touchhdmi2.f
shell>gedithdmi2.f
9、使用开关选项“-f”,就是可以把所有的.v文件提前输入到.f文件中,下次运行vcs只需要直接调用.f文件即可,省去手工重复书写代码烦恼。
指令:
shell>vcs-fhdmi2.f-R
结果:
实验二
1、运行程序
指令:
shell>cdlab2
shell>vcs-fhdmi2.f-R
结果:
运行程序后,程序出现了两个警告,并且警告来自4个.v文件的hdmi_encoder.v文件。
2、使用编辑工具gedit打开hdmi_encoder.v文件,查看里面的代码。
按照下图所示的方式修改hdmi_encoder模块的程序,然后保存并退出。
指令:
shell>gedithdmi_encoder.v
3、重新编译和仿真
指令:
shell>vcs-fhdmi2.f-R
结果:
之前的警告提示消失,表明程序修改正确。
实验三:
1、进入lab3,并启动VCS的图形界面DVE。
指令:
shell>cdlab3
shell>vcs-fhdmi.f-debug_all-R-gui&
2、通过鼠标左键选中模块区的顶层文件“top”,然后点击鼠标右键,进入“showschematic”即可以查看顶层模块的原理图,如下图所示。
根据这种方法可以同样查看每个子模块的原理图。
3、查看某个模块的时序图,选中模块后点击鼠标右键,选“AddToWaves”,然后选“NewWaveView”,下图是“Hdmi_encoder”模块的部分时序截图。
第三部分——DC实验设计步骤简要说明
1、启动DC
指令:
shell>dc_shell
shell>design_vision
dc_shell>start_gui
结果:
2、检查synopsys_dc.setup文件
3、设置库文件和搜索路径
要调用的库文件:
target_library用于设置综合时所要映射的库。
link_library是链接库,它是DC在解释综合后网表时用来参考的库。
symbol_library为指定的符号库。
Synthetic_library是DesignWare综合库。
设置库文件和搜索路径的方法有两种:
方法一:
在图形界面下可以File→setup设置库文件和搜索路径,在searchpatch中添加rtl和script目录,设置link_library为*sc_max.db;target_library为sc_max.db;symbol_library为sc.db。
如下图所示:
方法二:
source脚本文件(tcl)
这种方法比图形界面设置库文件和搜索路径较为直观,并且容易检查,可读性较高。
4、读Verilog代码
操作:
file>read
5、Link
6、添加约束
source./scripts/HDMI_ENCODER.con
设置频率为300MHz,得到周期为3.33ns;一般来说输入和输出延迟分别最多占总周期的40%;
sourcelatency延迟时间表示时钟源产生时钟后,需要经过一段网络延时才能到达被综合的模块的时间。
networklatency延时表示经过sourcelatency后到达内部触发器需要的延迟。
uncertainty延时表示clockskew+jitter+margin的和。
transition延迟表示针对时钟端口或引脚使用的转换值。
propagated延迟,用于布局之后的综合,此时的网络延时已经可以由时钟树上的buffer确切的推断出。
7、检查和报告
check_timingtiming检查是否有路径没有加约束
report_clock报告时钟周期
report_clock-skew报告各部分的延迟时间
report_port-verbose报告所有input,output端口属性和约束值。
write_script-outscripts/HDMI_ENCODER.wscr保存上面的报告结果,
write-formatddc-hier-outmapped/HDMI_ENCODER.unmapped.ddc保存未映射的网表。
8、综合
compile_ultra综合优化时加入-no_autoungroup(不拆分模块边界)和-scan(直接将设计映射到扫描触发器)。
综合时不同的开关选项会得到不同的优化结果,-spg允许通过寄存器的复制、网表拓补结构的阻塞优化来优化设计;并且在ddc网格里加入大概的布局信息,布局信息作为ICC里placement的起点,更好的联系synthesis(DC)和post-placement(ICC)之间的时序关系。
retime选项可以通过修改寄存器的逻辑位置实现优化,如在合适的位置插入寄存器实现流水线结构增加电路的吞吐量。
compile_ultra不加-no_autoungroup选项时,即默认条件下会去除模块边界,通过合并两个模块之间的逻辑后再优化可实现更优的综合结
果。
这里我们选用-no_autoungroup-scan来优化设计。
9、查看和保存报告
report_timing>rpt/HDMI_TX/timing.rpt
时序报告
上图可知,slack的值为0,当slack的值大于等于0时表示综合后的结果满足时序约束要求,报告的PathType是max,即setuptiming(建立时间)的报告,在DC里不优化holdtiming(保存时间),holdtiming在ICC里做优化。
表格里Path左边的r和f代表是上升沿触发还是下降沿触发。
report_timing>rpt/HDMI_TX/area.rpt
面积报告
report_timing>rpt/HDMI_TX/power.rpt
功耗报告
第四部分——ICC实验设计步骤简要说明
一、给你的设计先创建一个Milkwaylibrary
1、更改当前目录lab1_data_setup看看该目录的内容
指令:
UNIX%cd../lab1_data_setup
UNIX%ls–a
2、从Linux系统终端里启用ICC
指令:
UNIX%icc_shell
3、通过查询一个用户定义的变量来验证synopsys_dc.setup文件被读进去:
指令:
printvarsdc_file
4、开启图形用户界面
指令:
start_gui
结果:
5、打开CreateLibrary对话框,然后按下图设置
操作:
FileCreateLibrary
6、创建risc_chip.mw文件
指令:
UNIX%ls–arisc_chip.mwOR
icc_shell>lsrisc_chip.mw
结果:
你可以看到三个库*文件和一个锁文件
2、加载网络表,TLU+:
的约束和控制
1、打开刚建的designlibery文件
操作:
FileOpenLibrary
结果:
如果入口是灰色的,说明已经打开。
2、打开ImportDesign对话框,并在Inputformat选择Verilog
操作:
FileImportDesigns
3、单击“添加”然后浏览选择文件design_data/risc_chipV并打开。
顶层设计的名义进入$top_design(或risc_chip)。
点击确定。
4、设置TLU+文件,按下图设置
操作:
FileSetTLU+
5、检查物理和逻辑库的一致性
指令:
check_library
6、检查TLU+文件被附加,他们通过三检查
指令:
check_tlu_plus_files
结果:
你应该看到max_tlu+列出的文件,min_tlu+和mapping_file和所有的检查应该通过了
7、验证已加载的指定链接库
指令:
list_libs
8、定义power/ground引脚和网络之间的逻辑连接
指令:
source$derive_pg_file
check_mv_design-power_nets
结果:
9、应用顶层设计约束
指令:
read_sdc$sdc_file
10、检查是否有任何关键时序约束(例如时钟,输入/输出约束)丢失
指令:
check_timing
11、请检查“timingexception””的限制是适用于您的设计。
指令:
report_timing_requirements
12、检查时间分析是否沿任何路径被禁用
指令:
report_disable_timing
13、检查设计是否已被配置为一个特定的“模式”或“案例”,例如“功能”与“测试”模式。
指令:
report_case_analysis
14、验证时钟是适当的模拟
指令:
report_clock
report_clock–skew
15、应用一些时间和优化中指定/脚本/opt_ctrl.tcl控件。
指令:
source$ctrl_file
16、保存文件,注意新的二进制文件在risc_chip.mw/cel
指令:
save_mw_cel–asRISC_CHIP_data_setup
3、基本流程:
设计规划
1、在提供的DEF文件读取
指令:
read_def$def_file
2、确定标准的单元不会被放置电源和接地的金属线下
指令:
set_pnet_options-complete{METAL3METAL4}
3、保存设计单元和通知新的二进制文件在risc_chip.mw/cel
指令:
save_mw_cel–asRISC_CHIP_floorplanned
四、布局
1、放置和优化设计的时间,并产生一个定时报告
指令:
place_opt
redirect-teeplace_opt.timing{report_timing}
2、在layoutwindow,放大并在标准单元布局看
3、保存设计单元
指令:
save_mw_cel–asRISC_CHIP_placed
5、CTS
1、您将使用默认设置来生成时钟树
指令:
remove_clock_uncertainty[all_clocks]
set_fix_hold[all_clocks]
clock_opt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IC 实习 研究 报告 文本 记录