LAB1:Data Setup 数据设置

  • 1. 数据准备
  • 2. 创建Milkway设计库
  • 3. 读入设计(网表文件)
  • 4. 设置TLU+文件
  • 5. 读入SDC文件
  • 6. 检查设计的合理性

1. 数据准备

在启动ICC工具之前,检查数据准备是否齐全,主要包括:
(1)非库文件:

  1. ICC启动环境设置文件:.synopsys_dc.setup
      该文件内容与DC中用的启动文件完全一样。软件在启动时会自动加载search path、target_library、link_library这些库,同时还定义了一些关联命令和变量,如下:
  2. 门级网表文件( .v 文件):RISC_CHIP.v
      该文件是由DC工具产生的网表文件(. v文件),某些部分可以人为进行修改/编写。
  3. 设计的布局图:RISC_CHIP.def
      叫设计交换格式,是ASCII格式文件,它描述的是实际的设计,对库单元及它们的位置和连接关系进行了列表。由ICC经过floorplan后生成。
  4. 时序约束文件( sdc 文件):RISC_CHIP.sdc
      该文件(. sdc)由DC工具导出,并进行人工修改,使其满足设计要求。主要包含以下内容(时钟定义、周期、不确定度、转换时间、延迟时间和负载等)

(2)库文件:
  1. 标准单元库( .db文件 ):用于提供std cell、IO、Macro的时序、功耗和面积等信息。

  2. 工艺文件( .tf文件 ):包含各个金属层对应的工艺参数(如图形定义及显示、互连线工艺信息和通孔信息),每种工艺对应唯一的工艺文件。
  3. 寄生参数库( TLU+文件 ):RC寄生模型文件,用来计算互连线RC的。其一般会对深亚微米的一些效应进行建模,一般有max和min两个corner的模型。

  4. MilkWay参考库:包含标准单元库、IO库、Macro库的各种参考库。
Milkway知识补充:
  Milkway数据库包含同一个cell的不同表示,称为cell的 “ 视图 ” ,它可以分为参考库和设计库。且ICC工具只能创建设计库,参考库需要借助Milkway工具。
  Milkway库最重要的功能就是记录工艺以及物理相关的信息,主要体现在FRAM View和CEL View上,除此之外,还可以记录PPA等信息,下面来具体了解一下这两种View:
   a. CEL View:诸如通孔via、标准单元、宏单元或整个芯片的物理结构的完整版图信息;包含cell的布局、布线、引脚和网表信息。
   b. FRAM View:用于布局布线的抽象化的版图物理信息,只有单元的轮廓、引脚位置和层、Metal blockages。

2. 创建Milkway设计库

  1. 启动ICC工具。(ICC启动后所有的输出均可在输出日志文件log中查看)
icc_shell
  1. 验证 .synopsys_dc.setup 文件已被读过,可通过查询其中一个变量进行检测。
printvar sdc_file
  1. 启动GUI
start_gui
  1. 创建Milkway设计库
     a. 在Main Window窗口菜单栏中选择File—Create Library,打开Create Library窗口
     b. 使用已定义过的逻辑库名和工艺文件名(.synopsys_dc.setup文件中已定义好的变量)
     c. 将参考库链接到设计库中。
    单击Add按钮,返回上两层目录,选择 ref 中的mw_lib文件,选择sc、io和ram16x128文件。
     d. 勾选Open library后,点击OK即完成库的创建(忽略此处警告,因为后面会加载TLU+文件)。

    以上图形界面操作对应的命令如下:
create_mw_lib -technology $tech_file -mw_reference_library "$mw_path/sc $mw_path/io $mw_path/ram16x128" -bus_naming_style {[%d]} -open $my_mw_lib
  1. 在另一个终端或在icc_shell命令行中执行以下命令,观察新创建的risc_chip.mw(设计库)内容。(可以看到4个文件如下)
ls -a risc_chip.mw
#或
icc_shell > ls risc_chip.mw

3. 读入设计(网表文件)

  1. 读入网表前,先检查设计库是否打开:观察File中的Open Library条目是否为灰色,是则设计库是打开的,如下图:
  2. 在菜单栏中依次选择 " File " —" Import Design "。
  3. 在输入形式一栏中选择verilog格式,因为db格式和ddc格式是由DC导出的,会包含一些时序约束,但不是特别清晰。
  4. 点击Add按钮,依次选择:design_data—RISC.CHIP.v(网表文件),并点Open;并 在 " Top design name " 后边填写 $top_design / RISC_CHIP(网表中顶层设计的名称),点击OK,完成设计中cell的创建,如下图:

    以上GUI操作可以用下面命令执行:
