集成电路EDA 课件5.1 第5章-RTL语言与工具-DC使用流程_第1页
集成电路EDA 课件5.1 第5章-RTL语言与工具-DC使用流程_第2页
集成电路EDA 课件5.1 第5章-RTL语言与工具-DC使用流程_第3页
集成电路EDA 课件5.1 第5章-RTL语言与工具-DC使用流程_第4页
集成电路EDA 课件5.1 第5章-RTL语言与工具-DC使用流程_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

集成电路EDA逻辑综合流程为何要通过综合步骤生成工艺所对应的门级网表?因为不管多么复杂的数字电路,其最终实现时都要使用MOS管搭建一个个的门电路实现其逻辑功能,而实际的MOS工艺存在各种寄生参数,进而对电路的性能造成一定的影响,代工厂会提供各个基本单元具体的工艺参数,根据这些工艺参数对门级网表进一步做仿真,从而能够更好的模拟芯片实际流片后的工作情况。1.准备工作将Verilog编写的电路,代工厂提供的元件库,以及设计约束输入综合软件中,便会输出可用于布局布线的基于工艺的门级网表。1.准备工作2.TCL脚本编写通过将指令语句保存在TCL脚本中,使用dc_shell调用执行就能够高效的完成综合。DC综合的TCL脚本的目标包括:指定工艺库、读入设计、规定设计环境,设计约束、执行综合、输出网表、时序描述等文件、TCL文件的编写流程及每个步骤主要使用的命令如图所示。主要需要设置驱动(drive)和负载(load)相关的参数:set_drive设置输入端口的驱动电阻,set_load设置输出端口的负载电容,set_driving_cell设置驱动使用的基本单元,set_fanout_load设置预期扇出负载值,set_wire_load_model设置线负载模型,这些设置值都要根据单元的实际设计需求进行确定。DC定义设计环境时所使用的模型DC定义设计环境时所使用的模型通过TCL定义设计环境的例子设置设计约束首先要通过create_clock指令创建时钟。

-periodxx用于指明时钟周期,

-waveform{xxxx}指明时钟信号为正的时间段。如图所示,一个周期为40ns,0-15ns为正的时钟信号,使用create_clock信号进行描述时,应写为:

create_clock-period40-waveform{015}clk设置设计约束除了需要声明时钟信号的延迟、翻转时间等,还需要通过set_input_delay指令和set_output_delay指定声明输入延迟和输出延迟,输入延迟指信号从时钟边缘通过外部逻辑到输入端口的时间,即输入信号是在时钟沿后多长时间到达模块的端口上的。输出延迟指信号从时钟边缘到引脚有效输出的时间,即输出信号在后级模块中需要在时钟沿之前提前多长时间准备好。DC在综合时会根据这些约束规划门级电路,从而确保所有的信号能够被正确的采样,从而保证芯片工作正常。设置设计约束通过TCL规定输入延迟和输出延迟的例子TCL脚本范例setsearch_path"../lib/logic../src"#设置搜索路径

settarget_library"slow.db"#设置标准元件库

setlink_library"*$target_library"setsymbol_library"smic18.sdb"#设置标准元件图标库

setreport_path"./reports"#设置reports文件夹

setoutput_path"./outputs"#设置outputs文件夹

TCL脚本范例(续)read_file-formatverilogcic_filter.v#读取verilog设计文件read_file-formatverilogdivider64.vcurrent_designcic_filter#指明主程序

link#工艺库链接

uniquify

setdesign_name[get_object_name[current_design]]set_wire_load_model-name"smic18_wl10"#设置线负载模型

set_wire_load_modetopTCL脚本范例(续)create_clock-period156\-waveform{078}[get_portsclk]-nameclk#设置时钟,周期156ns,脉宽0-78nscreate_generated_clock[get_pinsdiv/clk_div]\-source[get_portsclk]-divide_by64-nameclk_div#分频64后的时钟set_clock_latency2.5clk#延迟时间2.5ns

set_clock_transition0.3clk#翻转时间0.3ns

set_clock_uncertainty1.5-setupclk#建立时间1.5ns

set_clock_uncertainty0.3-holdclk#保持时间0.3ns

