From 54197f5e8aee356481a8ab9aa4404b0589e611a8 Mon Sep 17 00:00:00 2001 From: DaiToto <1500012781@pku.edu.cn> Date: Mon, 28 Sep 2020 10:47:02 +0800 Subject: [PATCH] add partition subflow --- graph/branch.py | 2 +- graph/flow.py | 2 +- graph/partition.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 graph/partition.py diff --git a/graph/branch.py b/graph/branch.py index 8a72e97..03e63a4 100644 --- a/graph/branch.py +++ b/graph/branch.py @@ -26,7 +26,7 @@ class BranchFlow(object): # compare here syn_ckpt = cc.ops.cmp(syn_ckpt1, syn_ckpt2, self.syn_cmp) # syn_ckpt.save(path) - flp_ckpt = self.flop_op(syn_ckpt, self.flp_para) + flp_ckpt = self.flp_op(syn_ckpt, self.flp_para) place_ckpt = self.place_op(flp_ckpt, self.place_para) cts_ckpt = self.cts_op(place_ckpt, self.cts_para) route_ckpt = self.route_op(cts_ckpt, self.route_para) diff --git a/graph/flow.py b/graph/flow.py index 6f19e3b..e66ca97 100644 --- a/graph/flow.py +++ b/graph/flow.py @@ -21,7 +21,7 @@ class MyFlow(object): def build_flow(self, inp): syn_ckpt = self.syn_op(inp, self.syn_para) # syn_ckpt.save(path) - flp_ckpt = self.flop_op(syn_ckpt, self.flp_para) + flp_ckpt = self.flp_op(syn_ckpt, self.flp_para) place_ckpt = self.place_op(flp_ckpt, self.place_para) cts_ckpt = self.cts_op(place_ckpt, self.cts_para) route_ckpt = self.route_op(cts_ckpt, self.route_para) diff --git a/graph/partition.py b/graph/partition.py new file mode 100644 index 0000000..67299b6 --- /dev/null +++ b/graph/partition.py @@ -0,0 +1,54 @@ +import cocoon as cc +from cc.design import Design + +class MyFlow(object): + def __init__(self, cfg): + self.cfg = cfg + self.syn_op = cc.ops.cds.synth + self.syn_para = dict() + self.flp_op = cc.ops.cds.flp + self.flp_para = dict() + self.part_op = cc.ops.part + # self.pdn_ckpt = cc.ops.cds.pdn + self.place_op1 = cc.ops.cds.place + self.place_para1 = dict() + self.place_op2 = cc.ops.dream_place.place + self.place_para2 = dict() + self.place_op3 = cc.ops.ntu.place + self.place_para3 = dict() + self.merge_op = cc.ops.merge + self.cts_op = cc.ops.cds.cts + self.cts_para = dict() + self.route_op = cc.ops.cds.route + self.route_para = dict() + self.drc_op = cc.ops.cds.drc + pass + + def build_flow(self, inp): + syn_ckpt = self.syn_op(inp, self.syn_para) + # syn_ckpt.save(path) + flp_ckpt = self.flp_op(syn_ckpt, self.flp_para) + + # partition + part1, part2, part3 = self.part_op(flp_ckpt, 3) + # subflow + place_ckpt1 = self.place_op1(part1, self.place_para1) + place_ckpt2 = self.place_op1(part2, self.place_para2) + place_ckpt3 = self.place_op1(part3, self.place_para3) + # merge + place_ckpt = self.merge_op([place_ckpt1, place_ckpt2, place_ckpt3]) + + cts_ckpt = self.cts_op(place_ckpt, self.cts_para) + route_ckpt = self.route_op(cts_ckpt, self.route_para) + drc_ckpt = self.drc_op(route_ckpt) + return drc_ckpt + +def main(): + cfg = {"path": "..."} + design = Design(cfg) + mf = MyFlow(cfg) + ckpt = mf.build_flow(design) + cc.engine.run(ckpt) + +if __name__ == "__main__": + main()