Design Compiler:Milkyway库的创建与使用

相关阅读

Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm=1001.2014.3001.5482


        DC Ultra推出了拓扑模式,在综合时会对标准单元进行粗布局(Coarse Placement)并使用虚拟布线(Virtual Routing)技术计算互联延迟,关于拓扑技术的更详细介绍,可以参考下面的博客。

Design Compiler:什么是拓扑技术(Topographical)?https://chenzhang.blog.csdn.net/article/details/145748306

        由于拓扑模式需要使用物理信息,即除了逻辑库之外还需要使用物理库,它可以是Milkyway库( DC Ultra、DC Graphical、DC NXT与IC Compiler支持)或者NDM库(DC NXT与IC Compiler II支持),物理库中包括了标准单元和宏单元的形状图(Frame)。注意:老版的.pdb格式的物理库已经被抛弃了。

        本文就将介绍Milkyway库创建与使用。

Milkyway参考库

        Milkyway参考库以目录的形式存在(这与逻辑库不同),不同类别的单元以不同的目录表示(例如标准单元、IP单元、宏单元),每个目录包含几个子目录:CEL、FRAM、LM(可选)。

        下面的例子展示了Milkyway参考库的结构。

physical_libs/
├── IP_lib/
│   ├── CEL/
│   │── FRAM/   
│   └── LM/
│
├── Std_Cell_lib/
│   ├── CEL/
│   │   ├── and2a1:1
│   │   ├── and2a2:1
│   │   └── xor3a27:1
│   ├── FRAM/
│   │   ├── and2a1:1
│   │   ├── and2a2:1
│   │   └── xor3a27:1
│   └── LM/
│       ├── sc_max.db
│       └── sc_min.db
│
└── Macro_lib/├── CEL/│── FRAM/└── LM/

        CEL目录下包含了单元的完整布局视图,会在布局布线(P&R)完成后被IC Compiler使用,当设计准备好tape out时,该视图用于将设计的完整布局表示导出为标准格式的GDSII文件。这个文件必须包含设计的所有物理数据,而不仅仅是P&R阶段所用的抽象数据。

        FRAM目录下包含了单元的抽象视图,会在布局布线(P&R)阶段被IC Compiler使用(以及在综合阶段被Design Compiler使用)。

        LM目录下包含了逻辑库,当然也可以将其保存在其他地方而不是Milkyway参考库中(使用逻辑库需要保证search_path、link_library、target_library变量正确设置)。

技术文件

        技术文件是针对每种工艺技术唯一的描述文件,为所有工艺层定义参数,包括:层名、层编号、显示用的颜色和图案、设计规则(如宽度、间距、面积、间距等)、通孔接触定义(包括上下金属层、金属包围等)、默认通孔阵列规则、区域定义等信息。

        Design Compiler可以利用技术文件建立简单的RC模型,用于计算互连的RC参数。

        下面的例子展示了技术文件的内容。

Technology {name             = "cb1314"dielectric       = 3.73e-05unitTimeName     = "ns"timePrecision    = 1000unitLengthName   = "micron"...
}Layer "METAL1" {layerNumber      = 14maskName         = "metal1"pitch            = 0.41defaultWidth     = 0.16minWidth         = 0.16...
}

高阶RC模型文件和映射文件

        TLUPlus文件用于存储高阶RC查找表,主要用于建模超深亚微米工艺效应,如:包覆介电层、金属填充、浅沟槽隔离、铜凹陷(包括密度分析和宽度/间距)、梯形导体等。TLUPlus文件本身是二进制格式,但它可以通过将ASCII格式的ITF文件通过StarRC编译而来。

        下面的例子展示了TLUPlus文件头部的注释,这也是来自ITF文件。

