【congestion_controller】6 goog_cc : DelayBasedBwe

本文介绍了WebRTC中基于延迟的带宽估计算法,重点讲解了包组、延迟梯度的概念,以及如何处理反馈包进行拥塞控制。在处理反馈时,会根据接收到的包时间进行排序,并分析网络拥塞状态。当反馈包超时时,会对视频和音频的延迟估计进行重置。此外,文章还提到了根据包数量和时间阈值切换active探测器的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于延迟的带宽估计

  • 接收端和发送端均可以做,
  • 新版本发送端做。
  • 接收端不再做。
  • 虽然有代码,但没调用。
  • 在这里插入图片描述

重要概念

包组
  • 在 WebRTC 中,延迟梯度不是一个个包来计算的,而是通过将包分组,然后计算这些包组之间的延迟,这样做可以减少计算次数,同时减少误差。包组的划分原则为2个

- 在一个burst_time间隔内的一系列的包构成一个组。建议burst_time为5ms

  • 任意到达时间间隔小于 burst_time 并且组间延迟差 d(i)< 0 的组都被考虑做为当前组的一部分。
# ==================== GCD Routing 脚本 (修改版) ==================== # 设计名称与工艺平台 set DESIGN_NAME "microwatt" set ACTUAL_TOP_MODULE_NAME "microwatt" set PLATFORM "nangate45" # --- 路径配置 --- set PLATFORM_DIR "./platforms/${PLATFORM}" set RESULTS_DIR "./results/${PLATFORM}/${DESIGN_NAME}/routing" set SDC_FILE "./results/${PLATFORM}/${DESIGN_NAME}/cts/4_cts.sdc" file mkdir $RESULTS_DIR # === 技术文件配置 === set TECH_LEF "${PLATFORM_DIR}/lef/NangateOpenCellLibrary.tech.lef" set SC_LEF "${PLATFORM_DIR}/lef/NangateOpenCellLibrary.macro.mod.lef" set LIB_FILES "${PLATFORM_DIR}/lib/NangateOpenCellLibrary_typical.lib" # === 环境变量配置 === set ::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) 4 set ::env(DONT_USE_CELLS) "TAPCELL_* FILLER_*" set ::env(SCRIPTS_DIR) "./scripts" set ::env(REPORTS_DIR) "./reports" set ::env(LIB_FILES) $LIB_FILES set ::env(RESULTS_DIR) $RESULTS_DIR # === 新增拥塞优化参数 === set ::env(MIN_ROUTING_LAYER) metal2 set ::env(MAX_ROUTING_LAYER) metal10 set ::env(FILL_CELLS) "FILLCELL_X1 FILLCELL_X2 FILLCELL_X4 FILLCELL_X8 FILLCELL_X16 FILLCELL_X32" set ::global_route_congestion_report "$::env(REPORTS_DIR)/congestion.rpt" set ::env(ROUTING_LAYER_ADJUSTMENT) 0.2 ;# 降低布线层使用率(原0.4) set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 ;# 增加二极管插入迭代次数 set ::env(GLB_RT_OVERFLOW_ITERS) 100 ;# 增加拥塞优化迭代次数 set ::env(GLB_RT_ADJUSTMENT) 0.3 ;# 增加布线资源调整因子 set ::env(GLB_RT_ALLOW_CONGESTION) 0.1 ;# 允许轻度拥塞 set ::env(GLB_RT_L1_ADJUSTMENT) 0.99 ;# 调整金属层1资源分配 # ==== 读取设计 ==== read_lef $TECH_LEF read_lef $SC_LEF read_liberty $LIB_FILES read_db "./results/${PLATFORM}/${DESIGN_NAME}/cts/4_1_cts.odb" read_sdc $SDC_FILE # 加载平台RC配置文件 source ${PLATFORM_DIR}/setRC.tcl source $::env(SCRIPTS_DIR)/util.tcl # ==== 全局布线优化 ==== puts "=== 开始增强型全局布线 ===" # 执行引脚布线访问 pin_access -bottom_routing_layer $::env(MIN_ROUTING_LAYER) \ -top_routing_layer $::env(MAX_ROUTING_LAYER) # 执行全局布线(增加拥塞优化迭代) global_route -congestion_iterations 50 \ -congestion_report_file $::global_route_congestion_report \ -verbose 2 set_placement_padding -global \ -left $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) \ -right $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) # 设置传播时钟 set_propagated_clock [all_clocks] estimate_parasitics -global_routing set_dont_use $::env(DONT_USE_CELLS) # 天线效应预检查 check_antennas -report_file $::env(REPORTS_DIR)/antenna_pre.rpt # Repair design using global route parasitics repair_design_helper # Running DPL to fix overlapped instances global_route -start_incremental detailed_placement global_route -end_incremental \ -congestion_report_file $::env(REPORTS_DIR)/congestion_post_repair_design.rpt # Repair timing using global route parasitics puts "Repair setup and hold violations..." estimate_parasitics -global_routing repair_timing_helper # Running DPL to fix overlapped instances global_route -start_incremental detailed_placement global_route -end_incremental \ -congestion_report_file $::env(REPORTS_DIR)/congestion_post_repair_timing.rpt # 保存全局布线结果 write_def $ RESULTS_DIR/5_1_grt.def write_db $ RESULTS_DIR/5_1_grt.odb # ==== 详细布线优化 ==== puts "=== 开始详细布线(含拥塞优化)===" # 配置高级布线参数 set detailed_route_args " -output_drc $::env(REPORTS_DIR)/route_drc.rpt -output_maze $::env(REPORTS_DIR)/maze.log -drc_report_iter_step 10 -verbose 3 -bottom_routing_layer $::env(MIN_ROUTING_LAYER) -top_routing_layer $::env(MAX_ROUTING_LAYER) -distributed -num_cpus 4 " # 迭代式布线修复(3次迭代) for {set i 0} {$ i < 3} {incr i} { detailed_route {*}$detailed_route_args repair_antennas -iterations 5 } # 保存详细布线结果 write_def $RESULTS_DIR/5_2_route.def write_db $RESULTS_DIR/5_2_route.odb # ==== 填充单元插入 ==== puts "=== 开始填充单元插入 === " filler_placement $::env(FILL_CELLS) write_def $ RESULTS_DIR/5_3_fillcell.def write_db $ RESULTS_DIR/5_3_fillcell.odb # 最终设计检查 check_antennas -report_file $::env(REPORTS_DIR)/antenna_final.rpt report_design_area -file $::env(REPORTS_DIR)/area_final.rpt puts "Routing阶段完成!优化后拥塞率降低至可接受范围" 检查脚本语句语法是否错误
最新发布
07-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等风来不如迎风去

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值