2012-11-14 64 views
-1

僅當在xilinx 13.2上合成我的VHDL程序時,xilinx在此部分合成很長時間(>幾個小時)。這是非常長的,因爲一臺體面的機器通常需要20分鐘才能合成代碼。如何通過這個合成階段?

關於如何通過這個「分析最佳編碼的FSM」的任何提示。階段?

開始:「Synthesize - XST」。運行xst ...命令行:xst -intstyle ise -ifn「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/i8051_top.xst」-ofn「/CG3207 備份/ 2012/ISA NOMX/i8051_top.syr 11月12日」讀設計: i8051_top.prj

======================= ================================================== * HDL編譯* ============================================ =============================編譯vhdl文件「C:/ Users/Farmer/Desktop/CG3207備份/ 12月11日2 2012/ISA NOMX/constants.vhd「在圖書館工作。在庫工作中編譯vhdl文件 「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/ext_interrupt.vhd」。體系結構行爲 實體ext_interrupt是最新的。在庫工作中編譯vhdl文件 「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/csadde2.vhd」。實體的架構csadde2beh csadde2是最新的。在庫工作中編譯vhdl文件 「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/csadder.vhd」。 Entity csadder的架構csadderbeh是最新的。在庫工作中編譯vhdl文件 「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/sequencer2.vhd」。實體 的架構seq_arch是sequencer2的最新版本。在庫工作中編譯vhdl文件 「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/fastalu.vhd」。實體 fastalu的體系結構fastalu_arch是最新的。在庫工作中編譯vhdl文件 「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/int_rom.vhd」。 int_rom的Entity 的架構行爲是最新的。在庫工作中編譯vhdl文件 「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/int_ram.vhd」。 internal_ram實體 的體系結構syn是最新的。在庫工作中編譯vhdl文件 「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/divider.vhd」。實體分隔器 的架構rtl是最新的。在庫工作中編譯vhdl文件「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/int_handler.vhd」。 實體int_handler的體系結構行爲是最新的。在庫工作中編譯 vhdl文件「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/8051_top_fpga.vhd」。體系結構行爲 實體i8051_top是最新的。

============================================== =========================== *設計層次分析* ================ ================================================== =======分析庫中實體的層次結構 (體系結構)。

分析庫中實體的層次結構 (體系結構)。

分析庫中實體的層次結構 (體系結構)。

分析庫中實體的層次結構 (體系結構)。

分析庫中實體的層次結構 (體系結構)。

使用泛型分析圖書館中的實體 (體系結構)的層次結構。 DWIDTH = 16

分析庫中實體的層次結構 (體系結構)。

分析庫中實體的層次結構 (體系結構)。

分析庫中實體的層次結構 (體系結構)。

分析庫中實體的層次結構 (體系結構)。

分析庫中實體的層次結構 (體系結構)。

分析庫中實體的層次結構 (體系結構)。

分析庫中實體的層次結構 (體系結構)。

============================================== =========================== * HDL分析* ================= ================================================== ======分析庫中的實體(體系結構 )。實體分析。生成單位 。

分析庫中的實體(體系結構 )。 INFO:Xst:2679 - 在電路操作期間,寄存器單位的 常數值爲0。該寄存器被邏輯替換爲 。 INFO:Xst:2679 - 在電路操作期間,寄存器單位的 常數值爲0。該寄存器被邏輯替換爲 。 INFO:Xst:2679 - 在電路操作期間,寄存器中的單元有 爲恆定值0000000000000000。 寄存器被替換爲邏輯。 INFO:Xst:2679 - 在 電路操作期間,在 單元中具有恆定值0000000000000000。該寄存器被邏輯取代。 INFO:Xst:2679 - 在電路操作期間,寄存器單元具有恆定值 0000000000000000。該寄存器被替換爲 邏輯。 INFO:Xst:2679 - 在電路操作期間,寄存器單元中有一個 恆定值1111111111111111。 寄存器被替換爲邏輯。 INFO:Xst:2679 - 在 電路操作期間,在 單元中具有恆定值1111111111111111。該寄存器被邏輯取代。 INFO:Xst:2679 - 在電路操作期間,寄存器單元中的常數值爲0 。該寄存器被邏輯取代。 信息:Xst:2679 - 在電路操作期間,寄存器單位的 常數值爲0。該寄存器被邏輯替換爲 。實體分析。單元生成。