# TECHNOLOGY=1314max
# CONDUCTOR cm4  { THICKNESS=0.90  WMIN=0.44  SMIN=0.46  RPSQ=0.060 }
# CONDUCTOR cm3  { THICKNESS=0.35  WMIN=0.20  SMIN=0.21  RPSQ=0.081 }
# CONDUCTOR cm2  { THICKNESS=0.35  WMIN=0.20  SMIN=0.21  RPSQ=0.081 }
# CONDUCTOR cm1  { THICKNESS=0.26  WMIN=0.16  SMIN=0.18  RPSQ=0.109 }
# CONDUCTOR poly { THICKNESS=0.18  WMIN=0.13  SMIN=0.20  RPSQ=10.965 }
...
# DIELECTRIC cm4_extra1 { THICKNESS=0.23  ER=3.7 }
# DIELECTRIC cm4_extra2 { THICKNESS=0.03  ER=8.1 }
# DIELECTRIC cm4_extra3 { THICKNESS=0.09  ER=3.7 }
...

        除了使用TLUPlus文件,还可以使用nxtgrd文件,它是比TLUPlus文件还准确的RC模型文件,StarRC用该文件进行寄生参数提取,但是对于Design Compiler而言,使用的依然是其中的TLUPlus数据,因此结果是一致的。

        映射文件用于将RC模型文件中的层名与技术文件中的层名进行映射,如图1所示。如果RC模型文件中的层名与技术文件中的层名完全一致,则可以不指定映射文件;如果两者不一致且未指定映射文件,流程后期将报错。

图1 映射文件

Milkyway设计库

        要使用物理库,用户必须创建一个Milkyway设计库,它充当一个容器,存储了技术文件和Milkyway参考库的路径(注意不是参考库本身,且可以是绝对路径或相对路径),如果用户选择将设计以CEL形式保存在Milkyway设计库中,Milkyway设计库中还有设计相关的信息和TLUPlus数据(但很遗憾,Design Compiler并不能重新读取保存为CEL的设计,因此将设计保存为ddc格式可能更好)。

        使用create_mw_lib命令创建Milkyway设计库,同时必须使用-technology选项指定技术文件,可以使用-mw_reference_library选项指定Milkyway参考库(也可以选择之后指定,但必须在综合前指定),如下所示。

dc_shell> create_mw_lib *** -technology *** -mw_reference_library ***

        需要注意的是,Milkyway设计库的创建需要在未打开Milkyway设计库时进行,因为Milkyway设计库的创建涉及到短暂打开库并关闭的过程。如果在已打开Milkyway设计库的情况下创建Milkyway设计库会出现下面的错误。

Error: Fail to create library. Only one library can be opened for editing.  (MWUI-290)

        如果Milkyway参考库的位置改变了,或者需要指定Milkyway设计库的参考库,可以使用set_mw_lib_reference命令,如下所示。

dc_shell> set_mw_lib_reference *** -mw_reference_library ***

        需要注意的是,set_mw_lib_reference命令也只能在未打开Milkyway设计库时进行(即使设置的设计库就是被打开的那个),否则会出现下面的错误。

Error: Fail to set mw reference libraries for '***' (MW-215)

        使用open_mw_lib命令可以打开一个Milkyway设计库,但无法打开其中的CEL(如果在之前保存了的话),如下所示。使用current_mw_lib命令可以查询打开的Milkyway设计库。

dc_shell> open_mw_lib ***

        如果在打开了Milkyway设计库的情况下,再次尝试打开其他设计库,则会出现下面的错误。

Error: only one library can be opened as main library. (MWUI-209)

        使用set_tlu_plus_files命令可以指定RC模型文件和映射文件,如下所示。

dc_shell> set_tlu_plus_files -max_tluplus *** -min_tluplus *** -tech2itf_map ***

        需要注意的是,如果选择将设计保存为CEL,则TLUPlus数据是跟随设计一起保存的,但又无法被Design Compiler重新读取,因此在使用之前保存了CEL的Milkyway设计库时,需要重新使用set_tlu_plus_files命令。

        使用write_milkyway命令可以将设计以CEL形式保存为mw_design_library变量指定的Milkyway设计库,如下所示。该变量通常无需用户设置,因为open_mw_lib命令会自动将其设置为将打开的Milkyway设计库(设置该变量甚至可以完成将一个设计保存到另一个完全不相关的Milkyway设计库中)。

