Understanding Placement Blockage Types: Hard, Partial, Soft, and Macro-Only

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

1. 从“禁区”说起:为什么我们需要摆放阻塞?

做芯片物理设计,特别是布局(Placement)这一步,朋友们,咱们最怕什么?我干了这么多年,最头疼的就是“堵车”。不是马路上的堵车,是芯片内部信号路径上的“堵车”,也就是我们常说的拥塞(Congestion)。你可以想象一下,在一个密集的城市里,所有道路都规划得乱七八糟,车流和人流挤成一团,那通行效率肯定惨不忍睹。芯片内部也一样,成千上万的逻辑单元(Standard Cell)和巨大的宏模块(Macro,比如内存、处理器核)如果摆放不当,布线资源就会严重不足,导致时序违例、功耗增加,甚至设计无法实现。

那怎么避免这种“城市病”呢?早期规划是关键。这就引出了我们今天要深入聊的“摆放阻塞(Placement Blockage)”。它就像城市规划里的“禁建区”或“限高区”。摆放约束(Placement Constraint),比如Guide、Fence、Region,是管“谁”(哪个模块)能放在哪。而摆放阻塞,管的是“这块地本身”能用来干什么,它直接对物理空间的使用做出限制,从源头上预防拥塞。

在Cadence Innovus这类主流的物理实现工具里,摆放阻塞不是简单的一刀切“禁止摆放”,它提供了四种精细化的“管制”类型:Hard(硬阻塞)、Partial(部分阻塞)、Soft(软阻塞)和 Macro-Only(仅宏阻塞)。每种类型就像不同颜色的施工警示牌,告诉布局工具:“嘿,这里规矩不一样,你得注意点!” 理解并用好这四种类型,是每一位后端工程师从“会用工具”到“精通设计”的必经之路。下面,我就结合我踩过的坑和成功的经验,带你彻底搞懂它们。

2. Hard Blockage:最严格的“禁区”,一砖一瓦都不能放

2.1 它到底是什么?一个绝对的红线区域

Hard Blockage(硬阻塞),顾名思义,是限制最严格的一种。你可以把它理解为芯片版图上的“永久基本农田”或者“生态保护区”。一旦你划定了一个Hard Blockage区域,那么在整个布局阶段,工具会严格遵守一条铁律:该区域内禁止摆放任何标准单元(Standard Cell)和宏模块(Macro)

注意,是“任何”!它不像Partial那样可以商量个利用率,也不像Soft那样后期还能开个口子。Hard Blockage划定的区域,对布局工具来说就是一片“虚空”,它会完全忽略这片区域的可用性,把所有单元都挤到区域外面去摆放。这听起来有点霸道,但在很多场景下,这种霸道是必须的。

2.2 什么时候必须用它?典型的实战场景

我在项目里用Hard Blockage,主要是在以下几种“雷区”:

场景一:预留芯片的电源网络(Power Grid)和时钟树(Clock Tree)的走线通道。 这是最经典的应用。芯片顶层的电源线和时钟线通常很宽,需要横跨整个芯片。如果你不提前给它们留出“高速公路”,等单元都密密麻麻摆好了,再想挖条路出来就难了,强行布线会导致严重的IR Drop(电压降)和时钟偏差(Skew)。所以,我们会在规划初期,沿着芯片边缘或者核心区域之间,划出几条贯穿的Hard Blockage带,明确告诉工具:“这里不许摆东西,是给电和时钟走的专线通道。”

场景二:保护模拟电路(Analog Block)或敏感模块(Sensitive Macro)的周围区域。 模拟电路对噪声极其敏感,数字单元摆得太近,开关噪声会通过衬底耦合过去,导致模拟性能恶化。比如,一个高速SerDes模块或者一个精密ADC旁边,我们通常会画一个“隔离带”,也就是Hard Blockage,确保没有数字单元紧挨着它,提供一个安静的“缓冲区”。

场景三:预留给后期手动摆放或特殊单元的区域。 有时候,有些关键路径上的单元,或者一些工具自动布局效果不理想的单元,我们计划在后期手动微调(ECO)。为了给手动操作留出空间,我们会在目标区域附近提前设置Hard Blockage,防止工具前期把其他地方塞满,导致后期“无地可用”。

场景四:处理版图中的物理障碍。 比如,芯片上可能存在一些固有的、不能摆放逻辑的物理结构,或者是一些留给封装、测试的预留区域。这些地方也必须用Hard Blockage明确标识出来。

2.3 使

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

内容概要:本文详细记录了对一个Android ARM64静态ELF文件中字符串加密机制的逆向分析过程。该ELF文件的所有字符串均被加密,无法通过常规strings命令或IDA直接识别。作者通过分析发现,加密字符串存储在.rodata段,其解密所需信息(包括密文地址、长度和16位密钥)保存在.data.rel.ro段的40字节描述符中。核心解密函数sub_10F408采用自反的双pass流密码算法,结合固定密钥KEY_TERM(由.data段24字节数据计算得出),实现字节级非线性、位置与长度相关的加密。文章还复现了完整的Python解密脚本,并揭示了该保护机制的本质为代码混淆而非强加密,最终成功批量解密全部956条字符串,暴露程序真实行为,如shell命令模板、设备标识篡改、网络重置等操作。此外,文中还提及未启用的自定义壳框架及其反dump设计。; 适合人群:具备逆向工程基础的安全研究人员、二进制分析人员及对ELF保护技术感兴趣的开发者。; 使用场景及目标:①学习ELF二进制中字符串加密的典型实现方式与逆向突破口;②掌握从结构识别、函数追踪到算法还原的完整逆向流程;③理解“绑定二进制”的完整性校验设计及其局限性;④实践编写IDAPython脚本自动化提取与解密敏感数据。; 阅读建议:此资源以实战案例驱动,不仅展示技术细节,更强调逆向思维与验证方法,建议读者结合IDA调试环境,逐步跟随文中步骤进行动态分析与算法验证,深入理解每一步的推理依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值