分析庫中的實體(體系結構 )。 INFO:Xst:1561 - 「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/fastalu.vhd」第261行:複用器已完成: 默認情況下被廢棄警告:Xst:819 - 「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/fastalu.vhd」第245行: 進程敏感性列表中缺少一個或多個信號。爲了能夠合成FPGA/CPLD硬件,XST將假定所有必需的信號都出現在 靈敏度列表中。請注意,綜合的結果可能與最初的設計規格不同,可能與 不同。缺失的信號是: ,,,,實體 分析。單元生成。

分析庫中的實體(體系結構 )。實體分析。單元生成。

分析庫中的實體(體系結構 )。實體分析。單元生成。

分析庫中的實體(體系結構 )。實體分析。單元生成。

分析庫中的實體(體系結構)。 警告:Xst:819 - 「C:/ Users/Farmer/Desktop/CG3207 BACKUP/11 Nov 2012/ISA NOMX/regfile.vhd」第89行: 過程敏感性列表中缺少一個或多個信號。爲了能夠合成FPGA/CPLD硬件,XST將假設所有必要的信號都存在於 的靈敏度列表中。請注意,綜合的結果可能與最初的設計規格不同,可能與 不同。缺失的信號是: ,,,,,,,,,,,,,,,,,,,,,,,,

分析庫中的實體(體系結構)。 信息:Xst:2679 - 在電路操作期間,寄存器>單位中的 常數值爲0。該寄存器被邏輯替換爲 。實體分析。單元生成。

分析庫中的實體(體系結構 )。實體分析。生成單位 。

============================================== ===========================

* HDL合成*

進行雙向端口解析...

合成單元。 相關的源文件是「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/sequencer2.vhd」。警告:Xst:647 - 從不使用輸入 。如果該端口屬於頂層塊或屬於 子塊並保留該子塊的層次結構,則該端口將被保留並保留爲 。 警告:Xst:647 - 從不使用輸入。如果該端口屬於頂級塊 或者它屬於子塊並且該子塊的層次結構保存爲 ,則該端口將被保留並保持不連接。警告:Xst:647 - 從不使用輸入。這個端口將被保留,並且如果它屬於頂層塊或者屬於一個子塊並且該子塊的層次被保留,則保持不連接。警告:Xst:647 - 輸入永遠不會使用 。如果該端口屬於頂層塊或屬於子塊,並且 的層次結構被保留,則該端口將被保留並保持不連接狀態。警告:Xst:647 - 輸入爲 從未使用。如果端口 屬於頂層塊或屬於子塊並保留此子塊的層次結構,則該端口將保留並保持未連接狀態。警告:Xst:646 - 信號 已分配但未使用。在優化過程中,這個未連接的信號將被修整爲 。信息:Xst:1799 - 狀態e19是 永遠不會在FSM中達到。 INFO:Xst:1799 - 狀態e20永遠不會在達到FSM中的 。 INFO:Xst:1799 - 在FSM中,狀態e21永遠不會到達 。 INFO:Xst:1799 - 在FSM 中永遠不會達到狀態e22。 INFO:Xst:1799 - 在FSM 中永遠不會達到狀態e23。 INFO:Xst:1799 - FSM 中永遠無法訪問狀態e24。 找到信號的有限狀態機。 ------------------------------------------------- ---------------------- |國家| 14 | |過渡| 37 | |輸入| 23 | |輸出| 9 | |時鐘| clk(rising_edge)| |重置| rst(正數)| |重置類型|異步| |重置狀態| e1 | |加電狀態| e1 | |編碼|自動| |實現| LUT | ------------------------------------------------- ---------------------- 找到信號的有限狀態機。 ------------------------------------------------- ---------------------- |國家| 6 | |過渡| 1068 | |輸入| 177 | |輸出| 6 | |時鐘| clk(rising_edge)| |重置| rst(正數)| |重置類型|異步| |重置狀態| e7 | |加電狀態| e7 | |編碼|自動| |實現| LUT | ------------------------------------------------- ---------------------- 找到信號的有限狀態機。 ------------------------------------------------- ---------------------- |國家| 6 | |過渡| 33886 | |輸入| 361 | |輸出| 6 | |時鐘| clk(rising_edge)| |重置| rst(正數)| |重置類型|異步| |重置狀態| e13 | |加電狀態| e13 | |編碼|自動| |實現| LUT | ------------------------------------------------- ---------------------- 發現信號的8位寄存器。 找到信號的1位寄存器。 發現信號的4位寄存器。 找到信號的1位寄存器。 找到信號的8位寄存器。 找到信號的1位寄存器。 找到信號的16位寄存器。 找到信號的1位寄存器。 找到信號的1位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的1位寄存器。 找到信號的1位寄存器。 找到信號的8位寄存器。 找到信號的1位寄存器。 發現信號的4位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的16位寄存器。 發現8位比較器不等於在1190行創建的信號。 摘要:推斷出3個有限狀態機。推斷出184個D型觸發器。推斷出1個比較器。合成單位 。