dc_shell> write_milkyway -output ***

        上面的-output选项指定了设计文件名(最好和设计名一致)。设计文件会保存在mw_design_library变量指定的Milkyway设计库中的CEL目录下,还会有类似:1形式的后缀,这表示设计文件的版本,如果以同一个名字多次保存设计,版本号则会自动递增,除非使用-overwrite选项指定覆盖最新版本的设计文件。

        需要注意的是,在将设计保存为CEL形式之前,需要保证设计是已映射的且唯一化的,关于唯一化的更详细介绍,可以参考下面的博客。SDC命令详解:使用uniquify命令进行唯一化https://blog.csdn.net/weixin_45791458/article/details/148564739?ops_request_misc=%257B%2522request%255Fid%2522%253A%25227917092785529b70a6fce5a75c531564%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=7917092785529b70a6fce5a75c531564&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-148564739-null-null.nonecase&utm_term=%E5%94%AF%E4%B8%80%E5%8C%96&spm=1018.2226.3001.4450

写在最后

        虽然Milkyway库已略显过时,被最新的NDM库(DC NXT与IC Compiler II支持)代替,但对于那些因为种种原因还在使用DC Ultra、DC Graphical或IC Compiler的用户来说,它依然是一个重要的概念,这也是本文存在的意义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91874.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式教学的云端革命:高精度仿真如何重塑倒车雷达实验与工程教育——深圳航天科技创新研究院赋能新一代虚实融合实训平台

一、嵌入式教学的困境与破局之道 在传统嵌入式系统教学中,硬件依赖始终是核心痛点。以“倒车雷达实验”为例,学生需操作STM32开发板、超声波传感器、蜂鸣器等硬件,面临设备损耗、接线错误、调试效率低等问题。更关键的是,物理硬件…

flutter-boilerplate-project 学习笔记

项目地址: https://github.com/zubairehman/flutter_boilerplate_project/tree/master 样板包含创建新库或项目所需的最小实现。存储库代码预加载了一些基本组件,例如基本应用程序架构、应用程序主题、常量和创建新项目所需的依赖项。通过使用样板代码…

集成电路学习:什么是CMSIS微控制器软件接口标准

CMSIS,即Cortex Microcontroller Software Interface Standard(Cortex微控制器软件接口标准),是由ARM公司与多家不同的芯片和软件供应商紧密合作定义的一个标准。该标准旨在为基于ARM Cortex处理器的微控制器提供一套与供应商无关的硬件抽象层,从而简化软件的开发、重用,…

由浅入深使用LangGraph创建一个Agent工作流

创建一个简单的工作流:Start ——> 节点1(固定输入输出) ——> Endfrom langchain_core.messages import SystemMessage, HumanMessage, AIMessage from langgraph.graph import StateGraph, START, END from typing_extensions import TypedDict from typing…

PL-0功能拓展及基于VSCode的IDE配置

title: PL/0功能拓展及基于VSCode的IDE配置 date: 2024-08-06 22:46:38 tags: 做过的实验||项目复盘 top: true 概述PL/0语言可以看成PASCAL语言的子集,它的编译程序是由C语言编写的编译解释执行系统。PL/0能充分展示高级语言的最基本成分。拓展了pl0语言的基础功能&#xff08…

【低空经济】大型露天矿区安全生产无人机巡查与管理系统设计

1. 引言 大型露天矿区因其广阔的作业区域和复杂的环境条件,安全生产管理面临着严峻的挑战。随着科技的进步,无人机作为一种现代化的巡查工具,逐渐被应用于矿区的安全生产管理中。无人机具备高效、灵活、成本相对低廉等优点,可以在…

SpringCloud学习第一季-3

目录 11.服务网关-Gateway新一代网关 一、Gateway概述 1、Gateway是什么 1.1 概述 2、 能干嘛 3、微服务架构中网关在哪里 4、为什么选择gateway? 4.1 SpringCloud Gateway具有如下特性 4.2 SpringCloud Gateway 与 Zuul的区别 5、Zuul1.x模型 6、gateway模型 二、…

超越边界:MongoDB 16MB 文档限制的 pragmatic 解决方案

在软件开发中,我们选择的技术栈往往带有一些固有的设计边界。对于 MongoDB 而言,其最著名的边界之一便是 BSON 文档最大 16MB 的大小限制。在大多数场景下,这个限制是绰绰有余的,它鼓励开发者设计更为精简和规范的数据模型。然而&…

深入探讨:PostgreSQL正则表达式中的邮政编码匹配

