Q:要不要做门级仿真?

A:如果是走 design-service,不知道最终带 sdf 的 netlist 仿真是否需要做,如果做的话, 最好在 release 综合后 netlist 的时候也做一下(插完 scan-chain 和做完 CTS 以后有条件也做 一下),如果需要 VCD 文件做 power 分析和指导 PR 工具的话,那么门仿是必须做的。

如果 design-service 公司不负责调量产 pattern 的话,那么 ATPG 等的门仿是需要自己做的。 门仿并不是 sign-off 标准,但是推荐还是做一下,经常还是能跑出问题来的。如果做 sdf 反标的门仿的话,对于 async 的多级 dff 要剔除掉(VCS 和 NC 都有 option,vcs 可以查手册 里 “ +optconfigfile ” ,NC 查 ” +nctfile ”)。

反 标 Sdf 仿 真 的 时 候 推 荐 notimingcheckàno_notifyàchecking_timing with optconfigfile 的三步走。 前期在评估 IP 的时候,有可能个别模块可能需要单独搭门级环境,比如 CPU-IP 有 RTL, 要自己做 flow,那么通常是需要做门仿的(有可能主要是为了跑 vcd 或 saif 做 power 分析)。 Tb 的修改:由于 CTS 和综合的原因,导致时钟名字和信号名字有变化,所以 tb 有可能要 修改。

另外,tb 里的 probe 文件建议使用反沿采样,也是为了避免带 sdf 反标以后 clk 踩不到 整个 data-vector。除此之外,个人不太建议在门仿的时候依然使用自动化的 tb。因为你的 tb 里抓的很多内部信号可能名字变了(或者被优化掉了),这样导致 tb 在门级跑的时候维护起来有 些麻烦。有些信号即便名字不变,可能会反向,这样会导致你的 checker 误报错。

毕竟在门仿的时候不用跑太多的 testcase,可以靠几条和 rtl 仿真一一对应的仿真来覆盖。门仿毕竟不是为 了 function,而是为了检查 timing。 如果你的设计里用了不带 reset 的 dff 的描述,由于开始不定态的传播,可能导致你门 仿失败。个人推荐的方法是:如果特别多的话,用脚本找到对应模块里所有 dff,产生一个 force-release 文件(注意:很影响编译时间,所以能不用就不用)

Q:FPGA 和仿真如何安排顺序?

A:首先是 schedule 优先,其次是力所能及。但是原则上是先仿真然后再上 FPGA,仿真 可以很快的扫清一些基本的 bug。给仿真的时间充裕的话,那就仿真尽量往前赶,尽量在上 FPGA 之前多测一些(不是太多 case 的情况下,FPGA 的测试速度毕竟要快一些)。即便 FPGA 很着急 上,起码也让仿真先用几条直接 testcase 调试通过最基本的功能。第一版 FPGA 可能因为接死、 悬空和信号反向导致逻辑被优化掉,这些问题有时候用仿真也不能全发现,就要结合 leda 等 lint 工具。

Q:仿真如何复现 FPGA 发现的 bug?

A:首先保证配置的一致性,可以考虑做一些内部的工具。仿真上要 probe 寄存器操作端口, FPGA 上要能把 firmware 里的配置流程转成文本。 如果配置一样还是不能发现的话,再去逻辑分析仪上 debug 时序。当然,CDC 的问题 在仿真上是看不到的。 个人不建议做 FPGA 网表的门仿,有点得不偿失。

Q:FPGA 不能 cover 的部分的验证?

A:PAD_Mux(Test_mux)、Clkrst、Power-management-unit 以及 FPGA 跑不到的高 频所对应的功能。Clkrst 这部分主要就是 pll config、clock-gate、divider、soft-and-hard reset, 从测试点的角度还是很明确的,RTL 代码修改的少的话,可以考虑不用做太复杂的验证(但是 clkrst 模块里可能会有一些控制逻辑或者状态机,比如:sdram 的切频,这里一般是需要一个状态机控制的,这个需要仔细和小心的验证。) PAD_mux 个人比较推荐使用自动化的流程,因为代码风格非常固定,所以可以用脚本生成 RTL 和用脚本生成 testcase(一般这样的 testcase 是一堆的 force) PMU 建议看看 VCS 的 MVsim 的文档,里面介绍的很清晰了。(还是要配合静态验证工具 MVRC 一起来做)没有 MVSim 的话,可以考虑用 VCS 的$power $isolate。

