当前位置: 首页 > news >正文

使用Cadence工具完成数模混合设计流程简介

众所周知,Cadence的Virtuoso是模拟设计领域的核心工具,市占率达到75%,随着近些年来Cadence在数字版图设计(APR)领域的崛起,invs,PVS等一众工具也都成了很多公司的首选后端流程工具。依照强强联合的逻辑,将数模实现工具进行协同部署看起来就是那么的水到渠成,这里就以OA数据为起点,简单介绍一下MSOT的简单流程。闲言少叙,ICer GO!
在这里插入图片描述
通常而言,数据交互是跨工具的主要问题,所以常用的LEF/DEF/V/UPF/SDC etc.便成为了数字流程的主要交互文件,但是对于Virtuoso,由于是模拟的设计理念,上述的方法不是很合适,这里就需要引入Cadence的**OA(OpenAccess)**数据平台。

数模混合设计(Mixed-Signal Design)概略

从Virtuoso IC61开始,数据都是以OA为数据保存格式的,尤其到了OA2.2,已经可以实现很多公司/工具的数据互通, 包括Synopsys,mentor,TSMC等大厂的工具,譬如S家的Laker就可以和C家的virtuoso通过OA做数据互通;Calibre也可以打开Virtuoso的OA数据库等。

类似的,innovus也提供OA数据创建、读取和存储,这样就可以实现innovus和virtuoso的数据沟通。有了这种数据沟通,就可以解决一定的芯片设计需求。

对于现代的MS(mixed-signal)的芯片设计无外乎以下两种设计方法:

  • Ad(大数小模,下左图)结构:virtuoso 做top-design,顶层以及大部分工作在virtuoso完成,剩余的一小部分digital在innovus完成,两者通过OA协同,最后使用virtuoso 完成TO

  • Da(大数小模,下右图)结构:innovus做top-design,顶层以及大部分工作在innovus完成,剩余的一小部分analog在virtuoso完成,两者通过OA协同,最后使用innovus 完成TO

在这里插入图片描述

如果,对于模拟数字交融的更为深入的情形,那么无论是使用vitruoso还是innovus完成最终的TO,二者都可以在数据的任何阶段进行交互(PS:top的流程需要在项目初期定义完成,避免反复迭代)。基于此Cadence提出了(MSOT)的流程理念,这样可以进一步淡化/模糊数模边界,对于一个完整的设计也可以相对比较灵活,Cadence相信这样可以更有利于设计的实现效果:

在这里插入图片描述

所以,无论是上述Da,Ad抑或MSOT,这个流程都需要对virtuoso和innovus两个工具使用统一的设计数据平台:OA数据。从不同的工具角度去看,OA数据也有些微的差异:

  • 下左图:virtuoso工具对于设计库的需求(PDK):techdb, techfile.tf,pcell etc.

  • 下右图:virtuoso工具对于设计库的需求(LEF):techlef,std-cell lef ,macro lef

在这里插入图片描述

OA DB 的创建和使用

如上所述,如果一个OA可以包含PDK和所有库的LEF,那么就可以在virtuoso两个工具在做平滑切换。这里有一个点要明确,对于virtuoso通常关注在模拟设计、版图和仿真。而innovus需要关注的更多的是place,CTS和route,这个可能会在除去基础的OA外用户需要额外关注的。

综上Cadence给出的解决方案就是:MSOA PDK (MixedSignal OpenAccess Process Design Kit ),这个OA的数据结构是包含了上述virtuoso和innovus两者都需要的东东。

  • Foundry rules (from PDK)
    • DR: default routing rules
    • Spacing/pitch/width
  • Tech LEF:
    • NDR: none default routing rules
    • Antenna
  • Std-cell LEF
  • IP LEF

