最近 Kimi K3 這個模型有很強的前端能力,我看別人曬出來的網頁都極具美感。那我就在想,用高射炮打一下蚊子,用AI來直接幫我們畫時序圖是不是也可以?
于是我做了一些嘗試,標準協議、自定義協議都試了。沒想到效果出奇好。
首先測試的是標準 SPI 協議的時序圖。操作很簡單,沒整什么花里胡哨的skill,我就是打開了網頁版的kimi,選擇K3模型,然后提示詞很簡單,就是:
畫一個交互頁面來展示標準 SPI 協議的時序。

然后kimi一頓操作之后,它給出了成果,大家可以感受一下。

從時序圖本身來看,出圖非常專業和嚴謹,完全不輸于任何一款專業畫時序圖的軟件。當然,你若顏色不喜歡,就喜歡那種體制內廳里廳氣的感覺,就直接讓AI繼續幫你改即可。

這是論文風格的時序圖:


雖然等待出圖的時間稍微慢了點,但我們不需要像傳統方式一樣,去學習某個軟件的使用方法,或者掌握一些畫時序圖的命令。整個過程就是通過自然語言交互,在很短時間內就可以完成一個非常專業的時序圖。
而且,你看一下它的細節,很有驚喜。
雖然我的提示詞其實非常簡單,但是它把SPI 協議的每一個工作模式,它都對應生成了相應的工作時序。以及它的時鐘部分,每一個時鐘邊沿,都會用紅色箭頭進行標注。不同信號之間,也使用不同顏色進行了區分。系統分析力很強。

最厲害的是什么?kimi還同步把這個時序做成了一個可交互的動畫。
什么概念呢?
傳統時序圖,本質上就是一個靜態的圖片。但是你看AI生成的這個時序圖頁面,上面有一個播放按鈕。

點擊之后,整個時間軸會開始移動,模擬時鐘周期遞進。同時,在當前時間點,會顯示每一個信號的狀態,以及對應鎖存器采樣到的數據值。

這個就非常牛逼了。AI已經把傳統靜態時序圖提升到了一個更高的維度,讓它變得可運行、可變化。直接通過動畫、動態的方式,把時序關系展示給用戶。
我覺得,這才是最理想,最直觀時序邏輯的表達方式啊。AI,我真的等你好久了!
我把最終的效果網頁已經發布成公開的頁面,感興趣的可以點擊體驗:https://y6aeipnh6cyle.ok.kimi.link
當然,為了測試整個 Kimi K3 畫時序圖的穩定性,我又使用 UART 串口協議做了一次測試。我的提示詞同樣很簡單:
使用同樣的方法生成一個 UART 時序圖。
大家來看一下最終結果。

雖然提示詞一如既往簡單,但是它也自動在生成時序圖的時候考慮到了 UART 協議里面的一些關鍵內容。
例如:
有無校驗;
奇校驗;
偶校驗;
有沒有停止位;
波特率參數。
這些內容它都會自動分析并設置。
同時,它不僅畫出了標準的時序圖。和剛才 SPI 一樣,它也同步生成了一個可播放的動態交互頁面。時鐘每運行一個周期,它都會實時顯示當前解析的數據值。

當然后續我還測試了其他標準接口,kimi k3畫出的時序圖,能力也完全達到了可以放到技術文檔里的水平。

整體來說,以kimi k3為代表的前沿AI畫出的時序圖基本已是一個交付性非常強、完全可以用于教學演示的時序小系統了。
最后,為了驗證它對于自定義用戶接口時序圖的生成能力,我直接把項目里面一個自定義 Flash 用戶接口的核心代碼發給了它。然后和kimi k3說:
畫一個交互頁面,展示附件代碼所表達的邏輯。
然后 Kimi K3給我帶來了更大的驚喜。
我本來只是想讓它幫助我把用戶端的讀寫邏輯表達出來。沒想到它不僅把用戶讀操作和寫操作的具體時序圖畫出來了。而且還把我沒有提到的整個模塊初始化時序也考慮進去,并且更絕的是,因為時序相對復雜,他直接生成了一個相對應的時序狀態機輔助用戶理解時序。


點擊播放按鈕之后:整個狀態機里面的狀態,會隨著時間推進進行變化。時序圖也會同步隨著時鐘周期運行展示。右側則還有當前狀態機的說明,包括:
狀態機原理;
狀態跳轉關系;
當前狀態作用。

臥槽,真的太牛逼了!直接把時序圖,狀態機,當前狀態解釋,全部聯動在一起。這種輸出結果,不僅方便我理解代碼,更適合作為以后代碼模塊的交付成果還能方便后續同事迭代,或者系統升級。
我在想,如果把它生成的這種交互頁面的邏輯進一步封裝,做成一個skill。那么以后所有時序代碼,都可以用一個頁面,把時序圖,狀態機,狀態說明都展示出來了啊。還可以用動畫來輔助理解時序關系。那么,這個skill將會對于 FPGA 開發人員,或者任何需要理解代碼時序邏輯的人來說,就非常實用。
此次實踐后,我已經決定拋棄過去所有畫時序圖的方法。 Kimi K3 模型完全可以幫我們完成時序圖的繪制,不需要學命令,不需要下載復雜軟件,也不需要任何調試,畫好時序圖就是一句提示詞而已。而且效果只有更強,沒有缺點。
而傳統那些畫流程圖、畫狀態機的軟件,正在潤物細無聲地被 AI 改變。