import_design $verilog_file -format verilog -top $top_design

verilog网表文件被读入后,会弹出Layout Window窗口,此时由于没有进行布局规划,设计中的所有单元都被叠放在原点,如下图:

问题1:Milkway设计库有什么变化?
回答:库中增加了一个CEL文件.

4. 设置TLU+文件

  1. 在MainWindow窗口菜单栏中依次选择 " File"—" Set TLU+ ",在打开的对话框中依次填写下列文件(路径:ref—tlup):
     a. Max TLU + file:cb13_6rm_max.tluplus
     b. Min TLU + file:cb13_6rm_min.tluplus
     c. 工艺文件和ITF file的映射文件:cb13_6m.map
  2. 检查物理库与逻辑库的一致性
check_library      #默认检查命令,会报错,忽略即可
set_check_library_options -all     #完整检查命令

注:a. 这里使用默认检查而不是完整检查,因为完整检查包括UPF power的约束、MMMC和CCS电流源模型的检查,这些检查将生成许多警告和错误,不适用于我们的库。
   b. 若以上检查列出了缺少或不匹配的标准单元、macro和IO pad,就要修改库文件。

  1. 检查TLU+文件,是否通过三个完整性检查
check_tlu_plus_files

主要检查 itf 、mapping file、tech file之间的一致性,如金属层和via的名字、最小宽度和最小间距等。

  1. 验证logical library已被加载
list_libs


注:可以发现有6个逻辑库在启动环境设置文件(.synopsys_dc.setup)中被定义,及两个总是被通用逻辑库 getch.db和standard.sldb 加载的。

  1. 定义电源地引脚与网络间的逻辑连接
source $derive_pg_file
check_mv_design -power_nets



保证所有的电源地引脚都连接。

5. 读入SDC文件

在菜单栏中依次选择 " File "—"Import ”—“ Read SDC ”,Version选择Latest即可,或输入命令

read_sdc $sdc_file

6. 检查设计的合理性

注:接下来的几条命令用来验证设计的关键约束,或获取关键约束的特殊信息,对于后续的布局布线非常有用。
  1. 检查是否缺少任何关键时序约束(如时钟、输入输出约束)

check_timing



注:检查结果不应该出现任何警告或报错,报告末尾出现“ 1 "表示没有缺失或不一致的约束。
  2. 检查设计是否有时序例外或时序异常。如false path、multicycle path及最小最大延时约束,这些约束对于单周期时序属于例外。

report_timing_requirements


  3. 检查是否有禁止时序分析的路径。若存在禁止的时序路径,需要和前端人员核对在物理设计中是否需要。

report_disable_timing

  4. 检查设计是否已经设置为特定的 “ mode ”或 “case ”。如功能或测试模式。这主要用来检查设计是否处于物理设计优化的正确模式。

report_case_analysis


  5. 检查时钟是否正确建模。

report_clock
report_clock -skew


注:输出报告确认时钟没有“ 传播 ”属性。(没有做CTS)

注:报告表明时钟树效应正在建模(如存在skew、transiton、insertion delay).
  6. 执行时序和优化脚本文件( ./scripts/opt ctrl.tcl )。

source $ctrl_file


在 .synopsys_dc.setup 文件中被定义。
  7. 设置 0 互联延时约束并报告时序。此时是最理想的情况,在该模式下报告时序,不应该存在setup违反,若存在,需返回前端修改设计,或修改SDC中约束值。

source sc[Tab]z[Tab]  #该脚本中包含了0互联延时命令

zic_timing,tcl脚本内容如下。

注:
  a. 默认情况下,时序报告显示的是最大延时(setup)时序,若要查看最小延迟或hold报告,需要输入以下命令:

report_timing -delay min

  b. 此外,还可以用以下命令来报告设计中的DRC问题,如下

report_constraint -all

  8. 上图中的redirect -tee命令是显示相应的时序报告,并保存报告。可以通过在icc_shell中执行“ cat ”查看文件内容。

exec cat zic.timing

结果与第7步一样。其中有三个时序路径被列出,分别是input、output 和 clk,这些路径在时序优化控制文件中被定义(第6步可以看出)。
  9. 移除理想网络。

remove_ideal_network [get_ports scan_en]

" 扫描使能 “信号(scan_en)被定义为一个理想网络(在$sdc_file),以防止综合缓冲这个信号。移除理想的网络定义,以便在物理设计期间进行缓冲器插入。
  10. 保存单元,并观察在risc_chip.mw/CEL文件下新生的文件。

save_mw_cel -as RISC_CHIP_data_setup
ls

至此,ICC_lab1的数据设置工作基本完成,接下来的基本流程将在以下几篇文章详细展开。


