這麼多的答案我都沒看完,因為坐在圍欄兩側的人,硬件和軟件....
因此,在所有方面,它都是一種編程語言,可以理想地編譯為其他語言(從C到asm或機器代碼,從JAVA到字節碼或其他語言或彙編或機器代碼等)。除了isa以外,還有很多步驟,目標也要比isa多得多,因為它們不同:add,mov,jne,push,pop等。
fpgas或asics的機器代碼不僅是分立的晶體管,而且是一個東西庫。對於特定鑄造廠和工藝的asics,有一個或多個單元庫可用,它們將具有簡單的和/或門,也可能具有更大和更複雜的內容,為什麼當庫的作者可以將一些通用尺寸的組件構建成鎖存器時,並以有效(房地產)方式打包。因此,與任何編譯器或高級作者一樣,您要遍歷選項列表並選擇一些選項。包括一長串各種寬度和深度的sram。對於FPGA,是LUT或某種固定的通用模塊,它們可以充當比簡單的“或”門或“異或”門更為複雜的各種模塊。
FPGA世界喜歡把東西放在胸前,而且他們試圖比ASIC工具更便宜,每年數万美元而不是數百萬美元。就像任何其他集成環境一樣,您有時會購買或獲得許可的各種供應商,並且將工具粘合在一起(通常不是很漂亮)。
其他人提到的所有步驟都發生了。它比軟件更重要,並且文件格式是非常專有的,並且不會被記錄或支持,因此每個版本都可能會更改。同樣,這些人似乎具有競爭性和秘密性(如果他們要開放,我們可以擁有更好的工具,他們可以出售更多的產品IMO,但可能會減少支持資金,這也許是他們依靠笨拙的工具所賴以生存的) 。
當人們說網表時,verilog被編譯成網表,我所見的那些也以verilog或vhdl出現,因為這些語言涵蓋了這一點。最終,您將針對特定的東西,如fpga,cpld,asic等。fpga是已經接線/固定的目標,如果需要的話,最終會得到一系列保險絲或開關,並採用通用接頭並將其連接至通過在龐大的網格物體中打開和關閉連接來輸入和輸入。最終得到的是一些簡單的清單。而且我認為可能有一個jedec標準,但通常被稱為比特流,至少我們使用比特流播放器進行加載。
通常,CPLD在零件本身中編程此信息,因為它是板載閃存,然後在打開電源時打開/關閉東西,和/或內部的非易失性存儲器通過連接的物品打開電源。
FPGA通常具有一個外部閃存,並在打開電源時連接信息,然後再使用該設置加載其餘部分。據我所知,您在通電時可以將這些信息加載到零件中並進行所有連接,但是當零件斷電時,該信息會丟失。因此,根據您的設計,您可能有其他解決方案而不使用閃光燈。 Flash格式可能是專有的,我個人沒有看過,當您通過編程接口進入該接口時,該接口通過fpga到Flash,因此可以按原樣使用,也可以將其轉換為其他格式。
在這個時候和地點使用esp軟件,我們習慣於打開很多東西,許多人都在使用一些不錯的免費工具。這也意味著文件格式已被記錄並在某種程度上是常見的,其中一些在.com和.exes之前具有歷史記錄,而另一些在當時的其他操作系統中具有歷史記錄。但是同樣,軟件世界比您理想地針對機器代碼或字節碼的目標更為普遍。使用邏輯,您會從較高的層次過渡到較低的層次,但是在某種程度上使用相同的語言。然後,您可能要針對一個模擬器,該模擬器具有自己的模塊庫或帶有庫的fpga n或帶有庫的fpga m,依此類推。這些人非常保護信息。
Clifford和IceStorm IMO項目是正確的方法,這是迄今為止我唯一一次為fpga構建簡單,有效的東西,沒有軟件人員經常喜歡的警告或錯誤。我花了無數的夜晚試圖從所有主要供應商那裡得到最簡單的東西來構建fpga,而不會發出警告……並且會永遠放棄。從Verilog到編程的部分,至少是三個獨立的項目,這意味著雙方都需要支持中間文件,因此文件格式就在那裡。但應該是特定於項目的,而不必像被廣泛用於多個用例的elf文件一樣。
了解包括fpgas在內的芯片世界非常昂貴,因此它是金錢驅動的,這通常意味著出售工具,最重要的是要簽訂年度支持合同。這意味著不公開的來源,不公開的信息,而不是公開記錄的文件格式。