2024华数杯全国大学生数学建模竞赛B题思路-VLSI电路单元的自动布局-MIA 感知的详细布局问题描述

news2024/9/26 1:18:14

        本章主要对超大规模集成电路(Very Large Scale Integration Circuit,VLSI)布局 问题进行了描述,首先简单梳理一下超大规模集成电路设计流程、物理设计相关的知 识,接着对 MIA 感知的混合高度单元集成电路详细布局问题的求解目标、线长估算方 法、以及相关形式化定义进行介绍。

2.1 VLSI 设计流程

        随着集成电路技术的成熟和工业化进程的推进,集成电路设计产业不断发展。如 今,集成电路设计技术已经成为各个领域中的重要应用领域。集成电路设计流程已经 逐渐趋于科学化和精细化,体现了分工的合理性和高效性。该流程主要包括前端设计 和后端设计两个部分,以实现更好的集成电路设计。

        前端设计主要包括电路设计、逻辑设计和物理设计等方面,它们的目的是对电路 进行结构设计、功能分析和性能评估等。逻辑设计则是通过设计硬件描述语言 (Hardware Description Language,HDL)进行实现,通过仿真验证和逻辑合成等工具 对电路的行为进行验证。物理设计则是通过电路的物理信息,包括电路布局和布线等, 实现电路的功能。前端设计中的设计输出结果包括 RTL 设计、综合后的门级网表和布 局图等。

        后端设计是集成电路设计的重要阶段,包括布局、布线、时钟树合成和物理验证 等方面,其中,布局和布线是后端设计中的两个重要环节。布局是指将电路元件进行 放置,确定它们之间的位置和相对关系;而布线则是将元件之间的连线进行规划和优 化,以达到最佳的电路性能和可靠性。时钟树合成则是用于产生时钟信号的电路设计, 在高速集成电路中非常重要。物理验证则是对电路的物理信息进行验证,以确保电路 的正确性和可靠性。

2.1.1 设计流程概述

         超大规模集成电路设计与优化是半导体芯片生产过程中不可或缺的关键步骤。图 2-1 展示了经典 VLSI 设计流程,可以分为系统规范、功能设计、逻辑设计、电路设计、 物理设计、制造、封装与测试七个步骤[27]。

        系统规范:其主要目的是确定待设计电路的整体功能,包括选择制造工艺和设计 模式,以确保电路满足要求的芯片大小、性能和功能,最终输出的结果应该包括芯片 的能耗(Power)、频率(Frequency)、尺寸(Size)以及其他方面的具体要求。

        功能设计:用子电路模块间的关系图或时序图来表示系统的行为特性,并简化后 续设计步骤和整个设计过程。

        逻辑设计:通过系统功能来设计出电路的逻辑结构,并反复测试以确保功能的正 确性,同时,需要进行大量的实验仿真来验证

        电路设计:电路设计是一个非常复杂的过程,除了需要对性能、功耗做出考虑外, 电路中各类元器件的相关属性在逻辑电路设计也有着一定影响。

        物理设计:电路单元和设计组件都被转化为几何形状,并进行布局和布线,连接 线也被表示为几何连线图形。这个阶段需要考虑电路的物理实现,包括尺寸、位置、 形状以及布线等方面,以满足设计要求,并最小化芯片的尺寸和功耗。

        芯片制造:将经过设计规则检查(DRC)、逻辑与版图比较(LVS)和电气规则 检查(ERC)等验证步骤的最终版图,通过一系列复杂的工艺流程,在半导体材料上 制造出芯片的过程。

         封装和测试:是整个芯片制造流程的最后一步,它的目标是将制造好的芯片放入 特定的外壳中,以便进行后续的使用。在封装过程中,常用的外壳类型包括球栅阵列 (BGA)、针栅阵列(PGA)和双列直插式封装(DIP)。完成封装后,芯片需要进 行测试,以确保其符合设计规格并能够正常工作。

        在整个集成电路设计流程中,上述的各阶段不是线性操作,而是相互关联、相互 影响的过程。每个阶段都需要进行反馈和测试,以保证设计的有效性和正确性。如果 出现问题,需要返回前一阶段进行调整和修改,反复这样直到能够得到最优设计结果。 因此,整个设计流程需要不断地迭代和优化。