TCL脚本范例(续)set_drive0[listclkrst_n]#设置输入驱动强度为0

set_driving_cell-lib_cellNAND2X1in#设置驱动单元

set_input_delay35-clock[get_clocksclk]{inrst_n}

#设置输入延时35ns

set_output_delay35\-clock[get_clocksclk_div][get_portsout]#设置输出延时35ns

set_load2[all_outputs]#设置输出负载为2pF

set_max_area0TCL脚本范例(续)check_design>$report_path/check_design_before_compile.rptcheck_timing>$report_path/check_timing_before_compile.rptcompilecompile-incremental_mapping-map_efforthighwrite_sdf-version2.1$output_path/${design_name}_post_dc.sdf

#时序描述write-fddc-hier-output$output_path/${design_name}_post_dc.ddcwrite-fverilog-hier-output$output_path/${design_name}_post_dc.v#网表

write_sdc$output_path/${design_name}_post_dc.sdc#约束TCL脚本范例(续)report_constraint-all_violators\-verbose>$report_path/constraint.rptreport_qor>$report_path/qor.rptreport_power>$report_path/power.rptreport_area>$report_path/area.rptreport_cell>$report_path/cell.rptreport_clock>$report_path/clk.rptreport_hierarchy>$report_path/hierarchy.rptreport_design>$report_path/design.rptreport_reference>$report_path/reference.rptreport_timing>$report_path/timing.rptcheck_design>$report_path/check_design_post_compile.rptcheck_timing>$report_path/check_timing_post_compile.rpt#start_guiTCL脚本范例(续)3.运行综合打开TCL脚本,检查脚本内容是否有误。如果有误则敲i健进入编辑模式修改。修改完毕后退出编辑模式。3.运行综合dc_shell-fdc_script.tcl

执行TCL脚本。等待脚本执行结束,每一步执行后,如果没有出错,terminal中会打印1,否则会打印0并显示报错信息。如果出现报错,则根据信息返回修改dc_script.tcl,直到没有任何报错信息。4.检查outputs文件是否正常生成网表文件(.v)、时序描述文件(.sdf)等,reports文件夹下是否正常生成各项报告。5.运行GUI界面至此DC综合步骤已经结束,可以在dc_shell中输入start_gui运行GUI界面,在LogicalHierarchy窗口中选中cic_filter,点击Schematic→NewSchematicView,右侧窗口中显示cic_filter的图标,双击图标后显示DC综合后以逻辑门搭建出的cic_filter的结构。6.5.运行GUI界面5.运行GUI界面5.运行GUI界面5.运行GUI界面几点说明什么是库(libraries)?为什么需要库(libraries)?DC的前期工作流程,DC会将我们的设计转换(translation)为一个gtech网表。DC运行中需要如下几种库文件:目标库(target_library)链接库(link_library)符号库(symbol_library)综合库(synthetic_library)Specifylibraries目标库是gtech网表要最终映射(mapping)到的库,库文件有两种格式,有以.lib结尾和.db结尾,.lib是我们可以阅读的,目标库包含了各个单元cell的行为、引脚、面积、时序信息等,DC会根据用户给定的约束(例如时钟频率和面积等)去选择合适的单元,去掉冗余的单元,最后将优化之后的电路映射(mapping)到目标库(target_library)上。目标库(target_library)链接库(link_library)

:设置模块或单元电路的引用,指定购买的付费IP、存储器、IO等,例如购买了Synopsys的某个IP,则需要在这个地方指定。符号库(symbol_library):

定义单元电路Schematic库,在design_vision图形化模式下查看综合图标需要设置,后缀是.sdbIP库(synthetic_library):也称模型库,DC综合时用来将HDL代码转化为相对应的元件时所参考的模型库,比如RTL中的符号“+”,可以通过查找模型库将生成某一类加法器。默认的syntheticlibrary一般有:dw_foundation.sldb.在designcompiler的安装目录下可以找到。其他库

set_app_vartarget_library../lib/smic18_ss.db

//指定目标库ff和ss代表不同的工艺角

set_app_varlink_library../lib/smic18_ss.db

//指定链接库进行库(libraries)指定根据流程图,specifylibraries之后就是read_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论