Jak mogę wydobyć wewnętrzne sygnały mojego kodu źródłowego VHDL na mój testbench, aby móc je wyświetlać jako przebiegi? Używam Active HDL. Chciałbym wiedzieć, czy istnieje metoda niezależna od narzędzia do osiągnięcia mojego celu. Każda pomoc jest mile widziana.
Otrzymuję teraz ten błąd.
Mój kod źródłowy to
entity SPI_DAC is
Port (
-- inputs and oututs
)
end SPI_DAC;
architecture Behavioral of SPI_DAC is
--These are my internal signals
signal ch1_byte_data_sent : STD_LOGIC_VECTOR(23 downto 0) := x"000000";
signal ch1_byte_cmd_sent : STD_LOGIC_VECTOR(23 downto 0) := x"000000";
--and a few other signals
begin
--functionality
end Behavioral;
Mój kod testbench to
entity tb_spi_dac is
end tb_spi_dac;
architecture behavioral of tb_spi_dac is
component spi_dac
port(
--declaration, inputs and outputs
);
end component;
begin
uut: spi_dac port map(
--map ports
);
--stimulus process
end;
.tp_spi_dac.uut.ch1_byte_data_sent
.Odpowiedzi:
To, czego szukasz, nazywa się w VHDL nazwami zewnętrznymi (lub nazwami hierarchicznymi). Można ich użyć do obejścia widoczności zakresu / hierarchii. Składnia jest taka jak w przykładzie poniżej.
Możesz również uzyskać dostęp do stałych i zmiennych za pomocą nazw zewnętrznych. Musisz jednak zmienić typ w typie zewnętrznym. Możesz użyć zewnętrznych nazw bezpośrednio do odczytu / zapisu. Należy jednak używać aliasów, aby poprawić czytelność.
Nazwa zewnętrzna musi zawierać ścieżkę do elementu, do którego chcesz uzyskać dostęp. Ścieżka może być bezwzględna lub względna. Poszczególne elementy na twojej ścieżce są oddzielone kropkami. Pamiętaj, że musisz podać etykiety instancji / procesu / encji / ..., a nie nazwę. Ścieżka absolutna zaczyna się
.
od nazwy twojego najwyższego poziomu. W przypadku ścieżek względnych można użyć^
do przejścia w górę w hierarchii. Korzystając ze stałych / sygnałów z niektórych pakietów, możesz także użyć@
do przejścia do biblioteki.Przykładem ścieżki bezwzględnej jest
Aby uzyskać dostęp do tego samego elementu z poziomu środowiska testowego z nazwami względnymi, których możesz użyć
Jeśli chcesz uzyskać dostęp do sygnału / stałej testbench z instancji podrzędnej, możesz użyć
Aby uzyskać dostęp do innej stałej w pakiecie konfiguracyjnym znajdującym się w bibliotece konfiguracji, możesz użyć
Możesz użyć projektu symulatora / przeglądarki biblioteki, jak wskazał David, aby znaleźć prawidłową nazwę ścieżki.
Ta funkcja została dodana w VHDL-2008, więc powinna być obsługiwana przez wszystkie narzędzia, które już obsługują VHDL-2008 (w tym, jak sądzę, ActiveHDL). Większość symulatorów domyślnie nie używa VHDL-2008, ale udostępnia argument wiersza poleceń lub opcję konfiguracji, aby go włączyć.
źródło
alias
musisz napisać zadanie w nowej instrukcji. Zaletą jest to, że możesz użyć nazwy aliasu zamiast długiej nazwy zewnętrznej.Stanowisko testowe oznacza symulację - jednostka bez żadnych portów zasadniczo nie kwalifikuje się do syntezy.
Chociaż nigdy nie korzystałem z Active-HDL, rozumiem, że ma on zaprojektowaną przeglądarkę, która powinna pozwolić ci wybierać sygnały w hierarchii, aby wyświetlały się w twoim przebiegu Zobacz wideo na temat kompilacji i symulacji Aldec (5:02, min: s).
I mniej więcej teraz mam wrażenie, że wideo może powodować zamieszanie, być może w tym konkretnym przypadku.
O 2:22 od końca wideo pokazuje plik do (makro), który kontroluje symulację:
Tam, gdzie widzimy, każdy sygnał na najwyższym poziomie projektu został dodany do wyświetlania kształtu fali za pomocą polecenia fali. Powinno być również możliwe określenie sygnału w dowolnym miejscu w hierarchii projektu.
Podstawową ideą jest to, że wiele symulatorów pozwala zaplanować gromadzenie sygnałów (a niektóre zezwalają na zmienne) w celu wyświetlenia kształtu fali.
Ten krótki film po prostu nie pokazuje sygnałów dla poziomów hierarchii pomocniczej. (W krótkiej prezentacji wideo jest dużo rzeczy wypchanych).
Jak wspomniano powyżej, Twoim celem wydaje się być postrzeganie sygnałów wewnętrznych jako przebiegów.
Teraz zła wiadomość - nie ma standaryzacji dla funkcji symulatora lub interfejsów, sygnałów planowania dla zrzutu fali itp. Wszystkie są zdefiniowane w implementacji.
Jest prawie pewne, że możesz zrzucić sygnały w dowolnym miejscu w hierarchii projektu do przeglądarki przebiegów lub pliku zrzutu fali z dowolną implementacją, która symuluje, metoda wykonania jest zdefiniowana.
Dobrą wiadomością jest to, że mają tendencję do kopiowania pojęć między sobą, takich jak pliki do, które można generować programowo w celu przenoszenia, przy użyciu wspólnej bazy danych opisującej weryfikację funkcjonalną na wielu platformach implementacyjnych, przezwyciężenie różnic w składni i semantyce. Prawdopodobnie wystąpiłyby również różnice w składni interfejsu wiersza poleceń do programowego wywoływania narzędzi.
Pomysł przenośności nie obejmuje z wdziękiem wielu GUI.
źródło
Narzędzia takie jak xilinx mają opcję przeglądania wewnętrznych sygnałów.
Prostą metodą niezależną od narzędzia jest zadeklarowanie oddzielnych linii wyjściowych i podłączenie wewnętrznych sygnałów do tych linii.
źródło
Jeśli zadeklarowałeś sygnały w środowisku testowym, ale nie widzisz żadnych danych wyjściowych, możesz mieć problem z instrukcją tworzenia instancji, w której tworzysz instancję, która ma być testowana. Sprawdź, czy utworzyłeś instancję poprawnie, używając instrukcji instancji encji lub instancji komponentu. Upewnij się, że sygnały w twoim środowisku testowym są podłączone do testowanego obiektu. Jeśli to nie rozwiąże problemu, opublikuj kod testbench, abyśmy mogli pomóc.
źródło