Cadence Genus userguide阅读笔记

来源:互联网 发布:网络传输大文件 编辑:程序博客网 时间:2024/05/18 03:25

  • 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

0 0
原创粉丝点击