• preface
  • introduction
    • information_level
    • design hierarchy
    • object和attribute
    • 最开始的时候往往会遇到很多error
    • 设置某种message为error
    • 检查报告的message
    • genus使用的脚本语言是tcl
  • design information hierarchy
  • Elaboration
  • genus 如何减少运行时间
    • 超线程
    • 基于cache方式
      • 使能cache定义cache目录
      • 指定最大可cache的容量默认是1GB单位是MB
  • 综合
  • 综合的努力级别
  • 带布局布线信息寄生参数信息的综合
  • 综合完成后要做形式化验证
  • 综合报告的tips
  • genus database
  • 修改网表
  • 脚本模板

下一个项目,用cadence genus工具综合的可能性比较大。
综合的理解程度,还只是工程应用遇到问题,然后被迫去解决。没有一个系统学习的过程。
理解IC设计flow,很好的方法,就是阅读EDA工具手册。所以,留一个坑,慢慢填吧。(synopsys DC也应该熟悉一下)

preface

cadence genus综合工具,前身是RC(RTL Compiler);现已改名。

启动方式,有两种
1. genus
2. genus -legacy_ui
3. 区别?
a) genus是为了与cadence后端flow的EDA工具保持命令的一致,所以导致genus不再兼容RC命令;
b)genus -legacy_ui,与RC命令兼容;有些命令是不再支持了,所以要注意。结合工程角度,作为前端设计人员,基本不会和后端有命令兼容性的要求;而且新项目会基于前面项目的RC,所以后续笔记只关注genus legacy_ui的用法。

man命令无法解析ERROR/WARNING的类型?
当前有这样的问题,不过可以通过genus message.pdf去查阅。
好像用下述命令方式,可以查阅,上班后试试效果。[:<没效果,可能是本地问题。]

get_attribute help [find / -message TIM-11]

在genus的路径里,有cdnshelp命令。这个适合通过关键词搜索genus所有文档。

cadence有command和attribute,
1. 通过help或man可以阅读command的帮助手册;
2. 通过下述命令,可以方便地理解attribute。

legacy_genus:/> get_attribute attribute_name * -help

genus有模板脚本可以自动生成。
相关命令是:write_template,这个不错。

introduction

information_level

To control the amount of information written in the output logfiles, use the following command:

set_attribute information_level value

For analysis and debugging, set the information level to 9(max)。

design hierarchy

genus有自己的一套设计层次结构,类似linux shell里的文件目录。
通过理解这个设计层次结构,会对genus有更深理解。

相关命令:
ls
cd
pwd
如果查看linux的文件目录,则用命令(l前缀,可以理解为linux):
lls
lcd
lpwd

object和attribute

object和attribute是genus的两个重要概念。中文就是对象和属性。
object可以是design, subdesign, library, directory (including the root directory),
port, pin, 等等。
attribute是object的具体化设置,即某一个对象,可以有不同的属性,来表示不同的设计信息。
比如(纯属个人理解,还没验证想法)

dc::set_load [get_attribute load slow/INVX1/A] [dc::all_outputs]

获取object(子设计slow/INVX1/A)的属性,
用set_load命令,去应用到object(所有的输出)。

最开始的时候,往往会遇到很多error

不要设置遇到error就stop。比如下面的命令,确认fail_on_error_mesg 属性的值不是true。

set_attribute fail_on_error_mesg true /

设置某种message为error

相关命令,感觉很有用处。记录一下。

get_attribute help [find / -message TIM-11]
get_attribute severity [find / -message DFM-200]
set_attribute severity Error [find / -message DFM-200]

检查报告的message

report messages
可以打印出所有的warning和error类型。这个可以初步确认综合环境的正确性。有用!

genus使用的脚本语言是tcl

tcl特点,个人理解是基于list变量类型的操作比较方便。

design information hierarchy

这一章,对深入理解genus综合的结果体系,有很好的帮助。

待续。。。。。。。。。。。

Elaboration

elaboration包括以下任务:
1. 建立数据结构;(之后的约束是建立在这个结构上的)
2. infer设计中的registers;
3. HDL代码优化,比如去除无用的代码;
4. 检查语法;

个人认为有点意思的:
1. 可以指定module进行elaborate;
这是否意味着顶层加约束,综合子模块?自问自答:不是,因为顶层约束是基于elaborate顶层模块的层次结构。

genus 如何减少运行时间

超线程

可以本地机器和网络机器的线程一起;

基于cache方式

适合项目综合环境趋于稳定的阶段。应该类似cache原理,难道是设置虚拟内存?没必要啊,linux有swap空间。
也许是临时定义一个较大的虚拟内存,使得可以多次仿真的时候,减少迭代运行时间。

使能cache,定义cache目录

legacy_genus:/> set_attribute super_thread_cache directoy /

指定最大可cache的容量。默认是1GB,单位是MB。

legacy_genus:/> set_attribute max_super_thread_cache_size integer /

综合

综合主要分两个步骤:
1. syn_generic
内容包括:RTL代码优化、RTL代码映射为netlist(使用genus自带的generic逻辑库)。
2. syn_map
内容包括:指定的design映射为netlist(使用用户最终要求的工艺库)、逻辑优化。
syn_map也可以分为:
a). 与工艺无关的逻辑优化。
b). map映射为期望工艺。
c). 与工艺相关的门级优化。

综合的努力级别

带布局布线信息、寄生参数信息的综合

即物理综合。有专门的pdf文档。

syn_opt -physical

综合完成后要做形式化验证

