ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ADS工程结构详解:从Workspace、Library到Cell彻底搞懂

ADS工程结构详解:从Workspace、Library到Cell彻底搞懂 第一次用ADS的时候我犯过一个特别低级的错误从同事电脑上拷了个_prj文件回来以为这就是整个工程结果双击打开满屏的问号和红叉。后来才知道ADS的工程远不止那一个小文件——Workspace、Library、Cell这套三层结构才是它所有操作的地基。如果你也刚接触ADS或者已经画了几个原理图但始终没搞懂文件到底存在哪这篇教程就是为你准备的。作为系列第一篇我会把Workspace、Library和Cell这三个概念彻底讲透包括它们在硬盘上的真实形态、操作方法和最容易踩的坑。1. 为什么偏偏是这三层结构——先别急着画原理图1.1 一个真实的翻车现场去年组里来了个实习生第一天就让他照着师兄的图纸搭一个LNA的原理图。他动作倒是快不到半天就把电路画完了还兴致勃勃地跑了一次S参数仿真。结果第二天一来打开电脑准备继续调发现昨天画的原理图全没了。我过去一看这哥们儿把工程存到了桌面然后又觉得桌面乱手动拖进了一个叫“仿真”的文件夹里。他拖走的只是那个_prj索引文件旁边的同名文件夹完全没跟着走。ADS打开工程时找不到data目录里的设计数据自然是一片空白。这不是个例。很多刚接触ADS的人都有一个通病对着左上角那一棵树根本不理解Workspace、Library、Cell分别是什么只知道“右键新建”“双击打开”。一旦遇到文件移动、工程拷贝、工艺库加载立刻抓瞎。所以这一篇我决定先把键盘放下从最底层把ADS的工程组织方式讲清楚。1.2 Workspace、Library、Cell到底谁管谁ADS里的所有设计数据都严格按照Workspace - Library - Cell这个层级存放有点像Windows的资源管理器但又不完全一样。Workspace工作区最高层容器对应一个完整的项目任务。你可以把它理解为一个“项目壳”里面可以装多个Library。保存后会产生一个以_prj结尾的文件。Library库Workspace里的二级目录用来把设计按来源、用途或工艺分组。自己画的电路放一个库用的PDK工艺库放另一个库互不干扰。Cell单元库下面真正存放设计的最小单位。一个Cell可以理解为“一个具体的设计对象”比如一个放大器、一个滤波器、一个电感模型。Cell下面还挂着不同的视图View比如原理图视图、版图视图、符号视图。层级关系一句话Workspace包含LibraryLibrary包含CellCell下面才是具体的图纸。很多人在这一步就卡住了。他们总觉得“我明明画的是原理图怎么还要管这么多层”原因很简单一个成熟的射频设计项目会同时涉及自己的子电路、厂家的PDK模型、仿真数据、版图文件。如果没有层级管理几百个图纸堆在一起后续根本没法维护。1.3 拿文件柜打比方为了让你更好理解这套体系我拿实体文件柜做个类比。Workspace 一个文件柜对应一个项目。Library 文件柜里的抽屉按“自建库”“工艺库”“测试库”分类。Cell 抽屉里的档案夹每个档案夹是一件具体的设计。Cell里的Schematic、Layout、Symbol 档案夹里的不同图纸。你看这样一套结构设计得非常朴素但非常实用。它至少解决了三个问题第一项目内设计可以按用途隔离不用所有图纸堆在一个目录里第二不同库之间可以互相引用比如自建库里的放大器Cell可以直接拖到另一个原理图里当作子电路第三设计数据和仿真结果有明确的归属关系不会跑完仿真不知道该去哪找数据。事实上很多EDA工具都采用了类似的文件层级Cadence的Library/Cell/View也是同一个思路。你在ADS里把这个模型吃透了将来转其他工具也能少踩很多坑。2. 把硬盘上的文件夹翻出来看——ADS到底往磁盘写了什么2.1 workspace主文件与data目录的分工创建Workspace时ADS会在你指定的目录下生成两样东西一个以_prj结尾的文件比如MyWorkspace_prj。这个文件很小里面主要是库列表、版本信息、工作区设置等元数据有点像图书馆的检索卡片。一个以_prj结尾的同名文件夹比如MyWorkspace_prj/。这个文件夹才是真正存放设计数据的地方其中最重要的是data子目录。我见过不少人把_prj文件当成整个工程备份拷给同事结果对方打开后什么都没有。原因就在这里_prj文件只是入口数据全在旁边的文件夹里。如果你想手动备份工程要么整个目录一块儿拷要么用ADS自带的Archive打包功能千万别只拖那一个文件。2.2 Library不是“文件夹”那么简单在data目录下每个Library会以两种形式存在一个xxx.lbf文件这是库的描述文件相当于库的“身份证”。一个xxx/同名文件夹里面存放该Library下所有Cell的具体数据。与此对应的Workspace树里显示的Library列表其实是ADS读取了这些描述文件之后汇总出来的结果。如果你把一个库文件夹手动删除但.lbf描述文件还留在原地ADS打开时就会报“找不到库”之类的错误或者显示一堆红叉。顺便提一句DesignKit工艺库比如常见的Foundry PDK的加载机制稍有不同它们通常是通过DesignKit菜单安装的安装后会在你的Workspace里挂载为一个只读或半只读的Library。新手最容易在这块儿犯迷糊第4章的坑4.3会专门展开讲。2.3 Cell内部原理图、版图、符号、网表各自住哪儿Cell是设计数据真正落地的地方。在data/库名/Cell名/目录下你会看到下面这些内容MyWorkspace_prj/ - Workspace同名目录 ├── MyWorkspace_prj - 主索引文件文本格式 ├── data/ │ ├── MyLibrary.lbf - Library的描述文件 │ └── MyLibrary/ │ └── MyCell/ - Cell 设计数据 │ ├── schematic.dsn - 原理图视图 │ ├── layout.art - 版图视图 │ ├── symbol/ - 符号视图 │ └── netlist/ - 仿真生成的网表需要说明的是不同ADS版本的内部结构会有细微差别但大思路一致一个Cell就是一个设计单元下面按视图类型分别存放不同文件。其中schematic.dsn就是你在原理图编辑器里画的那张图layout.art是版图数据symbol目录用于存放Cell的符号也就是你把它当作子电路放到别的原理图时显示的那个方块netlist目录存放仿真时自动生成的网表通常不需要手动去管。理解了这个结构你就能解释很多现象。比如“为什么原理图里改了版图里没变”——因为原理图和版图是两个不同的View你只编辑了其中一个当然不会自动同步到另一个。2.4 从文件结构反推设计流程知道了数据是怎么落的你就能反过来理解ADS的正常工作流在原理图视图里放元件、连线、加仿真控件保存成schematic.dsn点仿真ADS调用仿真器读取原理图网表跑完之后把结果数据写到data目录下的dataset文件里新建Data Display窗口查看结果这个窗口的布局也是一个独立文件如果要做版图新建Layout视图生成.art文件最后做EM仿真或原理图-版图联合仿真时两个视图协同工作。所以工程里的每一样东西都有它的位置。下次再遇到“我明明保存了为什么打开没有”先不要急着怀疑软件出了Bug到对应的文件路径下去看一眼十有八九是文件没放对地方。3. 实操从新建第一个Workspace到跑通一次S参数仿真3.1 新建Workspace时的关键设置与命名规范说完了原理咱们动手操作一遍。以最常见的S参数仿真为例完整的链路是新建Workspace - 新建Library - 新建Cell - 画原理图 - 仿真。在ADS菜单栏选择File - New - Workspace会弹出新建向导。有几个地方值得注意Name工程名。我的习惯是用“项目代号_版本”的格式比如LNA_v1。全英文、数字、下划线不要用空格。Path存放路径。强烈建议选一个纯英文、没有空格的路径。很多仿真报错莫名其妙最后查下来就是路径里有中文或空格惹的祸后文4.1会细说。Units如果没有特殊要求默认即可。但如果你后面要画版图或导入第三方版图数据一定要提前确认单位不然后面所有尺寸都得换算非常痛苦。新建完成后左侧Workspace树里会生成一个默认Library。我通常会把默认库删掉自建一个方便管理。3.2 创建Library和Cell的几种方式创建Library很简单在Workspace树里右键你的Workspace名称选择New Library输入名字即可。名字同样建议全英文。创建Cell有两种常用方式在目标Library上右键 - New Cell输入Cell名称。在原理图编辑器里把当前设计另存为Cell。我个人推荐第一种逻辑更清晰。新建Cell之后你会在它下面看到一堆可添加的视图比如Schematic、Layout、Symbol。双击新建的Schematic视图才会真正进入画原理图的界面。注意一个Cell可以拥有多个Schematic视图吗可以。不过对于新手我建议一个Cell只放一个设计目标比如一个放大器Cell、一个滤波器Cell别把所有东西揉进一个Cell里否则后面引用和仿真都会很混乱。3.3 放入元件、连好电路、跑一次最简单的仿真现在咱们在一个新Cell里画一个最简单的电路验证整个流程跑通。打开Schematic视图后右侧会有一个Component Library面板如果没有从菜单View - Component Library调出。拖动一个Term端口元件到画布再拖一个作为输入和输出端口。在两个Term之间放一个电容或电感。元件库里对应的类别是Lumped Components里面有很多理想器件。放一个S参数仿真控件。在Component Library搜索框里输入S_Param拖到画布上。双击控件设置起始频率和终止频率比如1GHz到3GHz步进可以保持默认。连好线按一下键盘上的F7或者点工具栏上的仿真按钮。仿真跑完后ADS会自动弹出一个Data Display窗口。在这个窗口里你可以选择S(2,1)、S(1,1)等参数拖到画布上生成曲线。看到曲线出来了说明整个从Workspace到仿真结果的链路已经打通。3.4 仿真结果在哪里看、存哪里仿真结束后结果数据保存在data目录下的dataset文件里原理图本身不保存仿真结果。Data Display窗口也不是自动保存的你需要手动保存它的布局才能在下一次打开时继续查看曲线。也就是说你下次打开工程如果发现之前画的曲线全没了先看看Data Display窗口有没有被保存。这个窗口文件一般会以_data或类似后缀存在库目录里。这是一个特别容易让人误以为“工程丢了”的点提前打个预防针。4. 新手最容易踩的五个坑以及我怎么处理它们的4.1 路径和命名里的“隐形地雷”ADS对中文路径和空格的兼容性一直不好。我调试过很多“仿真跑不起来”的问题有相当一部分最后定位到Workspace路径上。典型报错包括找不到文件、仿真器崩溃、打开工程时显示Unable to open ...等。我的建议很粗暴Workspace路径和所有库名、Cell名一律使用英文、数字、下划线。目录层级不要太深最好控制在两到三层以内。比如D:\ADS_Workspace\LNA_v1_prj这种路径我用了很多年基本没出过幺蛾子。如果你已经建了带中文的工程建议趁早另存为英文路径别等做到一半再迁移那时候各种引用关系会让人想哭。4.2 备份工程时少拷了一个文件夹这个坑在第1章已经提到过。再补充一点即便你拷贝了整个同名文件夹接收方打开工程后如果Workspace里引用了外部DesignKit库而对方机器上没有安装这个库照样会报错。我的备份习惯是先对Workspace做一次Archive打包然后把打包文件传给对方。Archive会把工程里所有必要数据打成单一文件对方只需要在ADS里选择File - Unarchive就能完整恢复。比手动拖文件夹省心得多。4.3 工艺库安装后找不到Library搜索热词里多次出现“ADS tsmc18rf工艺库安装”可见这个坑绊倒了不少人。现象通常是你下载了Foundry的PDK包或者DesignKit也按说明装了但打开ADS后Workspace树里找不到那个工艺库。问题多半出在加载环节。DesignKit安装之后需要在ADS的DesignKit菜单里选择刷新或添加库ADS启动时才会把新装的库挂载到当前Workspace。如果你直接把PDK解压到某个目录然后指望ADS自动识别基本上是不可能的。另一个常见问题是当前Workspace是新建的空工程里面没有“加载外部库”的入口。这时可以去DesignKit菜单下找找“Manage DesignKits”之类的选项或者查一下PDK官方安装文档对ADS版本的要求。4.4 原理图里改了版图里没变这是“Cell多视图”模型导致的经典问题。原理图视图和版图视图是两个独立的View。你在原理图里换了一个电容值、加了一个匹配枝节版图不会自动跟着变。需要执行同步操作比如Generate/Update LayoutADS才会根据最新的原理图重新生成版图。所以做版图前先确认原理图已经是最终状态不然每次修改原理图版图都得重新生成一遍还会牵扯到EM仿真的重新设置。这也是很多新手觉得“ADS很难用”的一个重要来源。4.5 打开别人的工程全是问号和红叉工程打开后满屏问号、红叉通常不是工程损坏而是库引用失效。原因可能是对方用了某个自建库或DesignKit库而你机器上没有或者对方工程里的库路径是绝对路径换了一台机器后路径对不上了。处理办法分几步先把报错信息截图看清楚是哪个Library加载失败然后看这个库是自建库还是PDK如果是自建库让对方直接把整个data目录一起给你如果是PDK库去DesignKit菜单里确认当前Workspace有没有挂载对应的库。还有一种情况仿真报错信息里出现alut6 cell in the design is missing a connection on input pin之类的话。第一次见容易慌觉得工程坏了。其实这类报错的意思是某个Cell比如一个查找表模块的某个输入引脚没有连线。你只需要回到原理图找到对应Cell把那个悬空的pin连上就能解决。报错里的信息是帮你定位问题的不是宣判死刑。常见现象根因应对思路打开工程空白只拷了_prj主文件data目录没跟着走备份/拷贝整个同名目录或用Archive打包仿真报错找不到文件路径含中文/空格改成纯英文路径层级保持简洁装了PDK找不到库DesignKit加载/挂载没做在DesignKit菜单里管理库挂载原理图改动版图不变Cell视图独立不会自动同步执行Generate/Update Layout打开别人工程满屏红叉库引用失效或PDK缺失检查报错补齐对应库5. 搞懂这三层之后你就能看懂的进阶话题5.1 为什么ADS里既有自己的元件库又有Foundry PDK刚开始接触ADS的人总会疑惑元件库面板里已经有一大堆电阻、电容、微带线为什么还要装TSMC、村田、英飞凌这些厂家的模型库因为ADS自带的元件是“理想模型”或“通用模型”用来验证拓扑结构非常方便比如你想快速看一个LC滤波器能不能出带通特性。但实际做产品设计时工程师需要保证“仿真结果跟流片回来 / 市场上买到的实物一致”这就需要Foundry和器件厂商提供的精确模型。这些模型会以Library的形式挂载到Workspace里作为独立Library存在。当你理解了Library只是“按来源/用途分组的容器”你就会明白为什么同一个Workspace里可以同时挂着自建库和多个第三方PDK库而彼此之间还能在原理图里混用。这正是ADS工程组织的核心优势。5.2 用Library和Cell管理“电容模型”“电感封装模型”有不少人在问“ADS怎么建电容电感的封装模型”。答案也藏在这套三层结构里先在自建库里新建一个Cell比如叫Cap_0402_Model在这个Cell里画出包含寄生参数等效电路的原理图比如串联R、L并联C或导入厂商提供的S参数文件给这个Cell创建一个Symbol视图起一个好识别的名字保存后这个Cell就变成了可复用的模型任何原理图里都能直接调用。这个过程本质就是把你从实测或规格书里拿到的器件特性沉淀成Library里的一个Cell。做多了以后你会发现项目交接时只需要把自建库一起拷过去同事就能直接使用这些模型不用重新搭。5.3 从ODB导入到Cell的数据流转另一个常见需求是把第三方工具比如PCB设计软件里的版图数据导入ADS做仿真热词里的“odb导入ads”指的就是这个。流程大致是先在第三方工具里导出ODB格式文件然后在ADS里选择File - Import找到ODB选项把数据导入到一个Cell中。导入后ADS会创建一个包含版图数据的Cell你可以在这个Cell上继续做层叠设置、介质定义、端口添加然后进入Momentum等EM仿真流程。理解了“导入的数据会生成一个新Cell”这件事就不会在导入之后满世界找文件了。所有后续操作都在这个新Cell上展开。5.4 从这三层延伸出去的进阶地图Workspace、Library、Cell这套基础像一张地图的坐标系。有了坐标系后面谈仿真PA流程、超外差接收机、Doherty放大器、差分线、EM模型与EMCoSim联合仿真、优化Goal设置你才知道每一步操作落在哪个层级、改的是哪份数据。比如做PA设计时你会先搭建一个包含晶体管模型、匹配网络、偏置电路的Cell然后在这个Cell下跑负载牵引、谐波平衡仿真做Doherty时你会把两个功放Cell组合成新的Cell再在这个新Cell的顶层做分配合成网络。所有环节都绕不开第一篇讲的这些基本层次。最后聊一句我的个人习惯我从一开始就严格规定自己每个新项目都建一个全新的Workspace库名用固定的前缀Cell名遵循“功能_版本”的格式。刚开始觉得麻烦但项目多了以后回头找设计和复现结果都特别快。如果你刚入门建议也别嫌啰嗦先逼自己遵守这套规范和层级逻辑等熟悉了再随意也不迟。这套东西值得花一篇文章的时间彻底搞明白。
返回列表