第330章 七天七夜
六月二十三日,晚上六点整。
米勒准时从三號楼二层下来。
他捂著肚子,对传达室的门卫摆了摆手。
“拉肚子,回宿舍了。”
门卫翻著报纸,根本没抬头。
米勒走出大门后,拐进了计算机所对面的小饭馆。
要了一碗炸酱麵,坐在角落里,脸朝著墙。
六点十五分。
地下室的铁门被推开。
司徒渊走在前面。
右手拎著一个帆布袋,里面装著一盒spice2g6的磁带和两沓打孔卡片。
林希跟在后面,手里拿著周副所长给的钥匙。
张秉谦最后进来。
101看书 101 看书网超贴心,101??????.??????等你读 全手打无错站
他从津门坐了两个小时火车赶到帝都。
裤子膝盖上的白印子还没洗掉。
三个人站在玻璃房外面。
摄像头的红灯已经灭了。
司徒渊用米勒给的管理员口令登录系统。
花了四分钟关闭底层日誌记录模块。
屏幕上跳出一行確认码。
他核对了两遍,按下回车。
“乾净了。”
林希搬了两把摺叠椅进来。
张秉谦把手绘版图的数据本摊开在膝盖上。
司徒渊將磁带插入驱动器,机器发出低沉的转动声。
绿色光標在黑色屏幕上跳了两下。
他开始敲键盘。
......
第一个晚上。
仿真程序跑了四十七分钟。
屏幕上刷出密密麻麻的红色字符。
`timing violation: node a7→d3, delay = 287ns (max allowed: 200ns)`
`timing violation: node b2→clk, setup time insufficient`
`timing violation: …`
红色的报错信息刷了整整三屏。
张秉谦凑到屏幕前,老花镜几乎贴在显示器上。
“两百八十七纳秒……”
他的声音很轻。
李工用计算尺,算了七十二个小时没算清楚的东西。
机器四十分钟给出了答案。
超標八十七纳秒。
差距比人脑估算的还要大。
张秉谦没说话。
他把报错的节点编號一个一个抄在本子上。
握笔的手很稳,但写字的速度明显比白天慢。
司徒渊靠在椅背上,盯著屏幕看了半分钟。
“a7到d3这条路径,逻辑门串了九级。”
他站起来,走到张秉谦身边。
指著版图数据本上的一处走线。
“这里,地址解码器的输出经过两级缓衝再进字库rom的片选端。”
“多了一级。”
“能砍掉吗?”张秉谦抬头。
“不能直接砍,会影响驱动能力。”
司徒渊拿起铅笔,在数据本空白处画了一个简图。
“换一种拓扑结构。”
“把解码和片选合併成一级复合门。”
“同时给关键路径上的走线加宽零点五个单位,降低rc延迟。”
张秉谦盯著那个简图看了十秒钟。
“明天白天改。”
林希看了一眼表。
凌晨一点十二分。
“收工。”
......
这是第一晚。
白天,津门二厂的车间里。
张秉谦带著年轻技术员们跪在坐標纸上。
按照前一晚仿真结果反馈的问题。
一条一条撕掉旧的胶带走线,重新贴新的。
撕掉,量尺,贴下去。
再撕,再量,再贴。
每改一处,旁边的人就在修改记录表上打一个勾。
有时候改到一半,发现牵一髮动全身。
一条走线挪了位置,相邻的三条都得跟著调。
最长的一次,一个修改点从上午八点改到晚上七点。
中间吃饭都是蹲在坐標纸旁边扒拉的。
到了傍晚,林希和司徒渊坐火车回帝都。
有时候张秉谦也跟著来。
六点,米勒准时“拉肚子”。
六点十五,三个人进玻璃房。
输入新数据,跑仿真。
红色报错一屏一屏地刷。
但每一天,红色的行数都在减少。
【第一晚:34个】
【第二晚:19个】
【第三晚:12个】
【第四晚:8个】
【第五晚:3个】
直播间的观眾们跟著熬了五天。
弹幕从最初的【不忍看】【这也太肝了】。
慢慢变成了【又少了两个!】【稳住稳住!】。
有人甚至做了一张折线图,每天更新报错数量。
配文“华国晶片倒计时”。
第六个晚上,剩两个违规。
一个是时钟信號的偏移。
司徒渊用了一个在仙童內部都算高阶技巧的“时钟树平衡”方法解决。
张秉谦看懂原理后,连说了三个“妙”字。
最后一个,卡在isa总线的地址映射上。
问题出在cpu发出读信號后。
晶片內部的字库寻址路径还是比200纳秒多了11纳秒。
十一纳秒。
张秉谦坐在玻璃房的摺叠椅上,盯著屏幕上那个数字看了很久。
“我们的走线已经没有优化空间了。”
他说,
“物理极限。”
司徒渊没接话。
他闭著眼靠在墙上,手指无意识地敲著膝盖。
林希坐在边上,脑海里弹幕正在疯狂滚动。
【11纳秒!就差11纳秒!】
【加流水线?上缓衝?不行,isa总线不支持等待周期......】
【等等,有个思路!386以前的isa总线其实有一个隱藏特性——i/o recovery time!8088的isa时序里,连续两次i/o读取之间有一个强制恢復间隔,大约一微秒!】
【对对对!这意味著cpu不可能背靠背地连续读取,晶片有时间“喘口气”!所以只要把字库的预取逻辑改成“读当前字的同时,预加载下一个字的首字节”,真正需要响应的时间就不是200纳秒,而是更宽裕!】
林希睁开眼。
“司徒总工。”
司徒渊的手指停了。
“isa总线连续读取之间,有强制恢復间隔。”
“如果在晶片里加一个预取缓衝寄存器。”
“当前请求返回数据的同时。”
“提前把下一个地址的字模从rom里读出来存著。”
“实际响应时间可以摊薄。”
司徒渊愣了两秒。
然后他猛地从墙上弹起来。
“预取!”
他抓过铅笔,直接在数据本的封底上画电路。
画完,他盯著看了五秒,把铅笔往桌上一拍。
“能过。”
米勒准时从三號楼二层下来。
他捂著肚子,对传达室的门卫摆了摆手。
“拉肚子,回宿舍了。”
门卫翻著报纸,根本没抬头。
米勒走出大门后,拐进了计算机所对面的小饭馆。
要了一碗炸酱麵,坐在角落里,脸朝著墙。
六点十五分。
地下室的铁门被推开。
司徒渊走在前面。
右手拎著一个帆布袋,里面装著一盒spice2g6的磁带和两沓打孔卡片。
林希跟在后面,手里拿著周副所长给的钥匙。
张秉谦最后进来。
101看书 101 看书网超贴心,101??????.??????等你读 全手打无错站
他从津门坐了两个小时火车赶到帝都。
裤子膝盖上的白印子还没洗掉。
三个人站在玻璃房外面。
摄像头的红灯已经灭了。
司徒渊用米勒给的管理员口令登录系统。
花了四分钟关闭底层日誌记录模块。
屏幕上跳出一行確认码。
他核对了两遍,按下回车。
“乾净了。”
林希搬了两把摺叠椅进来。
张秉谦把手绘版图的数据本摊开在膝盖上。
司徒渊將磁带插入驱动器,机器发出低沉的转动声。
绿色光標在黑色屏幕上跳了两下。
他开始敲键盘。
......
第一个晚上。
仿真程序跑了四十七分钟。
屏幕上刷出密密麻麻的红色字符。
`timing violation: node a7→d3, delay = 287ns (max allowed: 200ns)`
`timing violation: node b2→clk, setup time insufficient`
`timing violation: …`
红色的报错信息刷了整整三屏。
张秉谦凑到屏幕前,老花镜几乎贴在显示器上。
“两百八十七纳秒……”
他的声音很轻。
李工用计算尺,算了七十二个小时没算清楚的东西。
机器四十分钟给出了答案。
超標八十七纳秒。
差距比人脑估算的还要大。
张秉谦没说话。
他把报错的节点编號一个一个抄在本子上。
握笔的手很稳,但写字的速度明显比白天慢。
司徒渊靠在椅背上,盯著屏幕看了半分钟。
“a7到d3这条路径,逻辑门串了九级。”
他站起来,走到张秉谦身边。
指著版图数据本上的一处走线。
“这里,地址解码器的输出经过两级缓衝再进字库rom的片选端。”
“多了一级。”
“能砍掉吗?”张秉谦抬头。
“不能直接砍,会影响驱动能力。”
司徒渊拿起铅笔,在数据本空白处画了一个简图。
“换一种拓扑结构。”
“把解码和片选合併成一级复合门。”
“同时给关键路径上的走线加宽零点五个单位,降低rc延迟。”
张秉谦盯著那个简图看了十秒钟。
“明天白天改。”
林希看了一眼表。
凌晨一点十二分。
“收工。”
......
这是第一晚。
白天,津门二厂的车间里。
张秉谦带著年轻技术员们跪在坐標纸上。
按照前一晚仿真结果反馈的问题。
一条一条撕掉旧的胶带走线,重新贴新的。
撕掉,量尺,贴下去。
再撕,再量,再贴。
每改一处,旁边的人就在修改记录表上打一个勾。
有时候改到一半,发现牵一髮动全身。
一条走线挪了位置,相邻的三条都得跟著调。
最长的一次,一个修改点从上午八点改到晚上七点。
中间吃饭都是蹲在坐標纸旁边扒拉的。
到了傍晚,林希和司徒渊坐火车回帝都。
有时候张秉谦也跟著来。
六点,米勒准时“拉肚子”。
六点十五,三个人进玻璃房。
输入新数据,跑仿真。
红色报错一屏一屏地刷。
但每一天,红色的行数都在减少。
【第一晚:34个】
【第二晚:19个】
【第三晚:12个】
【第四晚:8个】
【第五晚:3个】
直播间的观眾们跟著熬了五天。
弹幕从最初的【不忍看】【这也太肝了】。
慢慢变成了【又少了两个!】【稳住稳住!】。
有人甚至做了一张折线图,每天更新报错数量。
配文“华国晶片倒计时”。
第六个晚上,剩两个违规。
一个是时钟信號的偏移。
司徒渊用了一个在仙童內部都算高阶技巧的“时钟树平衡”方法解决。
张秉谦看懂原理后,连说了三个“妙”字。
最后一个,卡在isa总线的地址映射上。
问题出在cpu发出读信號后。
晶片內部的字库寻址路径还是比200纳秒多了11纳秒。
十一纳秒。
张秉谦坐在玻璃房的摺叠椅上,盯著屏幕上那个数字看了很久。
“我们的走线已经没有优化空间了。”
他说,
“物理极限。”
司徒渊没接话。
他闭著眼靠在墙上,手指无意识地敲著膝盖。
林希坐在边上,脑海里弹幕正在疯狂滚动。
【11纳秒!就差11纳秒!】
【加流水线?上缓衝?不行,isa总线不支持等待周期......】
【等等,有个思路!386以前的isa总线其实有一个隱藏特性——i/o recovery time!8088的isa时序里,连续两次i/o读取之间有一个强制恢復间隔,大约一微秒!】
【对对对!这意味著cpu不可能背靠背地连续读取,晶片有时间“喘口气”!所以只要把字库的预取逻辑改成“读当前字的同时,预加载下一个字的首字节”,真正需要响应的时间就不是200纳秒,而是更宽裕!】
林希睁开眼。
“司徒总工。”
司徒渊的手指停了。
“isa总线连续读取之间,有强制恢復间隔。”
“如果在晶片里加一个预取缓衝寄存器。”
“当前请求返回数据的同时。”
“提前把下一个地址的字模从rom里读出来存著。”
“实际响应时间可以摊薄。”
司徒渊愣了两秒。
然后他猛地从墙上弹起来。
“预取!”
他抓过铅笔,直接在数据本的封底上画电路。
画完,他盯著看了五秒,把铅笔往桌上一拍。
“能过。”