芯片设计小经验——大道至简

数字IC自修室 2021-08-25 18:46
作为一个IC前端设计工程师,每个人都想追求极致的PPA,以及电路的鲁棒性。在各种微架构之间权衡,PK,tradeoff,为了实现PPA最优,或者某个单项最优,常常需要绞尽脑汁。而在进行验证时,也是需要极尽思考,避免各种可能的corner场景,保证验证的完备。而所谓大道至简,在电路设计中很多时候简单的就是最好的。简洁意味着更少的资源,更低的功耗,容易实现更高的频率,自然也就提高了PPA。此外,简洁还有另一个更大的好处,即电路的稳定性,没有了复杂的场景,corner case自然更少。


逻辑简化,说到底就是去除冗余逻辑,冗余逻辑主要分为两种,一种是由于设计人员自身逻辑不够简洁带来的额外开销,另一种则是由于设计场景的特殊性导致一些通用性逻辑变得冗余。1


1  设计人员自身逻辑冗余


此类逻辑冗余,通俗来讲就是脱裤子放屁。为了达到某些目的,明明可以一步到位,却绕了很大一个圈子浪费了很多资源才达成。数字电路是一个人的逻辑思维的具象化,日常生活中我们的思考有时候也很容易出现这样的问题,把一些简单的问题思考的很复杂。这样的逻辑冗余,有的时候一眼可以看出来,有的时候如果已经陷入了思维定式则很难被发现,需要有经验的工程师帮忙review方案和代码。经常在办公室听到有经验的老工程师检视新员工的代码说道:“这东西本质上不就是xxxxx吗?为啥要搞这么一大堆没用的东西,直接xxxxx不就可以了吗?“。自己尝试分析了一下,容易造成冗余逻辑的原因有两点。一是设计方案的时候遇到某些曾经做过的场景,直接套用原有的方案,或者自己熟悉的方案。比如说到跨时钟域处理,二话不说上来开始写异步FIFO,也不管具体的场景和约束,当然最后也能实现目的,但是逻辑和资源的开销有很多无谓的浪费。二是能力水平有限,看不到某种设计思路的本质,浮于表面的绕圈圈,这种情况只能靠不断学习吸取优秀设计的经验,逐渐成长。


2  设计场景的特殊性


芯片的设计是应用于具体的业务场景的。只要有具体的场景,就有激励和约束。所有的可能激励和约束一同构成了设计的电路能力的上限和下限,做多了没用,做少了不行。当你的目的是追求一些可拓展性,有的时候可能需要让设计更加通用,符合一些目前没发生但未来的应用可能发生的场景。如果你的目的是追求当前场景应用下的极致PPA,思考如何将电路能力做的不多不少“刚刚好“,是非常有必要的一种优化方向。而在可拓展性的基础上又尽力将电路做的”刚刚好“,则是所有优秀设计的共性。那么如何最大限度地利用不同场景激励和约束来简化设计呢?


1. 清楚明确实现中的约束和激励


根据不同的设计场景,不同的功能模块都有不同的约束和激励。有的是算法本身导致的,有的是协议规定的,有的是上下游能力导致的。时刻对此保持敏感,在方案设计上充分体现。举个例子,下游对上游BIU模块的读请求有约束,不能发出burst_len=3的操作,这虽然在一定程度上约束了上游发出请求的通用性,不能做一些通用性电路,可能会需要一些特殊的处理。但在另一方面也减少了上游下发场景的个数,在特殊处理中可以一定程度上利用此特点简化电路。另外一个例子,我们在很多算法中会进行加减计算,而加减数的范围很可能是有范围约束甚至是组合约束的,这种情况下使用枚举法之类的处理而非通用性加减计算,可以很大程度帮助简化逻辑。

2. 方案设计时遵从满足“大部分场景“为主


作为功能模块来说,其运行的业务分为大部分场景和偶发场景,在设计时对其区分处理,避免将偶发场景和大部分场景统一处理,可以在某些时候简化整个方案的实现难度。一个最常见的例子是memory ECC校验,检测出ECC错误之后对于电路状态的恢复暂停等操作。我们知道发生ECC错误是极小概率的事件,而对于电路状态的恢复暂停等操作除了ECC错误,还有一些比较常见的别的场景。这个时候如果将ECC这个场景和别的常见场景放到一起处理,很可能会因为ECC检测的长时延(memory读数据时延加上ECC逻辑)而导致很多原本不会有时序风险的路径也面临时序风险,为了解决这些时序风险,则需要对原有的电路做特殊处理,带来了不必要的麻烦。而如果直接将ECC通路单独拿出做特殊处理,以一些性能为代价,因为其不常发生,对于总体性能的影响也可以忽略,则可以避免处理这个特殊场景对电路复杂度带来的负面影响。


另外一个例子,某个数据池收集数据,数据包99%的时候是按照ID顺序逐步递增发送过来的,只有1%的时刻会有小规模乱序的情况。那么在制定收集策略的时候,可以将场景设定为完全乱序,这样可以满足100%场景的情况,也可以将场景设定为顺序,对乱序的部分则进行检测单独处理,在很多时候,后者所需的逻辑会更加简单。因为直观上来看,完全乱序需要处理更多的组合可能性,而这些可能性很可能不会发生或者极少发生,顺序则意味着规则简单,利用顺序本身的约束简化逻辑,避免用99%的开销去完成1%的特殊场景。


今天就到这里,欢迎大家继续关注我们后续文章。


本文作者 | L.L.
评论
  • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
    紫光展锐 2024-12-03 11:38 101浏览
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 119浏览
  • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
    coyoo 2024-12-03 12:20 111浏览
  •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
    锦正茂科技 2024-12-03 11:50 109浏览
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 100浏览
  • TOF多区传感器: ND06   ND06是一款微型多区高集成度ToF测距传感器,其支持24个区域(6 x 4)同步测距,测距范围远达5m,具有测距范围广、精度高、测距稳定等特点。适用于投影仪的无感自动对焦和梯形校正、AIoT、手势识别、智能面板和智能灯具等多种场景。                 如果用ND06进行手势识别,只需要经过三个步骤: 第一步&
    esad0 2024-12-04 11:20 50浏览
  • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
    Industio_触觉智能 2024-12-03 11:28 84浏览
  • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-02 23:58 71浏览
  • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
    万象奥科 2024-12-03 10:24 68浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 120浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