环境建立命令与变量

  • 综合主要的三部分:RTL\目标工艺库\约束文件
  • DC综合过程中timing > area,在时序满足的条件下进行面积优化
  • RTL一般会映射为standcell(与非门),需要将对应的目标工艺库(target library)
  • 如果在RTL中不止使用了target library中的器件例化了其他的IP,这些IP不是以RTL的形式给出的,所以要设置link_library
  • search_path - 类似于环境变量,在执行命令的时候,名令执行后到相应的路径中寻找执行的文件
  • symbol_library - 符号库,电路的具体形式
  • 使用alias关键字将命令进行重命名



*.sysnopsys_dc.setup - 在启动dc_shell的时候,会自动进行执行

.sysnopsys_dc.setup



  • .synopsys_dc.setup文件存在于三个地方:

    1、dc工具安装路径下

    2、用户的home路径下

    3、脚本运行路径下

Loading RTL

打开DC并读取RTL文件

读入rtl代码

read_verilog rtl/my_design.v





读取VHDL RTL设计文件



约束和编译未映射的RTL

  • 没有设置target library,会进行报错
  • source cons - 约束
  • check_timing - 检查时序约束

  • library文件有两种形式:一种是.db的形式,另一种是.lib的形式
  • .db - 二进制形式,给DC工具进行使用
  • .lib - 给工程师看的

逻辑技术库实例

  • 不同cell,面积大小不同,面积越大,驱动能力越强

如何使用target library?

  • printvar target_library - 打印名称,如果显示your_library,说明没有设置target library
  • your library是在DC安装路径下的,如果没有被设置的target library覆盖表示没有设置target library
  • set 和 set_app_var的区别:set指令是tcl脚本语言的指令,set_app_var只能针对DC内置的变量进行设定

退出前保存门级网表

读取并分析网表

  • 读取RTL代码的时候读入网表,没有设置link library,就会报错
  • 读入网表之后需要找到对应的link library,从而找到所需要的门器件

使用link library解析reference

  • *表示DC的内存,依次读取Top.v,B.v,c.v,三个模块是独立存在于DC内存中的,对Top进行link的时候如果需要B和C,就会在DC内存中进行寻找
  • link library一般就是target library

在链接之前指定link_library

  • 设置完target library和link library
  • link - 将各个模块建立层级关系
  • source cons/myreg.con - 读入约束脚本
  • check timing

缩短文件路径

  • 在risc_design路径下启动仿真,设置库的时候需要设置相对路径

    可以设置search path

  • dw - designware下的库
# 查看dc_shell的安装路径
which dc_shell

位于三个不同位置的启动文件(setup file)

dc安装目录下

  • 设置了一些默认值

user目录下

cd ~目录下

dc_shell启动目录下







  • target library和link library会被覆盖
  • search path是在原来的基础上进行追加

默认的DC setup file

CWD DC setup file

示例:替换技术库

  • 假设有两个版本的设计,第一个版本用的1.2um的库,第二版是65nm的库;跑第二版的时候,target library和link library需要更新到新的库,约束也需要使用最新的

示例:输出网表

  • 读入旧工艺的网表,如何输出新工艺的网表,旧的网表包含的是旧的standcell,设置link_library的时候,需要设置为旧的工艺的link library;

    target library要设置成新的网表
  • search path 设置为libs,cons
  • 约束也需要设置为新约束

当前用到的命令

练习:库文件的建立

测试

  • 对对对错

  • 扇入扇出\电容\大小\面积\逻辑函数定义
  • 不含形状
  • 包含logic DRC不包含物理DRC
  • 不含引脚的物理位置

层次化设计

  • 顶层模块包含多个子模块
  • A,B是以RTL形式存在
  • RAM以库的形式存在(.db文件)
  • encoder,decoder以网表的形式存在

读入层次化的RTL设计

  • current design - 读入多个设计,需要指定一个设计作为top顶层进行
  • 不显示指定current design - 读入的最后一个RTL作为current design
  • 以列表的形式读入 - 第一个RTL作为current design
  • 读入的.v文件中包含多个module - 其中第一个module作为current design

指定current design

  • 指定current design - 是以module名字指定的,不是指定文件的名字
  • 在link之前指定current design

在link之后check_design

  • check是否有输出引脚悬空,容易出现未知错误及亚稳态

基于HTML的check_design报告

使用analyze & elaborate读取设计

  • 使用这种方式不需要进行指定current design及link

使用elaborate修改参数

  • 不修改RTL,使用elaborate可以直接修改参数

解析IP或者宏库单元

读取.ddc文件

自动加载.ddc:不推荐

  • ddc是二进制文件,只有dc识别

