“各位教授,各位老師,大家好,非常感謝大家能抱著對(duì)我的信任加入我們EDA項(xiàng)目組。今天這個(gè)會(huì)議就是大概講述一下我們這款極簡(jiǎn)EDA的設(shè)計(jì)理念,以及對(duì)大家接下來(lái)的工作做一個(gè)分工?!?p> 實(shí)驗(yàn)室四樓小會(huì)議室里,寧為正在給項(xiàng)目組的眾人做著報(bào)告。
壓力還是有的。
畢竟除了余興偉外,年紀(jì)最小的也都大了他一輪。
“這么說(shuō)吧,對(duì)于我們項(xiàng)目組即將設(shè)計(jì)的這款EDA軟件,并沒(méi)有大家想象中的那么復(fù)雜。我把它稱之為面向?qū)ο蟮腅DA軟件設(shè)計(jì)?!?p> “在這里我先假設(shè)每一個(gè)由現(xiàn)有技術(shù)能夠制作出的結(jié)構(gòu)都是一個(gè)對(duì)象。這些對(duì)象我將之分成了四種類型?!?p> “它們分別是元,即現(xiàn)有技術(shù)能夠制作的最小結(jié)構(gòu)單位,這個(gè)單位是可以隨著技術(shù)的突破而更新的?!?p> “組,若干個(gè)元彼此連接、排列形成的具有單一功能的結(jié)構(gòu)。
“群,若干個(gè)功能相同或不同的組彼此連接、排列形成的能夠獨(dú)立完成某一特定功能的結(jié)構(gòu)?!?p> “容器:用以承裝元、組或群的結(jié)構(gòu)?!?p> “每一個(gè)對(duì)象要都包含屬性和函數(shù)兩部分?!?p> “屬性不僅包含該對(duì)象的物理屬性,如尺寸、大小等,還包含該對(duì)象的索引與表示屬性,如代表符號(hào)、統(tǒng)一序號(hào)等,還包含了該對(duì)象的布局屬性,如連接方式和排列方式等。函數(shù)則必須有輸入?yún)?shù)和返回值,是對(duì)對(duì)象功能的描述,如單項(xiàng)導(dǎo)通、放大、截止等。”
寧為對(duì)照著昨天趕出的PPT,給項(xiàng)目組成員表述著他的基礎(chǔ)設(shè)計(jì)理念。
“從這種視角,大家應(yīng)該看出我們的EDA設(shè)計(jì)思路其實(shí)很簡(jiǎn)單,一方面我們要讓操作者很輕松的將代表不同類型對(duì)象的符號(hào)在設(shè)計(jì)界面上進(jìn)行定位和排列并進(jìn)行接線;另一方面,操作者的所有操作實(shí)際上是計(jì)算機(jī)后臺(tái)將對(duì)象的函數(shù)彼此串聯(lián)調(diào)用,最終形成一個(gè)大函數(shù)過(guò)程?!?p> “以上是對(duì)設(shè)計(jì)過(guò)程的要求。同時(shí),我們的EDA軟件要具備仿真功能。EDA仿真過(guò)程是向大函數(shù)過(guò)程輸入?yún)?shù)并記錄反饋結(jié)果的過(guò)程,也包括對(duì)各個(gè)子過(guò)程之間傳遞的參數(shù)和返回值的監(jiān)測(cè)。
“EDA實(shí)例化過(guò)程需要將對(duì)象的布局位置和排列方式生成運(yùn)行腳本以便控制光刻機(jī)進(jìn)行生產(chǎn)和制造?!?p> “由以上需求,我們直接引導(dǎo)出軟件結(jié)構(gòu)?!?p> “對(duì)象庫(kù):用于定義現(xiàn)有的對(duì)象并保存未來(lái)新設(shè)計(jì)的對(duì)象?!?p> “函數(shù)庫(kù):用于保存現(xiàn)有或未來(lái)新增對(duì)象的函數(shù)?!?p> “設(shè)計(jì)界面:用于對(duì)對(duì)象進(jìn)行布局、排列和連接?!?p> “函數(shù)連接:用于將排列和連接的對(duì)象的函數(shù)按照排列和連接的方式進(jìn)行串聯(lián)和調(diào)用?!?p> “仿真與監(jiān)控:用于向結(jié)構(gòu)發(fā)送參數(shù)并檢測(cè)各個(gè)函數(shù)節(jié)點(diǎn)的返回值。”
“生產(chǎn)函數(shù):用于將對(duì)象的布局、排列和連接進(jìn)行腳本化提供給光刻機(jī)用于生產(chǎn)?!?p> “除此之外,因?yàn)檫@是一款全新的EDA軟件,我們沒(méi)辦法依靠外設(shè)接口來(lái)引入外掛程序,所以我們還要有一個(gè)跟其他EDA區(qū)別開的庫(kù)。這個(gè)庫(kù)跟對(duì)象庫(kù)相對(duì)應(yīng)。我們每設(shè)計(jì)一種結(jié)構(gòu),便要為這一結(jié)構(gòu)更新一個(gè)指令集跟配套的函數(shù)?!?p> “換句話說(shuō),我們每針對(duì)某個(gè)特定問(wèn)題設(shè)計(jì)的芯片,都要有全方位的支持。這也是我們的產(chǎn)品差異化競(jìng)爭(zhēng)之所在。我們的產(chǎn)品并不只是面向特定的大廠專業(yè)EDA設(shè)計(jì)人員,我的初衷是要讓一個(gè)小學(xué)孩子,在看過(guò)說(shuō)明書后,都能夠用我們的軟件設(shè)計(jì)出能用的芯片。”
“在我們的軟件推出之后,由專業(yè)人員設(shè)計(jì)出的結(jié)構(gòu)跟配套的指令集、函數(shù)再經(jīng)過(guò)驗(yàn)證跟審核之后,也可以同步到我們的庫(kù)中?!?p> “這里又對(duì)我們的產(chǎn)品提出了一個(gè)要求,就是要內(nèi)置一個(gè)對(duì)結(jié)構(gòu)的邏輯判斷能力。簡(jiǎn)單來(lái)說(shuō)就是所求即所得,換句話說(shuō),用戶只需要能夠比較準(zhǔn)確的描述出需求,我們的軟件就能自動(dòng)給其推薦能完成這一需求的架構(gòu)跟配套的配置文件!”
“想來(lái)大家已經(jīng)明白這款軟件的設(shè)計(jì)理念了。那就是簡(jiǎn)單,足夠的簡(jiǎn)單,就幾乎不需要任何推廣成本。”
“大家還有什么問(wèn)題嗎?”
……
項(xiàng)目組成員們面面相覷。
因?yàn)槿嗽诰种泻茈y想象這么一款EDA軟件開發(fā)出來(lái)的意義在哪。
給小朋友當(dāng)玩具么?
沒(méi)錯(cuò),簡(jiǎn)單是能省掉許多的推廣成本,但也意味著這玩意實(shí)用價(jià)值不高?。?p> 首先是幾乎不能設(shè)計(jì)跟仿真大型復(fù)雜的通用芯片,比如CPU、GPU。
另一個(gè)就是應(yīng)用層了。
寧為的意思是要繞開現(xiàn)有的各種架構(gòu)跟指令集,又牽扯到兼容性的問(wèn)題。
實(shí)際上現(xiàn)階段AI芯片本就有現(xiàn)成的解決方案,比如FPGA。
跟寧為的構(gòu)思不同,F(xiàn)PGA直接就可以理解為一種萬(wàn)能芯片,有著統(tǒng)一的結(jié)構(gòu)。
用戶通過(guò)燒入 FPGA 配置文件,來(lái)定義這些門電路以及存儲(chǔ)器之間的連線,用硬件描述語(yǔ)言對(duì) FPGA 的硬件電路進(jìn)行設(shè)計(jì)。每完成一次燒錄,F(xiàn)PGA內(nèi)部的硬件電路就有了確定的連接方式,具有了一定的功能,輸入的數(shù)據(jù)只需要依次經(jīng)過(guò)各個(gè)門電路,就可以得到輸出結(jié)果。
這種方式顯然比寧為設(shè)計(jì)的這種ASIC模式更具性價(jià)比。雖然FPGA也有自身的缺點(diǎn),比如性能比不上 ASIC 芯片,價(jià)格也比 ASIC 芯片更高。
原因是現(xiàn)在各種人工智能的深度學(xué)習(xí)算法正處于快速發(fā)展期,迭代極快,如果照著寧為的想法每種結(jié)構(gòu)都要設(shè)計(jì)對(duì)應(yīng)配套的最優(yōu)化可燒錄配置文件,也就意味著每次算法更迭,都要在對(duì)象庫(kù)里更新新一代的專用芯片結(jié)構(gòu)。
一旦更新慢了,就落伍了……
所以整個(gè)項(xiàng)目組沒(méi)幾個(gè)人看好這款EDA軟件的前景。
但每個(gè)人的想法卻又有不同。
有的人覺得無(wú)所謂,反正撥款下來(lái)了,不管怎么樣,大家都多少都能賺點(diǎn)。至于這款軟件有沒(méi)有實(shí)用價(jià)值,也沒(méi)啥好在意的。
反正是專項(xiàng)撥款,不用白不用。
但也有人覺得這樣不妥。
公家的錢也是錢,現(xiàn)在實(shí)驗(yàn)室的盤子就這么大,在他們的項(xiàng)目上用的多了,別的項(xiàng)目就要削減資金。
把這錢用在注定沒(méi)什么價(jià)值的項(xiàng)目上,其他有價(jià)值的項(xiàng)目怎么辦?
于是沉默過(guò)后,有人發(fā)出了不同的聲音。
“寧為,能不能解釋下,設(shè)計(jì)這款軟件的初衷是什么?實(shí)用價(jià)值又在哪里?”