利用現成FPGA開(kāi)發(fā)板進(jìn)行ASIC原型開(kāi)發(fā)
手工分割和綜合多個(gè)FPGA設計
在手工分割的情況下,任何ASIC中心結構(門(mén)控時(shí)鐘,Synopsys的DesignWare?實(shí)例等),在原始的RTL源代碼中,在進(jìn)行分割之前,不得不手工將它們翻譯為與它們的FPGA相等同的代碼。除其它東西之外,這直接導致了兩個(gè)分離的代碼流,這可能失去同步,從而導致在FPGA原型和ASIC之間所代表的功能不同。
當開(kāi)始分割處理時(shí),工程師們嘗試將不同的功能模塊組集合在一起,在這里每組在不同的FPGA上實(shí)現。這種組合(分割)以門(mén)級的傳統方式實(shí)現。最近,一些流程支持在RTL級分組,此時(shí)每個(gè)分成的組通過(guò)傳統的FPGA綜合工具,并且僅在這一點(diǎn)上,不同FPGA的實(shí)際資源利用是已知的。
所有這些方案都有一個(gè)問(wèn)題,就是對于不同組的面積和資源的影響而言,工程師們是“臨時(shí)的盲人”,這導致了許多耗時(shí)的迭代。首先,工程師根據“A模塊可能將消耗‘xxx’的資源,而模塊B可能要求‘yyy’的資源”而進(jìn)行“估算”。這些估算是根據大量“分組”命令,然后綜合(在基于RTL分割的情況下),然后是結果的分析,以及然后是大量的“取消組”和“再次分組”命令來(lái)估算不同的實(shí)現方式。
該任務(wù)由于這一事實(shí)而進(jìn)一步混淆,該事實(shí)就是這些原型經(jīng)常被FPGA上的I/O管腳的數量所限制;一個(gè)無(wú)效的解決方案很容易耗費一個(gè)器件上100%的I/O資源,然而與此同時(shí),僅僅其相對少量的內部邏輯資源可以實(shí)現。為了克服這些I/O限制,I/O的多重分組和/或在多個(gè)FPGA中復制同一個(gè)邏輯模塊是必要的。(為了達到特定的性能目標,邏輯復制也是經(jīng)常要求的。)
假設在這種原型中使用的每個(gè)FPGA可能有超過(guò)1000個(gè)管腳,一項管理連接的電子表格方法能很容易地包含幾千個(gè)單元。不足為奇地是,記錄分配給每個(gè)FPGA的模塊和連接矩陣(在不同FPGA之間的連接)是一項繁重的任務(wù),這將是資源密集型的、耗時(shí)的以及容易出錯的。
評論