我们的龙芯1号 胡伟武 2002年8月10日清晨6点零8分," login:"的字样如约而至地出现在用"龙芯-"作CPU的计 算机屏幕上。随着一阵欢呼从蚊子成群的中科院计算所北楼105房间传出,中国人结束了只 能用洋人的CPU造计算机的历史。我抱着键盘,迫不及待地登录进去,用ⅵ编辑龙芯-1 生的第一个文件,其中两段是这样写的 The historical time of 6: 08 on 2002. 8. 10 ends an era while begins a new one o The day in which we make computer with only foreign CPUs is gone with the wind of the morning of 2002.8.10. With tears and joys, we announce the successful running of liNUX (Kernel 2.4.17)with the Godson-IA CPU The great ecstasy at this moment makes all of our exhausting efforts of the past year be over paid Though this is only a little step of a long march, it indicates the glorious future of our own CPU 上述两段话,表达了我们对龙芯的良好祝愿和坚强信心。 如今,狗剩-1(还是这个名字叫起来比较顺口)已经连续稳定运行一个多月。在这一个多月 中,运行了完整的LNUX操作系统(内核版本为24)、gcc和i77编译器、X- window、浏览 器、 Apache Web服务器、防火墙软件、网关系统、mpeg播放器、基于 LINUX的文本编辑 工具 Abiword、调试工具、 SPEC CPU2000基准测试程序、用作NC的虚拟终端、以及Ⅴ x Works 嵌入式操作系统等等。 本来以为狗剩-1的成功运行会稍微减轻一点过去半年多来令人难以喘气的压力。没想到喜 悦过后是更大的期盼和压力。然而,在我们已经开始狗剩-2的设计的时候,回顾过去半年 多所做的事情,总结一下经验和教训,对以后的工作无疑是有好处的。 应该说,从去年三、四月份唐志敏和我开始组建CPU设计的队伍并全力投入CPU的设计 到今年八月第一个完全自己设计的通用CPU在200多MHz的主频下跑起来,这个速度还是 不慢的。究其原因,除了全组弟兄玩命以外,正确的技术路线是成功的关键。用唐志敏的话 说,就是"苦干加巧干 在我去年写的《我们的CPU》中,我曾经说过 Godson设计的技术路线主要有三条。一是坚 持高起点,从高性能通用处理器入手,走跨越式发展的技术路线。根据国外的成功经验 CPU的发展是"先高后低",即先发展计算机中使用的高性能通用CPU芯片,突破其中的关 键技术,在此基础上再发展嵌入式的应用。因此,在处理器设计上应以高性能通用CPU发 展为龙头,通过高端通用CPU的发展来带动整个CPU产业的发展。具体实施时,在目前达 到与国外相同主频的的客观条件不具备的情况下,应走通过优化处理器结构提高性能的道 路,强调处理器中各个层次的并行性(包括指令级并行性、数据级并行性、以及线程级并行 性)的开发以及软硬件的协同来提高性能。二是坚持兼容性设计,把兼容当作通用处理器的 生命。不管别人怎么说,我坚定地认为不兼容设计是导致我国目前处理器设计技术落后的重 要原因之一。由于现代计算机中软件开发费用已经大大超过硬件开发费用,因此兼容性设计
我们的龙芯 1 号 胡伟武 2002 年 8 月 10 日清晨 6 点零 8 分,"login:"的字样如约而至地出现在用"龙芯-1"作 CPU 的计 算机屏幕上。随着一阵欢呼从蚊子成群的中科院计算所北楼 105 房间传出,中国人结束了只 能用洋人的 CPU 造计算机的历史。我抱着键盘,迫不及待地登录进去,用 vi 编辑龙芯-1 产 生的第一个文件,其中两段是这样写的。 The historical time of 6:08 on 2002.8.10 ends an era while begins a new one。The day in which we make computer with only foreign CPUs is gone with the wind of the morning of 2002.8.10。With tears and joys,we announce the successful running of LINUX (Kernel 2.4.17) with the Godson-1A CPU。 The great ecstasy at this moment makes all of our exhausting efforts of the past year be over paid。 Though this is only a little step of a long march,it indicates the glorious future of our own CPU. 上述两段话,表达了我们对龙芯的良好祝愿和坚强信心。 如今,狗剩-1(还是这个名字叫起来比较顺口)已经连续稳定运行一个多月。在这一个多月 中,运行了完整的 LINUX 操作系统(内核版本为 2.4)、gcc 和 f77 编译器、X-window、浏览 器、Apache Web 服务器、防火墙软件、网关系统、mpeg 播放器、基于 LINUX 的文本编辑 工具 Abiword、调试工具、SPEC CPU2000 基准测试程序、用作 NC 的虚拟终端、以及 VxWorks 嵌入式操作系统等等。 本来以为狗剩-1 的成功运行会稍微减轻一点过去半年多来令人难以喘气的压力。没想到喜 悦过后是更大的期盼和压力。然而,在我们已经开始狗剩-2 的设计的时候,回顾过去半年 多所做的事情,总结一下经验和教训,对以后的工作无疑是有好处的。 应该说,从去年三、四月份唐志敏和我开始组建 CPU 设计的队伍并全力投入 CPU 的设计, 到今年八月第一个完全自己设计的通用 CPU 在 200 多 MHz 的主频下跑起来,这个速度还是 不慢的。究其原因,除了全组弟兄玩命以外,正确的技术路线是成功的关键。用唐志敏的话 说,就是"苦干加巧干"。 在我去年写的《我们的 CPU》中,我曾经说过 Godson 设计的技术路线主要有三条。一是坚 持高起点,从高性能通用处理器入手,走跨越式发展的技术路线。根据国外的成功经验, CPU 的发展是"先高后低",即先发展计算机中使用的高性能通用 CPU 芯片,突破其中的关 键技术,在此基础上再发展嵌入式的应用。因此,在处理器设计上应以高性能通用 CPU 发 展为龙头,通过高端通用 CPU 的发展来带动整个 CPU 产业的发展。具体实施时,在目前达 到与国外相同主频的的客观条件不具备的情况下,应走通过优化处理器结构提高性能的道 路,强调处理器中各个层次的并行性(包括指令级并行性、数据级并行性、以及线程级并行 性)的开发以及软硬件的协同来提高性能。二是坚持兼容性设计,把兼容当作通用处理器的 生命。不管别人怎么说,我坚定地认为不兼容设计是导致我国目前处理器设计技术落后的重 要原因之一。由于现代计算机中软件开发费用已经大大超过硬件开发费用,因此兼容性设计
是 Godson的重要目标。三是在实现上坚持稳扎稳打、步步为营。在处理器设计中,越上层 的设计,调试越容易;而越底层的设计,调试越困难。因此在 Godson-l的逻辑设计阶段, 我们坚持稳扎稳打,从系统结构设计,到C模拟器设计、 erilog设计、以及FPGA验证的 每一步都经过反复的验证 在上述技术路线指导下,我们在狗剩-1物理设计阶段的具体技术路线有两条,一是以我为 主"进行物理设计,二是坚持稳扎稳打。这是根据我们当时的处境提出的。 在去年10月我们基本完成狗剩-1的逻辑设计并在FPGA验证平台成功运行通用操作系统以 后,有很多人关心我们如何进行狗剩-1的物理设计。不少人建议我们完成RTL设计后,在 国内寻找兄弟单位完成后续设计。有人说完成FPGA验证只是完成了整个设计工作的10% 90%的工作还在后面,更有人说我们当时只是完成了国外学校中系统结构课程的一个大作业 而已。但还是有人鼓励说完成FPGA验证已经很不容易,国外成功的设计也都是从FPGA 验证开始的。在那一段时间里,在大多数朋友的鼓励和建议中,或多或少都流露出对我们完 成物理设计的能力的担忧。因为计算所确实没有做过大规模的芯片的物理设计,尤其是在深 亚微米的工艺条件下。 但我坚信现代EDA工具的发展趋势是不断地让做系统的人去完成物理设计,而不是让做微 电子的人来完成结构设计。因此,向室里和所里提出了"以我为主”并联合有关单位进行物理 设计的方针。李所长很快决定让我们自己做下去,并在我们完成FPGA验证之后的一段时 间里,在宏观上提出一系列指导方针,包括他到国外考察了一圈后决定使用018的工艺进 行流片(我原来倾向于用0.25的工艺,因为0.18的工艺信号完整性问题比较突出。现在看 来,使用0.18的工艺无疑是一个英明的决定)。此外,他有针对性地请了一些精通物理设计 的人与我们交流,使我们也受到不少启发,尤其是认识到芯片设计是赢者通吃( Winner take Over)的买卖,而且大家最后比的就是最后百分之一。在今年初的全所大会上,李所长把龙 芯-1的流片作为今年全所的最重要任务。他说,在五十年代计算所做出中国第一台计算机 103机时,张劲夫给这台计算机起了个名字叫"有了"”,现在我们也要解决通用处理器"有了” 的问题。 稳扎稳打的技术路线是和唐志敏商量后提出的。鉴于我们在物理设计上的空白,尤其是对深 亚微米的物理设计没有经验,决定狗剩-1的流片分两步走。第一步先交网表,委托有经验 的第三方物理设计公司进行物理设计,并把这个方案作为保证成功的保底方案。第二步,在 与第三方交互的同时,组织自己的队伍进行物理设计。结果,我们自己做的物理设计仅比第 三方晚一个月交付流片,并且委托第三方做物理设计的流片和自己做物理设计的流片都是一 次成功 稳扎稳打的技术路线第二个含义是,在狗剩1的流片中,采用标准单元进行物理设计。在 以后的物理设计中,再自己定制一些宏单元,最后等条件具备再进行全定制设计。做通用处 理器,迟早要自己进行全定制设计的。 狗剩-1的物理设计主要包括三个阶段,2001年11月到2002年1月为启动阶段,主要完成 环境的建立和工具的初步学习:2002年1月至4月为第二阶段,在这个阶段,RTL基本确 定,对整个设计的流程有了初步了解;2002年4月至7月为第三阶段,这是实质性设计阶 段
是 Godson 的重要目标。三是在实现上坚持稳扎稳打、步步为营。在处理器设计中,越上层 的设计,调试越容易; 而越底层的设计,调试越困难。因此在 Godson-1 的逻辑设计阶段, 我们坚持稳扎稳打,从系统结构设计,到 C 模拟器设计、Verilog 设计、以及 FPGA 验证的 每一步都经过反复的验证。 在上述技术路线指导下,我们在狗剩-1 物理设计阶段的具体技术路线有两条,一是"以我为 主"进行物理设计,二是坚持稳扎稳打。这是根据我们当时的处境提出的。 在去年 10 月我们基本完成狗剩-1 的逻辑设计并在 FPGA 验证平台成功运行通用操作系统以 后,有很多人关心我们如何进行狗剩-1 的物理设计。不少人建议我们完成 RTL 设计后,在 国内寻找兄弟单位完成后续设计。有人说完成 FPGA 验证只是完成了整个设计工作的 10%, 90%的工作还在后面,更有人说我们当时只是完成了国外学校中系统结构课程的一个大作业 而已。但还是有人鼓励说完成 FPGA 验证已经很不容易,国外成功的设计也都是从 FPGA 验证开始的。在那一段时间里,在大多数朋友的鼓励和建议中,或多或少都流露出对我们完 成物理设计的能力的担忧。因为计算所确实没有做过大规模的芯片的物理设计,尤其是在深 亚微米的工艺条件下。 但我坚信现代 EDA 工具的发展趋势是不断地让做系统的人去完成物理设计,而不是让做微 电子的人来完成结构设计。因此,向室里和所里提出了"以我为主"并联合有关单位进行物理 设计的方针。李所长很快决定让我们自己做下去,并在我们完成 FPGA 验证之后的一段时 间里,在宏观上提出一系列指导方针,包括他到国外考察了一圈后决定使用 0.18 的工艺进 行流片(我原来倾向于用 0.25 的工艺,因为 0.18 的工艺信号完整性问题比较突出。现在看 来,使用 0.18 的工艺无疑是一个英明的决定)。此外,他有针对性地请了一些精通物理设计 的人与我们交流,使我们也受到不少启发,尤其是认识到芯片设计是赢者通吃(Winner Take Over)的买卖,而且大家最后比的就是最后百分之一。在今年初的全所大会上,李所长把龙 芯-1 的流片作为今年全所的最重要任务。他说,在五十年代计算所做出中国第一台计算机 103 机时,张劲夫给这台计算机起了个名字叫"有了",现在我们也要解决通用处理器"有了" 的问题。 稳扎稳打的技术路线是和唐志敏商量后提出的。鉴于我们在物理设计上的空白,尤其是对深 亚微米的物理设计没有经验,决定狗剩-1 的流片分两步走。第一步先交网表,委托有经验 的第三方物理设计公司进行物理设计,并把这个方案作为保证成功的保底方案。第二步,在 与第三方交互的同时,组织自己的队伍进行物理设计。结果,我们自己做的物理设计仅比第 三方晚一个月交付流片,并且委托第三方做物理设计的流片和自己做物理设计的流片都是一 次成功。 稳扎稳打的技术路线第二个含义是,在狗剩-1 的流片中,采用标准单元进行物理设计。在 以后的物理设计中,再自己定制一些宏单元,最后等条件具备再进行全定制设计。做通用处 理器,迟早要自己进行全定制设计的。 狗剩-1 的物理设计主要包括三个阶段,2001 年 11 月到 2002 年 1 月为启动阶段,主要完成 环境的建立和工具的初步学习;2002 年 1 月至 4 月为第二阶段,在这个阶段,RTL 基本确 定,对整个设计的流程有了初步了解;2002 年 4 月至 7 月为第三阶段,这是实质性设计阶 段
我们是2001年11月8日开始学习狗剩1的物理设计的,那天我们买的第一批EDA工具正 式安装到了我们的机器上。但那时候我们还没有库,EDA工具厂商在刚开始的时候给我们 个025的综合库以及10个临时的 license让我们用于学习。在刚开始的一、两个月,物理 设计对我们来说确实是一个全新的领域。当一群熟悉指令流水线、多发射、乱序执行、动态 调度、寄存器重命名、转移猜测、 CACHE、精确例外等等的人面对诸如 Wireload model 综合库、物理库、设计规则、扫描链、 Steiner树、顶层约束、时钟树、Pdif、Ndⅲf、多晶、 闸流效应、防静电、串扰、电流密度、压降等等物理设计的概念时,就象熟悉种地的刘姥姥 刚进大观园,觉得新鲜而不知所措。不过我们都很努力,大家抓紧时间看文档,并找教科书 补充微电子方面的基础知识。在整个狗剩-1的物理设计过程中,我看过的文档至少有上万 页,有些看得很认真,反复地读,有些翻过去就算了。我们组的弟兄们看的比我多 在开始的学习过程中,我们开始对狗剩-1的RTL的部分模块进行初步的综合以及布局布线 并根据综合及布局布线结果对RL进行优化。每次修改都是先修改C模拟器再修改RL并 用FPGA验证环境进行验证。这时候显示出我们前一阶段建立起来的仿真验证环境是多么 有用。2001年12月26日,收到来自厂家的正式的0.18综合库。虽然还缺一些特殊单元如 锁相环以及一些特殊的IO单元等,但可以比较正式地开始做设计了。用了0.18的库以后, 比起我们原来用的025的库,关键路径上的延迟一下子降低了很多 在拿到正式的单元库后的3个月内(2002年1月到3月),是我最着急的三个月,因为在这 三个月内我们一直不能开始正式设计。RTL设计总是改了又改,联系第三方物理设计公司 也没有确定,可测性设计方案一直在调整,信号完整性问题也没有经验。每次解决一个问题, 另一个问题就接踵而至。这些都是初学者难以逾越的过程,如果曾经做过,这三个月的工作 (包括前面两个月的学习)完全是可以避免的。但这三个月也是我们从不会做物理设计到会 做物理设计的3个月,三个月后,我们不知不觉对物理设计有了初步的了解。到四月初的时 候,我已经心里比较塌实了。也就在这段时间里,中科院微电子中心的黄令仪老师带着几个 学生加盟到我们的物理设计中来。 黄老师是个干实事的人,六十多岁了,干活比我还猛。每天早上7点多就来,晚上十点多我 走的时候她还拖着鼠标坐在计算机前。黄老师是老计算所了,用她自己的话说,她在计算所 的时间比在微电子中心的时间还长(她在计算所工作了二十多年,后来微电子中心成立时去 的微电子中心)。从黄老师身上,我看到我们的前辈们献身科研的优秀品质,这种品质是目 前整个科研界急需的。黄老师说,她是听说我们在做CPU主动找上门的,那时他们刚好完 成一个物理设计的项目,下一个项目还没有开始。我见过不少跨单位的合作项目,大都是把 经费一分,各干各的,最后攒不到一起。但我们与微电子中心的合作是实质性的,因为合作 单位的所有人员天天在一起干同一件活,统一指挥和调度。现在回想起来,如果没有黄老师 他们的参与,我们可能只完成委托给第三方物理设计公司的物理设计,不会自己做物理设计, 即使做了,也没这么快 在芯片设计中, RTL freeze是一个重要阶段,即确定RL级的设计,因为RIL一修改,后 面的都得重做。而我们由于在前面设计RTL时没有物理设计的经验,在几个月的时间内 直对RIL进行调整。这种调整主要包括三个方面,一是性能的优化,包括平衡各级流水 线的延迟等;二是功能的增加;三是可测性设计。在从1月初到4月初的三个多月内,我们 共对RIL做了一百多次修改,其中较大的修改有30多次。通过这些修改,我们积累了
我们是 2001 年 11 月 8 日开始学习狗剩-1 的物理设计的,那天我们买的第一批 EDA 工具正 式安装到了我们的机器上。但那时候我们还没有库,EDA 工具厂商在刚开始的时候给我们 一个 0.25 的综合库以及 10 个临时的 license 让我们用于学习。在刚开始的一、两个月,物理 设计对我们来说确实是一个全新的领域。当一群熟悉指令流水线、多发射、乱序执行、动态 调度、寄存器重命名、转移猜测、CACHE、精确例外等等的人面对诸如 Wireload model、 综合库、物理库、设计规则、扫描链、Steiner 树、顶层约束、时钟树、P diff、N diff、多晶、 闸流效应、防静电、串扰、电流密度、压降等等物理设计的概念时,就象熟悉种地的刘姥姥 刚进大观园,觉得新鲜而不知所措。不过我们都很努力,大家抓紧时间看文档,并找教科书 补充微电子方面的基础知识。在整个狗剩-1 的物理设计过程中,我看过的文档至少有上万 页,有些看得很认真,反复地读,有些翻过去就算了。我们组的弟兄们看的比我多。 在开始的学习过程中,我们开始对狗剩-1 的 RTL 的部分模块进行初步的综合以及布局布线 并根据综合及布局布线结果对 RTL 进行优化。每次修改都是先修改 C 模拟器再修改 RTL 并 用 FPGA 验证环境进行验证。这时候显示出我们前一阶段建立起来的仿真验证环境是多么 有用。2001 年 12 月 26 日,收到来自厂家的正式的 0.18 综合库。虽然还缺一些特殊单元如 锁相环以及一些特殊的 IO 单元等,但可以比较正式地开始做设计了。用了 0.18 的库以后, 比起我们原来用的 0.25 的库,关键路径上的延迟一下子降低了很多。 在拿到正式的单元库后的 3 个月内(2002 年 1 月到 3 月),是我最着急的三个月,因为在这 三个月内我们一直不能开始正式设计。RTL 设计总是改了又改,联系第三方物理设计公司 也没有确定,可测性设计方案一直在调整,信号完整性问题也没有经验。每次解决一个问题, 另一个问题就接踵而至。这些都是初学者难以逾越的过程,如果曾经做过,这三个月的工作 (包括前面两个月的学习)完全是可以避免的。但这三个月也是我们从不会做物理设计到会 做物理设计的 3 个月,三个月后,我们不知不觉对物理设计有了初步的了解。到四月初的时 候,我已经心里比较塌实了。也就在这段时间里,中科院微电子中心的黄令仪老师带着几个 学生加盟到我们的物理设计中来。 黄老师是个干实事的人,六十多岁了,干活比我还猛。每天早上 7 点多就来,晚上十点多我 走的时候她还拖着鼠标坐在计算机前。黄老师是老计算所了,用她自己的话说,她在计算所 的时间比在微电子中心的时间还长(她在计算所工作了二十多年,后来微电子中心成立时去 的微电子中心)。从黄老师身上,我看到我们的前辈们献身科研的优秀品质,这种品质是目 前整个科研界急需的。黄老师说,她是听说我们在做 CPU 主动找上门的,那时他们刚好完 成一个物理设计的项目,下一个项目还没有开始。我见过不少跨单位的合作项目,大都是把 经费一分,各干各的,最后攒不到一起。但我们与微电子中心的合作是实质性的,因为合作 单位的所有人员天天在一起干同一件活,统一指挥和调度。现在回想起来,如果没有黄老师 他们的参与,我们可能只完成委托给第三方物理设计公司的物理设计,不会自己做物理设计, 即使做了,也没这么快。 在芯片设计中,RTL freeze 是一个重要阶段,即确定 RTL 级的设计,因为 RTL 一修改,后 面的都得重做。而我们由于在前面设计 RTL 时没有物理设计的经验,在几个月的时间内, 一直对 RTL 进行调整。这种调整主要包括三个方面,一是性能的优化,包括平衡各级流水 线的延迟等;二是功能的增加;三是可测性设计。在从 1 月初到 4 月初的三个多月内,我们 一共对 RTL 做了一百多次修改,其中较大的修改有 30 多次。通过这些修改,我们积累了
R∏L设计的感性认识,为以后处理器的RL设计提供了宝贵的经验 在RIL的修改过程中,最麻烦的是可测性设计。狗剩-1的可测性设计包括RAM的自测试 设计、寄存器的全扫描设计、以及JTAG设计。好在计算所在这方面有很深的基础,狗剩 的可测性设计工作主要是网络室的测试组完成的。我最得意的RL修改是浮点除法的实现。 在狗剩-1的FPGA设计阶段,没有实现浮点除法,处理器执行浮点除法指令时发出保留指 令例外,由操作系统调用IEEE浮点模拟程序进行模拟。但我们在FPGA中运行SPEC CPU200标准测试程序时发现,浮点除法指令虽然出现不多,但对性能影响很大。进一步 的分析发现,操作系统模拟一条浮点指令平均需要3000多拍。那时候已经是三月份,而浮 点除法部件的设计还是比较复杂的,重新设计浮点除法可能会延误设计时间。但我还是下决 心实现浮点除法,因为我刚好在前一阶段参与定点除法和浮点乘法模块的优化,对这两个模 块都有一定了解,而浮点除法的尾数相除与定点除法类似,阶码处理以及例外处理与浮点乘 法类似。我与张志敏老师打赌,三天之内搞不定浮点除法就绕整个北楼喊一圈"张志敏真厉 害”。结果我组织定点除法和浮点乘法的设计人员两天就把浮点除法设计完并在FPGA中跑 起来。当然,这也取决于我们建立了完整的验证环境和工具 在这个阶段,我们也把物理设计流程基本走了一遍,解决了其中一些关键技术问题,如信号 完整性问题 2002年春节我们好多人留下来加班。初四的时候李所长和邓书记来看望我们,给我们带来 很多好吃的东西,使我们这班远离家乡的游子觉得很温暖。就在那天,所长明确提出我们必 须在9月底之前完成流片的要求。这比起我们自己在年底完成流片的计划提前了几个月。从 此之后,我们一直按照"后墙不倒"的要求进行进度安排,9月份就是我们的后墙 到四月初时,我们基本确定了为我们做物理设计的第三方物理设计服务公司。并在四月底把 网表交给物理设计公司。在四、五月份,我们工作的重点是对第三方做的设计进行参数提取 和验证。同时积极为自己做物理设计做准备。 在任何一个阶段,仿真和验证工作都是很重要的,我们一直在这方面投入比设计更多的力量 在4月份,我做出了一个我自己认为在整个物理设计阶段最满意的三个决定之一,即组织 专门的队伍进行仿真验证工作并由年轻员工许彤负责该组的工作。许彤责任心很强,而且非 常细心,组织能力也强。他很快就在我们己有的环境基础上建立起完整的验证方法,并把仿 真验证和形式验证结合起来。比起我自己来抓要高效得多。他和李祖松、李文在我们交给第 三方的网表 sign off之前发现了一个与跨时钟域信号传送有关的一个危险错误,并在我们自 己做物理设计GDSⅡ版图交出之前又发现一个与扫描链有关的危险错误,避免了重大损失 我们真正拿到物理库和设计规则是在6月份。当我们明确地知道具备自己完成物理设计的客 观条件时,组里的空气顿时紧张起来。由于委托第三方做物理设计的流片(我们称为A方 案)已经在6月份交出去,我们决定我们自己做物理设计的方案在7月份交出去流片,否则 等到第三方做物理设计的流片回来我们自己的再交出去就没什么意义了。根据前一阶段对信 号完整性问题的摸索,我们决定我们自己同时做两个物理设计(分别为B和C方案),它们 面积不同,信号完整性的修复方法也不同。B方案是一个实验性的流片,主要是为了取得参 数和经验,不是一个准备量产的方案,于7月份流片的截止日期前几天就完成了。C方案是 个准备量产的正式方案,因此面积很小,比A方案小不少,布线时很难布通,花了一个
RTL 设计的感性认识,为以后处理器的 RTL 设计提供了宝贵的经验。 在 RTL 的修改过程中,最麻烦的是可测性设计。狗剩-1 的可测性设计包括 RAM 的自测试 设计、寄存器的全扫描设计、以及 JTAG 设计。好在计算所在这方面有很深的基础,狗剩-1 的可测性设计工作主要是网络室的测试组完成的。我最得意的 RTL 修改是浮点除法的实现。 在狗剩-1 的 FPGA 设计阶段,没有实现浮点除法,处理器执行浮点除法指令时发出保留指 令例外,由操作系统调用 IEEE 浮点模拟程序进行模拟。但我们在 FPGA 中运行 SPEC CPU2000 标准测试程序时发现,浮点除法指令虽然出现不多,但对性能影响很大。进一步 的分析发现,操作系统模拟一条浮点指令平均需要 3000 多拍。那时候已经是三月份,而浮 点除法部件的设计还是比较复杂的,重新设计浮点除法可能会延误设计时间。但我还是下决 心实现浮点除法,因为我刚好在前一阶段参与定点除法和浮点乘法模块的优化,对这两个模 块都有一定了解,而浮点除法的尾数相除与定点除法类似,阶码处理以及例外处理与浮点乘 法类似。我与张志敏老师打赌,三天之内搞不定浮点除法就绕整个北楼喊一圈"张志敏真厉 害"。结果我组织定点除法和浮点乘法的设计人员两天就把浮点除法设计完并在 FPGA 中跑 起来。当然,这也取决于我们建立了完整的验证环境和工具。 在这个阶段,我们也把物理设计流程基本走了一遍,解决了其中一些关键技术问题,如信号 完整性问题。 2002 年春节我们好多人留下来加班。初四的时候李所长和邓书记来看望我们,给我们带来 很多好吃的东西,使我们这班远离家乡的游子觉得很温暖。就在那天,所长明确提出我们必 须在 9 月底之前完成流片的要求。这比起我们自己在年底完成流片的计划提前了几个月。从 此之后,我们一直按照"后墙不倒"的要求进行进度安排,9 月份就是我们的后墙。 到四月初时,我们基本确定了为我们做物理设计的第三方物理设计服务公司。并在四月底把 网表交给物理设计公司。在四、五月份,我们工作的重点是对第三方做的设计进行参数提取 和验证。同时积极为自己做物理设计做准备。 在任何一个阶段,仿真和验证工作都是很重要的,我们一直在这方面投入比设计更多的力量。 在 4 月份, 我做出了一个我自己认为在整个物理设计阶段最满意的三个决定之一,即组织 专门的队伍进行仿真验证工作并由年轻员工许彤负责该组的工作。许彤责任心很强,而且非 常细心,组织能力也强。他很快就在我们已有的环境基础上建立起完整的验证方法,并把仿 真验证和形式验证结合起来。比起我自己来抓要高效得多。他和李祖松、李文在我们交给第 三方的网表 sign off 之前发现了一个与跨时钟域信号传送有关的一个危险错误,并在我们自 己做物理设计 GDSII 版图交出之前又发现一个与扫描链有关的危险错误,避免了重大损失。 我们真正拿到物理库和设计规则是在 6 月份。当我们明确地知道具备自己完成物理设计的客 观条件时,组里的空气顿时紧张起来。由于委托第三方做物理设计的流片(我们称为 A 方 案)已经在 6 月份交出去,我们决定我们自己做物理设计的方案在 7 月份交出去流片,否则 等到第三方做物理设计的流片回来我们自己的再交出去就没什么意义了。根据前一阶段对信 号完整性问题的摸索,我们决定我们自己同时做两个物理设计(分别为 B 和 C 方案),它们 面积不同,信号完整性的修复方法也不同。B 方案是一个实验性的流片,主要是为了取得参 数和经验,不是一个准备量产的方案,于 7 月份流片的截止日期前几天就完成了。C 方案是 一个准备量产的正式方案,因此面积很小,比 A 方案小不少,布线时很难布通,花了一个
多礼拜。这样,详细布线完成后还有不到一个礼拜就到截止日期了。马上开始寄生参数提取 延迟分析、信号完整性分析。分析完后进行调整,包括手工调整。经过连续三天三夜的加班 后,在7月3日终于完成了GDSⅡ版图并修复完天线和其他不符合物理设计规则的地方 通过了LVS检査。这时候离截止日期还有两天时间。正在这时,许彤报告说他们分析的最 大延迟和我们做布线后分析出来的延迟不一样,经检查是由于两边的约束不一样,我们对跨 时钟域的约束与实际情况不符,导致有几个门的延迟太大。这时候,重做布线已经来不及了 于是决定手工改版图,24小时后修改完毕,降低延迟0.6ns。这时候大家几天没有睡觉都很 累了,离截止日期还有一天 正当我准备把最后结果让大家签字时,一个巨大的挑战突然出现。在下午5点时测试组发现 整个处理器的一万多个触发器的扫描链由于扫描链重连时的一个失误没有根据要求连出来 我脑袋嗡的一下,一句话也没说,就去了食堂吃饭,吃饭时想着在剩下的一天多时间内有没 有修复的可能以及放弃流片的后果。我实在不甘心放弃C方案的流片,虽然前面已经有A 方案和B方案保底,但C方案是最完美的方案,面积最小因此成本最低、压降和电流密度 最小、抗静电性能最好、防 latch-up效应也做得最好,因此最有希望量产。延期一月流片也 不行,李所长在春节来看我们时已经明确要求在9月份必须成功(意味着7月份必须交出去)。 但目前已经没有时间返工了,唯一的办法是手工改版图,而且时间不一定够。在吃完饭回来 的路上我很灰心,没想到全组几十个人几个月的努力,花了上千万纳税人的血汗钱竟然是这 样一个结果。我回到机房时全组都已经知道这件事,我看着他们经过连续熬夜的脸上除了眼 睛外连嘴唇都没有一丝血色,几乎决定放弃,这样大家今天晚上就可以回去休息了。我去跟 唐志敏商量,他让我自己定。我把负责物理设计的几个人召集起来说了情况,没想到负责后 端版图编辑的杨旭他们马上就说我们可以手工再改版图。我眼睛一热,说晚上8点全组开会 就回到自己的办公室。半个小时后,我在机房进行了动员,我说的第一句话就是:"我们肩 负的是历史使命,因为我们要做出中国第一台不依赖于洋人CPU的计算机"。然后进行了工 作部署,工作量确实很大,要手工修改网表用于对GDSⅡ进行LVS检査,要手工修改DEF 用于参数提取和分析,当然还要手工修改 GDSIlo由于大家都十分疲惫,我要求任何一个修 改都是一人操作,另外两人在边上看着。在接下来的两天两夜,我们终于把一万多个触发器 分成十几条扫描链连了出来,并且由于手工修改引起的一个单元延迟增加又手工优化了延 迟。同时,我们跟流片厂联系要求宽限一天,因为是周末,我们得到了多一天的期限。到7 日凌晨3点多,完成最后交付流片的所有文件,大家签字后陆续回去休息,我和黄老师坐在 我的办公室说,就这样了,没什么可后悔了。这已经是我们连续加班的第7天凌晨。 在自己做了一遍物理设计后,回顾整个过程,觉得很象小学时候学的一篇《小马过河》的文 章。其中说小马第一次过河但不知河水深浅,问水牛,水牛说水很浅刚到膝盖,问松鼠,松 鼠说水很深会淹死的。结果自己过的时候发现既没有水牛说的那么浅,也没有松鼠说的那么 深。在整个设计过程中,我最满意的决定有三个,一是在设计的后期果断地把浮点除法加进 去;二是把仿真验证的队伍从设计队伍中独立出来并让许彤负责;三是在交出GDSI前发 现扫描链问题时下决心手工进行修复并且很成功。好多人问我其中最困难的是什么,技术上 的困难很多,结构设计、可测性设计、信号完整性设计、布局布线、降低延迟等等都有很多 困难。但最大的困难在于压力太大。做处理器设计投入很多、周期很长,而且是一锤子买卖, 不是100分就是0分。在这样的压力下,经常半夜三、四点钟醒来就再也睡不着 在接下来的一个多月中我们一直在忐忑不安中度过。在三个物理设计都交出去流片的时候, 我曾经对组里的同学说,我觉得三个都能成,如果两个成功也可以接受,如果只有一个成功
多礼拜。这样,详细布线完成后还有不到一个礼拜就到截止日期了。马上开始寄生参数提取、 延迟分析、信号完整性分析。分析完后进行调整,包括手工调整。经过连续三天三夜的加班 后,在 7 月 3 日终于完成了 GDSII 版图并修复完天线和其他不符合物理设计规则的地方, 通过了 LVS 检查。这时候离截止日期还有两天时间。正在这时,许彤报告说他们分析的最 大延迟和我们做布线后分析出来的延迟不一样,经检查是由于两边的约束不一样,我们对跨 时钟域的约束与实际情况不符,导致有几个门的延迟太大。这时候,重做布线已经来不及了, 于是决定手工改版图,24 小时后修改完毕,降低延迟 0.6ns。这时候大家几天没有睡觉都很 累了,离截止日期还有一天。 正当我准备把最后结果让大家签字时,一个巨大的挑战突然出现。在下午 5 点时测试组发现 整个处理器的一万多个触发器的扫描链由于扫描链重连时的一个失误没有根据要求连出来。 我脑袋嗡的一下,一句话也没说,就去了食堂吃饭,吃饭时想着在剩下的一天多时间内有没 有修复的可能以及放弃流片的后果。我实在不甘心放弃 C 方案的流片,虽然前面已经有 A 方案和 B 方案保底,但 C 方案是最完美的方案,面积最小因此成本最低、压降和电流密度 最小、抗静电性能最好、防 latch-up 效应也做得最好,因此最有希望量产。延期一月流片也 不行,李所长在春节来看我们时已经明确要求在9月份必须成功(意味着7月份必须交出去)。 但目前已经没有时间返工了,唯一的办法是手工改版图,而且时间不一定够。在吃完饭回来 的路上我很灰心,没想到全组几十个人几个月的努力,花了上千万纳税人的血汗钱竟然是这 样一个结果。我回到机房时全组都已经知道这件事,我看着他们经过连续熬夜的脸上除了眼 睛外连嘴唇都没有一丝血色,几乎决定放弃,这样大家今天晚上就可以回去休息了。我去跟 唐志敏商量,他让我自己定。我把负责物理设计的几个人召集起来说了情况,没想到负责后 端版图编辑的杨旭他们马上就说我们可以手工再改版图。我眼睛一热,说晚上 8 点全组开会 就回到自己的办公室。半个小时后,我在机房进行了动员,我说的第一句话就是:"我们肩 负的是历史使命,因为我们要做出中国第一台不依赖于洋人 CPU 的计算机"。然后进行了工 作部署,工作量确实很大,要手工修改网表用于对 GDSII 进行 LVS 检查,要手工修改 DEF 用于参数提取和分析,当然还要手工修改 GDSII。由于大家都十分疲惫,我要求任何一个修 改都是一人操作,另外两人在边上看着。在接下来的两天两夜,我们终于把一万多个触发器 分成十几条扫描链连了出来,并且由于手工修改引起的一个单元延迟增加又手工优化了延 迟。同时,我们跟流片厂联系要求宽限一天,因为是周末,我们得到了多一天的期限。到 7 日凌晨 3 点多,完成最后交付流片的所有文件,大家签字后陆续回去休息,我和黄老师坐在 我的办公室说,就这样了,没什么可后悔了。这已经是我们连续加班的第 7 天凌晨。 在自己做了一遍物理设计后,回顾整个过程,觉得很象小学时候学的一篇《小马过河》的文 章。其中说小马第一次过河但不知河水深浅,问水牛,水牛说水很浅刚到膝盖,问松鼠,松 鼠说水很深会淹死的。结果自己过的时候发现既没有水牛说的那么浅,也没有松鼠说的那么 深。在整个设计过程中,我最满意的决定有三个,一是在设计的后期果断地把浮点除法加进 去;二是把仿真验证的队伍从设计队伍中独立出来并让许彤负责;三是在交出 GDSII 前发 现扫描链问题时下决心手工进行修复并且很成功。好多人问我其中最困难的是什么,技术上 的困难很多,结构设计、可测性设计、信号完整性设计、布局布线、降低延迟等等都有很多 困难。但最大的困难在于压力太大。做处理器设计投入很多、周期很长,而且是一锤子买卖, 不是 100 分就是 0 分。在这样的压力下,经常半夜三、四点钟醒来就再也睡不着。 在接下来的一个多月中我们一直在忐忑不安中度过。在三个物理设计都交出去流片的时候, 我曾经对组里的同学说,我觉得三个都能成,如果两个成功也可以接受,如果只有一个成功