当前位置: 首页 > article >正文

【数字IC】——逻辑综合,物理数据的读入

1、概述

首先需要读入将会被综合的Design:VerilogSystemVerilogVHDL

逻辑综合通常包含两个库:逻辑库物理库

1.1 逻辑库【Logic Library(db files)】

本章节将不再对逻辑库进行赘述,大家感兴趣的话可以阅读我这两篇博客

逻辑综合——Flatten

逻辑综合——Hierarchical

 1.2 物理库【Physical Library】

说到物理库,大家的第一反应会是什么呢?是版图?是寄生参数?还是?请大家跟随我的脚步一起来揭开其神秘的面纱叭~


2、物理数据

物理数据——design library主要分为两大板块,design library相当于一个容器~~~

分别为 Reference library  Technology data

2.1 Reference library

Reference libraries 包括 Cell Size 和 pin location等信息。

Standard Cell Library
IP or macro Cell Library
I/O pad Cell Library

2.1.1 Standard Cell Library

标准单元库是先前设计好的逻辑门的layout,也就是GDS版图。

标准单元库

        标准单元库有很多特征:一个库中的标准单元有着相同的高度,它们通常由ASIC vendor或者library group提供,如果我们采用12nm的工艺去做设计,我们所使用的Standard cell library是唯一的。

        library中一般包含inverters、buffers、ands、ors、nands、nors、muxes、latches、flip-flops

---------------------------------【Layout Views】 vs.【Abstract Views】-------------------------------

Abstract Views 包含 P&R 需要的最小数据。

  1.  Cell 的轮廓(size and shape of the cell)
  2.  Pin 的位置以及layer
  3. 金属 blockage (多用在Macro中)

Standard Cell 的 Layout ViewsAbstract Views 最初以标准格式 GDSII 构建。

后来转化为 tool-specific formats,比如被Synopsys tool使用的Milkyway database。


2.1.2  IP or macro Cell Library

        IP or Cell Library 描述了IP以及macro的layout,上一章我已介绍了IP和macro的概念,大家点进以下链接即可阅读。

http://t.csdnimg.cn/cqMCe


2.1.3  IO pad Cell Library

        IO pad Cell Library 描述了IO pad的layout,何为IO pad呢?下面做一个小小的补充。

补充:IO pad                                                                                                                

        IO pad是不仅仅是输入输出信号的连接点,它内部通常包含一定的电路结构,这些电路可以非常复杂,可以将芯片管脚的信号传入到芯片内部,又可以将芯片内部输出的信号经过处理传到芯片管脚。


2.2 Technology date

  • Technology file 包含以下文件:

2.2.1 Technology File

对于每个技术来说,technology file.tf)是唯一的

其包含每个 metal layer的名字、物理和电学特征 以及 布线设计规则。

常见的 technology file 的格式如下所示


Technology {
 units
 operating_conditions
 routing_rule_modes
}

PrimaryColor {
 primarycolor_attributes
}


Color color_value {
 color_attributes
}...

LineStyle "name" {
 linestyle_attributes
}...

Tile "name" {
 tile_attributes
}...

Layer "name" {
 display_attributes
 layout_attributes
 parasitic_attributes
 physical_attributes
}...

ContactCode "name" {
 contactcode_attributes
}...

DesignRule {
 layer_attributes
 rule_attributes
}...

FringeCap value {
 fringecap_attributes
}...

CapModel {
 capmodel_attributes
}

CapTable {
 captable_attributes
}

ResModel {
 resmodel_attributes
}

PRRule {
 prrule_attributes
}...

DensityRule {
 densityrule_attributes
}...

SlotRule {
 slotrule_attributes
}...

 2.2.2 TLUPlus file

TLUPlus file包含了RC查找表。

TLUPlus实际上是一个二进制文件,是由“Interconnect Technology Format”(ITF)文件编译而来的。

什么是ITF文件呢?                                                                                              

ITF文件是Synopsys的工艺参数文件,包含了有关该技术的物理特征信息(层厚度、电阻率、介电常数和温度系数等)。

可以使用 StarRC tool 将 ITF 中的数据转换为RC模型,并输出为TLUPlus文件。 


 2.2.3 Layer Mapping file

顾名思义,Mapping就是映射的意思。那么是who映射到who呢❓❓❓

我们这步需要用到上述的两个文件:Technology File  和 TLUPlus file

Layer mapping file TLUPlus 中 layer/via 的名字 匹配 Technology file 中 layer/via 的名字


 2.2.3 Milkyway design library

我看到这里的小伙伴们,还记得开头那张容器图嘛

那就是Milkyway design library

我们需要把Reference library、Technology file 以及 TLUPlus file 进行打包,以供DC-topo使用。


3、加载物理数据的方法

  • 如果是第一次加载物理数据,可以使用以下参考代码
set_app_var mw_reference_library $MW_REF_LIBS
set_app_var mw_design_library $MW_DESIGN_LIB

