【问题标题】:Concatenated vector is truncated in synthesis连接的向量在合成中被截断
【发布时间】:2023-03-04 16:16:01
【问题描述】:

在尝试为线性函数移位寄存器连接 32 位浮点向量时,在行为仿真中一切顺利。但是,在综合后,“random_float”网络已被截断为 31 位。似乎“标志”被忽略了。有什么想法吗?

logic       [7:0]   exponent_seed      =   8'b01100101;
logic       [22:0]  mantissa_seed      =   23'b01001011101011110010100;
logic       [31:0]  random_float       =   32'b00000000000000000000000000000000;
logic       [7:0]   exponent           =   exponent_seed;
logic       [22:0]  mantissa           =   mantissa_seed;
logic               sign               =   1'b0;  

wire                exponent_feedback  =   exponent[7] ^ exponent[5] ^ exponent[4] ^ exponent[3];

always @ (exponent or mantissa or sign)
    begin
        random_float <= {sign, exponent, mantissa};
    end

 always @ (posedge clk or posedge reset)
    begin
        if (reset)
            begin
                exponent        <= exponent_seed;
                mantissa        <= mantissa_seed;
            end
         else
            begin
                //use concatenation to shift and feed the vector.
                exponent <= {exponent[6:0], exponent_feedback};
                mantissa <= {mantissa[21:0], mantissa_feedback};
            end
    end        

PS 我只包含了我认为相关的代码。

【问题讨论】:

  • sign 是恒定的并且被优化掉(我不知道这是否是一个好的翻译......)由于不断传播,信号/位被删除了。模拟器也可以这样做,但符号仍然可以以恒定值显示在波形中。
  • @Paebbels 谢谢!完整的解决方案是在“random_float”上使用 (*KEEP = "TRUE" *)
  • 为什么符号是常数?一旦你到了处理有符号浮点数的地步,这个问题就会消失。我假设 KEEP="TRUE" 是一个 vivado pragma,而不是 Verilog 的一部分。
  • 这只是一个例子。在实际代码中,我需要在一定范围内生成一个浮点数。因此,最低有效 6 位是恒定的。
  • 请注意,在声明期间分配给声明为逻辑的信号对于组合信号无效。只有电线可以以这种方式初始化。对于 ASIC 综合,信号的初始值会导致模拟/综合不匹配(综合会忽略这些)。对于 FPGA 综合,初始值仅对寄存器有效,对组合逻辑无效。在您的代码中,不会对信号进行大多数初始值分配。对于常量,我会改用 localparam。 localparam logic [7:0] exponent_seed = 8'b01100101;

标签: verilog fpga system-verilog vivado


【解决方案1】:

为了后代,以下内容会阻止综合优化常量:

(*KEEP = "TRUE"*) logic       [31:0]  random_float       =   32'b00000000000000000000000000000000;

【讨论】:

    猜你喜欢
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多