环境建立命令与变量

  • 综合主要的三部分: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. bash shell笔记整理——tail命令

    作用 Print the last 10 lines of each FILE to standard output. With more than one FILE, precede each wi ...

  2. NetSuite 开发日记 —— 估价单(Estimate)新建项目(Project)自动填入项目字段

    Background 用户在估价单(Estimate)点击「项目」字段旁边+按钮新建项目(Project),在项目的自定义字段中自动填入估价单ID 用户在项目记录存在切换自定义表格行为 Analysi ...

  3. 学习JVM---入门

    1.JVM体系结构 JVM的位置 JVM体系结构 2.类加载器 双亲委派机制 package java.lang; /** * 测试自定义java.lang.String类能否运行成功 * 体会双亲委 ...

  4. Napping - vulnhub - writeup

    Napping - vulnhub - writeup 信息收集 目标开放了22和80. root@kali ~ » arp-scan -I eth1 -l Interface: eth1, type ...

  5. 谁再说学不会 MySQL 数据库,就把这个给他扔过去!

    大家好,我是民工哥. 又是新的一年奋斗路的开启,相信有不少人农历新年之后,肯定会有所变动(跳槽加薪少不了).所以,我把往期推送过的MySQL技术文章做了一个相关的整理,基础不好的可以从最基础的学习一遍 ...

  6. poweroff详解

    linux下poweroff命令详解 reboot.halt.poweroff三条命令意思作用一样 阅读这三个命令的man帮助信息后,发现实现的是相同的功能. 作用: 重启或者关闭系统 语法: reb ...

  7. 笔记本为什么不出可升级CPU的,用台式CPU不行吗?

    我十几年年前的thinkpad 通过更换cpu复活了:联想ThinkPad E430c i3变i7:笔记本电脑CPU升级思路-CPU参数 为什么现在的市面上可以更换cpu的笔记本非常稀少呢? inte ...

  8. Docker、pre-commit 导致的 git commit 报错:找不到 python 3.8

    到这个问题的原因可能有很多,这里只是记录下针对我遇到这这跟题的原因及解决方法 问题描述 执行 git commit 命令,报错 /usr/bin/env: 'python3.8': No such f ...

  9. .NET技术分享日活动-202110

    2021年10月15日下午,个人组织举办了山东地区的第三次.NET技术分享日活动.围绕.NET.低代码Low Code.云原生 Cloud Native.大数据.算法等方向进行创新技术的实践分享. 本 ...

  10. 爬取Discuz!社区的教程标题

    爬取Discuz!社区的教程标题-史上最详细解析(实现分页) 摘要:本文记录了爬取Discuz!社区的教程标题的详细过程,过程清晰 这是O的第一篇博客,如有排版问题请大佬见谅,O非常希望大佬能在评论区 ...