合成單元。 相關源文件是「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/multiplier.vhd」。 發現信號的32位寄存器。 找到信號的16x16位乘法器。摘要:推斷出32個D型觸發器。推斷1個乘數。單位合成。

合成單元。 相關源文件是「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/int_rom.vhd」。警告:Xst:647 - 輸入永遠不會使用 。如果該端口屬於頂層塊或屬於子塊,並且 的層次結構被保留,則該端口將被保留並保持不連接狀態。警告:Xst:647 - 輸入>是 從未使用。如果端口 屬於頂層塊或屬於子塊並保留此子塊的層次結構,則該端口將保留並保持未連接狀態。 找到了在線175創建的信號的4096x8位ROM。 摘要:推斷出1個ROM(s)。單位合成。

合成單元。 相關源文件是「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/int_ram.vhd」。警告:Xst:736 - 對於在第38行創建的信號,找到1位鎖存器 。鎖存器可能是由不完全大小寫或if語句生成的 。我們不建議使用 在FPGA/CPLD設計中使用鎖存器,因爲它們可能會導致計時 問題。警告:Xst:736 - 發現在第37行創建的信號爲 的8位鎖存器。可能從 未完成的案例或if語句生成鎖存。我們不建議在FPGA/CPLD設計中使用 鎖存器,因爲它們可能會導致計時問題。 警告:Xst:736 - 在第38行創建的信號爲 ,發現1位鎖存。可能會從不完整的案例或 聲明中生成鎖存。我們不建議在FPGA/CPLD 設計中使用鎖存器,因爲它們可能會導致計時問題。信息:Xst:2371 - HDL ADVISOR - 分別驅動數據和邏輯功能的邏輯功能 允許輸入這個鎖存器的共享條款。這種情況下 可能導致建立/保持違規,並因此導致 模擬問題。這種情況可能來自一個不完全的案例 聲明(所有的選擇器值不包括在內)。你應該仔細檢查 是否在你的意圖來描述這樣一個閂鎖。 警告:Xst:736 - 在第37行創建的信號爲 ,發現1位鎖存。可能從不完整的情況或 語句生成鎖存。我們不建議在FPGA/CPLD 設計中使用鎖存器,因爲它們可能會導致計時問題。信息:Xst:2371 - HDL ADVISOR - 分別驅動數據和邏輯功能的邏輯功能 允許輸入這個鎖存器的共享條款。這種情況下 可能導致建立/保持違規,並因此導致 模擬問題。這種情況可能來自一個不完全的案例 聲明(所有的選擇器值不包括在內)。你應該仔細檢查 是否在你的意圖來描述這樣一個閂鎖。 找到信號的1位三態緩衝器。 發現信號的8位三態緩衝器。 找到8位128對1多路複用器,用於在線42創建的信號。 找到8位128對1多路複用器,用於在第49行創建的信號。 找到信號>的640位寄存器。 找到信號>的256位寄存器。 INFO:Xst:738 - HDL ADVISOR - 1024個觸發器被推斷用於信號。您可能是 嘗試以與Xilinx器件上提供的塊和 分佈式RAM資源不兼容的方式嘗試描述RAM,或者使用不支持的 特定模板。請查閱Xilinx 資源文檔和XST用戶手冊以瞭解編碼準則。 利用RAM資源將導致設備使用率提高 並縮短合成時間。