Cadence提供一个流程帮助用户在innovus里边创建OA数据库,来作为数据的起点(PS:类似的用户也可以在virtuoso作为数据起点

OA库通常是由三个部分组成(从底到顶的次序)

  • Technology DB:工艺相关的rule,layer等信息
  • Library DB: IP/pcell/std-cell等基础设计单元和对于的view管理
  • Design DB:原理图,版图,网表等

考虑到工作数据维护的便利性,OA提供了refLib的理念,这个refLib通常只囊括工艺(technology)相关的信息,对于实际的设计库,用户可以对其进行对应的设计(design)和基础设计单元(library)的添加和维护。可以简单理解refLIb就是basic OA,设计的OA都可以将以这个refLib作为起点。

这里呈现一个以innovus为数据起点的简化版的OA lib常见流程。依照上述讲解,一个OA的lib的创建至少是需要两个步骤的。具体流程见下图:

在这里插入图片描述

  1. 打开任意一个已经完成init design的invs数据库
restoreDesign DBS/design.init.enc.dat design
  1. 导出OA tech file

这个可以理解为将invs的tech.lef转换成virtuoso的的基础技术文件:techfile.tf ,但是由于invs是一个简化的设计环境(相较模拟设计而言),所以这里的数据量会较少,但是使用这个的好处是,用户不用去花费大量的时间去解决techfile.tf和tech.lef的冲突。

write_oa_techfile oa.tf
  1. 创建OA的reference lib

基于上述的oa.tf创建的reference lib,可以理解为一个带入了fab设计规则OA lib

techLoadDump -l -createLib oa.ref.lib oa.tf

基于OA系统数据规则,任何对于OA lib的创建都会在当前目录下的cds.lib添加OA lib的信息,如果cds.lib文件不存在则会自动重建。(PS:由于virtuoso和invs在调用OA lib的时候,都会使用这个文件,不建议手动修改/移除这个文件,

# file cds.lib
# indication libname libpath 
DEFINE oa.ref.lib oa.ref.lib
  1. 准备LEF文件

在一个完成init_design的invs数据库中,是可以方便的管理所有的LEF文件的。包括tefh.lef。所以invs提供了一个简单的命令,可以将LEF分类别导出

# dump tech LEF
write_lef_library -tech_only tech.lef 
# dump ALL IP/std-cell/antenna LEF
write_lef_library -macro_only macr.lef
  1. 创建OA lib

有了上述的结果,此处可以创建OA lib了,此处分两步

  • 基于OA ref lib创建design的OA lib
lef2oa	-pnrLibDataOnly \-lef tech.lef \-techRefs oa.ref.lib \ -lib design.oa.basic.lib
  • 基于macro LEF 对OA lib进行增量调整
lef2oa 	-lef maco.lef \-lib design.oa.basic.lib

这里创建了新的OA lib,所以cds.lib就会增加一个条目

# file cds.lib
# indication libname libpath 
DEFINE oa.ref.lib oa.ref.lib
DEFINE design.oa.basic.lib design.oa.basic.lib

到此design的OA lib就创建好了,这个OA lib和DBS/design.init.enc.dat相比,除过没有实际的design(netlist)外,其他的fab、tech、IP等信息是完全一致的。

用户可以把这个OA DB作为一个新的起点,对实际的设计进行导入,就可以完成design OA lib的部署:

Note:由于cds.lib的控制,下面的动作需要和上述命令在同一目录下

使用OA数据库构建floorplan:

1:配置basic OA lib

set init_oa_ref_lib design.oa.basic.lib 

2:配置netlist

set init_verilog design.dc.v

3:配置top cell name

set init_top_cell design

4:配置mmmc

set init_mmmc_file design.viewDefinition.tcl

5:初始化design

init_design

6:导入floorplan DEF

defIn design.fp.def

7: 用OA数据结构保存数据: {lib_name top-cell view}

saveDesign -cellview {design.oa.floorplan.lib design floorplan} 

同样,cds.lib再一次添加了新条目

# file cds.lib
# indication libname libpath 
DEFINE oa.ref.lib oa.ref.lib
DEFINE design.oa.basic.lib design.oa.basic.lib
DEFINE design.oa.floorplan.lib design.oa.floorplan.lib

在invs里边,打开OA数据库,并完成place

1:打开floorplan OA 数据库

restoreDesign -cellview {design.oa.floorplan.lib design floorplan}

2:完成place

place_opt_design

3: 保存place数据库

saveDesign -cellview {design.oa.floorplan.lib design floorplan} 

cds.lib再次加入一个新的条目

# file cds.lib
# indication libname libpath 
DEFINE oa.ref.lib oa.ref.lib
DEFINE design.oa.basic.lib design.oa.basic.lib
DEFINE design.oa.place.lib design.oa.place.lib

这里对同一个OA DB(design.oa.place.lib)分别使用invs和virtuoso打开,作为跨工具工作的一个注脚

在这里插入图片描述

这里以invs数据库为起点,完成一个OA lib的创建,这个和Traditional MSOA PDK相比,少了tech rule (techfile.tf , 通常来自于PDK)的带入,简化的原因是由于tech.lef和techfile.tf通常有一些冲突/差异,其他的步骤都是一样的。完整的Traditional MSOA PDK如下,可以作为参考理解其中的原理

在这里插入图片描述

到此,用户已经使用OA的数据库完成了在invs里边的place步骤,此时用户如果需要,这个OA数据是可以直接传递给virtuoso(或者laker)用户,完成后续的和模拟相关设计动作,然后可以再次返回invs进行后续的处置。用户可以根据实际情况基于同一数据库灵活选择设计工具,从而推进Da或者Ad的设计。感谢Cadence的伟大创举,感谢OA平台,打通了数模设计的数据平移。

【敲黑板划重点】

image-20240503184222477
基于OA数据库,发挥innovus和virtuoso的工具优势和特长,打破数模设计的阻隔,发挥不同工具的优势,完成芯片设计的诉求。

参考资料

Cadence Mixed Signal (MS) Interoperability Guide

http://www.xdnf.cn/news/1411957.html

相关文章:

  • LangChain核心抽象:Runnable接口深度解析
  • leetcode_48 旋转图像
  • FFMPEG学习任务
  • 第 14 篇:K-Means与聚类思维——当AI在没有“标准答案”的世界里寻宝
  • 【C2000】C2000的硬件设计指导与几点意见
  • 开源知识抽取框架 推荐
  • 京东获取商品评论指南,实时关注用户反馈
  • 官方 API 与网络爬虫的技术特性对比及选型分析
  • Unity学习----【数据持久化】二进制存储(三)--文件夹操作
  • OpenStack 01:介绍
  • 暄桐林曦老师关于静坐常见问题的QA
  • 基于GA遗传优化的双向LSTM融合多头注意力(BiLSTM-MATT)时间序列预测算法matlab仿真
  • windows系统中的docker,xinference直接运行在容器目录和持载在宿主机目录中的区别
  • isat将标签转化为labelme格式后,labelme打不开的解决方案
  • MyBatis 黑马 辅助配置,数据库连接池
  • 柔性数组与不定长数据
  • 【秋招笔试】2025.08.31饿了么秋招笔试题
  • SPMTE 2022概述
  • 线程池常见面试问答
  • 一次解决 Elasticsearch 两大难题: 掌握去重和深分页的最佳实践
  • Day19_【机器学习—线性回归 (1)】
  • PerfectSquares.java
  • c++程序员日常超实用工具(长期记录更新)
  • 疯狂星期四文案网第56天运营日记
  • 创意无界:云渲染如何让视觉创作触手可及
  • python如何下载svg图片
  • 【LeetCode - 每日1题】解数独
  • 虚幻引擎技术开放日!facecar分享3D HMI设计与UE开发经验
  • 基于单片机智能电子秤/称重计费
  • Idea启动错误-java.lang.OutOfMemoryError:内存不足错误。