Popularną metodą weryfikacji projektów SystemVerilog jest uniwersalna metodologia weryfikacji (UVM), która obejmuje system konfiguracji który niestety ma pewne problemy z szybkością i użytkowaniem. Rich Edelman z Siemens EDA napisał szczegółowy, 20-stronicowy artykuł na temat tego, jak uniknąć tych problemów, a ja go przejrzałem, aby podsumować najważniejsze informacje. Inżynierowie zajmujący się weryfikacją korzystają z bazy danych konfiguracji UVM w celu ustawienia wartości, a następnie uzyskania ich w późniejszym teście UVM. Jednym z przykładów ustawienia i uzyskania wartości „T” jest:
uvm_config#(T)::set(zakres, nazwa_ścieżki_instancji, nazwa_pola, wartość); uvm_config#(T)::get(scope, nazwa_ścieżki_instancji, nazwa_pola, wartość);
Podłączenie stanowiska testowego UVM do testowanego urządzenia wykorzystuje bazę danych konfiguracyjnych do przekazania interfejsów wirtualnych. Istnieją trzy problemy związane z używaniem konfiguracji UVM:
- Duży kod, około 2,600 linii kodu
- Wymaga dokładnego dopasowania typu, więc „int” i „bit” to nie to samo
- Powolny kod
Rozważmy przypadek powolnego kodu, ponieważ przy tysiącach wywołań funkcji set() użycie nazw ze znakami wieloznacznymi może zająć do 30 minut, aby zakończyć fazę „ustawiania” i „pobierania”.
Rich proponuje nowe rozwiązanie konfiguracji UVM, które zapewnia znacznie większe prędkości, w porównaniu z tym zajmuje tylko kilka sekund.
Jeśli Twój kod UVM unika używania symboli wieloznacznych i ma niewiele poleceń „ustaw”, wówczas Twój kod będzie działał szybciej.
Możliwe rozwiązania problemów z konfiguracją UVM to:
- Zamiast tego użyj zmiennej globalnej
- Użyj konfiguracji UVM z jednym zestawem()
- Użyj konfiguracji UVM z kilkoma set()
- Użyj drzewa konfiguracyjnego
- Spróbuj czegoś innego
To ostatnie podejście polegające na wypróbowaniu czegoś innego to nowe rozwiązanie, które w dalszym ciągu korzysta z funkcji API set() i get(), a następnie jest upraszczane poprzez usunięcie parametryzacji konfiguracji, usunięcie pierwszeństwa i usunięcie zmiany algorytmu wyszukiwania. Rezultatem tego nowego podejścia są duże prędkości.
Twój nowy element konfiguracji jest zdefiniowany w klasie pochodnej z „config_item”, a poniższy przykład pokazuje „int wartość” jako ustawianą właściwość. Do celów debugowania dodajesz funkcję Pretty-Print.
klasa my_special_config_item rozszerza config_item; funkcja new(string name = "my_special_config_item"); super.nowy(nazwa); funkcja końcowa int wartość; ciąg funkcji wirtualnej konwertuj2string(); return $sformatf("%s - wartość=%0d <%s>", get_name(), wartość, super.convert2string()); klasa końcowa funkcji końcowej
Element „config_item” ma atrybut name i ta nazwa jest wyszukiwana wraz z nazwą instancji. Obiekt konfiguracyjny posiada także funkcję get_name() zwracającą nazwę. Aby znaleźć dowolną „nazwę_instancji.nazwę_pola”, baza danych konfiguracji korzysta z tablicy asocjacyjnej, co zapewnia szybkie wyszukiwanie i szybkość tworzenia.
Aby ułatwić śledzenie, możesz dowiedzieć się, kto ustawił lub kto wywołał get, ponieważ nazwa pliku i numer linii to pola w wywołaniach funkcji set() i get().
set(null, "top.ab*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.abcdmonitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)
Kolejkę akcesorów można wydrukować podczas debugowania, aby zobaczyć, kto wywołał set() i get().
Aby obsługiwać symbole wieloznaczne, wymagane było dodanie mechanizmu wyszukiwania za pomocą kontenerów. Rozważmy nazwę instancji „top.abcd*_0”.
Część wieloznaczna nazwy instancji jest obsługiwana przy użyciu drzewa kontenerów zamiast tablicy asocjacyjnej.
Podsumowanie
Udostępnianie danych pomiędzy modułem/instancją a światem opartym na klasach w środowisku testowym UVM można przeprowadzić przy użyciu bazy danych konfiguracji UVM, należy jednak pamiętać o spadkach prędkości. Jeśli Twoja metodologia wykorzystuje wiele konfiguracji, rozważ zastosowanie nowego wprowadzonego podejścia, które obejmuje pakiet wykorzystujący około 300 linii kodu zamiast 2,600 linii kodu w pliku bazy danych konfiguracyjnej UVM.
Przeczytaj cały 20-stronicowy artykuł, Unikanie szaleństw konfiguracyjnych w łatwy sposób w Siemens EDA.
Powiązane blogi
Udostępnij ten post przez:
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- PlatoData.Network Pionowe generatywne AI. Wzmocnij się. Dostęp tutaj.
- PlatoAiStream. Inteligencja Web3. Wiedza wzmocniona. Dostęp tutaj.
- PlatonESG. Węgiel Czysta technologia, Energia, Środowisko, Słoneczny, Gospodarowanie odpadami. Dostęp tutaj.
- Platon Zdrowie. Inteligencja w zakresie biotechnologii i badań klinicznych. Dostęp tutaj.
- Źródło: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- :ma
- :Jest
- :nie
- $W GÓRĘ
- 30
- 300
- 600
- a
- O nas
- Dodaj
- dodanie
- algorytm
- również
- an
- i
- każdy
- api
- podejście
- SĄ
- Szyk
- AS
- At
- uniknąć
- świadomy
- b
- BE
- bo
- jest
- poniżej
- pomiędzy
- by
- nazywa
- Połączenia
- CAN
- walizka
- zmiana
- klasa
- kod
- porównanie
- kompletny
- systemu
- Rozważać
- Pojemnik
- Pojemniki
- ciągły
- tworzenie
- dane
- Baza danych
- zdefiniowane
- Pochodny
- projekty
- szczegółowe
- urządzenie
- różne
- zrobić
- podczas
- łatwo
- Inżynierowie
- Eter (ETH)
- przykład
- rozciąga się
- FAST
- szybciej
- kilka
- Łąka
- filet
- Znajdź
- W razie zamówieenia projektu
- od
- pełny
- funkcjonować
- otrzymać
- miejsce
- Globalne
- poszedł
- pomoc
- pasemka
- W jaki sposób
- How To
- HTTPS
- if
- in
- obejmuje
- przykład
- zamiast
- interfejsy
- wprowadzono
- problemy
- IT
- jpg
- właśnie
- Nazwisko
- później
- Linia
- linie
- wyglądał
- wyszukiwania
- dużo
- Dokonywanie
- dopasowywanie
- Maksymalna szerokość
- mechanizm
- Metodologia
- min
- minuty
- dużo
- Nazwa
- Nazwy
- Nowości
- nowe rozwiązanie
- numer
- przedmiot
- of
- on
- ONE
- tylko
- or
- na zewnątrz
- pakiet
- Papier
- część
- przechodzić
- faza
- plato
- Analiza danych Platona
- PlatoDane
- plus
- Popularny
- Post
- precedens
- problemy
- własność
- proponuje
- cele
- usuwa
- usuwanie
- wymagany
- Efekt
- powrót
- Bogaty
- run
- zakres
- sekund
- widzieć
- zestaw
- ustawienie
- Targi
- Siemens
- upraszcza
- powolny
- spowolnienia
- So
- rozwiązanie
- Rozwiązania
- kilka
- coś
- prędkość
- prędkości
- sznur
- streszczać
- Wspaniały
- wsparcie
- system
- T
- Brać
- biorąc
- test
- że
- Połączenia
- ich
- następnie
- Tam.
- Te
- to
- tysiące
- trzy
- Przez
- czas
- do
- Top
- aktualny
- Możliwość śledzenia
- drzewo
- stara
- rodzaj
- dla
- Niestety
- uniwersalny
- Stosowanie
- posługiwać się
- zastosowania
- za pomocą
- wartość
- Wartości
- zmienna
- Weryfikacja
- zweryfikować
- przez
- Wirtualny
- Droga..
- który
- KIM
- będzie
- w
- świat
- napisał
- ty
- Twój
- zefirnet