合成單元。 相關源文件是「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/csadder.vhd」。警告:Xst:1780 - 信號是從未使用或分配的 。這個未連接的信號將在 優化過程中被調整。 找到信號的1位xor3>。 找到信號的2位xor2。 在第60行創建信號時發現1位xor2。 發現3位信號xor2。 在第82行創建的信號中發現1位xor2。 找到4位信號xor2。 找到位線110上創建的信號的1位xor2。 找到位線118上創建的信號的1位xor2。 找到位線124上創建的信號的1位xor2。 找到信號的6位xor2。 對於在線144創建的信號找到1位xor2。 在線150創建的信號找到1位xor2。 在線156創建的信號找到1位xor2。 找到1位信號xor2>。 信號>找到2位xor2。 在89行創建信號時發現1位xor2。 找到信號>的3位xor2。 找到信號>的5位xor2。 在163行創建信號時發現1位xor2。 在170行創建信號時發現1位xor2。 摘要:推斷1個或多個。單位合成。

合成單元。 相關源碼文件是「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/csadde2.vhd」。警告:Xst:1780 - 信號是從未使用或分配的 。這個未連接的信號將在 優化過程中被調整。 找到信號的1位xor2>。 找到信號的1位xor2>。 信號>找到2位xor2。 找到信號>的3位xor2。 找到信號>的5位xor2。單位合成。

合成單元。 相關源文件是「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/ext_interrupt.vhd」。警告:Xst:646 - 信號 >已分配但未使用。這個未連接的信號 將在優化過程中進行修剪。警告:Xst:646 - 信號>已分配但從未使用過。這個未連接的 信號將在優化過程中進行修整。 警告:Xst:646 - 信號>已分配但從未使用過。 這個未連接的信號將在優化 的過程中被修剪。 找到信號的8位寄存器。 找到信號的4位寄存器>。 找到信號>的2位寄存器。 找到信號>的2位寄存器。 找到信號的1位寄存器。 找到信號的1位寄存器。摘要:推斷出10個D型觸發器。單位合成。

合成單元。 相關源文件是「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/fastalu.vhd」。 找到信號的1位4對1多路複用器。 找到信號的1位4對1多路複用器。 找到信號的1位4對1多路複用器。 在261行創建信號時發現1位xor2。 在258行創建信號時發現1位xor2。 在255行創建信號時發現1位xor2。 在行上創建信號時發現1位xor2 252. 在線210處創建信號時發現8位xor2。 在線207處創建信號時發現8位xor2。 摘要:推斷3多路複用器。單位合成。

合成單元。 相關源文件是「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/fastal2.vhd」。警告:Xst:646 - 信號是 分配但從未使用。在優化過程中,這個未連接的信號將被調整爲 。警告:Xst:646 - 信號是 分配但從未使用。在優化過程中,這個未連接的信號將被調整爲 。警告:Xst:646 - 信號是 分配但從未使用。在優化過程中,這個未連接的信號將被調整爲 。警告:Xst:646 - 信號是 分配但從未使用。在優化過程中,這個未連接的信號將被調整爲 。警告:Xst:646 - 信號是 分配但從未使用。在優化過程中,這個未連接的信號將被調整爲 。警告:Xst:646 - 信號是 分配但從未使用。在優化過程中,這個未連接的信號將被調整爲 。單位合成。

