创建了 dev branch

在 search path 用不同的方法 若可行 之后与 master 进行合并
test
Revert "test"

This reverts commit 1ec06bdcefe603e91cedce63762c139fac8e520b.
删除有关 merge_path 的测试部分
删除 iterate_node 函数

一是因为暂时用不到
二是因为这个迭代是基于 node 的 source 和 drain 的, 但在最新思路中并不区分 netlist 中 mos 的 source
和 drain
添加了 fork 函数

对于 mos 和与其并联的 mos 们 从中选择一个 path 最短的返回
继续修改 fork 函数

已经完成主函数的 find_path 部分
需要做的工作: 在已确定的 path 上的 mos 的 searched 标识改为1 这样下一次 search 的时候就不会再使用
修改了entire_path 的创建方法

entire_path 达到了预期效果 仍需考虑的问题有:
1. 减少代码的冗长性: (1) entire_path 下面分为 mos.drain 和 mos.source 两种情况 (2)
pipeline1和 pipeline2两种情况
2. 分歧点的标记 为的是在create_block 函数中判断是否填加 contact
修改 create_path 函数

新定义 Node 类型;
修改向 path 中填加 mos 的逻辑 ,并在 path 中加入 mid_node 的信息, 以便在之后的
create_block函数中判断填加 contact 的类型
对于 create_block 函数的修改
find_path 函数的完全体完成

新定义了两个函数: find_pipeline_path 和 create_pipeline_path 以减少 find_path
中代码的冗长性
完善对于 mos 的 drain 和 source 方向的不依赖性

问题: create_pipeline_path 中直接用 mid_node_list = self.search_mid_mos()
造成每次 list 都被重新赋值 即便其中某次找到了mid_node 也会被下一次操作覆盖掉
解决方法: 在函数外声明一个 mid_node_list = [] 之后通过 extend 不断往里面填加值 这样没找到 node 原
list 不变 找到了就填加进去
Final Version beta

基本功能已经实现 部分模块仍需改善 (说了等于没说…)
对于 pipeline 类型的修改和 search_path 的算法的修改

这次修改超级多… 多到自己都记不太清了
(1) pipeline 类型可以储存所有有关电路的信息了, 详见内部
(2) 试图修改算法, 未遂…
优化代码结构 使之逻辑更加清晰

get_netlist_data()函数: 从最原始的 netlist 文件中提取 mos 的信息并传递给
find_entire_path()函数
find_entire_path()函数: 确定每个 pipeline 对应的 precharge_PMOS 和 foot_NMOS ,
并传递给 find_pipeline_path()函数. 而此函数是因为需要对两个 pipeline 进行相同处理, 避免其重复性而定义的
find_pipeline_path()函数: 找到所有可能信息(详见代码内部)并储存在 pipeline 中. 依次遍历 top_mos,
mid_mos, bot_mos 并调用与之相对应的 create_path()函数生成 path 之后直接保存在 pipeline 当中
修改 get_netlist_data()函数

不再区分命令行是否指定 subcircuit
将列表的最后一部分最为 main_circuit, 其余部分作为 subcircuit 均保存在 main_circuit 当中(已填加
subcircuit 列表)
对于 main_circuit 和 subcircuit 的后续处理 (完成度90%)

(1)main_circuit 和 subcircuit 的基本信息已经可以抽出. block 也可以生产. 稍微需要考虑一下如何保存在各自的
circuit 之中.
(2)create_block() 函数中填加 gate 时需修改 W 的宽度, 上下分别增加0.22(要确认)
(3)编写create_area 函数
删除了之前指定 subcircuit 的部分 对于 top_mos 的选择做出了改变

(1) 之前可以通过命令行来指定抽出的 subcircuit, 现在从 netlist file 中直接抽取信息 并确定数量(->为了之后的
layout 生成)
(2) 之前只是按顺序一个一个 loop top level mos, 但存在所选的 top mos 与 mid mos
的连接部分并非最小的问题. 现在判断是否与一个 mid mos 是否连接多个 top mos, 并从中选择一个连接部分最小的.
Merge branch 'dev'