You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

可综合Verilog实现一维触发器阵列双写入的技术咨询

可综合Verilog实现双写入触发器阵列的技术建议

问题背景

需要实现一维触发器阵列的双写入功能:同一时钟周期内可执行两个写操作,且当两个写使能均有效时,写地址绝不会重叠。现有代码在Synopsys VCS仿真中表现正确,但不确定Design Compiler能否综合出正确的门电路,寻求专业建议。

用户当前代码:

// Both wr_en_a and wr_en_b can be asserted on the same clock.
logic        wr_en_a,   wr_en_b; 
 
 // wr_addr_a and wr_addr_b are never equal when wr_en_a and wr_en_b are both asserted.
logic [4:0]  wr_addr_a, wr_addr_b; 
                                  
logic [15:0] track_vec;

always_ff @(posedge clk) begin

  if (rst_q) begin
    track_vec <= '0;
  end

  else begin

    if (wr_en_a) begin
      track_vec[wr_addr_a] <= wr_en_a;
    end

    if (wr_en_b) begin
      track_vec[wr_addr_b] <= ~wr_en_b;
    end
  
  end

end

综合可行性分析

你的代码可以被Design Compiler正确综合,原因如下:

  • 代码采用两个独立的if语句处理双写操作,且明确约束了双写使能有效时地址不重叠,综合工具能够识别这种无冲突的写操作场景,不会生成逻辑冲突的门电路。
  • 对于触发器阵列的每一位,工具会生成对应的多路选择逻辑:当无写使能时保持原值;当wr_en_a有效时,将该位更新为wr_en_a;当wr_en_b有效时,更新为~wr_en_b;由于地址不重叠,同一时刻不会有两个写操作作用于同一位,因此不存在竞争风险。

优化建议

  1. 修正写数据逻辑:当前代码写入的是写使能信号本身(或其取反),这大概率不是实际需求。建议定义独立的写数据信号wr_data_a和wr_data_b,明确写入内容,示例代码如下:
// 双写使能可同时有效,且有效时地址不重叠
logic        wr_en_a,   wr_en_b; 
logic [4:0]  wr_addr_a, wr_addr_b; 
logic [15:0] wr_data_a, wr_data_b; // 独立写数据信号
logic [15:0] track_vec;

always_ff @(posedge clk) begin
  if (rst_q) begin
    track_vec <= '0;
  end else begin
    // 先保持原值,再根据写使能覆盖对应位
    track_vec <= track_vec;
    if (wr_en_a) begin
      track_vec[wr_addr_a] <= wr_data_a[wr_addr_a];
    end
    if (wr_en_b) begin
      track_vec[wr_addr_b] <= wr_data_b[wr_addr_b];
    end
  end
end
  1. 添加综合约束:为了让Design Compiler更精准地优化逻辑,需将“双写使能有效时地址不重叠”的约束告知工具。可以通过以下方式实现:

    • 使用DC命令:set_case_analysis 1 [expr {!$wr_en_a || !$wr_en_b || $wr_addr_a != $wr_addr_b}]
    • 添加SVA断言(同时可用于仿真验证):
      assert property (@(posedge clk) (wr_en_a && wr_en_b) |-> (wr_addr_a != wr_addr_b));
      
  2. 代码风格优化:在else块中先写track_vec <= track_vec;,明确默认行为是保持原值,这样代码可读性更强,也更符合综合工具的逻辑识别习惯。

内容的提问来源于stack exchange,提问作者DarinT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 09:33:27