2.1.2 物理设计

        在 VLSI 设计中,物理设计起着至关重要的作用,直接影响着电路时延、可靠性 和芯片面积等指标[8]。在物理设计过程中,输入的信息包括电路元件的基本属性和模 块之间的互连网络表相关信息,而输出则是经过布置的排版图[9]。VLSI 物理设计过程 通常包括五个步骤[27]:布图规划 (Floorplan)、布局 (Placement)、时钟树综合 (Clock tree synthesis)、布线 (Routing)和时序收敛 (Timing closure)。在整个设 计流程中,测试和反馈是不可或缺的,每个步骤都需要迭代操作,以确保最终得到最 佳的设计效果。

布图规划:是设计集成电路的关键环节之一,它涉及对芯片内部结构进行完整规 划和设计的过程。在这个过程中,设计师需要确定芯片大小、输入/输出单元的数量和 布局,以及大量硬核或模块的布局和规划等。在芯片设计中,布图规划具有重要的地 位,因为它是进行精确布线的前提,也是物理设计后续过程的基础。

布局:主要目标是将芯片上的各个电路模块放置在合适的位置上,以满足系统性 能要求并尽可能地减小互连线长、电路面积和功耗。

时钟树综合:主要目标是设计和构建一个能够在芯片上有效地传递时钟信号并减 小时钟路径上的延迟差异的时钟树。通过在时钟网络上插入缓冲器(Buffer)或逆变 器(Inverter)来平衡时钟路径的延迟,从而满足规定的延迟要求。

布线:是在满足电路的电性能要求和工艺规则的限制下,将各个单元和输入/输出 单元用互连线连接起来的过程。在这一过程中,需要考虑线宽、线间距限制等因素, 以确保布线的可靠性和稳定性。布线的主要目的是实现电路的正确连接和信号传输, 以满足电路设计的功能要求。

时序收敛:是指通过不断迭代的布局和布线过程中的优化,来满足电路设计中的 时序约束[8]。其目标是保证芯片能够正常工作在指定的时钟频率下,并满足时序要求。

物理设计是整个集成电路设计过程中,物理设计直接与产品制造和研发,对芯片 的生产成本、质量和设计周期起着至关重要的作用[6]。物理设计过程中,布局是至关 重要的一步,因为它的质量决定了后续的布线工作能否顺利完成[9]。在布局阶段,需 要利用前序阶段的结果来规划其他阶段,并考虑其他约束条件,如功耗、时序等[7]。

因此,布局阶段的完成质量对于整个物理设计过程的成功非常关键。 布局阶段的主要任务是确定每个电路模块单元在芯片上的位置及方向[7],以及它 们之间的布线方式。它的目标是在满足设计要求前提下,使电路单元之间的总连线长 最短或其他目标最优。同时,布局阶段需要考虑到其他一些因素,例如功耗和信号噪 声等,以确保芯片的可靠性和性能。布局阶段包含全局布局和详细布局[8]。

2.2 详细布局问题描述

VLSI物理设计中的布局阶段中的详细布局是一个关键的设计过程,它的任务是确 定所有电路模块在布局区域内的准确位置,并尽可能的使芯片面积最小、电路模块间 的连接线长总和最短,同时还需满足其他要求,如电学指标、工艺设计和电路单元间 的互连要求。在这个过程中,需要考虑到各种约束和目标,例如电路单元的大小、引 脚的位置、电路单元间的互连性等等。

VLSI布局问题的输入包括布局区域和每个电路单元的大小、引脚的位置、电路单 元间的互连性等,而输出则是电路单元在布局区域内满足网络(单元间)线长最短、 单元占据面积最小或芯片时序最优等目标的一个布局结果。其具体的描述为:

设 W 和 H 分别为布局区域的宽高; 设 𝑉 = {𝑣𝑙 , 𝑣𝑠 , 𝑣ℎ}表示不同阈值电压的标准单元的集合,其中𝑣𝑙 , 𝑣𝑠 , 𝑣ℎ分别表示具 有低阈值电压(LVT)的标准单元,具有标准阈值电压(SVT)的标准单元和具有高 阈值电压(HVT)的标准单元;

