Phương pháp xác minh phổ quát (UVM) là một cách phổ biến để giúp xác minh các thiết kế SystemVerilog và nó bao gồm một hệ thống cấu hình Thật không may, có một số vấn đề về tốc độ và cách sử dụng. Rich Edelman từ Siemens EDA đã viết một bài báo chi tiết dài 20 trang về chủ đề cách tránh những vấn đề này và tôi đã xem qua nó để tóm tắt những điểm nổi bật cho bạn. Các kỹ sư xác minh sử dụng cơ sở dữ liệu cấu hình UVM để đặt các giá trị, sau đó lấy các giá trị này trong quá trình kiểm tra UVM của họ. Một ví dụ về cài đặt và nhận giá trị 'T' là:
uvm_config#(T)::set(scope, instance_path_name, field_name, value); uvm_config#(T)::get(scope, instance_path_name, field_name, value);
Việc kết nối bàn kiểm tra UVM với thiết bị được kiểm tra sẽ sử dụng cơ sở dữ liệu cấu hình để vượt qua các giao diện ảo. Có ba vấn đề khi sử dụng cấu hình UVM:
- Mã lớn, khoảng 2,600 dòng mã
- Yêu cầu khớp loại chính xác, vì vậy 'int' và 'bit' không giống nhau
- Mã chậm
Hãy xem xét trường hợp mã chậm, vì với hàng nghìn lệnh gọi tới set() sử dụng tên có ký tự đại diện có thể mất tới 30 phút để hoàn thành giai đoạn 'đặt' và 'nhận'.
Rich đề xuất một giải pháp mới cho cấu hình UVM có tốc độ nhanh hơn nhiều, chỉ mất vài giây.
Nếu mã UVM của bạn tránh sử dụng ký tự đại diện và có ít lệnh 'đặt' thì mã của bạn sẽ chạy nhanh hơn.
Các giải pháp khả thi cho các vấn đề về cấu hình UVM là:
- Thay vào đó hãy sử dụng biến toàn cục
- Sử dụng cấu hình UVM với một set()
- Sử dụng cấu hình UVM với một vài set()
- Sử dụng cây cấu hình
- Thử thứ gì khác
Cách tiếp cận cuối cùng để thử điều gì đó khác biệt là giải pháp mới và nó tiếp tục sử dụng API set() và get(), sau đó đơn giản hóa bằng cách loại bỏ tham số hóa của cấu hình, loại bỏ quyền ưu tiên và loại bỏ thay đổi thuật toán tra cứu. Kết quả của phương pháp mới này là tốc độ nhanh.
Mục cấu hình mới của bạn được xác định trong lớp dẫn xuất từ 'config_item' và ví dụ bên dưới hiển thị 'int value' làm thuộc tính đang được đặt. Với mục đích gỡ lỗi, bạn thêm chức năng in đẹp.
lớp my_special_config_item mở rộng config_item; hàm mới(tên chuỗi = "my_special_config_item"); super.new(tên); giá trị int của hàm cuối; chuỗi hàm ảo Convert2string(); return $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string()); lớp cuối chức năng
'config_item' có thuộc tính tên và tên này được tra cứu cùng với tên phiên bản. Đối tượng cấu hình cũng có hàm get_name() để trả về tên. Để tìm bất kỳ “instance_name.field_name” nào, cơ sở dữ liệu cấu hình sử dụng mảng kết hợp để có tốc độ tra cứu và tạo nhanh.
Để truy nguyên, bạn có thể tìm ra ai đã đặt hoặc ai đã gọi get, vì tên tệp và số dòng là các trường trong lệnh gọi hàm set() và get().
set(null, "top.ab*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.abcdmonitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)
Hàng đợi truy cập có thể được in trong quá trình gỡ lỗi để xem ai đã gọi set() và get().
Để hỗ trợ các ký tự đại diện, cần phải thêm cơ chế tra cứu bằng cách sử dụng vùng chứa. Hãy xem xét tên phiên bản 'top.abcd*_0'.
Phần ký tự đại diện của tên phiên bản được xử lý bằng cách sử dụng cây chứa thay vì mảng kết hợp.
Tổng kết
Việc chia sẻ dữ liệu giữa mô-đun/phiên bản và thế giới dựa trên lớp trong thử nghiệm UVM có thể được thực hiện bằng cách sử dụng cơ sở dữ liệu cấu hình UVM, chỉ cần lưu ý đến tốc độ chậm lại. Nếu phương pháp của bạn sử dụng nhiều cấu hình thì hãy cân nhắc sử dụng phương pháp mới được giới thiệu có gói sử dụng khoảng 300 dòng mã thay vì 2,600 dòng mã trong tệp cơ sở dữ liệu cấu hình UVM.
Đọc toàn bộ bài báo dài 20 trang, Tránh sự điên rồ về cấu hình một cách dễ dàng tại Siemens EDA.
Blog liên quan
Chia sẻ bài đăng này qua:
- Phân phối nội dung và PR được hỗ trợ bởi SEO. Được khuếch đại ngay hôm nay.
- PlatoData.Network Vertical Generative Ai. Trao quyền cho chính mình. Truy cập Tại đây.
- PlatoAiStream. Thông minh Web3. Kiến thức khuếch đại. Truy cập Tại đây.
- Trung tâmESG. Than đá, công nghệ sạch, Năng lượng, Môi trường Hệ mặt trời, Quản lý chất thải. Truy cập Tại đây.
- PlatoSức khỏe. Tình báo thử nghiệm lâm sàng và công nghệ sinh học. Truy cập Tại đây.
- nguồn: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- : có
- :là
- :không phải
- $ LÊN
- 30
- 300
- 600
- a
- Giới thiệu
- thêm vào
- thêm
- thuật toán
- Ngoài ra
- an
- và
- bất kì
- api
- phương pháp tiếp cận
- LÀ
- Mảng
- AS
- At
- tránh
- nhận thức
- b
- BE
- bởi vì
- được
- phía dưới
- giữa
- by
- gọi là
- Cuộc gọi
- CAN
- trường hợp
- thay đổi
- tốt nghiệp lớp XNUMX
- mã
- sự so sánh
- hoàn thành
- Cấu hình
- Hãy xem xét
- Container
- Container
- liên tiếp
- tạo
- dữ liệu
- Cơ sở dữ liệu
- xác định
- Nguồn gốc
- thiết kế
- chi tiết
- thiết bị
- khác nhau
- thực hiện
- suốt trong
- dễ dàng
- Kỹ sư
- Ether (ETH)
- ví dụ
- kéo dài
- NHANH
- nhanh hơn
- vài
- Lĩnh vực
- Tập tin
- Tìm kiếm
- Trong
- từ
- Full
- chức năng
- được
- nhận được
- Toàn cầu
- đi
- giúp đỡ
- nổi bật
- Độ đáng tin của
- Hướng dẫn
- HTTPS
- if
- in
- bao gồm
- ví dụ
- thay vì
- giao diện
- giới thiệu
- các vấn đề
- IT
- jpg
- chỉ
- Họ
- một lát sau
- Dòng
- dòng
- nhìn
- tra cứu
- rất nhiều
- Làm
- phù hợp
- max-width
- cơ chế
- Phương pháp luận
- phút
- phút
- nhiều
- tên
- tên
- Mới
- giải pháp mới
- con số
- vật
- of
- on
- ONE
- có thể
- or
- ra
- gói
- Giấy
- một phần
- vượt qua
- giai đoạn
- plato
- Thông tin dữ liệu Plato
- PlatoDữ liệu
- thêm
- Phổ biến
- Bài đăng
- quyền ưu tiên
- vấn đề
- tài sản
- đề xuất
- mục đích
- Loại bỏ
- loại bỏ
- cần phải
- Kết quả
- trở lại
- Giàu
- chạy
- phạm vi
- giây
- xem
- định
- thiết lập
- Chương trình
- Siemens
- đơn giản hóa
- chậm
- sự chậm lại
- So
- giải pháp
- Giải pháp
- một số
- một cái gì đó
- tốc độ
- tốc độ
- Chuỗi
- tóm tắt
- lớn
- hỗ trợ
- hệ thống
- T
- Hãy
- dùng
- thử nghiệm
- việc này
- Sản phẩm
- cung cấp their dịch
- sau đó
- Đó
- Kia là
- điều này
- hàng ngàn
- số ba
- Thông qua
- thời gian
- đến
- hàng đầu
- chủ đề
- Truy xuất nguồn gốc
- cây
- cố gắng
- kiểu
- Dưới
- không may
- phổ cập
- Sử dụng
- sử dụng
- sử dụng
- sử dụng
- giá trị
- Các giá trị
- biến
- Xác minh
- xác minh
- thông qua
- ảo
- Đường..
- cái nào
- CHÚNG TÔI LÀ
- sẽ
- với
- thế giới
- đã viết
- bạn
- trên màn hình
- zephyrnet