Làm thế nào để xác định các khu vực của một thiết kế đồ họa sử dụng nhiều tài nguyên và diện tích nhất?


11

Tôi đang làm việc trên một thiết kế đồ họa lớn và tôi rất gần với giới hạn tài nguyên của FPGA mà tôi hiện đang sử dụng, Xilinx LX16 trong gói CSG225.

Thiết kế cũng gần như hoàn thiện, tuy nhiên hiện tại nó sẽ không còn phù hợp với đồ họa. Tôi có thể tắt các bộ phận để làm cho nó phù hợp, tuy nhiên tôi cần giảm việc sử dụng tài nguyên để hoàn thành thiết kế và đáp ứng yêu cầu về thời gian và kích thước.

Tôi muốn biết liệu có bất kỳ công cụ nào mà báo cáo của chúng tôi có thể giúp tôi xác định phần nào trong thiết kế của tôi đang tiêu tốn nhiều tài nguyên nhất không. Thiết kế của tôi không được phân vùng và được chia thành khoảng một tá hoặc nhiều mô đun VHDL.

Báo cáo thời gian của Xilinx là tuyệt vời, nhưng bây giờ tôi cần biết nơi tôi có thể có được tiếng nổ tốt nhất về mặt tiết kiệm không gian.

Tôi cũng có một thời gian khó khăn để biết loại tài nguyên nào tôi sắp hết, hoặc những gì ảnh hưởng đến các tài nguyên đó.

Một phiền toái khác là khi thiết kế trở nên lớn hơn, các thành phần được sử dụng để đáp ứng thời gian bắt đầu thất bại vì vị trí của chúng không còn lý tưởng nữa.

Hiện tại, tôi sử dụng báo cáo thời gian Post-Place và Route tĩnh và tôi sử dụng SmartXplorer. Tôi đang sử dụng các chiến lược thiết kế để tối ưu hóa thời gian.

Sau khi tắt một phần thiết kế của tôi để làm cho nó phù hợp, đây là một số kết quả:

Sử dụng thanh ghi lát: 42% Lát sử dụng LUT: 96% số cặp LUT-FF được sử dụng đầy đủ: 38% Điều này có nghĩa là tôi nhẹ về thanh ghi, nhưng nặng về sử dụng cổng?

Có các công cụ để giúp các nhà phát triển tối ưu hóa cho khu vực, hoặc ít nhất cung cấp cho họ cái nhìn sâu sắc hơn về mã của họ?

Cập nhật: Sau khi xem xét Sử dụng Cấp độ Mô-đun, tôi phát hiện ra rằng tôi có keo nhỏ không đồng bộ fifos ở khắp nơi chiếm khoảng 30% tổng số LUT. Tôi đang sử dụng chúng như keo dán tên miền chéo cho xe buýt tốc độ cao. Tôi có thể loại bỏ những thứ này, vì các đồng hồ có liên quan chặt chẽ. (Đầu vào 120 MHz, tạo ra 100 MHz và 200 MHz thông qua DCM)


Có vẻ như bạn có rất nhiều kết nối giữa các tín hiệu, tôi chắc chắn bạn có thể khắc phục điều đó bằng cách thay đổi mức độ tối ưu hóa, chia sẻ tài nguyên và như vậy. Bạn đang sử dụng công cụ gì? ISE hay Vivado?
FarhadA 17/12/13

1
Tôi đang sử dụng ISE (Vivado sẽ không hỗ trợ Spartan-6) Tôi đã đăng bài này trên các diễn đàn Xilinx và họ nói sẽ bật Báo cáo bản đồ chi tiết. Tôi đã làm điều này và tệp * .mrp hiện chứa Phần 13 - Sử dụng theo phân cấp. Tôi sẽ đăng dữ liệu khi tôi nhận được định dạng tốt hơn.
Marcus10110

Câu trả lời:


5

Tôi đã đăng câu hỏi này trên Diễn đàn Xilinx tại đây: http://forums.xilinx.com/t5/Imcellenceation/How-to-determine-what-part-of-the-design-consume-the- most / td-p / 393247

Câu trả lời này phần lớn dựa trên các ý kiến ​​ở đó. Cảm ơn Deepika, Sikta và Gabor.

Đầu tiên, bật 'Tạo Báo cáo MAP chi tiết' trong thuộc tính quy trình bản đồ (-detail).

Sau đó, mở Tóm tắt thiết kế và điều hướng đến Sử dụng cấp độ mô-đun. Dưới đây là hệ thống phân cấp hoàn chỉnh, hiển thị việc sử dụng thiết kế độc quyền và toàn diện.

Mỗi dòng sẽ hiển thị một cặp số như 0/5392. Điều này có nghĩa là mô-đun đó chứa 0 phần tử cụ thể đó, nhưng mô-đun đó và tất cả các mô-đun phụ của nó chứa tổng cộng 5392 phần tử.

Đây là đầu ra của tôi (mở rộng một phần) Báo cáo sử dụng

Khi làm việc để giảm kích thước, Gabor khuyên bạn nên chuyển sang một công cụ đồ họa lớn hơn trong các công cụ tổng hợp để nó có thể ánh xạ hoàn toàn ngay cả khi nó quá lớn để phù hợp với công cụ hiện tại của bạn và nó sẽ giúp các công cụ chạy nhanh hơn.


3

Có vẻ như bạn đang sử dụng gần như tất cả các tài nguyên logic trong khi chỉ sử dụng một nửa số thanh ghi. Có vẻ như bạn cần phải tìm ra những gì đang ăn hết tất cả các LUT của bạn. Có nhiều cách để tối ưu hóa các thành phần cụ thể và làm cho chúng tiết kiệm không gian hơn một chút - những thứ như RAM, thanh ghi thay đổi và máy trạng thái. Nhìn vào tệp .log kết quả từ bộ tổng hợp. Nó sẽ cho bạn biết loại thành phần nào đang được suy luận. Hãy chắc chắn rằng nó đang suy ra các thành phần đúng cách. Nếu không, nó có thể không tạo ra một netlist đặc biệt hiệu quả. Bạn có thể nói rất nhiều chỉ bằng cách nhìn vào các tệp nhật ký tổng hợp. Có thể một vài thay đổi nhỏ đối với mã của bạn sẽ cho phép trình tổng hợp suy ra các thành phần khác nhau, vì vậy hãy xem hướng dẫn tổng hợp cho một số mẫu. Bạn có thể cần phải chuyển bộ tổng hợp sang để tối ưu hóa cho khu vực thay vì tốc độ. Ngoài ra, hãy kiểm tra để đảm bảo bạn không tắt bất kỳ cài đặt suy luận nào. Tôi đã từng thử tổng hợp một thành phần thiết kế tiêu thụ 40% một cặp Spartan 3E 500 (9,312 cặp LUT / FF 4 đầu vào, RAM khối 5,6 KB) cho một cặp Virtex 6 HXT 565 (354,240 cặp LUT / kép FF đầu vào, 32,2 RAM khối MB). Phải mất 7 giờ để mệnh giá Xilinx hoàn thành và chiếm khoảng 40% chip. ?!?!?!? Hóa ra RAM khối suy ra đã bị tắt và bộ tổng hợp đã biến vài KB RAM thành LUT. Không phải là quyết định hiệu quả nhất bao giờ hết. Sau khi thay đổi cài đặt, nó chiếm tới 1% chip. Đi hình. 312 cặp LUT / FF 4 đầu vào, RAM khối 5,6 KB) cho Virtex 6 HXT 565 (354,240 cặp LUT / FF kép 6 đầu vào, RAM khối 32 MB). Phải mất 7 giờ để mệnh giá Xilinx hoàn thành và chiếm khoảng 40% chip. ?!?!?!? Hóa ra RAM khối suy ra đã bị tắt và bộ tổng hợp đã biến vài KB RAM thành LUT. Không phải là quyết định hiệu quả nhất bao giờ hết. Sau khi thay đổi cài đặt, nó chiếm tới 1% chip. Đi hình. 312 cặp LUT / FF 4 đầu vào, RAM khối 5,6 KB) cho Virtex 6 HXT 565 (354,240 cặp LUT / FF kép 6 đầu vào, RAM khối 32 MB). Phải mất 7 giờ để mệnh giá Xilinx hoàn thành và chiếm khoảng 40% chip. ?!?!?!? Hóa ra RAM khối suy ra đã bị tắt và bộ tổng hợp đã biến vài KB RAM thành LUT. Không phải là quyết định hiệu quả nhất bao giờ hết. Sau khi thay đổi cài đặt, nó chiếm tới 1% chip. Đi hình.


3

Sẽ đáng giá khi đăng toàn bộ phần 'sử dụng tài nguyên' từ đầu ra công cụ.

Bạn có sử dụng tất cả các RAM Block không? Điều thông thường là có thể thay thế các hàm logic / toán học bằng các bảng tra cứu RAM tương đương nếu tên miền bị hạn chế đủ và chúng có độ phức tạp đủ để tính toán trước đáng giá.

Cũng như suy luận của bộ nhớ, điều tương tự cũng áp dụng cho Số nhân. Đôi khi, một sai lệch nhỏ so với mẫu khởi tạo được đề xuất có thể loại bỏ hệ số nhân được suy ra thành các đơn vị DSP48A.

Nếu bạn đang sử dụng bộ điều khiển PCIe, bạn có thể giảm tổng dung lượng bộ đệm dành cho tải trọng TLP hoặc kích thước gói TLP tối đa không? Điều này có thể làm giảm mức sử dụng RAM / logic của lõi IP với chi phí mặc dù / tổng băng thông.

Với Quartus (Altera), bạn có thể chọn nhiều mục trong chế độ phân cấp thiết kế và xem màu sử dụng của vùng sau p & r được mã hóa / phân cụm. Điều này có thể đưa ra một ý tưởng trực quan về việc sử dụng tương đối các mô-đun thiết kế của bạn.


Cảm ơn. Tôi đang sử dụng các macro IP cứng cho hệ số nhân và tôi đã sử dụng CoreGen để tạo ra các FIFO, mặc dù tôi đã chọn một số fifos nhỏ để sử dụng RAM phân tán (thay vì chặn RAM). Tôi sẽ xem xét cách sử dụng của họ.
Marcus10110
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.