芯片设计预备役
从技术实现角度给点具体步骤建议。你们的核心是展示‘后端设计能力’,这包括规划、布局、布线、时序收敛、物理验证等一系列能力。在开源环境下,需要更精细地操作。
第一步,流程完整性保障。建议先用一个很小的设计(比如一个加法器)跑通整个OpenROAD流程,熟悉工具链和可能出现的错误。然后再将RISC-V核(建议从像PicoRV32这样的小型核开始)接入。确保每个阶段(综合、布局、CTS、布线、填充、导出)都有清晰的中间输出和日志记录。这是展示能力的基础。
第二步,深度优化环节。我强烈建议聚焦在‘布局’和‘时序收敛’上。
1. 布局优化:OpenROAD允许自定义宏模块位置和布局密度。你们可以分析综合后的网表,识别出关键模块(如ALU、寄存器堆),在floorplan阶段手动为它们划定更优的区域,减少全局布线长度。可以尝试不同的布局策略(如增大模块间距缓解拥塞)并对比结果。
2. 时序优化:开源工具时序分析能力有限,但你们可以主动出击。在布线(Routing)后,详细分析时序报告,找出建立时间(setup)违例的关键路径。然后,返回到布局甚至综合阶段,对这些路径上的模块施加更紧的位置约束,或者尝试修改RTL(如插入流水线级)来切割关键路径。这个过程最能体现你们对时序问题的理解。
3. 利用脚本自动化:将上述优化过程用Tcl或Python脚本实现,形成可重复的优化流程。这能展示你们的工程化思维。
第三步,文档与答辩重点。要建立一个对比基线:即工具默认流程的结果 vs 你们优化后的结果。用数据说话,比如优化前后关键路径延迟的减少、布线拥塞程度的降低、总面积的变化等。重点阐述你们在工具限制下,如何通过手动干预和脚本编写来逼近甚至实现商业工具的部分效果。对于可制造性,除了通过DRC/LVS,可以简要讨论一下天线效应、闩锁效应等基本预防措施在开源流程中是如何检查或规避的。
记住,在资源受限的条件下,把一件事做深,比泛泛而谈更有说服力。
