当前位置: 首页 > news >正文

面向模块的综合技术之控制集优化(七)

面向模块的综合技术之控制集优化(七)


文章目录

  • 面向模块的综合技术之控制集优化(七)
  • 前言
  • 控制集优化
    • 1. 什么是控制集(Control Set)
    • 2. 控制集分析
    • 4. 优化四板斧
      • 4.1 合并复位 —— 最大收益
      • 4.2 合并 CE —— 无 CE 就造“常有效”CE
      • 4.3 消灭“集合只有 1 个 FF”的孤岛
      • 4.4 用 `SEQUENTIAL_LATE_CELL` + `set_case_analysis` 告诉工具“常有效”
    • 5. 控制集与 retiming 的联动


前言


控制集优化


1. 什么是控制集(Control Set)

Xilinx FPGA 里 一个触发器 的控制信号由 4 张票决定:

票名可选值说明
CLK任意时钟 net时钟域
CE任意使能 net / 1’b1高/低有效均可
SR任意复位/置位 net / 1’b0高/低有效 + 同步/异步
SR 类型{SYNC, ASYNC}由 always 敏感列表决定

只要 任意一张不同,就是 不同控制集

对于7系列FPGA,每个SLICE中有8个触发器,这8个触发器共享时钟端口、时钟使能端口和置位/复位端口,因此,这8个触发器只有1个控制集

对于UltraScale系列FPGA,每个SLICE包含16个触发器。这16个触发器分为两组:对于上半部分的8个共享时钟端口和置位/复
位端口,每4个端口共享1个使能端口,所以有两组控制集;下半部分的8
个触发器亦是如此。

在这里插入图片描述


2. 控制集分析

Xilinx给出了控制集百分比指导值

在这里插入图片描述
在这里插入图片描述

# 一键报表
report_control_sets -verbose -file ctrl.rpt
# 看数量
llength [lsort -unique [get_cells -hier -filter {PRIMITIVE_TYPE =~ FD*.*}]]

经验红线:

  • 7-Series ≤ 8 个 / UltraScale ≤ 16 个
  • 超过即开始优化,别等 place 失败再回头。

4. 优化四板斧

4.1 合并复位 —— 最大收益

// 优化前:五花八门
always @(posedge clk or negedge rst_a) ...
always @(posedge clk or posedge rst_b) ...// 优化后:统一低电平复位
always @(posedge clk or negedge rst_n)if (!rst_n) ...
  • 高电平复位 → 加反相器宏:
assign rst_n = ~rst_p; /* synthesis keep */
  • 异步复位 → 如非必要,改 同步释放;可省 SR 类型差异。

4.2 合并 CE —— 无 CE 就造“常有效”CE

wire ce_global = 1'b1;   // 常有效
(* keep *)
reg  a /* CE = ce_global */;
always @(posedge clk)if (ce_global) a <= d;
  • 不要直接写 always @(posedge clk) a <= d;
    工具会生成 CE=1'b1线名不同 → 仍算独立控制集!

4.3 消灭“集合只有 1 个 FF”的孤岛

# 找出孤岛
report_control_sets -verbose -hierarchy | grep "Count.*1 "
  • 孤岛常来自 IP 或手写代码;wrapper 一层,把它的 CE/RST 接到 全局同名牌

4.4 用 SEQUENTIAL_LATE_CELL + set_case_analysis 告诉工具“常有效”

set_property SEQUENTIAL_LATE_CELL TRUE [get_cells a]
set_case_analysis 1 [get_pins a/ce_global]

防止工具把 1'b1 优化回独立线,导致控制集再次分裂。


5. 控制集与 retiming 的联动

// 优化前:不同控制集 → retiming 0 移动
// 优化后:同控制集 → 报告
Retiming moved 12 registers across 37 logic levels
WNS +0.38 ns

同控制集 = 同滑轨 → 寄存器可在 SLICE 内 横向滑纵向滑,retiming/folding/clockEnableOpt 全开。

在这里插入图片描述


http://www.dtcms.com/a/532076.html

相关文章:

  • 做网站广告软件网站系统设计目标
  • 使用稀疏采样方法减轻汽车雷达干扰——论文阅读
  • 阮一峰《TypeScript 教程》学习笔记——d.ts 类型声明文件
  • Spring AOP:横切关注点的优雅解决方案
  • 如何申请网站空间和注册域名鞋子软文推广300字
  • 基于AutoDL远端服务器在pycharm复现:具身智能论文pai0
  • 如何看访问网站的dns网站开发难不难
  • 数据结构·堆
  • 阮一峰《TypeScript 教程》学习笔记——类型映射
  • 需要做网站建设和推广网站地图插件
  • PyCharm 设置 Tabs and Indents
  • Spring Boot3零基础教程,生命周期监听,自定义监听器,笔记59
  • 【SpringBoot】详解Maven的操作与配置
  • 【C++】STL容器--priority_queue的使用与模拟实现
  • 【系统分析师】高分论文:论需求分析方法及应用(电子商务门户网站系统)
  • 【大模型应用开发 6.LangChain多任务应用开发】
  • 泰安最好的网站建设公司怎么通过做网站赚钱吗
  • 初识C语言15.文件操作
  • 聊聊连续、递增
  • 9款上班打卡软件测评:帮你选出最适合企业的工具
  • 建站服务网络公司建设宣传网站上的请示
  • Mem0 使用案例学习总结 - 记忆化应用结构
  • 如何自动清理 Linux 临时文件 ?
  • C++容器forward_list
  • 茂名网站建设培训品牌宣传网站
  • 油漆工找活做的网站网站免费建设
  • TcpClinet
  • Appium+Python+Android+Nodejs环境安装
  • SCDN:互联网时代网站安全的安全保障
  • Linux小课堂: Apache服务在CentOS上的安装与基础配置指南