文章 ID: 000084426 内容类型: 故障排除 上次审核日期: 2021 年 08 月 28 日

为什么 Quartus® II 合成错误地处理位从签名变量中选择?

环境

BUILT IN - ARTICLE INTRO SECOND COMPONENT
说明

由于已知的软件问题,Quartus® II 软件版本 6.0 和 6.0 SP1 从签名变量中选择错误处理位。涉及从已签名变量中选择的 Verilog 代码应返回 Verilog LRM(Std 1364-2001 Version 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 解释为数字的标志,因此将其转换为 7 位签名的表示 -1,而不是无签名的值。因此,软件会添加 -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

本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。