不积硅步,无以至千里;不积小流,无以成江海

ICC 图文学习——LAB1:Data Setup 数据设置相关推荐

  1. HALCON 21.11:深度学习笔记---Data(数据)(3)

    HALCON 21.11:深度学习笔记---Data(数据)(3) HALCON 21.11.0.0中,实现了深度学习方法.其中,关于术语"数据"的介绍如下: 术语"数据 ...

  2. ICC 图文学习——LAB2:Design Planning 设计规划

      这一步也可以叫floorplan(布局规划),对设计进行布局规划.floorplan的合理性直接关系到芯片的时序收敛.布线畅通.电源稳定以及良品率等.这部分内容非常重要,只有这一步做好了,后面成功 ...

  3. ICC 图文学习——LAB0:ICC图形界面

      解决了库的问题,开始上手跑lab了.在做lab的过程中,会补充一些相关的知识点和自己的学习笔记,加深理解,防止遗忘. LAB0:熟悉ICC图形界面 LAB 0A 1. 启动ICC 2. Layou ...

  4. ICC 图文学习——LAB4:CTS 时钟树综合

      时钟树综合的定义:时钟网络从根节点逐渐插入驱动器(buffer.inverter)从而达到其叶节点,按照芯片时钟网络的约束要求产生时钟树的过程.   主要内容: ·完成时钟树的综合CTS(负载平衡 ...

  5. ICC 图文学习——LAB3:Placement 布局

    floorplan完成了芯片的整体规划后,需要对标准单元进行摆放.布局阶段主要内容包括: · 完成布局和时序优化的设置 · 完成DFT和功耗优化的设置 · 完成标准单元位置的摆放 · congesti ...

  6. ICC 图文学习——LAB6:Chip Finishing 芯片完成

      布线工作完成后,主体工作已经完成,chip finishing 阶段主要是做检查设计.提高良率和物理验证工作,主要内容如下: ·DRC 和 LVS检查 ·进行连线扩展和加宽连线来减少关键区域 ·修 ...

  7. ICC学习——LAB1

    ICC学习--LAB1数据准备和基础流程 文章目录 ICC学习--LAB1数据准备和基础流程 Task1 创建Milkway库 Task2 载入netlist,TLU+,约束和控制 Task3 基础流 ...

  8. [SpringBoot2]ajax函数中data参数的数据设置方式

    ajax函数中data参数的数据设置方式:

  9. HALCON 20.11:深度学习笔记(3)---Data(数据)

    HALCON 20.11:深度学习笔记(3)---Data(数据) HALCON 20.11.0.0中,实现了深度学习方法.其中,关于术语"数据"的介绍如下: 术语"数据 ...

最新文章

  1. OpenCV最经典的3种颜色空间(cv2.cvtColor)及互相转换
  2. sklearn自学指南(part31)--半监督学习
  3. 3d打印 路径规划_“光博会+工博会”双展来袭!这个9月,知象光电3D视觉工业应用方案,重磅亮相!...
  4. ParameterizedTypeImpl
  5. 全球顶尖科学杂志:阿里AI语音技术超越谷歌,可读懂人类潜藏意图
  6. 【转载】此时此刻的飞秋爱好者
  7. python解一元三次方程_python/sympy求解矩阵方程的方法
  8. CSS 基础入门语法
  9. 为什么说 Transformer 就是图神经网络?
  10. 目标服务器已挂起重新启动_CentOS 7 Apache 服务器证书安装
  11. 2022年计算机一级考试网络安全素质教育模拟试题及答案
  12. java+swing+mysql员工工资管理系统设计分析
  13. matlab对矩阵谱分解
  14. 钟平老师的逻辑英语语法
  15. ES的同义词、扩展词、停止词热更新方案
  16. LTE中阻塞干扰,杂散干扰,邻信道干扰,交调干扰,加性噪声干扰分析
  17. 安德鲁1.2Ku使用感受
  18. 谷歌抢注18个“.中国”域名:扫清障碍
  19. 深入Unreal蓝图开发:实现蓝图模板函数
  20. 宣传片常用的策划方案

热门文章

  1. ggplot2-标度、坐标轴和图例7
  2. 机器学习基石(林轩田)第一章 笔记与感悟总结
  3. MUI中vue的@click事件没反应
  4. PHP等比缩放并补白
  5. 赚钱的地方,除了工资,还有这些
  6. uniapp map画多边形 打点连线
  7. 克鲁斯卡尔(Kruskal)
  8. OpenCV“迷雾”车道识别的反思
  9. HLS(一)Vivado高层次综合概述
  10. 刚刚!微软又放大招!让草稿几秒钟变App!