设𝐶 = {𝑐1, 𝑐2, … , 𝑐𝑛}表示 n 个标准单元的集合,其中标准单元𝑐𝑖属于一个特定的阈 值电压标准单元,设(𝑥𝑐𝑖 , 𝑦𝑐𝑖 )表示标准单元𝑐𝑖的左下角坐标。𝑤𝑐𝑖和ℎ𝑐𝑖分别表示标准单 元的宽度和高度。 设𝑤表示最小注入宽度限制。

设𝐸 = {𝑒1,𝑒2, … ,𝑒𝑚}表示 m 个单元间互连接网络的集合。 MIA 约束详细布局问题定义如下: 给定电路𝐿 = (𝐶, 𝐸)和最小注入宽度限制𝑤,求出标准单元的位置,以满足所有 MIA 约束和 VDD/VSS 轨道对齐约束,并且使得标准单元间的互连线长最小,可用以 下公式表示

 同时满足所有布局约束,包含无重叠约束,MIA 约束及电源轨道约束等.

2.3 详细布局问题求解目标

集成电路物理设计中详细布局问题优化目标有拥塞、可路由性、互连线长度、时 序、功耗等。本文考虑的目标是详细布局过程中运行时间最短和总的线长最小,本节 对线长求解目标,以及几种常见线长的估算方法进行简要描述。

2.3.1 线长

在 VLSI 物理设计中,线长最小化是一种重要的设计思想,为了降低负载电容、 能耗和延迟,需要尽可能减少电路单元间互连线的长度。根据研究,带权重的网络互 连线长最小化能够综合考虑时延、密度、面积等多种目标[28]。如果为了减小其中一个 网络,让单元的位置发生变化,与此单元相连的其他所有网络的互连网络总线长会发 生相应的变化,这可能会导致总线长、时延、密度、面积等目标变差。因此,带权重 的网络互连总线长被广泛应用于解决实际布局问题中的目标函数优化。通过调整网络 权重,还可以优化其他目标函数,如各时钟树线长、拥塞、时序等[29]。

2.3.2 线长估算方法

在 VLSI 设计中,连接电路单元的线必须接到引脚上,引脚有输入/输出(I/O)引 脚、单元的引脚等,线长是网络中相互连接的引脚之间的连线长度之和,走线长度直 接影响延迟。然而在布局阶段不会执行芯片的实际布线,因此就要使用一种快速的、 简便的且与实际的真实布线长度非常接近的线长估计方法来评估布局结果的质量。若 电路网络中只有两个互连引脚,通常使用曼哈顿距离来近似的估算网络的布线长度从 而得出总的走线长度。

例如:网络中只需要将电路单元 𝑐𝑖上引脚(𝑥𝑖 , 𝑦𝑖 )和电路单元𝑐𝑗上引脚(𝑥𝑗 , 𝑦𝑗 )相互连 接情况下,该网络的线长可以由两个引脚之间的曼哈顿距离𝑑 = |𝑥𝑖 − 𝑥𝑗 | + |𝑦𝑖 − 𝑦𝑗 |表 示。然而,在具体的布局问题中一个网络通常是由多个电路单元组成,对于在多电路 单元组成的网络中,有多种估算走线的长度方法。 图 2-3 展示了一个连接有 4 个引脚的网络,列举出了比较常见的 4 种线长估算方 法,图中红色表示走线,蓝色圆圈表示单元的引脚,数字表示走线的长度。图 2-3 (a) 显示了网络中的引脚位置,图 2-3 (b)显示了一种可能的布线情况,其线长为 11,图 2- 3 (c)-(f)显示了以下 4 钟线长估算方法:

(1)半周长法:是一种常见、简单的线长估算方法。该方法针对每个网络找到 一个能将该网络中所有引脚都包含在内的最小矩形,然后计算该矩形周长的一半作为 网络的估算线长[7]。如图 2-3 (c)中,其线长为:10。

(2)最小生成树:这种方法其本质都是采用 Prim 算法,可以得到较好的结果, 但其时间复杂度在布局阶段相对较长。如图 2-3 (d)中,其线长为:12。

(3)最小斯坦纳树:使用斯坦纳树来估算实际走线长度,能够获得精确的线长 估算结果,但是由于计算量巨大,在布局阶段使用这种方法来估算线长效率及其低下。 如图 2-3 (e)中,其线长为:11

