Wiem, że podczas korzystania z report
i severity
Modelsim wyświetla czas symulacji jako część swojego komunikatu do konsoli. Czy mimo to "otrzymam" ten czas jako zmienną łańcuchową, dzięki czemu mogę wydrukować własną wiadomość z tym ciągiem "czasu"?Uzyskiwanie czasu symulacji Modelsim jako zmiennej łańcuchowej?
Odpowiedz
Czas symulacji jest dostępny za pośrednictwem funkcji now
, która zwraca wartość jako typ time
. Atrybutu image
typu time
można użyć do przekonwertowania tego ciągu na ciąg znaków za pomocą time'image(now)
. Więc można wydrukować czas symulacji w swoim komunikacie z:
report "This is the time: " & time'image(now);
Dodatek: Jeśli potrzebna jest dodatkowa manipulacja ciąg, ciąg czas symulacji mogą być reprezentowane w zmiennej z kodem jak:
process is
variable sim_time_str_v : string(1 to 30); -- 30 chars should be enough
variable sim_time_len_v : natural;
begin
...
sim_time_len_v := time'image(now)'length;
sim_time_str_v := (others => ' ');
sim_time_str_v(1 to sim_time_len_v) := time'image(now);
report "Sim time string length: " & integer'image(sim_time_len_v);
report "Sim time string.......:'" & sim_time_str_v & "'";
...
Jednak VHDL jest uciążliwy, jeśli chodzi o manipulację ciągiem tekstowym, ponieważ przechowywanie wyniku jakiejś manipulacji wymaga, aby długość była znana. W przypadku bardziej zaawansowanych operacji na ciągach można w symulacji zastosować typ access
w połączeniu z funkcjami.
Przeczytaj pierwszy post @MortenZdk. To długi komentarz z formatowaniem.
Zamiast używać "obrazu, polecam funkcję VHDL-2008 to_string. Można to wykorzystać w połączeniu z wbudowanych operacji zapisu do pliku:
write(OUTPUT, "This is the time: " & to_string(now) & LF) ;
Alternatywnie, można również używać go z textio i będzie disambiguate dosłowną wartość ciągu. Na przykład, nie typ kwalifikatora jest wymagane w następujących przypadkach:
write(write_buf, "The time is:" & to_string(now)) ;
writeline(OUTPUT, write_buf) ;
Jeśli naprawdę nienawidzę textio można używać konkatenacji i to_string tak jak byś użyć „” w instrukcji print w innych językach. Nie zapomnij o znaku LF na końcu, aby zakończyć linię. Możesz również dodawać znaki LF w innych miejscach, aby wydrukować wiele linii.
write(OUTPUT, "%%ERROR: RX value does not match expected value" &
"Received Value: " & to_hstring(RxVal) &
" Expected Value: " & to_hstring(ExpectedVal) &
" at time: " & to_string(now) & LF) ;
to_string obsługuje nadzbiór tego, co obsługuje obraz. Najbardziej godne uwagi są wartości tablicowe (takie jak std_logic_vector). Jest przeciążalny, ale jest już obsługiwany dla wszystkich typów obsługiwanych przez textio w VHDL-2008. Obsługuje również przeciążanie heksadecymalne i ósemkowe w postaci to_hstring i to_ostring (podobnie jak hwrite i owrite). Zauważ, że VHDL-2008 usunął problemy z hwrite, owrite, hread i oread.
Jako alternatywa dla typów dostępu, VHDL-2008 zawiera również ciąg znaków, który zwraca zarówno wartość, jak i długość. Pomija białe spacje, a następnie odczytuje znaki (do długości zmiennej łańcuchowej), aż znajdzie biały odstęp. W poniższym przykładzie znacznik ciągu może mieć maksymalnie 80 znaków.
variable ReadVal : string(1 to 80) ;
variable ReadLen : integer ;
...
sread(ReadBuf, ReadVal, ReadLen) ;
- 1. Użyj zmiennej łańcuchowej ** kwargs jako nazwanego argumentu
- 2. Zrzut VCD do symulacji vhdl przez modelsim. JAK?
- 3. Dodaj do zmiennej łańcuchowej
- 4. Limit znaków zmiennej łańcuchowej javascript
- 5. php isset() na zmiennej łańcuchowej używającej ciągu jako indeksu
- 6. Pisanie strumienia node.js do zmiennej łańcuchowej
- 7. Jak wyeksportować numpy ndarray do zmiennej łańcuchowej?
- 8. Jak utworzyć połączenie tekstowe ze zmiennej łańcuchowej?
- 9. jak zastosować element jQuery do zmiennej łańcuchowej
- 10. Ruby: Wysłać komunikaty rejestratora do zmiennej łańcuchowej?
- 11. symulacji skompilować odbicie czasu w C++
- 12. Generowanie zmiennej zawierającej liczbę znaków w zmiennej łańcuchowej
- 13. Użycie zmiennej łańcuchowej pliku make w pliku CPP
- 14. Jak uzyskać tryb zmiennej łańcuchowej podczas resamplowania z pandami
- 15. Tworzenie nazwy zmiennej łańcuchowej z wartości innego ciągu
- 16. Python - Zwolnienie/zamiana zmiennej łańcuchowej, jak to się dzieje?
- 17. Uzyskiwanie wartości innerhtml do zmiennej
- 18. Swift: oczekiwany błąd deklaracji ustawienie "Etykieta" zmiennej łańcuchowej
- 19. Java 'SyncServer' pozwalający dwóm użytkownikom na jednoczesną edycję zmiennej łańcuchowej
- 20. Jak mogę usunąć ostatni znak zmiennej łańcuchowej w ksh?
- 21. Odczytaj plik HTML do zmiennej łańcuchowej w pamięci
- 22. Przekazywanie zmiennej łańcuchowej facet_wrap() w ggplot przy użyciu R
- 23. Jak umieścić dane zawierające podwójne cudzysłowy w zmiennej łańcuchowej?
- 24. Plik .bat do utworzenia złożonej zmiennej łańcuchowej ze znakami specjalnymi
- 25. Sposoby wywoływania funkcji JavaScript przy użyciu wartości zmiennej łańcuchowej?
- 26. Uzyskiwanie zmiennej obiektu przy użyciu ciągu znaków + zmiennej
- 27. Uzyskiwanie wiersza macierzy jako macierzy
- 28. Użyj zmiennej jako Czas w setInterval/setTimeout
- 29. Test symulacji ruchu sieciowego
- 30. Algorytmy symulacji miasta?
Witaj Morten: świetnie! Dzięki!! – bFig8
VHDL-2008 obsługuje również to_string: –