信息网站方案做外贸哪个英文网站好
2026/1/15 20:25:30 网站建设 项目流程
信息网站方案,做外贸哪个英文网站好,wordpress dux5,深圳ui设计培训背景随着集成电路工艺的提升#xff0c;电路导线尺寸越来越小#xff0c;但是在电路中存在一类导线的线宽相比普通导线会更宽。这类较宽的导线对于上下层连接的通孔数也有更高的要求#xff0c;甚至对于与这类宽导线连接的细导线#xff0c;在细导线上连接上下层的通孔数也…背景随着集成电路工艺的提升电路导线尺寸越来越小但是在电路中存在一类导线的线宽相比普通导线会更宽。这类较宽的导线对于上下层连接的通孔数也有更高的要求甚至对于与这类宽导线连接的细导线在细导线上连接上下层的通孔数也有更高的要求这就是芯片制作过程中要求检查的最小通孔数设计规则。为了实现对于这一规则的快速检测可以通过使用并查集预处理的方式提前标记通孔数量快速判断这一类 drc。步骤分析使用并查集处理的步骤包括获取电路设计中的通孔数据并为每个通孔创建独立的并查集标识符加载至少一条最小通孔数设计规则在所述设计规则定义有通孔分组条件及最小通孔数量即规则中要求的不同通孔之间的距离约束和数量约束针对每一条设计规则基于所述通孔分组条件对所有通孔进行并查集合并得到与所述设计规则对应的并查集集合并记录所述并查集集合内的实际通孔数量遍历金属层导线根据当前设计规则下的宽度要求判断待检测导线的类型根据待检测导线的类型获取与所述待检测导线连接的目标通孔并查询所述目标通孔针对所述当前设计规则所归属的并查集集合以及该并查集集合内的实际通孔数量比较所述实际通孔数量与所述当前设计规则要求的最小通孔数量若所述实际通孔数量小于所述最小通孔数量则为所述目标通孔创建违规标志。整个过程中主要步骤就是第3步基于检测规则将不同通孔用并查集进行合并和记录集合内通孔数量。在需要检查规则时可以直接查找数量不用再做其他操作。同时也需要注意一些细节比如如果存在多条规则每个通孔对于每条规则都应该存在一个并查集 id 用于记录不同规则的合并情况再比如其实通孔的并查集 id 也可以被简化掉直接记录规则和对应的集合内通孔数量甚至并查集处理后完全可以判断出是否可能违反规则那么使用这些通孔的导线也不需要对于此规则进行是否需要检测规则的判断。另外其实并查集处理完全可以放在读入数据后作为通孔的基本属性处理基本把检查过程简化为了最基础的数值比较对内存和时间的开销都很小。代码分析预处理UtilzDisjointSetUInt dSet;// 使用并查集初始化for (citer1.first(cut_list); !citer1.last(cut); citer1) {for (citer2.first(cut_list); !citer2.last(rd_cut); citer2) {i;dSet.makeSet(i);if (cut-box()-equal(rd_cut-box())) {cut_idx i;}}}并查集合并和统计// 合并通孔i 0;for (citer.first(cut_list); !citer.last(rd_cut); citer) {i;ibox.set(rd_cut-box());ibox.oversize(cut_spc, cut_spc);j 0;for (citer2.first(cut_list); !citer2.last(rd_cut2); citer2) {j;if (rd_cut2-box()-equal(rd_cut-box())) { continue; }if (!ibox.isNonTouch(rd_cut2-box())) { // touchint fi dSet.find(i);int fj dSet.find(j);if (fi ! fj) dSet.unionFunc(i, j);}}}// count cuts numberint find_cut_id 0;if (cut_list-getObjCount()) {find_cut_id dSet.find(cut_idx);}cuts_number 0;i 0;for (citer.first(cut_list); !citer.last(rd_cut); citer) {i;int fi dSet.find(i);if (find_cut_id fi) cuts_number;}并查集实现template typename Tclass UtilzDisjointSet {public:typedef int Id;void makeSet(const T item) {Id id sets_.getNumElements();Set s(id);sets_.append(s);map_.insert(item, id);}Id find(const T item) {Id id map_.getValue(item);return find_1(id);}void unionFunc(const T a, const T b) {union_1(find(a), find(b));}private:void union_1(Id a, Id b);Id find_1(Id id) {Set s sets_[id];if (s.parent_ id) {return id;}s.parent_ find_1(s.parent_);return s.parent_;}struct Set {int parent_;int rank_;Set(Id id) {parent_ id;rank_ 0;}};UtilzArraySet sets_;UtilzMapT, Id map_;};template typename Tvoid UtilzDisjointSetT::union_1(Id x, Id y) {Id xId find_1(x);Id yId find_1(y);if (xId yId) {return; // 已合并}Set xSet sets_[xId];Set ySet sets_[yId];if (xSet.rank_ ySet.rank_) {xSet.parent_ yId;} else if (xSet.rank_ ySet.rank_) {ySet.parent_ xId;} else { // 秩相等加一ySet.parent_ xId;xSet.rank_;}}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询