在进行处理器结构和逻辑设计的过程中, 其它方面的工作也在同时展开, 包括王剑和郑保建带领的龙芯1号系统的继续开发以及龙芯2号软件环境的开发, 郑为民带领的龙芯2号主板的开发, 许彤、赵继业、钟石强、张珩负责的物理设计和验证方法的总结和研究等等。
就在龙芯2号的RTL设计过程中, SARS在北京肆虐, 并给我们极大的考验。 那时候所里的政策是所里不统一放假, 但各个部门可以根据自己的具体情况放假。 我和唐志敏商量后决定我们采取一定的预防措施并适当减轻工作强度。 我们要求凡是乘坐公共交通系统上下班的都不来上班, 晚上9点前必须下班, 每天的中饭和晚饭由室里统一安排在办公室吃。 至于外界的来访, 所里早就不允许进入北楼了。 此外, 所里和室里都给我们发放了有关的预防药物, 我们自己也买了一些。 在这段日子里, 虽然我们的进度被迫放慢了一些, 但依旧不断地向前推进。 我在为全国人民面对灾难时众志成城战胜非典的精神所鼓舞的同时, 也为全组在这么困难的情况下坚守岗位所感动。
2003年3月份我们开始部署龙芯2号中用到的一个9个端口的寄存器堆的全定制设计。 为了保险, 我们部署了两套方案来设计寄存器堆。 首选方案是请一个大公司帮我们做这个寄存器堆, 同时作为与中科院微电子中心的合作请微电子中心设计同样的寄存器堆作为备选方案。 由于首次流片主要是对设计的正确性和结构性能进行验证, 因此首次流片除了寄存器堆外还是用ASIC的设计方法, 并准备用中科院EDA中心的Synopsys工具进行布局布线以减少购买EDA工具的费用, 因此在5月份之前物理设计组的人员也对Synopsys的工具进行了进一步熟悉。 2003年5月份开始龙芯2 号的物理设计正式展开。 从5月初到6月中下旬, 我们对使用的方法和流程进行了反复的试验、比较和确定, 尤其是关于是否使用层次化设计方法、使用何种 Wireload Model、以及Floorplan的方案等进行了反复的试验和尝试, 并最后确定方法和流程。 到6月底时确定了布局布线的方案并基本完成了布局布线, 与流片厂家TSMC联系好准备在7月10日前tapeout。 本来一切都在 “掌控之中” , 但随后发生的两件事情却大大出乎我们的意料。
第一件事情是在6月底完成FPGA验证平台建设后, 在用该平台运行SPEC CPU2000程序进行性能分析时有一个程序的浮点结果有时正确有时错误。 由于其它程序都运行正确, 而且操作系统对虚地址CACHE支持部分还有bug, 因此刚开始我没有认为RTL有问题。 7月2日下午, 张福新在机房中说了一句话: “我觉得还是RTL有问题” , 这句话使我心烦意乱, 放下正在看的布线工具文档, 决定要把这个事情搞清楚。 在随后的几十个小时中, 我们使用FPGA验证、C模拟器、以及RTL仿真对这段出错的程序进行追踪。 终于在7月4日早上找到了一个RTL的bug。 好在问题只涉及局部的设计, 我们修改完RTL后通过手工修改网表花了一天就完成了ECO的布局布线。