Tak wiele odpowiedzi, że nie przeczytałem ich wszystkich, będąc kimś, kto siedzi po obu stronach ogrodzenia, sprzętu i oprogramowania ....
Chociaż pod każdym względem jest to język programowania, który jest kompilowany do innych języków, najlepiej niższego poziomu (C do asm lub kod maszynowy, JAVA do kodu bajtowego lub innego języka, asemblera lub kodu maszynowego itp.). Jest o wiele więcej kroków, a cele są znacznie bardziej zróżnicowane niż te, które są tak powszechne, jak różne: dodawanie, mov, jne, push, pop itp.
Kod maszynowy dla fpgas lub asics to nie tylko dyskretne tranzystory, ale biblioteka rzeczy. W przypadku asics dla określonej odlewni i procesu dostępna jest jedna lub więcej bibliotek komórkowych i będą one miały proste i i lub bramki, ale także większe i bardziej skomplikowane rzeczy, po co budować zatrzask z dyskretnych komponentów, skoro autorzy biblioteki mogą stworzyć kilka wspólnych rozmiarów je i spakuj w efektywny sposób (na rynku nieruchomości). Tak więc, jak w przypadku każdego kompilatora lub autora wysokiego poziomu, przeglądasz listę opcji i wybierasz niektóre. w tym długą listę sram o różnych szerokościach i głębokościach. W przypadku FPGA są to tablice LUT lub w pewnym sensie stałe moduły ogólne, które mogą działać jako różne moduły, które są bardziej skomplikowane niż prosta bramka i, lub, xor.
Świat FPGA lubi trzymać rzeczy blisko piersi, a także starają się być o wiele bardziej przystępne cenowo niż narzędzia asic, dziesiątki tysięcy dolarów rocznie zamiast milionów. I jak w każdym innym zintegrowanym środowisku, czasami masz różnych dostawców, którzy zostali zakupieni lub licencjonowani, a narzędzia są sklejone (często niezbyt ładne).
Tak więc wydarzyły się wszystkie kroki, o których wspominali inni ludzie. co jest czymś więcej niż oprogramowanie, a formaty plików są bardzo zastrzeżone i nie oczekuje się, że będą dokumentowane ani obsługiwane, każda wersja może się zmienić. Znowu ci ludzie wydają się być konkurencyjni i tajemniczy (gdyby się otworzyli, moglibyśmy mieć znacznie lepsze narzędzia i mogliby sprzedawać więcej produktów IMO, ale mogą zmniejszyć pieniądze na wsparcie, które być może są tym, z czego żyją dzięki ich gównianym narzędziom) .
Kiedy ludzie mówią netlist, verilog jest kompilowany w netlistę, te, które widziałem, są również w Verilog lub VHDL, ponieważ te języki to obejmują. ostatecznie celujesz w konkretne cokolwiek, fpga, cpld, asic, itp. FPGA jest już podłączonym / stałym celem, ostatecznie otrzymasz listę bezpieczników lub przełączników, jeśli chcesz, weź ogólny lut i podłącz to wejście do to i to wejście do tego poprzez otwieranie i zamykanie połączeń w ogromnej siatce rzeczy. Co kończy się prostą listą włączeń i wyłączeń. I myślę, że może być w tym standard Jedec, ale często nazywany bitstreamem i przynajmniej używamy odtwarzacza bitstream do załadowania.
CPLD ogólnie rzecz biorąc, programujesz te informacje w samej części, czy jest to pamięć flash na płycie, która następnie otwiera / zamyka rzeczy po włączeniu i / lub nieulotna pamięć wewnątrz zasila z przewodami.
FPGA zwykle mają zewnętrzną lampę błyskową i po włączeniu zasilania informacje o podłączeniu są z niej ładowane, a reszta części pojawia się przy użyciu tej konfiguracji. Te, które znam, mogą również załadować te informacje do części i wykonać wszystkie połączenia, ale te informacje są tracone, gdy część jest wyłączona. więc w zależności od projektu możesz mieć inne rozwiązanie i nie używać lampy błyskowej. Format flash jest prawdopodobnie zastrzeżony, nie patrzyłem osobiście, kiedy wchodzisz przez interfejs programowania, który przechodzi przez FPGA do flasha, aby mógł działać tak, jak jest, lub można go przekonwertować w drodze na coś innego.
Dzięki oprogramowaniu szczególnie w tym czasie i miejscu jesteśmy przyzwyczajeni do otwierania rzeczy, całkiem dobrych darmowych narzędzi, z których korzysta wielu ludzi. Oznacza to również, że formaty plików są udokumentowane i dość powszechne, niektóre miały historię wcześniejszą .com i .exes, a inne dla innych systemów operacyjnych w tamtych czasach. Ale znowu świat oprogramowania jest bardziej powszechny niż inny, do którego idealnie dążysz dla kodu maszynowego lub kodu bajtowego. Z logiką przechodzisz z wysokiego poziomu na niższy, ale do pewnego momentu używasz tego samego języka. Wtedy możesz celować w symulator, który ma własną bibliotekę modułów lub fpga n ze swoją biblioteką lub fpga m ze swoją biblioteką i tak dalej. A ci ludzie bardzo chronią informacje.
Clifford i projekt IceStorm IMO to właściwa droga. Jak dotąd to jedyny raz, kiedy stworzyłem coś dla FPGA, które jest proste, działa, nie ma ostrzeżeń ani błędów, które ludzie często lubią.Spędziłem niezliczone noce próbując uzyskać najprostszą rzecz do zbudowania FPGA od wszystkich głównych dostawców bez ostrzeżeń ... i zawsze się poddawałem.Od wersji Verilog do części programowanej są to co najmniej trzy oddzielne projekty, co oznacza, że istnieją pliki pośrednie, które obie strony muszą obsługiwać, więc istnieją formaty plików.ale powinien być specyficzny dla projektu i niekoniecznie podobny do pliku elf, który jest szeroko używany w więcej niż jednym przypadku użycia.
Zrozum, że świat chipów, w tym fpgas, jest niesamowicie drogi, więc kieruje się pieniędzmi, co często oznacza sprzedaż narzędzi i, co najważniejsze, roczne kontrakty wsparcia.Co oznacza zamknięte źródło, zamknięte informacje, a nie publicznie udokumentowane formaty plików.