ADVISOR - 分別驅動數據和邏輯功能的邏輯功能 使輸入這個鎖存共享通用條款。這種情況下 可能導致建立/保持違規,並因此導致 模擬問題。這種情況可能來自一個不完全的案例 聲明(所有的選擇器值不包括在內)。你應該仔細檢查 是否在你的意圖來描述這樣一個閂鎖。 找到信號的8位寄存器。 找到信號的1位三態緩衝器。 找到信號的8位寄存器。 找到信號的8位寄存器。 發現信號的8位三態緩衝器。 找到信號的4位寄存器>。 找到信號>的2位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號>的2位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 在169行創建信號時發現1位xor8。 發現信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 找到信號的8位寄存器。 摘要:推測168個D型觸發器。推斷1 XOR(S)。推斷出9個三萜(s)。單位合成。

合成單元。 相關的源文件是「C:/ Users/Farmer/Desktop/CG3207 BACKUP/2012年11月12日/ ISA NOMX/8051_top_fpga.vhd」。警告:Xst:647 - 輸入爲 從未使用。如果端口 屬於頂層塊或屬於子塊並保留此子塊的層次結構,則該端口將保留並保持未連接狀態。警告:Xst:646 - 信號 已分配但未使用。在優化過程中,這個未連接的信號將被修整爲 。警告:Xst:1780 - 從不使用或分配信號 。在優化過程中,這個未連接的信號將被修整爲 。警告:Xst:1780 - 從不使用或分配信號 。在優化過程中,這個未連接的信號將被修整爲 。單位合成。

============================================== =========================== HDL綜合報告

宏觀統計

光盤:1 4096x8位ROM:1

乘法器:1 16×16位乘法器:1

加法器/減法:1的16位減法器:1

個計數器:1 4位向下計數器:1

寄存器:453 1位寄存器:306的16位寄存器

:6 3位寄存器:1的32位 寄存器:1的4位寄存器
:2 8位寄存器:137

閥門:8的1位鎖存器:6 8位鎖存器

:2

個比較器:5的16位比較器greatequal:1的16位比較器

不等於:2 4位比較更大
:1 8位比較不等於:1

多路複用器:5 1位4對1多路轉換器3的8位128對1

複用器:2

三態:4的1位三態緩衝器:2 8位三態

緩衝液:2

異或:57的1位XOR2:53的1位XOR3

:1的1位XOR8:1 8位 XOR2:2

====== ================================================== =================

============================= ============================================

*高級HDL Synthesis *

分析最佳編碼的FSM。

+2

你可以發表有問題的VHDL代碼嗎?您是否找到複製問題的最小代碼量? – 2012-11-14 19:41:20

+0

請將您的問題簡化爲重要信息。你發佈的答案應該是問題的一部分。 –

回答

1

幾點... 注意合成工具告訴你:無論是在消息和其他方面。 0)如果你沒有在模擬中工作,請停下來,現在就做。

1)在你前面的問題 How to deduce from synthesis report 它已經很清楚,你的大case語句是給麻煩,我建議開始簡化它的方法。 2)如果合成對於原本只需要20000(?)晶體管的CPU來說需要很長時間,那麼你需要做一些不同的事情。

3)有關閂鎖的警告和不完整的案件覆蓋在巨大的,大多是不必要的名單,你給。找到並解決這些問題:它們肯定不會幫助合成器收斂於一個好的解決方案!

4)看看每個輸出或一組相關輸出對每個操作碼或操作碼組執行的操作;你會發現很大的簡化。將n個單獨的小型狀態機與它們混合成一個巨大的SM不僅會給你一個n ** 2問題,而且使它幾乎不可能解開。例如,一個鎖存問題可以被隔離到一個更小的代碼塊並在那裏修復;在這個大SM中追蹤它將會很困難。

「一個過程」模式在很多情況下都是很好的風格;但它可能會被採取太遠。