2005年7月11日,周一。
北京,中關村,聯盟秘書處。
上午九點,龍騰項目技術群里突然安靜了整整五分鐘。
原因是一封仿真報告。發送人:趙強。
王景輝看完之後,只回了一句話:"趙強,你是神。"
時間回到三天前。
7月8日,周五,凌晨一點半。趙強的工位上,三塊顯示屏同時亮著。左邊是龍騰甲的全晶片拓撲圖,中間是時序仿真波形,右邊是一份密密麻麻的時鐘約束文件。咖啡杯見了底,菸灰缸里插滿了菸頭。
他已經連續工作了十九個小時。
龍騰甲進入全晶片整合階段後,第一輪全晶片仿真就報了錯——時鐘域交叉衝突。
三大核心IP模塊各自有獨立的時鐘系統:計算所的可重構計算引擎跑在480兆赫茲,華維的高速收發器跑在375兆赫茲,中興的通信協議棧跑在200兆赫茲。三個頻率之間完全不成整數倍關係,數據在模塊之間傳遞時出現亞穩態——信號既不是0也不是1,懸浮在一個不確定的狀態。
在FPGA設計中,這是最讓人頭疼的問題之一。處理不好,整顆晶片就是廢鐵。
趙強盯著波形圖,手指無意識地敲著桌面。
這個問題他太熟了。讀研時他的研究方向就是時鐘樹綜合,導師接的一個軍工FPGA項目,正是因為時鐘域沒處理好,流片兩次都廢了,幾十萬的流片費打了水漂。最後是他用一套數字鎖相環方案救回來的,那篇論文還發了國內頂級會議。
沒想到幾年後,同樣的問題又擺在了面前。不過這次他更有經驗了。
"這個問題不解決,整個龍騰甲就是廢鐵。"他在技術群里發了這句話。
王景輝的原始架構設計沒有充分考慮跨時鐘域問題——三個模塊是分別設計的,各團隊按自己的最優頻率來做,沒人想過整合後的時鐘協調。這不怪他,架構師關注的是功能劃分和總線拓撲,時鐘層面的細節本來就需要專門的工程師來兜底。
"在每個模塊接口處加異步FIFO做緩衝。"王景輝給出了他的方案,"數據從一個時鐘域傳到另一個時鐘域之前,先存進FIFO,再由接收方的時鐘讀取。"
趙強看完,搖頭。異步FIFO理論上可行,但在實際電路中,它會引入至少兩個時鐘周期的延遲。三個模塊之間的數據通路要經過好幾級FIFO,累積起來的延遲會讓整個系統的吞吐量下降百分之三十以上。
龍騰甲的設計目標是十萬門級、十吉比特吞吐。如果吞吐量掉三成,就等於自廢武功,拿什麼跟三大廠商的EDA工具競爭?
他把詳細的延遲計算發給了王景輝,每一級FIFO的開銷都列得清清楚楚。
王景輝沉默了。
第二天早上,林遠看到技術討論,把趙強和王景輝叫到了會議室。
三個人圍著白板,畫了兩個小時的時鐘樹。趙強把問題拆解成三層:模塊內部時鐘、模塊間數據通路、全晶片全局時鐘。
"王架構的方案是堵——用異步FIFO堵住每個接口,不讓衝突發生。代價是延遲太大。"趙強在白板上畫了一個方框,"我的思路是疏——設計一個全局時鐘管理單元CMU,生成三組相位對齊的時鐘信號,讓三個模塊的時鐘上升沿在關鍵節點上對齊。"
"數據跨時鐘域的時候,不需要經過FIFO,直接在對齊窗口內傳遞。"
王景輝皺眉。"三個頻率不成整數倍,怎麼做相位對齊?"
"用數字鎖相環。"趙強在白板上畫了一個PLL示意圖,"CMU的核心是一個多輸出鎖相環。輸入一個基準時鐘,輸出三組不同頻率但相位同步的時鐘。三組上升沿每隔一微秒對齊一次。模擬PLL精度高但對工藝波動敏感,數字PLL用校準算法實時補償,魯棒性更好。"
王景輝盯著白板推演了一分鐘——如果CMU真能做到足夠小的相位誤差,頂層總線架構就不用大改,只需在三個模塊時鐘輸入端各加一個CMU分支輸出,數據通路握手協議也不用動。他已經在腦子裡開始畫新的架構圖了。
"相位誤差如果超過五十皮秒,對齊窗口就會被破壞。"他說。
"所以我用數字鎖相環。"趙強答。
"你有多少把握?"林遠問。
"給我三天。"
三天後,7月11日。
仿真結果擺在了所有人面前:
相位對齊誤差:正負十二皮秒,遠低於五十皮秒的設計餘量。
跨時鐘域數據傳輸:零亞穩態。延遲從兩個時鐘周期降到零點三個。
全晶片吞吐量損失:不到百分之二。
更關鍵的是,王景輝在趙強拿到仿真結果的當天上午,就帶著兩個工程師完成了頂層架構的適配修改。他把CMU輸出接口完美嵌入原有總線框架,重新調整了模塊間的數據流調度策略,整合代碼量只增加了不到百分之五。
趙強解決了時鐘層面的難題,王景輝把難題變成了可落地的系統方案。一個攻克核心,一個整合全局。黃金搭檔。
消息傳到聯盟技術委員會,所有人都鬆了一口氣。
張衛國給林遠打電話:"趙強這個人,是國寶級的。你們遠望要好好留住。"
林遠笑了。"放心。我準備讓他牽頭制定一套跨時鐘域設計規範,以後聯盟內所有多IP整合項目,都按這個規範來。"
"好。標準這個東西,誰制定誰就掌握話語權。"
同一周,華盛頓。
鏗騰系統總部,地下三層絕密實驗室。
布朗盯著屏幕上的仿真曲線,臉上露出久違的笑容。
"OPC模塊代碼重構完成了。"他轉身對馬庫斯說,"用丹尼爾帶回來的參數,整個OPC引擎重寫了一遍。六十五納米測試平台上,校正精度提升百分之二十二,邊緣放置誤差降到一點八納米。比星核公開數據還好。"
"DRC引擎呢?"
"威爾遜那邊本周五收尾。"
馬庫斯點頭。"謝弗先生後天來聽匯報,準備好演示材料。"
布朗猶豫了一下。"馬庫斯先生,有個細節……丹尼爾帶回來的文檔里,原作者批註建議不要完全照搬,說存在兼容性風險。"
"我們在重構過程中也發現——這套參數在成熟節點上表現太完美了。完美到不真實。"布朗推了推眼鏡,"我做了十五年OPC,真實算法參數不可能在所有工藝節點上都零損失。但這套參數在成熟節點上幾乎零損失。就好像……專門為成熟節點優化過的。"
馬庫斯沉默了幾秒。
"布朗,你知道我們的處境。市場份額每個季度都在掉。星核價格低百分之三十,性能還比我們好。這套參數不管是不是百分百完美,至少讓我們看到了希望。"
他拍了拍布朗的肩膀。"不要在關鍵時刻自己嚇自己。"
布朗沒有再說什麼。
回到工位後,他打開一個加密U盤,把這幾天的分析筆記——包括"過於完美"的疑慮、參數在不同工藝節點上的表現對比、標註的每一個可疑數據點——全部複製了一份,鎖進抽屜最深處。
也許只是工程師的本能。
也許……是某種他自己都不願承認的預感。
北京,深夜。
林遠坐在書房裡,屏幕上顯示著皮埃爾的加密消息。
"丹尼爾第二次接觸。對方聯合團隊已完成OPC重構。在28nm測試中精度提升22%。謝弗準備向董事會匯報'重大突破'。"
林遠靠在椅背上,閉上眼睛。
百分之二十二——正好在他的預期範圍內。
特供版的參數在成熟工藝節點上被刻意優化過,甚至比他故意設置的還好。因為只有這樣,才能讓對方深信不疑。但當他們把這套參數推進到32納米以下節點時,所有"過於完美"的參數都會變成致命枷鎖。
重新推翻重來的代價,至少一年以上。
而一年之後——龍騰乙的四十五納米版本早就量產了。
他在筆記本上寫了一行字:
"回聲計劃啟動。靜待回音。"
窗外是七月的北京夜景,萬家燈火。
龍騰甲的技術難關被趙強和王景輝聯手攻克。三大廠商的技術團隊正在按假參數越陷越深。
一明一暗,一實一虛。