引言 在处理大量数据时,如何高效地从字符串中提取特定模式的文本,如邮政编码,是一个常见且具有挑战性的任务。本文将通过一个具体实例,探讨在PostgreSQL中使用正则表达式匹配加拿大邮政编码的问题,并提供解决方案。 问题描述 我们希望能够从字符串中提取所有符合加拿大…

集合框架(重点)

第十五天集合框架1.什么是集合 Collections集合Collection,也是一个数据容器,类似于数组,但是和数组是不一样的。集合是一个可变的容器,可以随时向集合中添加元素,也可以随时从集合中删除元素。另外,集合还…

深度学习核心:神经网络-激活函数 - 原理、实现及在医学影像领域的应用

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#,Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开发…

OneCode3.0 核心表达式技术深度剖析:从架构设计到动态扩展

一、引言:表达式技术在企业级框架中的核心价值 在当今快速变化的企业级应用开发中,动态性和灵活性已成为衡量框架优劣的关键指标。OneCode 3.0 框架作为企业级应用开发的重要工具,其核心表达式技术提供了一种强大的解决方案,使开发…

[css]旋转流光效果

实现一个矩形的旋转流光边框效果。 需要使用css属性梯度渐变&#xff1a;链接: conic-gradient&#xff0c;他指的是圆锥形变化的梯度。 // html<div class"demo"></div>// css body {width: 100%;height: 100%;background-color: black; }.demo {width…

NPM组件 @0xme5war/apicli 等窃取主机敏感信息

【高危】NPM组件 0xme5war/apicli 等窃取主机敏感信息 漏洞描述 当用户安装受影响版本的 0xme5war/apicli 等NPM组件包时会窃取用户的主机名、用户名、工作目录、IP地址等信息并发送到攻击者的电报地址(botToken “7699295118:AAF6pb7t718vjHWHwFQlZOastZQYHL8IVDE”&#x…

计算机网络:组播和多播有什么区别?

在网络通信中&#xff0c;“组播”和“多播”其实是同一概念的不同中文翻译&#xff0c;它们对应的英文都是 Multicast。二者本质上没有技术区别&#xff0c;只是因翻译习惯不同而产生的两种表述&#xff0c;在实际应用中可以通用。 不过&#xff0c;为了更清晰地理解这个概念&…

Amazon Q Developer:AI 增强编码生产力的未来

Amazon Q Developer&#xff1a;重塑编码体验的 AI 助手 在如今快节奏的软件开发世界中&#xff0c;开发者们始终在寻找能平衡生产力与探索欲的工具。而 Amazon 推出的 Amazon Q Developer&#xff0c;这款可嵌入 Visual Studio Code 等主流 IDE 的 AI 编码助手&#xff0c;无疑…

linux eval命令的使用方法介绍

在这篇文章中&#xff0c;让我们来详细地介绍一下 Linux 中另一个非常强大但也极其危险的命令&#xff1a;eval。 eval 是一个 shell 内置命令&#xff0c;它的名字是 “evaluate”&#xff08;评估&#xff09;的缩写。它的作用是将紧跟其后的参数&#xff08;一个或多个字符串…

JavaWeb笔记2-JavaScriptVueAjax

1. JavaScript 1.1 基础介绍 JavaScript(简称&#xff1a;JS)是一门跨平台、面向对象的脚本语言&#xff0c;是用来控制网页行为&#xff0c;实现页面的交互效果。JavaScript和Java是完全不同的语言&#xff0c;但基本语法类似组成 ECMAScript: 规定了JS基础语法核心知识&…

代码随想录刷题Day23

右旋字符串 这道题是比较常规的对字符串的复制操作&#xff0c;找到右旋部分的分界点是关键 代码直接贴出来&#xff1a; #include<stdio.h> #include<string.h> int main(){int k;char s[10000];scanf("%d %s",&k,s);int cnt 0;for(int i str…

机器学习sklearn:编码、哑变量、二值化和分段

就是转换为数值类型方便机器学习模型处理一、编码这里举例将Survived这一行的数据转换为编码&#xff0c;原本是字符串类型2、将标签编码并赋值回去from sklearn.preprocessing import LabelEncoder y data.iloc[:, -1] # 最后一列拿出来 print(y) le LabelEncoder() le …