电子产业一站式赋能平台

PCB联盟网

搜索
查看: 114|回复: 0
收起左侧

【芯片设计】学海无涯步履远,眼界无穷天地宽

[复制链接]
匿名  发表于 2025-2-14 12:03:00 |阅读模式
以几件小事为引子开始本篇的内容以及下个系列的序章,也抛砖引玉欢迎大家的讨论。在去年完成“交付总结”的文章之后,就着手开始写“在工作生涯里遇到的那些各式各样的编码规范”系列。在开始时我就估计这会有比较大的争议,因为大家遇到的编码规范和约束肯定是差异很大甚至截然相反,所以在这个系列的每一篇开始的地方都标注了一下:

但是效果不好o(╥﹏╥)o很多好几篇文章的评论区都有争吵,当然了意见不统一而有争论这件事太司空见惯了,但是令头疼的是一类‘高屋建瓴’类评论:“业界都是如何如何做的”、“高级芯片不会有这种处理,你问什么高级芯片?能商用卖钱的就是”、“根本不会有人/公司问这个问题”。这类评论在无复位寄存器篇、function篇以及小红薯的格雷码篇、random篇、双沿采样篇等众多评论区出现。最可怕的是有时会一同出现“根本就不会有公司这么做” VS “这个操作不是司空见惯吗有啥可讨论的”两种声音,甚至都不知道应该先回谁好,生怕怠慢了大佬。这些评论里不乏10年、20年甚至30年经验的资深工程师(一般刚毕业没几年的也不敢这么说倒是),在他们自己的论点里也讲的头头是道。当然大家也清楚,很多东西行业里哪来什么通用做法,无非是你家这么搞他家这么搞,又或者你学学我我学学你的。很多处理就是权衡利弊之后做出的一个选择,如果有绝对优劣之分那语法层面可能就禁止或者更新替换掉了。引用一位大佬的意见:这就是芯片设计的魅力所在,绝大多数的决定都是tradeoff的结果。如果方方面面都要兼顾,这起码需要一支经验丰富的团队。
的确,这就是芯片设计的魅力所在。进而也发现了一个道理:很多经验丰富的资深工程师很可能一直聚焦在自己的这一亩三分地,想法中可能有很多脱节的地方,也无需盲目崇拜或是相信。多看多想多扩充眼界才是我们需要做的事情。本来一直觉得自己在这方面做的还算不错,因为对于各类语言、语法、优化方法和经验啥的都比较乐于接收和探索。但仅仅过了两天发现,其实我对某些技术和处理也有比较固执的“迷信”,换句话说,和刚刚批评的这些朋友也没有很大的不同。事情还是发生在前文所说的评论区,有评论说“S家是有大量使用function和task的”,当时我就想了,用function这个我知道,但是怎么会大量的用task呢?这语法在RTL里大量用合理吗?压根不可能的事情吧(插播一句,有一部分朋友认为task是不可综合语句,实际上他只是不完全可综合或者说非所有综合工具均支持罢了)。之后的事情就比较打脸了,评论继续给推荐了一本由S家资深工程师写的书,里面在推荐代码风格的时候明明白白这样写的:

当时脑海里就闪现八个字:世界之大,无奇不有,甚至都开始自动播放刘老根片头曲了:毛驴儿拉磨啊
它走不出那个圈
井里蛤蟆就能看见巴掌大的一块天呦
反思一下,作为芯片前端从业者,我们常常会陷入一种“舒适区”:对自己熟悉的领域充满自信,却忽略了那些超出视野之外的知识和经验。而显然,芯片设计是一个庞大而复杂的生态系统,从架构设计到后端实现,从工艺制程到系统应用,每一个环节都可能影响最终的结果,即使我们局限在某个领域某个岗位,都可能存在众多的“未知”。如果我们只盯着自己的这一片小天地以及经验,很容易陷入“盲目自信”的陷阱。那如何避免这种情况呢?
  • 保持好奇心:主动了解上下游环节的技术细节,比如后端实现、验证方法、甚至市场需求。这些看似“无关”的知识,可能会带来全新的视角。
  • 多与同行交流:可以参加技术分享会、行业论坛,或者简单地和同事聊聊天。别人的经验往往能帮你发现自己未曾注意到的盲点。
  • 跨界学习:芯片设计不仅仅是写代码、调电路,它还需要对系统、算法甚至软件生态有深入的理解。尝试学习一些跨领域的知识,可能会豁然开朗。
  • 接受不完美:技术更新迭代很快,没有人能掌握所有知识。承认自己的不足,才能更好地学习和进步。
    总之,学海无涯步履远,眼界无穷天地宽。芯片设计的天地远比我们想象的广阔。只有不断突破自己的边界,才能走得更远。
    共勉!
    在共勉想清楚这个道理之后,前几天走在路上偶然想起许久之前的一件事,决定进行下探究。很长时间以来都怀疑是记错了,今天看来并不是,只是涉及到我的知识盲区而已:

    而后评论区果然不会让人失望,甚至都要把人名都要扒出来了(这倒是大可不必ヽ(?ω?′?))。这里汇总一些比较有价值的技术型回复:
    “是那个浮点数计算的题目吧?当时第一名是使用了low latch向前借了半拍,所以综合出来的结果比其他人都要好。之后的比赛里,都不允许使用这种设计了。”
    “是可以的,在scan chain里可以处理hold time violation,在data path里就叫time borrowing,不过需要小心的处理delay”
    “之前接触过同时有上升沿和下降沿触发DFF的芯片,时序约束会很麻烦,由于从上升沿到下降沿只有半个周期,对组合逻辑时序要求很严格。有些极端情况还会使用latch作为寄存器,来满足应用需求”
    “Latch based design跟pulse latch design”
    以及引自知乎某大佬帖子的佐证内容:

    讲真,这种设计思路又够后面学习一通的了。
    再次共勉!一起加油吧!


    系列文章入口
    【芯片设计】SoC 101(一):绪论【芯片设计】FIFO漫谈(零)从无处不在的FIFO开始说起【芯片设计】计算机体系结构(一)虚拟内存【芯片设计】深入理解AMBA总线(零)绪论
    【芯片设计】握手协议的介绍与时序说明【芯片设计】复位那些小事 —— 复位消抖【芯片设计】快速入门数字芯片设计(一)Introduction【芯片验证】UVM源码计划(零)下定决心读源码前的自测环节
    【芯片设计】异步电路碎碎念(一) 到底什么是异步电路
    【芯片设计】从RTL到GDS(一):Introduction
    【芯片设计】系统中的可维可测状态记录寄存器设计
    其他文章链接
    【芯片验证】sva_assertion: 15道助力飞升的断言练习【芯片验证】可能是RTL定向验证的巅峰之作【芯片验证】RTL仿真中X态行为的传播 —— 从xprop说起【芯片验证】年轻人的第一个systemVerilog验证环境全工程与解析
    【芯片设计】verilog中有符号数和无符号数的本质探究
    【芯片设计】论RTL中always语法的消失术
    【芯片设计】代码即注释,注释即代码
    【芯片设计】700行代码的risc处理器你确实不能要求太多了
    入职芯片开发部门后,每天摸鱼之外的时间我们要做些什么呢
    如何计算系统的outstanding 和 burst length?
    芯片搬砖日常·逼死强迫症的关键词不对齐事件
    熟人社会里,一群没有社会价值的局外人

    [/ol][/ol]
  • 本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    回复

    使用道具

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表