記錄使用ISE過程中出現的問題和解決辦法,與大家分享,也留作今后查看。不斷更新中。。。
2013.3.22之前幾天
1. WARNING:PhysDesignRules:372 - Gated clock. Clock net clkb_OBUF is sourced by a
combinatorial pin. This is not good design practice. Use the CE pin to
control the loading of data into the flip-flop.
Phase 10 : 0 unrouted; WARNING:Route:455 - CLK Net:clkb_OBUF may have excessive skew because
錯誤或警告原因:
assign clkb = en ? clk : 0;
…….
always @(posedge clkb or negedge rst_n)
begin
...............
end
說明:在時序電路設計中,盡量使用全局時鍾,而不要用由全局時鍾衍生出來的信號。
2. WARNING:Route:455 - CLK Net:U1/uart_rxd_submodule/one_char may have excessive skew because 1 CLK pins and 4 NON_CLK pins failed to route using a CLK template.
錯誤或警告原因:有的可能是always @(posedge clk。。。)里用的不是全局時鍾而是由全局時鍾產生的信號驅動的,導致信號偏移較大。而我的設計中所有的always驅動列表都是正確的。經過一段時間的思考和嘗試,發現是將一個產生的信號one_char賦給了雙口ram寫時鍾clka造成的。
說明:dpram的讀和寫都需要一個時鍾,一個使能,地址線和數據線。起初,我將使能一直為高,通過控制時鍾脈沖實現將數據寫入或讀出dpram。可是,一般不這樣設計。而采用將時鍾連接到全局時鍾上,通過控制使能高低來實現讀寫數據。
2013.3.22
3. ERROR:HDLCompiler:849-"F:/Yunpan360/MyProject/LED_Sync/modules/ISE/uart2ethernet/codes/uart2ethernet_tb.v" Line 2: Unexpected EOF.
錯誤和警告原因:測試文件不能例化被測模塊。經過一個上午的找錯,沒有發現有語法上的問題,也沒有發現如標點符號格式的錯誤。
解決辦法:將整個測試文件的代碼粘貼到寫字板上,在寫字板上復制所有內容,重新粘貼到測試文件上。問題得到了解決。
4. ERROR:HDLCompiler:44-"F:/Yunpan360/MyProject/LED_Sync/modules/ISE/uart2ethernet/codes/uart2ethernet_tb.v" Line 98: i is not a constant
錯誤或警告原因:代碼中:integer i;
reg [7:0] aaa;
aaa[i+7:i]
向量寄存器的位值必須是個常數或常量,不能用變量表示。
解決辦法:用i當做移位次數對aaa進行移位取值。