除了刚才介绍的 Model 的级别,还有一个非常另外的一种思路,“TableModel”的存在,它有点类似于大数据的概念。传统的 Model,尤其需要用 Analog 仿真器的 Model,一般都先是根据器件的物理特性做的参数,有物理的概念在里面,还要考虑高阶效应,更要考虑 Model 的数学表达式的连续性和光滑性、使得尽量少的出现 Convergence 的问题。所以有时候和 Silicon 的吻合程度就不一定那么高。
而 Table Model 呢?我才不去想那些乱七八糟的各种物理学特性呢,我直接把 Silicon 测试出来的数据都列举出来,建立一个数据,你在什么样的温度、电压下有什么 Silicon 数值表现,我就直接写到表格里面;到时候仿真器用的时候直接查表就行了。或者我才不 Care 你电路是怎么用 Transistor 大器来,也不管你是一个比较器,还是一个 Amp,我只关心你输入什么值,能输出来什么值就行了;至于他们之间的数学表达式关系,你以前是可以用 VerilogA、VerilogAMS 写,而在我这里,你不用想他们的数学表达式了,我不在乎!我有表,一表在手,有 input 有 output。
看看 Table Model 的表现,你是不是想起来一本书?那就是《大数据时代》,它的作者舍恩伯格就曾经指出过一条有意思的理论,那就是在当今信息和数据极大丰富的时代,咱们在逐步放弃对因果关系的过分渴求,取而代之去关注“相关关系”;也就是说不需要知道“为什么”,而是强调知道“是什么”。不去看量子力学的各种效应,不去想 MOS FET,电容电阻的物理特性,只是根据实际测试到的 silicon 的数值,直接做一个数据库,当外界加什么电压、有什么温度时候,就来什么对应的输出电流等。这就类似于大数据的概念,不关心为什么,只在乎是什么。用互联网的里面的热词,来理解半导体行业,我自己写出来的时候也是醉了。
当然 Table 不可能穷尽所有的数据,所以对于没有在 table 里面的数据,仿真器需要插入数值(interpolate)或者外推推断数值(extrapolate) ,这也是一个技术活,我们以后有空可以讲讲。总之是,TableModel 可以做的和实际的 silicon 测试出来的数据一模一样了;不过它也有短板,那就是连续性和光滑性,毕竟它是分离的数据。对于 Digital 自然是喜欢的,Analog 仿真器还是需要处理。
4.Model 前一定要 plan!plan!plan!
花了这么大的篇幅介绍完了 Model 的种类、让大家对 Model 的花样心中有数之后,我再回过头来强调一件事情,那就是做 Model 一定要 Plan!好多 Model 的教材,都会把 Plan 作为第一章节的头等重要事情强调一遍,可见其是多么重要。而我把 Plan 放在这里,就像是你去商店买手机,我先给你介绍完苹果、华为、小米的各种好坏处,让你有一个大致了解之后,再去真正想你所关心的是什么;也就是你做 Model 到底想“洞见”什么。这也是战略性的事情,要想,想清楚。
做 Model 前一定要 plan!plan!plan! 重要事情说三遍。Plan 这种事情,说起来很容易,大家也大概知道是什么意思。但是这个东西又有时候比较虚,你学习了一句语法怎么写,然后你尽快应用到了实际中,这种疗程短、见效快,所以喜闻乐见。但是 plan 呢,你读了 plan 的大致内容,Cadence、老板等也教了你一些方法,但是这些都是疗程长、见效慢的东西,没有日积月累,很难突破。但是这种就像是电脑的操作系统,在最底层,平时看起来最不起眼,但是这种东西一旦升级好了,就是融会贯通,就是“质”的飞跃。
Model 是有好多好处,把仿真速度提高、把精度提高、可移植性(Portability)好、能够在项目初始阶段就做整体仿真、能让数字模拟工程师结合起来,让软硬件工程师结合起来…问题是你最关心的是什么?哪个级别的 Model 是你所需要的,是你的 DVPlan 里面最最在乎的?
包括整个 IC,在做设计的时候,要做好 Block 划分;非常复杂的 blocks 要在细分可以 manageable 的 sub-blocks;如果一个 Block 准备用 Model 代替了,那么这个 Model 下面,就基本不要再包含电路了。如果一个 Block 的 transistor level 的各种 detailed 的信息都很重要,那就不用 Model 了,直接用 schematic 好了;如果做 Model,一定要搞清楚为了啥。一定要想清楚 DV 在这里是 Test 什么的,Model 到能够 Test 就行了。
Model 是否需要统一的规范?因为你今天做个 Model,明天还想着 Reuse 呢。但是一旦想统一规范,可能就需要花费更长的时间和精力,你们项目允许么?长远看值得付出不?哪些 Model 不要弄?例如对于非线性的 Non-linear 可能要考虑下是否可以转化为线性的。对只有弱相关的东西(weak dependencies)可以近似成一个常数;对于 delay,除非对 Function 比较重要,否则一般都不需要 Model。如果进入一个 Model 的 inputcontrol/signal 不符合 Model 里面的预期,是否就要有 assertion,就要报错。
总之,哪些要 Model,哪些不 Model,Model 到什么级别,Model 和 Design 的关系等等,都需要 Plan。下手吭哧吭哧具体干活前,把 Plan 想清楚,才能让功夫花在刀刃上。我挺喜欢猎豹傅盛有篇文章里面提到的一个图(见下),做事情把想法想清楚,Plan 做彻底,那么在相同的时间内,行动的斜率就高、收获就大。所以做 Model 前一定要 Plan!
5. 对写出来的 Model“不”做验证,就是耍流氓
只写出来 Model,而不对 Mode 进行验证,这就是耍流氓。就像只生孩子、不养孩子,这就是耍流氓。
对 Model 的验证,包括利用相同的 TestBench,对于 Model 和 Schematic 出来的结果的验证。验证 Model 和电路类似,有 Block 级 Schematic 和 Model 的吻合,还有 Sub-System 能够能通畅的利用 Model 仿真、以及 Model 和 Sub-System 的吻合。更有 Model 和整个 Top 的吻合度。当对 Schematic 做各种加法、形成 Model 的时候,其实在项目中,很多时候是在流片回来之后,为了和测试吻合,把 Schematic 上面加各种东西而形成的 Model。
6. Model EDA 方面,Cadence 有 SMG 和 amsDmV 工具
Cadence 确实给了很多 Model 的例子。如果大家用的是 Cadence 家给的工具的话,以下路径就有例子:
/ICXXX/tools/dfII/samples/artist/bmslib
SMG
Cadence 为了能够让喜欢”Graphical”的 Analog 工程师写代码方便点,开发了一个 Schematic Model Generator 的工具,在 Virtuoso 里面:CIW--> tools --> Behavior Modeling --> Schematic Model Generator。
它的主要好处是把一些 pin,你自己定义好了,他们给你最规范的 code;另外就是提供了一些很多内置的 Model 的小模块 BBT(BuildingBlock Text),其实就也是一些 example 的 code,然后让你自己根据自己的 schematic,利用这些 BBT 积木,去搭建城堡。
不过,注意,请注意,工具目前还是不能完全支持一个“schematic 进、code 出”的 So 智能的活儿;参见 Cadence 给的下图。ADVer,你们做 Model 的工作,暂时计算机还是代替不了的。
amsDmv
前面说过了,不做验证的 Model 上来就用,这就是耍流氓。所以做 Model,肯定要和 Schematic 去吻合。用相同的 TB 打打,看看关心的结果是否符合预期。问题是很多 Schematic 经常变,Model 本来做完了,可以伸伸懒腰打打哈欠,大功告成了;结果 Designer 又变化东西了;怎么让这种反复迭代轻松点?Cadence 又给了一个工具,叫 amsDmv(AMS Design and Model Validation):在 Virtuoso 里面:CIW--> tools --> Behavior Modeling --> Model Validation。
它可以利用 ADE 的结果,去比较你关心的 schematic 和 Model 仿真的波形,可以设置两者结果比较的精度 tolerance,以及踢掉不想比较的东西(exclude)等;更可以做最基本的 Pincheck 等。
以上两个 Tool,调查周围朋友的结果是:用的人很少。Cadence 的一些培训教材也把它们标志成 Optional 的章节。
小结
以上就是本次文章关于 Model 的整体概述。感谢朋友们对本文的建议和意见;欢迎更多公众号朋友提供反馈(可惜我还木有被微信团队认定为原创公众号啊,所以只能消息留言了;微信公众号背后的神秘团队,请审核我是原创!)。下期节目我们将深入一个技术细节,谈一个在 VerilogAMS 和 RVM Model 中,发挥着重要作用的一个 KeyWord,叫 Wreal。
与非网原创内容,不经允许,不得转载!
系列汇总: