Help, Làm thế nào để giải quyết các vấn đề thời gian?

C

cherjier

Guest
Chào,

là khó khăn khi thực hiện các hoạt động FPGA tại 200Mhz?i có những khó khăn có được FPGA để tăng tốc độ.

dưới đây là báo cáo:
Slack:-7.451ns (yêu cầu - (dữ liệu đường - đồng hồ đường dẫn skew không chắc chắn))
Nguồn: Điểm / LCD / lcd_read / datcnt [2] (FF)
Điểm đến: core/lcd/lcd_fifo/shft_buff2 [623] (FF)
Yêu cầu: 3.906ns
Dữ liệu Path Delay: 11.240ns (Mức Logic = 4)
Đồng hồ Path skew: 0.000ns
Nguồn Clock: lclk tăng tại 0.000ns
Điểm đến Clock: lclk tăng tại 3.906ns
Đồng hồ không chắc chắn: 0.117ns

Data Path: Điểm / LCD / lcd_read / datcnt [2] để core/lcd/lcd_fifo/shft_buff2 [623]

Vị trí | Delay loại | Delay (ns) vật lý Tài nguyên | Hợp Lý Tài Nguyên (s) |
------------------------------------------------- -- ------------------
SLICE_X104Y283.YQ | Tcko | 0,360 | Điểm / LCD / lcd_read / datcnt [5]
Điểm / LCD / lcd_read / datcnt [2] |

SLICE_X104Y282.G1 | net (fanout = 4) | 0,573 | Điểm / LCD / lcd_read / datcnt [2] |

SLICE_X104Y282.Y | Tilo | 0,195 | TP40_c
core/lcd/lcd_read/un7_enab_shft_bufflto3

SLICE_X104Y282.F4 | net (fanout = 3) | 0,164 | core/lcd/N_341

SLICE_X104Y282.X | Tilo | 0,195 | TP40_c
Điểm / LCD / lcd_read / enab_shft_buff

SLICE_X101Y183.G4 | net (fanout = 1025) | 3,489 | Điểm / LCD / enab_shft_buff

SLICE_X101Y183.Y | Tilo | 0,194 | core/lcd/lcd_fifo/shft_buff2 [1081]
core/lcd/lcd_fifo/svbl_244.shft_buff2_5_sn_m1

SLICE_X123Y259.F1 | net (fanout = 1088) | 5,835 | core/lcd/lcd_fifo/shft_buff2_5_sn_N_2

SLICE_X123Y259.CLK | Tfck | 0,235 | core/lcd/lcd_fifo/shft_buff2 [623]
core/lcd/lcd_fifo/svbl_244.shft_buff2_5_0_1 [623]
core/lcd/lcd_fifo/shft_buff2 [623]
------------------------------------------------- -- --------------------------
Tổng số 11.240ns (1.179ns logic, 10.061ns tuyến đường)
(10,5% logic, 89,5% tuyến đường)

các báo cáo của tôi có thể thấy rằng sự chậm trễ chính là từ các nguồn tài nguyên định tuyến.bất cứ ai có thể khuyên tôi một cách thức làm thế nào để cải thiện thời gian?làm tôi phải làm điều đó bằng cách sử dụng trình soạn thảo FPGA?

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Crying or Very sad" border="0" />
 
Bốn cấp độ của logic ở 200 MHz có thể được dễ dàng, hoặc nó có thể là khó khăn.Loại FPGA được điều này?

fanout = 1025, fanout = 1088 ---- Wow, tại sao rất nhiều?Bạn có thể chia các mạng lưới?

Nói chung, cách hiệu quả nhất để tăng tốc độ thiết kế là thêm pipelining.

Điển hình LCD thiết bị không cần 200 MHz.

 
Tôi đang sử dụng vertex4.

các fanout cao là do tập tin đăng ký cho một FIFO -> reg [1023:0] shft_buff;

các enab_shft_buff "" net là tín hiệu điều khiển để thay đổi các "shft_buff2"
tôi nghĩ rằng đây là lý do mà nó đã có một fanout cao, am i correct?

cho thường, các fanout không được vượt quá giá trị gì?vài trăm là xem xét ok?

bên cạnh đó, các LCD tên là không có nghĩa là cho màn hình LCD chỉ sử dụng giống như hình thức ngắn.

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Cười" border="0" />lý do FPGA cần phải chạy ở 200Mhz là bởi vì bộ điều khiển mem DDR cần phải chạy ở 133MHz.

u có thể hiển thị một ví dụ đơn giản về cách thêm pipelining ..cảm ơn bạn

 
Kết quả <= a b c dpipelined

nếu (CLK = '1 'và clk'event) sau đó
r1 <= a b;
r2 <= c d;
Kết quả <= r1 r2
nếu kết thúc;
kết thúc quá trình;

 
Một Virtex-4 là khá nhanh, nhưng một cao fanout tín hiệu có thể làm chậm một tuyến đường và có thể gây rắc rối thời gian.Các nhanh hơn đồng hồ, càng ít fanout bạn muốn.Thiết kế của bạn có thể có logic tổ hợp tín hiệu cho ăn fanout cao.Nếu đó là sự thật, hãy thử thay đổi thiết kế của bạn vì vậy-tín hiệu fanout cao đến từ một tốc độ đăng ký thay vì từ logic tổ hợp.Điều đó có lẽ sẽ cần thêm ghi khác và thiết kế lại biểu đồ thời gian của bạn, nhưng đó là những gì pipelining là tất cả về, như Iouri chứng minh.Một lái xe đăng ký một tín hiệu-fanout cao có một cơ hội tốt hơn về những hạn chế thời gian cuộc họp.Một đăng ký cũng có thể dễ dàng tạo bản sao (hy vọng tự do ra-và-lộ trình phần mềm) để giảm tải fanout trên mỗi đoạn.

Đôi khi tôi tạo các dự án thử nghiệm nhỏ mà kiểm tra hiệu suất của một đoạn nhỏ của logic, mà không cần phải đợi cho các phần mềm để lập dự án lớn của tôi.Nếu có âm thanh hữu ích, hãy thử tạo một dự án thử nghiệm nhỏ để kiểm tra chỉ có vấn đề fanout.Khi bạn tìm một giải pháp tốt, bạn có thể tích hợp nó vào dự án lớn của bạn.

 
i đầu tiên cần phải nhờ Iouri và echo47.

yes .. thực sự ... phá vỡ các Fanout đã giúp cải thiện thời gian ... cảm ơn bạn rất nhiều.

Bây giờ đưa cho tôi bản báo cáo này:
Slack:-1.366ns (yêu cầu - (dữ liệu đường - đồng hồ đường dẫn skew không chắc chắn))
Nguồn: core/pln_b/pln_shift/pln_shift_ctl/vsync_m_d1 (FF)
Điểm đến: core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_15 [4] (FF)
Yêu cầu: 7.575ns
Dữ liệu Path Delay: 8.821ns (Mức Logic = 7)
Đồng hồ Path skew: 0.000ns
Nguồn Clock: TP17_c tăng tại 0.000ns
Điểm đến Clock: TP17_c tăng tại 7.575ns
Đồng hồ không chắc chắn: 0.120ns

Data Path: core/pln_b/pln_shift/pln_shift_ctl/vsync_m_d1 để core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_15 [4]
Vị trí Delay loại Delay (ns) vật lý Tài nguyên
Hợp lý tài nguyên (s)
------------------------------------------------- -- ------------------
SLICE_X52Y168.YQ Tcko 0,360 core/vsync_m_d2
core/pln_b/pln_shift/pln_shift_ctl/vsync_m_d1
SLICE_X58Y260.G3 net (fanout = 16) 1,737 core/vsync_m_d1
SLICE_X58Y260.Y Tilo 0,195 core/pln_b/pln_shift/pln_shift_ctl/N_81_2
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr_clr_cond_i_o2_1
SLICE_X60Y279.G3 net (fanout =

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Mát mẻ" border="0" />

0,875 core/N_81_0_1
SLICE_X60Y279.Y Tilo 0,195 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr119_3
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr119_3_2
SLICE_X60Y279.F3 net (fanout = 1) 0,213 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr119_3_2
SLICE_X60Y279.X Tilo 0,195 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr119_3
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr119_3
SLICE_X62Y303.F3 net (fanout = 2) 0,863 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr119_3
SLICE_X62Y303.X Tilo 0,195 core/pln_b/pln_shift/pln_shift_ctl/N_81_1_i
core/pln_b/pln_shift/pln_shift_ctl/N_81_1_i
SLICE_X64Y303.F2 net (fanout = 21) 0,844 core/pln_b/pln_shift/pln_shift_ctl/N_81_1_i
SLICE_X64Y303.COUT Topcyf 0,576 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_cry_s1 [3] / O
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_qxu_s1 [2]
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_cry_s1 [2]
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_cry_s1 [3]
SLICE_X64Y304.CIN fanout (thực = 1) 0,000 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_cry_s1 [3] / O
SLICE_X64Y304.XMUX Tcinx 0,435 core/pln_b/pln_shift/rd_ptr1_10 [4]
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_s_s1 [4]
SLICE_X63Y306.G4 net (fanout = 11) 1,115 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_s_s1 [4]
SLICE_X63Y306.Y Tilo 0,194 core/pln_b/pln_shift/rd_ptr1_11 [4]
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_s_m [4]
SLICE_X63Y311.BY net (fanout = 7) 0,537 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_s_m [4] / O
SLICE_X63Y311.CLK Tdick 0,292 core/pln_b/pln_shift/rd_ptr1_15 [4]
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_15 [4]
------------------------------------------------- -- --------------------------
Tổng số 8.821ns (2.637ns logic, 6.184ns tuyến đường)
(29,9% logic, 70,1% tuyến đường)

và tôi xem đây là con đường quan trọng và mức độ logic là 7.
I có thể thiết lập các ràng buộc như thế này:
NET "core/pln_b/pln_shift/pln_shift_ctl/vsync_m_d1" TNM_NET = "CP_1";
NET "lõi / pln_b / pln_shift / pln_shift_ctl / rd_ptr *" TNM_NET = "CP_2";
TIMESPEC "TS01" = TỪ: "CP_1" TO: "CP_2": 7,575;

hiện dòng trên đây sẽ hướng dẫn các công cụ cải cách hành chính để định tuyến đường dẫn này để đáp ứng thời gian?

 
Cải cách hành chính đã được biết rằng yêu cầu là 7.575ns, vì vậy nó có thể sẽ không giúp đỡ để hạn chế nó lại.Cải cách hành chính là vẻ gặp khó khăn khi nhận được thông qua logic tất cả chỉ trong 7.575ns.Tuy nhiên, nó nhận được khá gần, 8.821ns, do đó, có thể bạn có thể giúp nó đóng cửa đạt được thời gian bằng cách cho phép "thời gian lập bản đồ hướng" hoặc bằng cách cho phép đặt thêm và nỗ lực tuyến đường.Đó là những tùy chọn trong ISE dự án Navigator (mà tôi không sử dụng) và lệnh tương đương với công cụ dòng.

Nếu bạn có thể phá vỡ đường dẫn dài tổ hợp với một đường ống dẫn đăng ký, mà có thể giải quyết vấn đề.Tại 7.575ns, một vài trong số các mức logic nên được tốt, nhưng bảy có thể quá nhiều, trừ khi tất cả các tuyến đường phân đoạn rất ngắn.Khi nào tôi cần phải đi thật nhanh, tôi đặt chỉ có một mức độ logic giữa các đường ống dẫn đăng ký.

Ngoài ra, hãy thử kiểm tra bố trí trong FPGA Editor để xem có logic được sắp xếp haphazardly.Nếu bạn chưa thực hiện bất kỳ floorplanning hoặc ràng buộc theo vị trí, sau đó có thể được vấn đề.Các Placer không phải là rất thông minh, nó về cơ bản tất cả các bãi logic của bạn thành một đống lớn, di chuyển công cụ nhỏ xung quanh để cải thiện thời gian, và sau đó cố gắng để định tuyến tất cả mọi thứ.Điều này thường tạo ra một số tuyến đường dài với sự chậm trễ tuyên truyền quá nhiều.Đôi khi tôi có thể thực hiện đạt hiệu suất đáng kể bằng cách nhốt HDL module quan trọng đến các vùng nhỏ hình chữ nhật, và sau đó ra những khu vực gần nhau để lưu dữ liệu giữa chúng với các tuyến đường tương đối ngắn.Nếu bạn chưa khám phá các kỹ thuật này, hy vọng sẽ dành một số thời gian thử nghiệm và học tập.

 
I Oh xem ...có, tôi biết tôi có thể sử dụng thời gian hướng lập bản đồ và sử dụng lặp nhiều về cải cách hành chính.nhưng tất cả các thiết lập này sẽ mất cùng thời gian cho ISE để hoàn thành nhiệm vụ.vì vậy tôi muốn khám phá ngay cả các chi tiết bằng cách tìm ra nguyên nhân của vấn đề và tôi hy vọng để đạt được một số kinh nghiệm về các khó khăn cài đặt.

thực sự tôi đã làm thử xem lại các biên tập viên FPGA, i quá xấu vẫn chưa được khám phá bất cứ điều gì về nó được nêu ra.có, tôi đã không làm bất cứ chế diện tích vào lúc này và đó có thể là nguyên nhân gây ra (trong đó i dunno cách đặt chế khu vực).

i có một số câu hỏi liên quan đến trên floorplanning và vị trí.
làm u chỉnh sửa floorplanning trên FPGA biên tập hoặc sử dụng Floorplanner?
hoặc chỉ cần thiết lập các khó khăn khu vực sẽ làm gì?

bên cạnh đó, "tạo các dự án thử nghiệm nhỏ mà kiểm tra hiệu suất của một đoạn nhỏ của logic" này là một ý tưởng tốt ... nhưng tôi không làm thế nào bạn làm điều đó?HDL viết mã?hoặc ..??làm thế nào để kiểm tra hiệu năng cho một đoạn logic?

Cảm ơn bạn đã giúp đỡ và chia sẻ kinh nghiệm của bạn, echo47 ...

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
 
Có, những người-thêm tuỳ chọn khác nỗ lực làm chậm nơi-và-con đường quá trình, nhưng nó có giá trị nó nếu nó giúp bạn đạt được thời gian đóng cửa.Các công cụ Xilinx tiếc là chưa tận dụng nhiều máy tính xử lý, nên sử dụng máy tính nhanh nhất bạn có thể tìm thấy.Hãy chắc chắn nó có đủ RAM, bởi vì hết bộ nhớ sẽ gây ra suy thoái kinh khủng.Đây là một số đề xuất bộ nhớ:
http://www.xilinx.com/ise/products/memory.htm

Nhiều người sử dụng floorplanner, nhưng tôi đã không bao giờ thử nó.Tôi sử dụng FPGA Editor để ước tính khoảng nơi tôi muốn đặt mô đun quan trọng của tôi.Tôi chú ý XY tọa độ của khu vực đó, và sau đó áp dụng LỘC khăn (trong HDL của tôi hay UCF file) để nhốt lát của mô-đun, RAMB16s và MULT18X18s (hoặc bất kỳ các FPGA cụ thể sử dụng) cho rằng khu vực hình chữ nhật.

Dự án thử nghiệm của tôi chỉ là một vài dòng mã HDL tập trung vào một trong những vấn đề cụ thể.Ví dụ, tôi có thể viết một số mã mà chỉ đơn giản là tạo ra một mạng lưới dài với một fanout rất lớn, và sau đó tôi thử những hạn chế khác nhau, địa điểm và con đường lựa chọn, và thay đổi thiết kế, cho đến khi tôi tìm thấy một cách hay để đạt được hiệu năng cần thiết.Đôi khi tôi cũng kiểm tra việc bố trí dẫn đến FPGA Editor.Nó dễ dàng hơn nhiều và nhanh hơn để thử nghiệm trên một dự án thử nghiệm nhỏ hơn với các dự án lớn của tôi.

Các công cụ Xilinx đôi khi không phải là siêu thông minh, vì vậy bạn sẽ thường xuyên cần phải sử dụng khăn hoặc thay đổi thiết kế thông minh để giúp các công cụ tạo ra một bố trí với hiệu suất chấp nhận được.Tin vui là những công cụ thường được một ít thông minh hơn với mỗi phiên bản mới.

 
Gần đây tôi đã nâng cấp bộ nhớ của tôi để 2Gig .. tôi nghĩ rằng nó là đủ cho bây giờ.

tôi nghĩ rằng tôi có thể cần phải chi tiêu một số lần explorering các floorplanner và biên tập các FPGA ...là có bất cứ hướng dẫn trên trang web của Xilinx?

sau khi thiết lập các bản đồ drivin thời gian ... nó có vẻ thời gian đã được đáp ứng:
-------------------------------------------------- -------------------------------------------------- --
Hạn chế | Yêu cầu | thực tế | Logic | Absolute | Số
| | | Trình độ | Slack | lỗi
-------------------------------------------------- -------------------------------------------------- --
TS_pll_sdram_sys_clk_dcm_0_CLK0_BUF = PER | 7.575ns | 7.573ns | 8 | 0.002ns | 0
Iod TIMEGRP "pll_sdram_sys_clk_dc | | | | |
m_0_CLK0_BUF "TS_pll_mclk_dcm_0_CLK2X_BUF | | | | |
CAO 50% | | | | |
-------------------------------------------------- -------------------------------------------------- --
TS01 = MAXDELAY TỪ TIMEGRP "CP_1" TO TI | 7.575ns | 7.570ns | 8 | 0.005ns | 0
MEGRP "CP_2" 7,575 ns | | | | |
-------------------------------------------------- -------------------------------------------------- --

nhưng slack tích cực thực sự là triều ... chỉ 0.002ns ... điều này sẽ xem xét ok?

 
Tôi chưa thấy bất kỳ hướng dẫn về những chủ đề, nhưng tiếp tục tìm kiếm.Họ có thể tồn tại, có lẽ là video hướng dẫn.

Hình như thời gian các-driven lập bản đồ đã làm việc tốt.Nó được phổ biến để xem thời gian đáp ứng bằng lãi mỏng.Khi router đạt được thời gian, nó ngừng cố gắng.Không lo lắng, nó xem xét áp trường hợp xấu nhất, nhiệt độ, và các biến thể của quá trình, do đó, thiết bị của bạn phải hoạt động đáng tin cậy.

By the way, nếu đồng hồ 7.575ns của bạn đến từ một nguồn hốt hoảng kinh hai như một DCM hoặc Dao động ồn ào bên ngoài, sau đó bạn có thể cần phải chỉ rõ ràng buộc chặt hơn thời gian mà bao gồm jitter trường hợp thời kỳ tồi tệ nhất.Các công cụ ISE tự động xem xét một số yếu tố nội bộ, nhưng không phải các nguồn bên ngoài.Thông tin thêm:
http://www.xilinx.com/support/answers/24217.htm

 
hum .... làm thế nào để tôi đo là jitter đồng hồ trên pin FPGA đầu vào đồng hồ? là có bất kỳ thiết bị đặc biệt?

bên cạnh đó, tôi có một câu hỏi liên quan đến trên bệ tp đồng hồ và đệm để cài đặt đồng hồ.
trên UCF, người dùng cần phải đặt OFFSET cho mỗi pins?hoặc mỗi FFS?xin lỗi tôi Abit nhầm lẫn vào nó.

 
Nó thường dễ nhất để đọc giá trị jitter từ tờ dữ liệu của các thiết bị bất cứ điều gì là tạo ra đồng hồ của bạn.Nếu đó là một Dao động tinh thể thông thường, sau đó nó có thể đã jitter rất thấp, và bạn có thể bỏ qua nó.

Nhỏ hơn các jitter, các khó khăn hơn là để đo lường.Đối với một ước tính nhanh chóng, nếu bạn có một phạm vi lưu trữ đầy đủ nhanh chóng, bạn chỉ có thể làm hiển thị trên đồng hồ và đo độ rộng của các ban nhạc mờ tại cạnh đồng hồ sau.Các nhà sản xuất khác nhau có ứng dụng ghi chú về "jitter đo lường".Hãy thử một tìm kiếm Google cho những người hai từ khóa, và bạn sẽ tìm thấy một số ngay.

Nếu ứng dụng của bạn yêu cầu FPGA lề thời gian trên đầu vào và đầu ra ghim, sau đó bạn nên áp dụng chế bù đắp cho những tín hiệu.Trong Chế Hướng dẫn của bạn, xem các chương "Timing Hạn chế Chiến lược", và mô tả về các hạn chế OFFSET.Xem thêm thông tin tại Xilinx 237 giấy trắng ", OFFSET Hạn Chế là gì?"
http://www.xilinx.com/support/documentation/white_papers/wp237.pdf

 

Welcome to EDABoard.com

Sponsor

Back
Top