2009-10-18 11 views
8

Czy istnieją dobre, istniejące narzędzia programowe, które pomagają w generowaniu plików nagłówkowych C z odpowiednimi # definicjami przesunięć w rejestrze, a także definicjami bitów z VHDL ? Jeśli istnieją takie narzędzia, jakie ograniczenia nakładają na VHDL i jak są określane rzeczy, które powinny zostać wyeksportowane?Jak udostępnić rejestr i definicje pól bitowych między sterownikiem urządzenia a układem FPGA, który kontroluje?

tej pory znalazłem tych narzędzi, ale nie są one dokładnie to, co szukam:

Na podstawie tych narzędzi interesuje mnie również, czy właściwym przepływem pracy jest generowanie zarówno C, jak i VHDL, zamiast próbować przejść bezpośrednio z VHDL (p być może z dodatkowymi znacznikami w komentarzach) do C.

Odpowiedz

2

Wydaje mi się, że ostateczne, choć to było niepokojące, wysyłają cię we właściwym kierunku. I zgodziłbym się z RedGlyph, że powinieneś rozważyć nieco zmianę swojego przepływu pracy.

Czy zastanawiałeś się nad posiadaniem jednego "dokumentu głównego" dla informacji z rejestru kontrolnego i generowałeś automatycznie wszystko - RTL, kod testbench, nagłówki oprogramowania i dokumentację?

Pracowałem nad projektami, w których informacje kontrolne były przechowywane w jednym głównym arkuszu kalkulacyjnym i wszystko, czego potrzebowaliśmy, wygenerowaliśmy z tego. Na jednej rodzinie układów napisałem kilka skryptów w języku Python, aby wygenerować te rzeczy z plików CSV wyeksportowanych z arkusza kalkulacyjnego. W innym projekcie arkusz kalkulacyjny zawierał makra do generowania plików RTL itp., Których potrzebowaliśmy.

Pisanie wewnętrznych skryptów jest w porządku i dobrze, ponieważ masz pełną kontrolę nad nimi i wiesz, jak one działają w szczegółach. Pamiętaj jednak, że musisz poświęcić czas na obsługę tych skryptów i aktualizowanie ich, aby robić nowe rzeczy. Zastanów się, co by się stało, gdyby ktokolwiek, kto napisał te skrypty, zdecydował się na nową pracę - czy ktokolwiek inny byłby wystarczająco zaznajomiony ze skryptami, aby je zmodyfikować? Rozważamy zakup zewnętrznego narzędzia z powodów wymienionych powyżej.

Pracowałem również nad projektami, ponieważ dokumentacja i pliki nagłówkowe zostały przeniesione z RTL -to koszmar. Dokumentacja zwykle pozostaje w tyle za projektem, a często pola kontrolne "znikają". Wolałbym nie brać udziału w takim projekcie;)

5

Możesz rzucić okiem na Doxygen, obsługuje on język VHDL i używając plików pośrednich, możesz łatwiej lub łatwiej wyodrębnić informacje. Produktem ubocznym byłaby twoja dokumentacja kodu RTL.

Inną opcją jest zbudowanie parsera C z definicji Yacc/Lex, można znaleźć kilka z nich here. Stamtąd możesz parsować VHDL, wyodrębnić informacje (będziesz musiał określić, jak odzyskać definicję twoich rejestrów) i wytworzyć plik nagłówkowy C. To prawdopodobnie dość skomplikowane.

Ale jeśli bym był tobą, naprawdę postępowałbym inaczej i zdefiniowałby offsety i pola rejestrów w osobnym pliku (na przykład w XML) i napisał mały skrypt, by wygenerować zarówno nagłówek C, jak i pakiet VHDL, zaoszczędziłoby to dużo czasu i byłoby bardziej niezawodne z punktu widzenia przepływu.

Pomoże to również w budowaniu dokumentacji.

Oczywiście można zautomatyzować proces za pomocą pliku makefile/lub skryptu przygotowującego bazę danych przed symulacją/syntezą.

0

