仅对英特尔可见 — GUID: jbr1446674793544
Ixiasoft
2.4.2.1. 高速时钟域(High-Speed Clock Domains)
2.4.2.2. 重构环路(Restructuring Loops)
2.4.2.3. 控制信号反压(Control Signal Backpressure)
2.4.2.4. 使用FIFO状态信号的流程控制
2.4.2.5. 包含skid缓冲器的流程控制
2.4.2.6. Read-Modify-Write存储器
2.4.2.7. 计数器和累加器
2.4.2.8. 状态机
2.4.2.9. 储存器
2.4.2.10. DSP模块
2.4.2.11. 一般逻辑
2.4.2.12. 求模与除法
2.4.2.13. 复位
2.4.2.14. 硬件重用
2.4.2.15. 算法要求
2.4.2.16. FIFO
2.4.2.17. 三元加法器(Ternary Adders)
5.2.1. 不足的寄存器(insufficient Registers)
5.2.2. 短路径/长路径(short path/long path)
5.2.3. 快进限制(Fast Forward Limit)
5.2.4. 环路(loop)
5.2.5. 每个时钟域一个关键链
5.2.6. 相关时钟组中的关键链
5.2.7. 复杂的关键链
5.2.8. 延伸到可定位的节点
5.2.9. 域边界入口和域边界出口(Domain Boundary Entry and Domain Boundary Exit)
5.2.10. 包括双时钟存储器的关键链
5.2.11. 关键链比特和总线
5.2.12. 延迟线
仅对英特尔可见 — GUID: jbr1446674793544
Ixiasoft
4.1.4. 步骤4:优化短路径和长路径条件
移除异步寄存器并添加流水线阶段后,Fast Forward Details报告指出,短路径和长路径条件限制了进一步优化。在此实例中,最长路径限制了这个特定时钟域的fMAX。要提高性能,需要按照下面的步骤来缩短此时钟域的最长路径的长度。
- 要查看长路径信息,点击Fast Forward Details报告中的Critical Chain Details选项卡。复查此路径周围的逻辑结构,并考虑相关的RTL代码。此路径包括node.v文件的node模块。关键路径关系到寄存器data_hi和data_lo(几个比较器的一部分)的计算。
以下是此路径的原始RTL:
always @(*) begin : comparator if(data_a < data_b) begin sel0 = 1'b0; // data_a : lo / data_b : hi end else begin sel0 = 1'b1; // data_b : lo / data_a : hi end end always @(*) begin : mux_lo_hi case (sel0) 1'b0 : begin if(LOW_MUX == 1) data_lo = data_a; if(HI_MUX == 1) data_hi = data_b; end 1'b1 : begin if(LOW_MUX == 1) data_lo = data_b; if(HI_MUX == 1) data_hi = data_a; end default : begin data_lo = {DATA_WIDTH{1'b0}}; data_hi = {DATA_WIDTH{1'b0}}; end endcase end
Compiler从此RTL推断出以下逻辑:
- 一个创建sel0信号的比较器
- 一对创建data_hi和data_lo信号的复用器,如下图所示:
图 99. 节点组件连接 - 复查例化node模块的pixel_network.v文件。当node模块的输出没有使用时,它们是未连接的。这些未连接的输出导致LOW_MUX和HI_MUX代码未被使用。使用按位逻辑运算来计算data_hi和data_lo信号的值,而不是推断多路复用器,如下例所示:
reg [DATA_WIDTH-1:0] sel0; always @(*) begin : comparator if(data_a < data_b) begin sel0 = {DATA_WIDTH{1'b0}}; // data_a : lo / data_b : hi end else begin sel0 = {DATA_WIDTH{1'b1}}; // data_b : lo / data_a : hi end data_lo = (data_b & sel0) | (data_a & sel0); data_hi = (data_a & sel0) | (data_b & sel0); end
- 再次编译设计和查看Fast Forward Details报告。提升的性能与所评估的类似,短路径和长路径组合不再限制进一步性能提升。此步骤完成后,只有逻辑回路(logical loop)限制进一步的性能提升。
图 100. 优化的短路径和长路径条件注: 作为完成上述步骤的替代方法,您可以打开并编译Median_filter_<version>/Final/median.qpf工程文件(此文件已包含这些变更),然后观察结果。