Q:固化的 firmware 如何验证?

A:个人不建议让仿真去覆盖 firmware,但是对于 FPGA 和 ASIC 不一样的地方要重点覆盖 到。大的流程要覆盖到,其他细节由 FPGA 保证。

Q:架构评估?

A:我经验也不多,举几个例子。比如你的总线拓扑合理不合理?内存控制器的效率(机制) 是 否 满 足 你 的 应 用 ? 使 用 哪 类 Cache ? Cache 的 大 小 ? 模 块 的 FIFO 深 度 够 不 够 (error-injection 可以测到)?算法需要多少 mips(rvds 等工具带的模拟器可以给出结论,但 是要让模拟器能考虑到内存 access 的 latency)?软件里如果有不少 memcpy 的话,要模拟系 统运行起来以后 memcpy 的效率。 如果没有人手专门用 ESL(如 Carbon 的 CMS)工具的话,建议在验证平台上做(当然 一旦有大问题,要推翻架构会很麻烦)。

Q:哪些资源要节省?

A:当然首先是人(数)要节省,人的成本比起计算资源成本和存储资源成本要大多了。提 高技术、提高自动化程度才能节省人的成本。(低 Package 这种方法属于伤天害理的手段,不是 正当途径) 减少硬盘需求(如果有必要) 共享 simv/simv.daidir csrc(包括 regression 过程中自动清 理磁盘空间);激励数据是否可以不一下子全产生出来(对于通讯类的比较有意义,由于是 floating 的激励数据,所以经常很短时间就需要 GB 的空间)。注意对每个人每个项目设置硬盘 quota,避免被个别人撑爆存储。 减少编译次数(soc 项目里比较有必要,testcase 基于 firmware),parallel-compile or separate-compile ,vmm-test,在一个 testcase 里做多个功能点的覆盖,fsdb/vpd 的 dump 层次的改变不要重新编译(fsdb 有 command,vpd 可能得用 ucli)。

Q:设计规模大了编译很慢怎么办?

A:有时候设计规模太大导致编译很慢,但是 SoC 项目很多情况下,功能模块彼此之间是 用总线隔开的(即便在功能模块之间有硬件连线也可以考虑用仿真模型来做替代)。在仿真某一 个功能模块的时候,可以考虑 dummy 掉不相关的模块。 但是这就引入了一个新问题“文件列表的维护”。基于这种 dummy 的思想,文件列表的维 护就成了 tb 里的一个很关键的地方,要尽量避免维护太多的文件列表。我个人比较推荐利用脚 本来自动产生所需要文件列表。除此之外,仿真用的文件列表里我个人比较推荐用绝对路径(避 免别人 debug 的时候出现调错文件的问题,另外可以指定不同的工作目录)。CVS 里用相对路 bswk SMT 加工 www.smtsmt.com.cn 径,相对路径转绝对路径的工作由脚本自动完成。

Q:编译还是运行 option?

A:为了减少编译的次数,能使用运行的 option 就使用运行的 option。比如使用 v a l u e value valueplusargs t e s t test testplusargs

Q:Assertion 谁来写?

A:建议 RTL designer 和 IC 验证工程师都写。内部实现细节的描述由 RTL-designer 自己 写,模块之间的时序由 IC 验证工程师来写.

想要了解更多,可以关注IC修真院,下期继续为大家更新!或者可直接ling 全文档

这里放个口:对 IC 验证的深刻理解