(4)最短连接法:就是用以根线将网络里的所有引脚用串连起来,其最大特点 是每个引脚最多连接两个引脚。如图 2-3 (f)中,线网的长度为:12。

本文讨论了在 VLSI 布局设计中的线长估算方法。在设计过程中,线长估算是一 个关键步骤,因为线长的长度直接影响芯片的速度和功耗。本文介绍了半周长法这一 常用的线长估算方法,并指出了不同的线长估算方法在精度和效率方面存在的优缺点。 虽然没有一种方法能够完全模拟实际走线,但是根据布局算法的特点和线长估算方法 的特点,选择最合适的线长估算方法可以提高布局的精度和效率。 除了上述的线长估计方法外,还有二次线长和边框图等线长估算方法[30]。二次线 长方法基于实际布局的坐标信息来计算线长,具有较高的精度,但是计算复杂度较高, 不适合用于大规模的芯片设计。边框图方法则将芯片的布局看作一个边框,计算线长 时只考虑边框上的距离,虽然简单易用,但是精度较低,只适合用于初步的布局设计。 总之,在选择线长估算方法时,需要综合考虑精度和效率等因素。不同的线长估 算方法在精度和效率方面有着不同的优缺点,没有一种方法能够完全模拟实际走线。 因此,在选择线长估算方法时,需要结合布局算法的特点和线长估算方法的特点,综 合考虑精度和效率等因素,以选择最合适的线长估算方法。半周长法计算简单,对 VLSI布局中线长度的计算非常适用,且大多数文献也都是采用半周长法来估算线网长 度的,因此在本文中,采用半周长法来计算每个网络的连线长度,因为半周长法计算 简单,对于 VLSI 布局中线长度的计算非常适用。

2.4 相关约束形式化定义

本节主要对详细布局相关信息进行形式化定义。

2.4. 1标准单元合法排布定义1

已知电路标准单元集合𝐶 = {𝑐1, 𝑐2, … , 𝑐𝑛 },𝑤𝑐𝑖和ℎ𝑐𝑖分别表示单元的宽度和高度, 可布局区域的宽𝑊和高𝐻,标准单元𝑐𝑖 (1 ≤ 𝑖 ≤ 𝑛) 的坐标可用(𝑥𝑐𝑖 , 𝑦𝑐𝑖 )表示其左下角坐 标,单元所占用的平面可以矩阵[𝑥𝑐𝑖 + 𝑤𝑐𝑖 ] × [𝑦𝑐𝑖 + ℎ𝑐𝑖 ]来表示。合法的布局位置必须 满足以下条件: (

1)不超出边界约束:所有布局整个电路单元(矩形)都要被包含在布局区域 里面。即对任意单元𝑐𝑖 (1 ≤ 𝑖 ≤ 𝑛),都必须满足0 ≤ 𝑥𝑐𝑖 ≤ 𝑊 − 𝑤𝑐𝑖且0 ≤ 𝑦𝑐𝑖 ≤ 𝐻 − ℎ 𝑐𝑖 。

(2)零重叠约束:所有布局电路单元在布局区域内部对应的轴平行矩形不能有 重叠。即对任意的单元𝑐𝑖和𝑐𝑗 ( 𝑖 ≠ 𝑗,1 ≤ 𝑖,𝑗 ≤ 𝑛),都必须满足𝑥𝑐𝑗 ≥ 𝑥𝑐𝑖 + 𝑤𝑐𝑖或𝑥𝑐𝑗 ≤ 𝑥𝑐𝑖 − 𝑤𝑐𝑗,𝑦𝑐𝑗 ≥ 𝑦𝑐𝑖 + ℎ𝑐𝑖或𝑦𝑐𝑗 ≤ 𝑦𝑐𝑖 − ℎ𝑐𝑗。

(3)与行对齐约束:所有布局电路单元都的布局位置都应与行对齐。即对任意 单元𝑐𝑖(1 ≤ 𝑖 ≤ 𝑛),都满足𝑦𝑐𝑗 = N × 𝐻𝑟𝑜𝑤,其中 N 是一个非负的整数,𝐻𝑟𝑜𝑤是行高。

2.4.2 最小注入区域约束定义

最小注入限制区域(MIA)约束有两种,包括行内和行间离子注入宽度(IWs) [31], 具体如下:

