文章 ID: 000084426 內容類型: 疑難排解 最近查看日期: 2012 年 09 月 11 日

為什麼 Quartus II 合成錯誤地處理從已簽名變數中選取的位?

環境

BUILT IN - ARTICLE INTRO SECOND COMPONENT
描述

由於已知的軟體問題,Quartus® II 軟體版本 6.0 和 6.0 SP1 錯誤地處理從已簽署變數中選取的位。涉及從已簽署變數選取位的 Verilog 代碼應退回 Verilog LRM 中指定的未指派值 (Std 1364-2001 版本 C,Sec 4.5.1)。

此問題在 5.1 或更早版本中並不存在。問題從 Quartus II 軟體版本 6.1 開始修復。

作為此問題的範例,Quartus II 軟體版本 6.0 錯誤地處理了下列代碼範例:

reg [7:0] unrounded;

reg [6:0] rounded;

always @ (posedge clk) begin

 rounded 

軟體應將未迴響的訊號零延伸[0],以確保將一位值加到位切片中 unrounded[7:1]

Quartus II 軟體版本 6.0 和 6.0 SP1 將訊號擴增,而不是將訊 unrounded[0] 號零延伸。在範例中,如果 unrounded[0] 訊號是 1 值,軟體會將 1 解釋為數字的標誌,因此將其轉換為 -1 的 7 位簽名表示,而不是未指派的值。因此,軟體會新增 -1 到 unrounded[7:1] ,而不是新增 1。

為了避免此問題(在版本 6.0 或 6.0 SP1 中),請執行下列其中一項:

  • 請聯絡 mySupport,要求 Quartus II 軟體版本 6.0 SP1 修補程式 1.20。
  • 將括弧放在其中一個變數上,並迫使整個表達方式使用 Verilog-2001 功能評估為未指派:
rounded 
  • 以手動方式將領先零分墊片如下(亦即明確說明領先位應為 0):
  • rounded 
    

     

相關產品

本文章適用於 1 產品

Stratix® II FPGA

這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。