对 IC 验证有哪些深刻理解?十年资深经验工程师为你解读(二)相关推荐

  1. 对 IC 验证有哪些深刻理解?十年资深经验工程师为你解读(一)

    Q:语言.方法学有多重要? A:我的观点是:这两个都不重要.做事情的是验证工程师,来源是 Spec,所以 Testplan (全覆盖 testplan)最重要.重要的是验证的意识,愿不愿意去实现 H- ...

  2. 社区宽带繁忙是什么意思_十年宽带维修工程师给你解读,为什么宽带越用越慢!...

    每个家庭都有安装宽带,但是仍然有不少人不知道宽带的基本常识,今天和大家一起来聊一聊. 首先宽带,是一个动态的发展的概念,它是让各种媒体在网络上传输的媒介.我们大多数人接触到的网络宽带是ADSL宽带,它 ...

  3. 十年研发经验工程师的嵌入式学习书籍大推荐(转帖)

    从事嵌入式研发行业十年,认为学习就是要不断的吸纳知识,在研发过程中,经常会遇到一些问题,这种发现问题并解决问题的过程就是进步. 为什么选择学习嵌入式? 嵌入式系统无疑是当前最热门最有发展前途的IT应用 ...

  4. 【数字IC验证快速入门】11、Verilog TestBench(VTB)入门

    导读:作者有幸在中国电子信息领域的排头兵院校"电子科技大学"攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思.清华紫光.联发科技等业界顶尖集成电路相关企业面授课程, ...

  5. 十年经验工程师为何被裁?

    事件 去年年底,公司来了一位工作十余年的工程师,据说软件硬件都会,应聘的岗位是XX算法工程师.比较巧的是,这位工程师是我上一家公司隔壁部门的同事. 我们均来自大厂,但是是国企,二线城市.所以尽管他在前 ...

  6. 十年磨一剑,两万字长文深剖析分享IC验证经验

    有人认为我验证做得很牛,也有人认为我的验证早就丢下了:有人认为我发现了各个项目的不少问题,也有人认为我在CMM库的几百个问题单大部分属纯净水. 好吧,无论怎样,我还是把我在验证中如何发现和定位Bug的 ...

  7. 十几年经验的原华为海思工程师亲述ic验证如何转ic设计

    先简单和你说下我的经历,给你点信心. 我大学学的自动化,第一份工作是软件开发,windows桌面应用,用C和C++:第二份工作本来还是某为终端的软开,但因为个人原因入职推迟了三个月,最后被调到了某思芯 ...

  8. 华为内部的关于IC验证的经验总结

    华为内部的关于IC验证的经验总结 ----IC验证工程师的"易筋经" 有人认为我验证做得很牛,也有人认为我的验证早就丢下了:有人认为我发现了各个项目的不少问题,也有人认为我在CMM ...

  9. 年薪30W+的IC验证工程师究竟是做什么的?一文为你讲解清楚

    众所周知IC行业是个投入非常大的行业,做一颗芯片开模的费用就达到了百万级,在芯片设计的过程中光BUG就可以达到上千个.如果这些BUG没有被发现的话,就可以遭受巨大的损失. 因此验证就是保证芯片功能正确 ...

最新文章

  1. 图像处理算法之瘦脸及放大眼睛
  2. Java设计模式中的六大设计原则
  3. 【Flink】Flink 报错 Initial AbstractPagedOutputView Segment may not be null
  4. Even better, if you don’t want to answer and
  5. CentOS设置ssh密钥登录
  6. node.js连接数据库(mysql)
  7. python大数据毕设选题
  8. 1.8Linux下的软件管理
  9. matlab圆孔孔壁应力集中,平板中心圆孔边应力集中的有限元分析
  10. 高德地图API:如何根据经纬度获取位置信息
  11. MIC - 最大信息系数
  12. PIKA trouble02 -- (error) ERR Syntax error, try CLIENT (LIST [order by [addr|idle]| KILL ip:port)
  13. 基于软路由连接上网的相关配置
  14. 如何增加架设传奇服务器
  15. 快手小店通效果好吗?
  16. tensorflow 之tf.Session
  17. 无线授时服务器接LED屏,实现ipad远程无线控制led大屏幕分以下几个步骤!
  18. CrownCAD二次开发,从中国结代码看代码简洁之美
  19. 数学建模-第9-13章:统计学方法建模汇总
  20. 分享116个PHP源码,总有一款适合您

热门文章

  1. v2.2发布,CNC Fanuc、QnA 1E驱动即将到来
  2. solr 基础查询语法
  3. 【运维面试】k8s中service和ingress的区别
  4. 010破解(一)之暴力破解
  5. ES(elasticsearch)搜索标题精准匹配度调节
  6. [转Iphone]根据经纬度坐标取详细地址(包括国,省,市,街道,号)
  7. 刷openwrt使用usb键盘时卡在NET: Registered protocol family 24
  8. python schedule at_Python schedule 模块使用
  9. android点击跳转前清除任务栈中的所有activity
  10. AlphaControls 控件Delphi使用