(1)行内最小注入限制区域是单元的阈值电压类型(VT)被不同的 VT 类型 单 元夹在中间,中间的宽度不能小于最小注入宽度𝑤。 (2)行间最小注入限制 两个电路单元属于上下相邻的两行,若两个单元在水平方向上相交,则相交的宽 度不能小于最小注入宽度𝑤。

  更多华数杯相关文章参考:
2024年华数杯全国大学生数学建模竞赛A题-考虑动力学和外部干扰的关节角路径优化问题4详细求解过程-CSDN博客

2024年华数杯全国大学生数学建模竞赛A题-在有障碍物的情况下优化机器臂底座移动路径和关节角路径问题3详细求解过程-CSDN博客 2024年华数杯全国大学生数学建模竞赛A题-关节角路径的优化设计以最小化末端误差和能耗问题2详细求解过程-CSDN博客

 2024年华数杯全国大学生数学建模竞赛A题-六自由度机器臂的数学建模及关节角路径优化问题1详细求解过程-CSDN博客

 2024年第五届“华数杯”全国大学生数学建模竞赛C赛题解析-CSDN博客

 2024年第五届“华数杯”全国大学生数学建模竞赛B赛题解析-CSDN博客

2024年第五届“华数杯”全国大学生数学建模竞赛A赛题解析-CSDN博客

2024年第五届“华数杯”全国大学生数学建模竞赛-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1981292.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue之ref 属性

文章目录 1.ref 属性概述1.1 作用和特点 2.vue2用法2.1 获取 dom2.3 获取组件: 3.vue3用法 1.ref 属性概述 1.1 作用和特点 (1)作用:用来给元素或组件注册引用信息(相当于是id的替代者) (2)应用在HTML标签…

Kettle下载安装MySQL驱动教程

在 Windows 系统上下载适用于 MySQL 的 JDBC 驱动程序,您可以按照以下步骤操作: 1. 访问 MySQL 官方下载页面 打开浏览器: 打开您喜欢的浏览器。 访问 MySQL Connector/J 下载页面: 访问 MySQL Connector/J 下载页面. 2. 选择…

探索亚马逊Amazon S3:无缝存储管理与极速数据传输的奥秘

亚马逊云科技中Amazon S3,因其设计简单与高度可靠,允许用户通过互联网存储和检索任意数量的数据,并能够自动扩展以满足各种规模的需求,使得Amazon S3成为了许多云计算应用和网站的核心存储基础设施之一,Amazon S3提供的…

WSL2安装多个Ubuntu实例,大佬带你玩转Linux!!!

安装wsl子系统并安装一个Ubuntuwsl ubuntu 安装的正确方式-CSDN博客文章浏览阅读546次,点赞10次,收藏4次。wsl ubuntu 安装的正确方式:将wsl2设置为默认版本:1、打开powershell2、设置wsl的版本为2​编辑3、更新wsl程序4、强制关闭子系统5、查看wsl支持的列表6、安装指定版…

【Dynamo】AnyCAD使用Dynamo绘制三维模型(二)——生成序列和范围的几种方式

说明: Dynamo为开源项目,开源地址:https://github.com/DynamoDS/Dynamo.git本文章使用版本:v3.0.3 范围 使用Range节点 start和end分别表示范围的边界,step表示步长。如下为[1,10]范围内步长为2结果 ​ 使用Code…

[000-01-025].第07节:WorkBench

我的后端学习大纲 我的Drools学习大纲 8. WorkBench 8.1 WorkBench简介: 1.WorkBench是KIE组件中的元素,也称为KIE-WB,是Drools-WB与JBPM-WB的结合体。它是一个可视化的规则编辑器。WorkBench其实就是一个war包,安装到tomcat中就可以运行。…

UE Sequence学习

UE4中的动画编辑器 —— Sequencer in UE4 - 知乎 (zhihu.com) UE4 LevelSequence源码解析 - 知乎 (zhihu.com) C模块 对ue4 sequence的学习和理解 - 知乎 (zhihu.com) 必须要先在你项目工程的.build.cs里加入 MoviePlayer, LevelSequence, MovieScene. 引入头文件 #inclu…

我所理解的sprd-camera摄像头框架流程分析