create_mw_lib \
    -technology $tech_file \
    -mw_reference_library $mw_reference_library \
                          $mw_design_library

open_mw_lib $mw_design_library

# CONSISTENCY CHECK betwwen logical and physical library
check_library > ../

set_tlu_plus_files \
    -max_tluplus   $TLUPLUS_MAX
    -tech2itf_map  $MAP_FILE

#CONSISTENCY CHECK between TLUPlus and technology files
check_tlu_plus_files
  •  在综合的时候我们为了debug或者优化,可能会多次读入设计,如果想要RE-LOADING已经存在的设计,可以仅采用以下代码。
open_mw_lib $mw_design_library

set_tlu_plus_files \
    -max_tluplus   $TLUPLUS_MAX
    -tech2itf_map  $MAP_FILE

4、综合全流程

4.1 Defining Logical Libraries

dc_shell -topo > set_app_var search_path "$search_path mapped rtl libs cons"
dc_shell -topo > set_app_var target_library file_name.db
dc_shell -topo > set_app_var link_library   "* $target_library"
dc_shell -topo > set_app_var symbol_library file_name.sdb

 4.2 Loading Logical Data

UNIX% dc_shell -topo

dc_shell -topo > ...; # Load physical technology data
dc_shell -topo > define_design_lib WORK -path ./work
dc_shell -topo > read_verilog {TOP.v}
dc_shell -topo > current_design TOP
dc_shell -topo > link
dc_shell -topo > ...; # Load floorplan data
dc_shell -topo > check_design
dc_shell -topo > write -f ddc -hier -out TOP.ddc
dc_shell -topo > source -echo -verbose TOP.con
dc_shell -topo > check_timing
dc_shell -topo > compile_ultra
dc_shell -topo > report_constraint -all_violators
dc_shell -topo > change_names -rule verilog -hier
dc_shell -topo > write -f verilog -hier -out TOP.v
dc_shell -topo > write -f ddc     -hier -out TOP.ddc

  4.3 Loading Physical Data

dc_shell -topo > set_app_var mw_reference_library $MW_REF_LIBS
dc_shell -topo > set_app_var mw_design_library $MW_DESIGN_LIB
dc_shell -topo > create_mw_lib \
                 -technology $tech_file \
                 -mw_reference_library $mw_reference_library \
                 $mw_design_library
dc_shell -topo > open_mw_lib $mw_design_library
dc_shell -topo > check_library > ../
dc_shell -topo > set_tlu_plus_files \
                 -max_tluplus   $TLUPLUS_MAX
                 -tech2itf_map  $MAP_FILE
dc_shell -topo > check_tlu_plus_files
dc_shell -topo > read_verilog {TOP.v}
dc_shell -topo > current_design TOP
dc_shell -topo > link
dc_shell -topo > source DESIGN_NAME_phys_con.tcl
dc_shell -topo > read_floorplan MYDESIGN.fp
dc_shell -topo > extract_physical_constraints DESIGN_NAME.def

http://www.kler.cn/news/283861.html

相关文章:

  • Vxe UI vue vxe-table 如何在表格中使用上传附件、上传图片
  • Linux下编译安装SuperLU
  • 应对Java虚拟机(JVM)负载突然增大的全面指南
  • Sentinel-1 Level 1数据处理的详细算法定义(七)
  • ARM/Linux嵌入式面经(三二):百度
  • 【区块链 + 司法存证】智慧审判留痕系统 | FISCO BCOS应用案例
  • 掀起社交娱乐新浪潮!AI如何应用到短视频APP?
  • Windows 局域网文件共享
  • js 如何获取文件名
  • 哈希(C语言)
  • 华为设备ENSP-AAA认证配置
  • Python | Leetcode Python题解之第386题字典序排数
  • FPGA 学习之路:挑战与策略
  • 磁盘I/O性能优化示例
  • Go 语言中的接口详解
  • Django 使用Apscheduler执行定时任务
  • vue nginx部署 配置 解决href = ‘/login路由‘ 跳转404问题
  • 代码随想录刷题day17丨654.最大二叉树,617.合并二叉树,700.二叉搜索树中的搜索,98.验证二叉搜索树
  • Java线程生命周期详解_(1)
  • 在 Maven 的 POM 文件中配置 npm 镜像源
  • SpringMVC处理流程介绍
  • 【HuggingFace Transformers】BertSelfOutput 和 BertOutput源码解析
  • 开源个人云存储管理专家:Cloudreve
  • 零基础入门转录组数据分析——单基因ROC分析
  • Leetcode Java学习记录——动态规划基础_3
  • 尚硅谷大数据技术-Kafka视频教程-笔记01【Kafka 入门】
  • 8月30复盘日记
  • k8s-pod 实战四 什么是 Kubernetes Pod?如何在生产环境中使用它?(学习专场,实战就看这一篇就够了)
  • 把http网站变成https
  • WPF 使用PdfiumViewer实现PDF预览与打印