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