Prawdziwym źródłem udostępnianych informacji jest oryginalny projekt, dlatego chciałbym wprowadzić oryginalny projekt w formie łatwej do przetworzenia. Oto kilka pomysłów ...


  1. Zastosowanie YAML. (Lub westchnienie, XML, a nawet bardzo prosty DSL projektu). Zdefiniuj oryginalne dane. Napisz skrypty, aby zrzucić je jako VHDL i C. Wszystkie języki skryptowe obsługują YAML i są zaprojektowane tak, aby były analizowane również za pomocą narzędzi powłoki. Możesz nawet użyć uproszczonego VHDL lub C i napisać skrypt, aby przekształcić go poprzez prostą transformację tekstu w odpowiedni C lub VHDL.

  2. Zrób to wszystko w preprocesorze C. Można napisać zestaw makr połączeń, które określają układy rejestrów. Mógłbyś wtedy mieć #if lub dwa osobne pliki .h, które definiują dwie różne wersje twoich makr definicji, jedną, która rozwija się do VHDL i która rozszerza te same definicje do C.

2

Nasza grupa projektowa używa SystemRDL do przechwytywania definicji rejestrów dla naszego Programowalnego Systemu na chipie. Używamy Denali Blueprint z dostosowanymi skryptami dla różnych celów - generujemy mapę rejestrów, dokumentację PDF, weryfikację, pliki nagłówkowe C, itp.

Nie używamy go do wygenerowania źródła RTL.

http://www.spiritconsortium.org/releases/SystemRDL
http://www.google.com/search?q=SystemRDL

+0

bardzo interesujące. .. – Marty

3

zgadzam się z Marty, tworzenie skryptów w domu robić tego typu rzeczy jest zabawa, ale może być problematyczne w dłuższej perspektywie.

Stworzyliśmy narzędzie o nazwie IDesignSpec, które jest implementowane jako wtyczka do edytorów dokumentów, które umożliwiają określenie rejestrów w dokumencie i wygenerowanie nagłówka C, VHDL, Verilog, OVM, VMM, IP-XACT, HTML, XML, SystemRDL, PDF itp. Z niego.

Możesz wygenerować własne wyjścia za pomocą interfejsu API TCL. Może czytać w różnych formatach wejściowych, takich jak XML, IP-XACT, SystemRDL, itp.

Zaletą tego podejścia jest to, że posiadasz jedną specyfikację i wszystko automatycznie synchronizuje się.

Obecnie obsługiwanymi edytorami są: MS Word 2003 & 2007, OpenOffice, StarOffice i FrameMaker.

można uzyskać więcej szczegółów na http://www.agnisys.com

Oto pełna lista dostępnych rozwiązań: nazwa

firmy: narzędzia komercyjne (rozwiązanie pod warunkiem)

  1. Agnisys: IDesignSpec (Plugin for Word/Excel/OpenOffice i interfejs wiersza poleceń w systemie Linux i Windows)
  2. Atrenta: 1-Genesis-Registers (aplikacja komputerowa) -> Nabyte przez Synopsys. Narzędzie niedostępne.
  3. Duolog: BitWise (aplikacja oparta na Eclipse) -> Uzyskane przez ARM, narzędzie jest nadal dostępne.
  4. PDTi: SpectaReg (aplikacja oparta na Internecie) -> Narzędzie nie jest już dostępne.
  5. Semifore: CSRCompiler (interfejs wiersza poleceń)

narzędzia Wolny/OpenSource

  1. Veripool: VRegs
  2. ParadigmWorks: Spec2Reg
1

Odpowiedź może przyjść trochę późno, ale używamy darmowej biblioteki netpp i kilku zmodyfikowanych arkuszy stylów XSL do generowania dokumentacji, źródła VHDL i C z jednego źródła XML. Istnieje również rozszerzenie symulatora VHDL, które pozwala bibliotekom VHDL i C na wymianę danych w celu utworzenia wirtualnego FPGA z obsługą sieci. Nazywa się ghdlex, nie pamiętam dokładnie, gdzie to jest, ale znajdziesz go gdzieś na stronie internetowej http://section5.ch w obszarze pobierania netpp. To trochę trudne w obsłudze, ale dobrze, to nic nie kosztuje ..

0

Spectareg pozwala określić rejestrów w jednym miejscu i tworzyć wiele wyjść dla różnych środowisk (np. VHDL, C, Verilog)

Powiązane problemy