DC - 设计和工艺数据的更多相关文章

  1. 从Wolframserver获取DC comics卡通人物数据

    背景知识 DC comics是美国时代华纳旗下DC娱乐下属的一个漫绘图书出版商. 超人.蝙蝠侠之类漫画的始作俑者. 在Wolfram的眼下为止3750个PopularCurves数据中(所有下载数据有 ...

  2. 漫游Kafka设计篇之数据持久化

    Kafka大量依赖文件系统去存储和缓存消息.对于硬盘有个传统的观念是硬盘总是很慢,这使很多人怀疑基于文件系统的架构能否提供优异的性能.实际上硬盘的快慢完全取决于使用它的方式.设计良好的硬盘架构可以和内 ...

  3. Java秒杀简单设计三:数据封装类

    上一篇https://www.cnblogs.com/taiguyiba/p/9828984.html 整合了数据库表和Dao层代码 这一篇继续设计数据封装类: 涉及到获取秒杀地址,查询,返回秒杀结果 ...

  4. OA电子表单设计-年假申请单-数据验证

    OA从年初上线到现在已经过去半年了,时光飞逝. 上月底,行政文员找到我,说最近有新来的部门文员填<年假申请单>时,有乱填的情况,让我想办法处理. 我一查还真是,这文员是个男的,同一天给同一 ...

  5. STM32的USB速度,终于确定了传输极限,为以后的产品设计提供了数据。

    是自定协议,用到一个bulk in ep1, 一个bulk out ep2 端点  用虚拟串口的优点显而易见,上位机的编写非常方便,就按照常规的串口功能编写就可以了,而速度确还是usb的速度  USB ...

  6. php设计模式之单例模式实例(设计mysqli连接数据的数据处理类)

    一直在研究php的设计模式,但是没有亲历使用过,所以还是一知半解,通过几天的学习终于对php的单例设计模式稍稍的有些了解,特此写出一个数据库处理类(只涉及到简单的原理),以便自己以后方便查阅,至于其他 ...

  7. 【开源】OSharp框架解说系列(5.1):EntityFramework数据层设计

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  8. MVC实用架构设计(三)——EF-Code First(4):数据查询

    前言 首先对大家表示抱歉,这个系列已经将近一个月没有更新了,相信大家等本篇更新都等得快失望了.实在没办法,由于本人水平有限,写篇博客基本上要大半天的时间,最近实在是抽不出这么长段的空闲时间来写.另外也 ...

  9. .NetCore生产环境下构建Consul(单个DC数据中心)的服务器健康检查

    下载最新的consul程序 consul 启动方式有两种 server 和client 默认是client 如果你不需要记录数据可以用 consul agent -dev 来启动 consul age ...

  10. Windows Phone实用教程:利用Blend为程序添加设计时数据

    [前言] Blend自诞生那一天起就伴随这开发者如此的评价: 有VS还用Blend干啥,直接码代码就好了. Blend会生成一堆垃圾无用代码,很不爽. 对于这类我只会在心里评价,当你并不真正了解一样事 ...

随机推荐

  1. 山海鲸Cesium:用更简单的方式升级视效

    CesiumJS作为绝大多数人都在用的开源地球可视化引擎,视觉效果并不拔尖,这让很多giser都想着有一天升级一下视效,从众多平庸的项目中脱颖而出.然而,对于一些使用Cesium的项目来说,要想达到C ...

  2. 【Python】【OpenCV】视频帧和摄像头帧操作 and 窗口显示

    一.读取写入视频文件 1 import cv2 2 3 # 创建一个视屏捕获对象 4 videoCapture = cv2.VideoCapture('AVI.avi') 5 6 # 获取视频的属性值 ...

  3. 苹果推信群发,苹果推信群发软件,iMessage群发系统

    在当今数字化的时代,智能手机的普及率已达到了前所未有的高度,其中,苹果公司的iPhone无疑是市场上最受欢迎的智能手机之一,然而,与手机的广泛应用相伴的是,众多企业对于如何有效地向这些手机用户推送信息 ...

  4. STM32CubeMX教程5 TIM 定时器概述及基本定时器

    1.准备材料 开发板(STM32F407G-DISC1) ST-LINK/V2驱动 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) 逻 ...

  5. 分享.Net 设计模式大全

    由于最近项目处于维护阶段,工作没有那么匆忙了.于是开始回头整理一下常用设计模式. 虽说设计模式大家都知道,但是在写代码过程中为了抓项目进度有时候写着写着就变成面向过程开发了--后面维护起来将会相当的悲 ...

  6. freemarker实现自定义标签

    freemarker实现自定义标签 freemarker实现自定义标签其实并没有什么难度,这个功能我们叫自定义标签,在官网中称为指令,也并不是什么高级技术,只是大家没发现而已,参考下官网文档就能实现: ...

  7. Ynoi

    P4688 [Ynoi2016] 掉进兔子洞 序列,静态,求三个区间的可重集的交的大小,离线,\(n,Q\le 10^5\),3s,500MB 缺乏性质 \(\rightarrow\) bitset ...

  8. CSS 基础 5 - CSS 选择器

    基础 #id{} ID 选择器 .class{} 类选择器 tag{} 标签选择器,tag 可以是 h1, p, div, span, img, nav, footer... *{} 通用选择器,选择 ...

  9. 为什么MySQL单表不能超过2000万行?

    摘要:MySQL一张表最多能存多少数据? 本文分享自华为云社区<为什么MySQL单表不能超过2000万行?>,作者: GaussDB 数据库 . 最近看到一篇<我说MySQL每张表最 ...

  10. 云小课|DSC帮您管数据,保障您的云上数据安全

    摘要:华为数据安全中心,积累华为云多年数据经验,整合云上各类数据源,搭载数据安全黑科技,通过深度行为识别引擎,助您轻松管理云上数据. 本文分享自华为云社区<云小课 | DSC帮您管数据,保障您的 ...