摄像头的图像格式:RGB24,RGB565,RGB444,YUV4:2:2 RGB24 表示R、G、B ,3种基色都用8个二进制位表示,那么红色、绿色、蓝色各有256种,那么由这三种基色构成的颜色就是256X256X256=16,777,216种,约等于1677万。UV 和我们熟知的 RGB 类似,是一种颜色编码格式。 YUV 包含三…

sonatype私服配置与下载

文章目录 私服下载地址setting.xml配置java中pom.xml配置上传 私服 下载地址 地址:https://help.sonatype.com/en/download.html 百度网盘地址链接: https://pan.baidu.com/s/1_sjjHbXs27ya49SEcN9XNw 提取码: g56i 1.下载后解压得到两个文件 2.进入到nexus-3.…

揭秘脑囊肿:了解那些不容忽视的症状

脑囊肿,作为颅内的一种良性占位性病变,虽然不常见,但其潜在的症状却可能对患者的生活质量产生显著影响。了解脑囊肿的症状,对于及时诊断和治疗至关重要。 头痛:脑囊肿最常见的症状之一是头痛,这通常是由于囊…

【海贼王航海日志:前端技术探索】CSS你了解多少?(一)

目录 1 -> CSS是什么 2 -> 基本语法规范 3 -> 引入方式 3.1 -> 内部样式表 3.2 -> 行内样式表 3.3 -> 外部样式 4 -> 代码风格 4.1 -> 样式格式 5 -> 选择器 5.1 -> 选择器的功能 5.2 -> 选择器的种类 5.3 -> 基础选择器 5.3…

SQL进阶技巧:数据预处理如何对数据进行分桶【分箱】?

目录 0 引言 1 数据准备 2 数据分桶SQL实现 2 1.基于规则的分桶 2.2 等距分桶 2.3等频分桶 3 小结 0 引言 数据分桶(Bucket)作为数据预处理的一部分,是进行数据模型建设的前提,是构建特征工程的重要手段。也被称为离散分箱或…

【算法】KMP算法

应用场景 有一个字符串 str1 "BBA ABCA ABCDAB ABCDABD",和一个子串 str2 "ABCDABD"现在要判断 str1 是否含有 str2,如果含有,就返回第一次出现的位置,如果不含有,则返回 -1 我们很容易想到暴力…

The Llama 3 Herd of Models 第8部分语音实验部分全文

第1,2,3部分,介绍、概览、预训练 第4部分,后训练 第5部分,结果 第6部分,推理 第7部分,视觉实验 8 Speech Experiments 我们进行了实验来研究将语音功能集成到Llama 3中的组合方法,类似于我们用于视觉识别的方法。在输入端,一个编码器,连同一个适配器,被并入处理语…

低代码开发是什么意思?低代码是开发的未来吗?

在数字化转型的浪潮中,低代码平台是一股不可忽视的力量,它正在以前所未有的速度改变着软件开发的格局。低代码不仅极大地简化了开发流程,降低了技术门槛,还通过高效、灵活的特性,为企业和开发者带来了前所未有的创新机…

页面弹窗中英文切换

一、遇到的问题 页面右上角弹窗如下 二、解决 去掉 lang"en"即可。

SVPWM5段式7段式差异分析和关键代码基于TI F28035

SVPWM5段式7段式差异分析和关键代码基于TI F28035 5段式有一相占空比始终为0或者1 扇区判断的扇区号和实际扇区不是一一对应,直接使用,而是映射关系 扇区判断变量 7段式和5段式在基本矢量作用顺序上的差异 SVPWM算法详解(已标注重点) 来自这篇文章,但经过实际测试,发现是…

计算机和医学领域成重灾区!5本TOP刊也位列其中,请大家谨慎投稿!

【SciencePub学术】自从Hindawi一年撤稿多达一万多篇的事件以来,官方对期刊质量的管控就越来越严格了。更有很多学校和单位都频频更新自己的风险期刊名单,其中,Hindawi、Frontiers、MDPI甚至都被直接打包拉黑! 更有On Hold 期刊现…

ios上音频需要点击两次才播放

问题 用H5标签audio渲染音频,测试PC和安卓都没有问题,点击一次就播放,并且可以在播放之前正常显示音频时长 但是在iOS系统上没有播放之前,不仅时长显示为0,并且播放还需要点击2次才正常播放 原因 debug之后发现是因为…

计算机毕业设计选题推荐-遥感影像共享系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…