cadence的工具叫LEC;
synopsys的工具叫formality。
因为综合,会把RTL映射成期望工艺下的网表文件;而且伴随着大量的RTL、netlist级别优化。所以功能也许会有误差,利用形式化验证,可以快速确认RTL与netlist的一致性。
从而确保综合结果的可靠性。

综合报告的tips

工程中常见到这样的用法:
report timing > timing.rpt
但是上述写法,有个不好的地方是,无法再genus.log里显示report timing的执行过程(包括error信息)。
所以推荐下面写法
redirect -tee timing.rpt "report timing"

这个类似linux下的tee命令用法。

genus database

genus数据库,个人理解,主要是为了方便save/restore session。
适合关闭综合步骤后,能快速返回之前的综合环境里。
适合debug或者report;比如综合结束后,想report更多信息,如果没有保存session,那么就得重新综合。

修改网表

这个部分,主要面向ECO阶段,对后端提供的网表,进行脚本化修改。

脚本模板

利用write_template 命令,可以选择不同参数,得到一个标准的genus综合脚本模板。我用的命令是
write_template -full -outfile template.tcl

Cadence Genus userguide阅读笔记相关推荐

  1. PrimeTime PX(Power Analysis) userguide阅读笔记

    introduction 用PTPX的好处?作为前端设计人员来说,个人理解: averaged power analysis time-based power analysis power model ...

  2. DC PowerCompiler 功耗相关的综合 userguide阅读笔记

    Power Compiler介绍 power compiler Methodology power library models 了解一下功耗相关的综合. 功耗分析,用ptpx: 功耗优化,除了设计者 ...

  3. trainer setup_Detectron2源码阅读笔记-(一)Configamp;Trainer

    一.代码结构概览 1.核心部分 configs:储存各种网络的yaml配置文件 datasets:存放数据集的地方 detectron2:运行代码的核心组件 tools:提供了运行代码的入口以及一切可 ...

  4. VoxelNet阅读笔记

    作者:Tom Hardy Date:2020-02-11 来源:VoxelNet阅读笔记

  5. Transformers包tokenizer.encode()方法源码阅读笔记

    Transformers包tokenizer.encode()方法源码阅读笔记_天才小呵呵的博客-CSDN博客_tokenizer.encode

  6. 源码阅读笔记 BiLSTM+CRF做NER任务 流程图

    源码阅读笔记 BiLSTM+CRF做NER任务(二) 源码地址:https://github.com/ZhixiuYe/NER-pytorch 本篇正式进入源码的阅读,按照流程顺序,一一解剖. 一.流 ...

  7. Mina源码阅读笔记(一)-整体解读

    2019独角兽企业重金招聘Python工程师标准>>> 今天的这一节,将从整体上对mina的源代码进行把握,网上已经有好多关于mina源码的阅读笔记,但好多都是列举了一下每个接口或者 ...

  8. “CoreCLR is now Open Source”阅读笔记

    英文原文:CoreCLR is now Open Source 阅读笔记如下: CoreCLR是.NET Core的执行引擎,功能包括GC(Garbage Collection), JIT(将CIL代 ...

  9. QCon 2015 阅读笔记 - 团队建设

    QCon 2015阅读笔记 QCon 2015 阅读笔记 - 移动开发最佳实践 QCon 2015 阅读笔记 - 团队建设 中西对话:团队管理的五项理论和实战 - 谢欣.董飞(今日头条,LinkedI ...

最新文章

  1. 服务器BMC、BIOS、IPMI、UEFI技术解析
  2. java http close,okhttpclient-close
  3. R包vegan的Mantel tests探索群落物种组成是否与环境相关
  4. Android开发优化之——对界面UI的优化(经验分享)
  5. 打包静默安装参数(nsis,msi,InstallShield,InnoSetup)[转]
  6. 多线程java_Java多线程基础
  7. python浏览上一句_python一句话启动http服务
  8. 斯坦福助理教授马腾宇:ML非凸优化很难,如何破?
  9. 谁将引领新一代视频编码标准:HEVC、AVS2和AV1性能对比报告
  10. 互联网公司忽悠员工的黑话,套路太深了。。。
  11. 安卓android中国象棋chess程序项目源码源代码,C/C++编程笔记:C语言打造中国象棋游戏,项目源代码分享!,c语言笔记大全...
  12. C#二进制文件读取序列化与反序列化
  13. 理解证券行业“行业分类
  14. jsp物流配送管理系统
  15. xbee模块和单片机_XBee® ZigBee 模块使用方法
  16. 解决photoshop cc在4K分辨率下字体过小。
  17. [week9]签到题(长凳)——贪心算法
  18. python温度转换程序改写代码举一反三_006 实例1-温度转换
  19. dof景深matlab,景深(DOF)
  20. 2021-2022上学期 奖状的清单

热门文章

  1. shiro实现APP、web统一登录认证和权限管理
  2. 米家机扫拖机器人说明书_米家扫拖机器人1C评测:“看”得见才能打扫干净
  3. 2021冬-不靠谱的室友-不要尝试的青菜豆芽汤
  4. CAD批量打印用什么工具比较好?
  5. 信息学奥赛一本通 1369 合并果子
  6. 我的世界java版地图结构_我的世界地图种子竟然有42亿个 那些神奇的建筑都是怎么生成的...
  7. Pytorch 深度学习实战 ‘cannot import name ‘BytesType‘ from ‘diskcache.core‘
  8. 推荐一些基于vue.js的uni-app框架前后端分离的一些毕设项目
  9. mysql空值判断怎么优化_MySQL查询语句优化的十个小技巧!
  10. 斗破苍穹-雅菲。位列高贵,华丽绝伦,红颜娇美,风姿绰约