From 81d54682c5cc1e13ed8d78078e9cad1a41a8ab2b Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:01:22 +0530 Subject: [PATCH 01/51] Delete openfasoc/generators/temp-sense-gen/tools/verify_op.sh Recreated functionality in ./parse_rpt.py --- .../temp-sense-gen/tools/verify_op.sh | 25 ------------------- 1 file changed, 25 deletions(-) delete mode 100755 openfasoc/generators/temp-sense-gen/tools/verify_op.sh diff --git a/openfasoc/generators/temp-sense-gen/tools/verify_op.sh b/openfasoc/generators/temp-sense-gen/tools/verify_op.sh deleted file mode 100755 index 2d3470f43..000000000 --- a/openfasoc/generators/temp-sense-gen/tools/verify_op.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -for file in error_within_x.csv golden_error_opt.csv search_result.csv -do - if ! [ -e $file ] - then - echo "[ERROR] $file is not created" - fi -done - -module_name=$(grep "module_name" test.json | cut -d "\"" -f 4) - -if [ -e work ] -then - cd work - for file in $module_name.def $module_name.gds $module_name\_pex.spice $module_name.spice $module_name.v $module_name.sdc - do - if ! [ -e $file ] - then - echo "[ERROR] $file is not created" - fi - done -else - echo "[ERROR] Work directory not created" -fi From 8ff30e7af8b30816f497770e3ded857c414fa6f0 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:02:03 +0530 Subject: [PATCH 02/51] Update parse_rpt.py --- .../temp-sense-gen/tools/parse_rpt.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py b/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py index df5408bb7..714f0bed5 100644 --- a/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py +++ b/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py @@ -1,3 +1,6 @@ +import json +import os + drc_filename = "flow/reports/sky130hd/tempsense/6_final_drc.rpt" num_lines = sum(1 for line in open(drc_filename)) @@ -16,3 +19,22 @@ raise ValueError("LVS failed!") else: print("LVS is clean!") + +with open('test.json', 'r') as file: + data = json.load(file) + +module_name = data.get("module_name", "default") + +work_dir = "./work/" + +if (os.path.exists(work_dir) == 0): + raise ValueError("work directory does not exist!") +else: + filename = work_dir + module_name + for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): + if (os.path.exists(file) == 0): + raise ValueError(file + " does not exist!") + +for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): + if os.path.exists(file) == 0: + raise ValueError(file + " does not exist!") From 2a5bf583e08642a15b9141264e4ecbe2443b35af Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:06:44 +0530 Subject: [PATCH 03/51] Update Makefile remove verify_op.sh calls --- openfasoc/generators/temp-sense-gen/Makefile | 2 -- 1 file changed, 2 deletions(-) diff --git a/openfasoc/generators/temp-sense-gen/Makefile b/openfasoc/generators/temp-sense-gen/Makefile index 1c2cf3806..872a0bb65 100644 --- a/openfasoc/generators/temp-sense-gen/Makefile +++ b/openfasoc/generators/temp-sense-gen/Makefile @@ -47,7 +47,6 @@ sky130hd_temp_verilog: sky130hd_temp: @python3 tools/temp-sense-gen.py --specfile test.json --outputDir ./work $(inv) $(ninv) $(head) $(nhead) --prepex $(sim_pex) --platform sky130hd --mode macro @python3 tools/parse_rpt.py - @tools/verify_op.sh @@echo "==================================================================================" @@echo "Thank you for using OpenFASOC" @@echo "For more info, please read the latest documentation on openfasoc.readthedocs.io" @@ -58,7 +57,6 @@ sky130hd_temp_full: # add --pex to also run pex simulations @python3 tools/temp-sense-gen.py --specfile test.json --outputDir ./work --platform sky130hd --mode full --prepex $(sim_pex) $(inv) $(ninv) $(head) $(nhead) @python3 tools/parse_rpt.py - @tools/verify_op.sh @@echo "==================================================================================" @@echo "Thank you for using OpenFASOC" @@echo "For more info, please read the latest documentation on openfasoc.readthedocs.io" From 069f936467e784a86997e692a045555f0674309e Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:08:38 +0530 Subject: [PATCH 04/51] Update parse_rpt.py Update to include checks for .csv files and ../work directory files --- .../generators/cryo-gen/tools/parse_rpt.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/openfasoc/generators/cryo-gen/tools/parse_rpt.py b/openfasoc/generators/cryo-gen/tools/parse_rpt.py index 7384eb979..149f61676 100644 --- a/openfasoc/generators/cryo-gen/tools/parse_rpt.py +++ b/openfasoc/generators/cryo-gen/tools/parse_rpt.py @@ -22,3 +22,22 @@ raise ValueError("LVS failed!") else: print("LVS is clean!") + +with open('test.json', 'r') as file: + data = json.load(file) + + module_name = data.get("module_name", "default") + + work_dir = "./work/" + + if (os.path.exists(work_dir) == 0): + raise ValueError("work directory does not exist!") + else: + filename = work_dir + module_name + for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): + if (os.path.exists(file) == 0): + raise ValueError(file + " does not exist!") + + for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): + if os.path.exists(file) == 0: + raise ValueError(file + " does not exist!") From aae4dae499086c37574d1d7ea8ecf6d041e76251 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:10:43 +0530 Subject: [PATCH 05/51] Update parse_rpt.py Add checks for .csv files and ../work directory files (.gds, .pex, .v, .spice, etc.) --- .github/scripts/parse_rpt.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index 71ca1e180..01716cd0e 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -31,3 +31,23 @@ raise ValueError("LVS failed!") else: print("LVS is clean!") + +if sys.argv[1] != "sky130hvl_ldo": + with open('test.json', 'r') as file: + data = json.load(file) + + module_name = data.get("module_name", "default") + + work_dir = "./work/" + + if (os.path.exists(work_dir) == 0): + raise ValueError("work directory does not exist!") + else: + filename = work_dir + module_name + for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): + if (os.path.exists(file) == 0): + raise ValueError(file + " does not exist!") + + for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): + if os.path.exists(file) == 0: + raise ValueError(file + " does not exist!") From edd3eff08cebf8fdaedc441f7567a7e138315879 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:19:54 +0530 Subject: [PATCH 06/51] Update parse_rpt.py Added print statements --- .github/scripts/parse_rpt.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index 01716cd0e..f60de040d 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -34,7 +34,8 @@ if sys.argv[1] != "sky130hvl_ldo": with open('test.json', 'r') as file: - data = json.load(file) + data = json.load(file) + print('Found .json config file...') module_name = data.get("module_name", "default") @@ -47,7 +48,11 @@ for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): if (os.path.exists(file) == 0): raise ValueError(file + " does not exist!") - + print("Found necessary work result files!") + for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): if os.path.exists(file) == 0: raise ValueError(file + " does not exist!") + print("Found generated .csv files!") + +print("Generator check is clean!") From 78dcabba3364453f61b8b88a4fbfba00f9054dc8 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:20:59 +0530 Subject: [PATCH 07/51] Update parse_rpt.py Added print statements --- openfasoc/generators/temp-sense-gen/tools/parse_rpt.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py b/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py index 714f0bed5..581e4f43c 100644 --- a/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py +++ b/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py @@ -22,6 +22,7 @@ with open('test.json', 'r') as file: data = json.load(file) +print('Found .json config file...') module_name = data.get("module_name", "default") @@ -34,7 +35,10 @@ for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): if (os.path.exists(file) == 0): raise ValueError(file + " does not exist!") - +print("Found necessary work result files!") + for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): if os.path.exists(file) == 0: raise ValueError(file + " does not exist!") +print("Found generated .csv files!") +print("Generator check is clean!") From a24e75e2e741f07e29944a0496b2f3f32861d874 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:22:34 +0530 Subject: [PATCH 08/51] Update parse_rpt.py --- .../generators/cryo-gen/tools/parse_rpt.py | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/openfasoc/generators/cryo-gen/tools/parse_rpt.py b/openfasoc/generators/cryo-gen/tools/parse_rpt.py index 149f61676..3a33a97d7 100644 --- a/openfasoc/generators/cryo-gen/tools/parse_rpt.py +++ b/openfasoc/generators/cryo-gen/tools/parse_rpt.py @@ -25,19 +25,23 @@ with open('test.json', 'r') as file: data = json.load(file) +print('Found .json config file...') - module_name = data.get("module_name", "default") +module_name = data.get("module_name", "default") - work_dir = "./work/" +work_dir = "./work/" - if (os.path.exists(work_dir) == 0): - raise ValueError("work directory does not exist!") - else: - filename = work_dir + module_name - for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): - if (os.path.exists(file) == 0): - raise ValueError(file + " does not exist!") - - for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): - if os.path.exists(file) == 0: +if (os.path.exists(work_dir) == 0): + raise ValueError("work directory does not exist!") +else: + filename = work_dir + module_name + for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): + if (os.path.exists(file) == 0): raise ValueError(file + " does not exist!") +print("Found necessary work result files!") + +for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): + if os.path.exists(file) == 0: + raise ValueError(file + " does not exist!") +print("Found generated .csv files!") +print("Generator check is clean!") From bc8bce14941c555db5e57ea8ea73544c9b1a0d85 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:28:28 +0530 Subject: [PATCH 09/51] Update parse_rpt.py Added necessary checks for generated .csv files and files in the ../work directory (.gds, .spice, .v, etc.) --- .../generators/dcdc-gen/tools/parse_rpt.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/openfasoc/generators/dcdc-gen/tools/parse_rpt.py b/openfasoc/generators/dcdc-gen/tools/parse_rpt.py index 7384eb979..3a33a97d7 100755 --- a/openfasoc/generators/dcdc-gen/tools/parse_rpt.py +++ b/openfasoc/generators/dcdc-gen/tools/parse_rpt.py @@ -22,3 +22,26 @@ raise ValueError("LVS failed!") else: print("LVS is clean!") + +with open('test.json', 'r') as file: + data = json.load(file) +print('Found .json config file...') + +module_name = data.get("module_name", "default") + +work_dir = "./work/" + +if (os.path.exists(work_dir) == 0): + raise ValueError("work directory does not exist!") +else: + filename = work_dir + module_name + for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): + if (os.path.exists(file) == 0): + raise ValueError(file + " does not exist!") +print("Found necessary work result files!") + +for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): + if os.path.exists(file) == 0: + raise ValueError(file + " does not exist!") +print("Found generated .csv files!") +print("Generator check is clean!") From ff6979ea66f09c49e95ec82b46326c4c457cdbfe Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:30:12 +0530 Subject: [PATCH 10/51] Update parse_rpt.py --- .../generators/scpa-gen/tools/parse_rpt.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/openfasoc/generators/scpa-gen/tools/parse_rpt.py b/openfasoc/generators/scpa-gen/tools/parse_rpt.py index de68aaaa9..f7ee85378 100644 --- a/openfasoc/generators/scpa-gen/tools/parse_rpt.py +++ b/openfasoc/generators/scpa-gen/tools/parse_rpt.py @@ -19,3 +19,26 @@ # raise ValueError("LVS failed!") # else: # print("LVS is clean!") + +with open('test.json', 'r') as file: + data = json.load(file) +print('Found .json config file...') + +module_name = data.get("module_name", "default") + +work_dir = "./work/" + +if (os.path.exists(work_dir) == 0): + raise ValueError("work directory does not exist!") +else: + filename = work_dir + module_name + for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): + if (os.path.exists(file) == 0): + raise ValueError(file + " does not exist!") +print("Found necessary work result files!") + +for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): + if os.path.exists(file) == 0: + raise ValueError(file + " does not exist!") +print("Found generated .csv files!") +print("Generator check is clean!") From 95eb257d87478ce98805791fe9a0fcb86fcd5e19 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:32:17 +0530 Subject: [PATCH 11/51] Update parse_rpt.py Added ../work directory and .csv file checks, commented because only the verilog make is supported --- .../generators/PMU-gen/tools/parse_rpt.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/openfasoc/generators/PMU-gen/tools/parse_rpt.py b/openfasoc/generators/PMU-gen/tools/parse_rpt.py index 7384eb979..8b35c1b86 100755 --- a/openfasoc/generators/PMU-gen/tools/parse_rpt.py +++ b/openfasoc/generators/PMU-gen/tools/parse_rpt.py @@ -22,3 +22,26 @@ raise ValueError("LVS failed!") else: print("LVS is clean!") + +# with open('test.json', 'r') as file: +# data = json.load(file) +# print('Found .json config file...') + +# module_name = data.get("module_name", "default") + +# work_dir = "./work/" + +# if (os.path.exists(work_dir) == 0): +# raise ValueError("work directory does not exist!") +# else: +# filename = work_dir + module_name +# for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): +# if (os.path.exists(file) == 0): +# raise ValueError(file + " does not exist!") +# print("Found necessary work result files!") + +# for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): +# if os.path.exists(file) == 0: +# raise ValueError(file + " does not exist!") +# print("Found generated .csv files!") +print("Generator check is clean!") From ebae01d8e3e7450129dc3c6d0588d22766004c2b Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Mon, 16 Oct 2023 20:53:33 +0530 Subject: [PATCH 12/51] Update parse_rpt.py --- .../generators/cryo-gen/tools/parse_rpt.py | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/openfasoc/generators/cryo-gen/tools/parse_rpt.py b/openfasoc/generators/cryo-gen/tools/parse_rpt.py index 3a33a97d7..acec41c6e 100644 --- a/openfasoc/generators/cryo-gen/tools/parse_rpt.py +++ b/openfasoc/generators/cryo-gen/tools/parse_rpt.py @@ -23,25 +23,26 @@ else: print("LVS is clean!") -with open('test.json', 'r') as file: - data = json.load(file) -print('Found .json config file...') +# with open('test.json', 'r') as file: +# data = json.load(file) +# print('Found .json config file...') -module_name = data.get("module_name", "default") +# module_name = data.get("module_name", "default") -work_dir = "./work/" +# work_dir = "./work/" + +# if (os.path.exists(work_dir) == 0): +# raise ValueError("work directory does not exist!") +# else: +# filename = work_dir + module_name +# for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): +# if (os.path.exists(file) == 0): +# raise ValueError(file + " does not exist!") +# print("Found necessary work result files!") + +# for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): +# if os.path.exists(file) == 0: +# raise ValueError(file + " does not exist!") +# print("Found generated .csv files!") -if (os.path.exists(work_dir) == 0): - raise ValueError("work directory does not exist!") -else: - filename = work_dir + module_name - for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): - if (os.path.exists(file) == 0): - raise ValueError(file + " does not exist!") -print("Found necessary work result files!") - -for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): - if os.path.exists(file) == 0: - raise ValueError(file + " does not exist!") -print("Found generated .csv files!") print("Generator check is clean!") From 42dc6ce0bcc9129faf1ab28ab121a196576040ef Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Mon, 16 Oct 2023 20:54:36 +0530 Subject: [PATCH 13/51] Update parse_rpt.py --- .../generators/dcdc-gen/tools/parse_rpt.py | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/openfasoc/generators/dcdc-gen/tools/parse_rpt.py b/openfasoc/generators/dcdc-gen/tools/parse_rpt.py index 3a33a97d7..acec41c6e 100755 --- a/openfasoc/generators/dcdc-gen/tools/parse_rpt.py +++ b/openfasoc/generators/dcdc-gen/tools/parse_rpt.py @@ -23,25 +23,26 @@ else: print("LVS is clean!") -with open('test.json', 'r') as file: - data = json.load(file) -print('Found .json config file...') +# with open('test.json', 'r') as file: +# data = json.load(file) +# print('Found .json config file...') -module_name = data.get("module_name", "default") +# module_name = data.get("module_name", "default") -work_dir = "./work/" +# work_dir = "./work/" + +# if (os.path.exists(work_dir) == 0): +# raise ValueError("work directory does not exist!") +# else: +# filename = work_dir + module_name +# for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): +# if (os.path.exists(file) == 0): +# raise ValueError(file + " does not exist!") +# print("Found necessary work result files!") + +# for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): +# if os.path.exists(file) == 0: +# raise ValueError(file + " does not exist!") +# print("Found generated .csv files!") -if (os.path.exists(work_dir) == 0): - raise ValueError("work directory does not exist!") -else: - filename = work_dir + module_name - for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): - if (os.path.exists(file) == 0): - raise ValueError(file + " does not exist!") -print("Found necessary work result files!") - -for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): - if os.path.exists(file) == 0: - raise ValueError(file + " does not exist!") -print("Found generated .csv files!") print("Generator check is clean!") From ccd29518b961dc7d1f008d596bf3beb8b53c893a Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Mon, 16 Oct 2023 20:56:07 +0530 Subject: [PATCH 14/51] Update parse_rpt.py --- .../generators/scpa-gen/tools/parse_rpt.py | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/openfasoc/generators/scpa-gen/tools/parse_rpt.py b/openfasoc/generators/scpa-gen/tools/parse_rpt.py index f7ee85378..a0d911277 100644 --- a/openfasoc/generators/scpa-gen/tools/parse_rpt.py +++ b/openfasoc/generators/scpa-gen/tools/parse_rpt.py @@ -20,25 +20,26 @@ # else: # print("LVS is clean!") -with open('test.json', 'r') as file: - data = json.load(file) -print('Found .json config file...') +# with open('test.json', 'r') as file: +# data = json.load(file) +# print('Found .json config file...') -module_name = data.get("module_name", "default") +# module_name = data.get("module_name", "default") -work_dir = "./work/" +# work_dir = "./work/" + +# if (os.path.exists(work_dir) == 0): +# raise ValueError("work directory does not exist!") +# else: +# filename = work_dir + module_name +# for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): +# if (os.path.exists(file) == 0): +# raise ValueError(file + " does not exist!") +# print("Found necessary work result files!") + +# for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): +# if os.path.exists(file) == 0: +# raise ValueError(file + " does not exist!") +# print("Found generated .csv files!") -if (os.path.exists(work_dir) == 0): - raise ValueError("work directory does not exist!") -else: - filename = work_dir + module_name - for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): - if (os.path.exists(file) == 0): - raise ValueError(file + " does not exist!") -print("Found necessary work result files!") - -for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): - if os.path.exists(file) == 0: - raise ValueError(file + " does not exist!") -print("Found generated .csv files!") print("Generator check is clean!") From 3b8d2749297db87b0f3c6cce1f1c06090da3ca8e Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Mon, 16 Oct 2023 20:59:30 +0530 Subject: [PATCH 15/51] Update parse_rpt.py --- .github/scripts/parse_rpt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index f60de040d..be9d282d3 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -9,7 +9,7 @@ drc_filename = "work/"+sys.argv[1]+"/6_final_drc.rpt" lvs_filename = "work/"+sys.argv[1]+"/6_final_lvs.rpt" -if len(sys.argv) > 1 and sys.argv[1] == "sky130hvl_ldo": +if (len(sys.argv) > 1) and ((sys.argv[1] == "sky130hvl_ldo") or (sys.argv[1] == "sky130hvl_ldo_full")): with open(drc_filename, 'r') as f1, open("../../../.github/scripts/expected_drc_reports/expected_ldo_drc.rpt", 'r') as f2: content1 = f1.readlines() content2 = f2.readlines() @@ -32,7 +32,7 @@ else: print("LVS is clean!") -if sys.argv[1] != "sky130hvl_ldo": +if ((sys.argv[1] == "sky130hvl_ldo") or (sys.argv[1] == "sky130hvl_ldo_full")) and (sys.argv[1] != "sky130hd_cryo"): with open('test.json', 'r') as file: data = json.load(file) print('Found .json config file...') From 81ac3e33528d131449998f7d4d4525a44e6d3e6d Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Mon, 16 Oct 2023 21:12:42 +0530 Subject: [PATCH 16/51] Update parse_rpt.py --- openfasoc/generators/cryo-gen/tools/parse_rpt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openfasoc/generators/cryo-gen/tools/parse_rpt.py b/openfasoc/generators/cryo-gen/tools/parse_rpt.py index acec41c6e..bcec6e23f 100644 --- a/openfasoc/generators/cryo-gen/tools/parse_rpt.py +++ b/openfasoc/generators/cryo-gen/tools/parse_rpt.py @@ -2,7 +2,7 @@ import subprocess import sys -drc_filename = "flow/reports/sky130hd/cyro/6_final_drc.rpt" +drc_filename = "flow/reports/sky130hd/cryo/6_final_drc.rpt" num_lines = sum(1 for line in open(drc_filename)) if num_lines > 3: @@ -10,7 +10,7 @@ else: print("DRC is clean!") -lvs_filename = "flow/reports/sky130hd/cyro/6_final_lvs.rpt" +lvs_filename = "flow/reports/sky130hd/cryo/6_final_lvs.rpt" lvs_line = subprocess.check_output(["tail", "-1", lvs_filename]).decode( sys.stdout.encoding ) From 7c9be0b0d66a8204558f04d9e5945be0f0c41807 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Mon, 16 Oct 2023 21:18:58 +0530 Subject: [PATCH 17/51] Update parse_rpt.py --- .github/scripts/parse_rpt.py | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index be9d282d3..7c4c69b90 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -2,7 +2,10 @@ sys.stdout.flush() -if len(sys.argv) == 1 or sys.argv[1] == "sky130hvl_ldo": +if (len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo"): + drc_filename = "flow/reports/sky130hd/cryo/6_final_drc.rpt" + lvs_filename = "flow/reports/sky130hd/cyro/6_final_lvs.rpt" +else if (len(sys.argv) == 1) or (sys.argv[1] == "sky130hvl_ldo"): drc_filename = "work/6_final_drc.rpt" lvs_filename = "work/6_final_lvs.rpt" else: @@ -17,24 +20,36 @@ print("DRC is clean!") else: raise ValueError("DRC failed!") - elif sum(1 for line in open(drc_filename)) > 3: raise ValueError("DRC failed!") else: print("DRC is clean!") - -with open(lvs_filename) as f: - f1 = f.read() - - if "failed" in f1: +if sys.argv[1] == "sky130hd_cryo": + lvs_line = subprocess.check_output(["tail", "-1", lvs_filename]).decode( + sys.stdout.encoding + ) + regex = r"failed" + match = re.search(regex, lvs_line) + + if match != None: raise ValueError("LVS failed!") else: print("LVS is clean!") +else: + with open(lvs_filename) as f: + f1 = f.read() + + if "failed" in f1: + raise ValueError("LVS failed!") + else: + print("LVS is clean!") if ((sys.argv[1] == "sky130hvl_ldo") or (sys.argv[1] == "sky130hvl_ldo_full")) and (sys.argv[1] != "sky130hd_cryo"): + print("Generator check is clean!") +else: with open('test.json', 'r') as file: - data = json.load(file) + data = json.load(file) print('Found .json config file...') module_name = data.get("module_name", "default") @@ -54,5 +69,4 @@ if os.path.exists(file) == 0: raise ValueError(file + " does not exist!") print("Found generated .csv files!") - -print("Generator check is clean!") + print("Generator check is clean!") From 318cba872d3f19b2cc73fb85be5326c622330cf8 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Tue, 17 Oct 2023 01:12:32 +0530 Subject: [PATCH 18/51] Update parse_rpt.py --- .github/scripts/parse_rpt.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index 7c4c69b90..c0627bd79 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -1,11 +1,13 @@ import sys +import json +import os sys.stdout.flush() if (len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo"): drc_filename = "flow/reports/sky130hd/cryo/6_final_drc.rpt" lvs_filename = "flow/reports/sky130hd/cyro/6_final_lvs.rpt" -else if (len(sys.argv) == 1) or (sys.argv[1] == "sky130hvl_ldo"): +elif (len(sys.argv) == 1) or (sys.argv[1] == "sky130hvl_ldo"): drc_filename = "work/6_final_drc.rpt" lvs_filename = "work/6_final_lvs.rpt" else: @@ -25,7 +27,7 @@ else: print("DRC is clean!") -if sys.argv[1] == "sky130hd_cryo": +if (len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo"): lvs_line = subprocess.check_output(["tail", "-1", lvs_filename]).decode( sys.stdout.encoding ) @@ -45,11 +47,11 @@ else: print("LVS is clean!") -if ((sys.argv[1] == "sky130hvl_ldo") or (sys.argv[1] == "sky130hvl_ldo_full")) and (sys.argv[1] != "sky130hd_cryo"): +if ((len(sys.argv) > 1) and ((sys.argv[1] == "sky130hvl_ldo") or (sys.argv[1] == "sky130hvl_ldo_full"))) or ((len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo")): print("Generator check is clean!") else: with open('test.json', 'r') as file: - data = json.load(file) + data = json.load(file) print('Found .json config file...') module_name = data.get("module_name", "default") From 42c8edb6f18824d5876fb8421df107d09192a8e5 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Fri, 27 Oct 2023 13:03:45 +0530 Subject: [PATCH 19/51] Update save_images.tcl --- .../generators/temp-sense-gen/flow/scripts/save_images.tcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openfasoc/generators/temp-sense-gen/flow/scripts/save_images.tcl b/openfasoc/generators/temp-sense-gen/flow/scripts/save_images.tcl index ffc783ada..7b31d843f 100644 --- a/openfasoc/generators/temp-sense-gen/flow/scripts/save_images.tcl +++ b/openfasoc/generators/temp-sense-gen/flow/scripts/save_images.tcl @@ -20,7 +20,7 @@ gui::set_display_controls "Instances/StdCells/*" visible true gui::set_display_controls "Instances/Macro" visible true gui::set_display_controls "Instances/Pads/*" visible true gui::set_display_controls "Instances/Physical/*" visible true -gui::set_display_controls "Pin Markers" visible true +gui::set_display_controls "Pins" visible true gui::set_display_controls "Misc/Instances/names" visible true gui::set_display_controls "Misc/Scale bar" visible true gui::set_display_controls "Misc/Highlight selected" visible true From d0c993dbc82d8057e8e1806492cd9d2190afa4cb Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Fri, 27 Oct 2023 13:11:17 +0530 Subject: [PATCH 20/51] Update save_images.tcl --- .../generators/temp-sense-gen/flow/scripts/save_images.tcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openfasoc/generators/temp-sense-gen/flow/scripts/save_images.tcl b/openfasoc/generators/temp-sense-gen/flow/scripts/save_images.tcl index 7b31d843f..ffc783ada 100644 --- a/openfasoc/generators/temp-sense-gen/flow/scripts/save_images.tcl +++ b/openfasoc/generators/temp-sense-gen/flow/scripts/save_images.tcl @@ -20,7 +20,7 @@ gui::set_display_controls "Instances/StdCells/*" visible true gui::set_display_controls "Instances/Macro" visible true gui::set_display_controls "Instances/Pads/*" visible true gui::set_display_controls "Instances/Physical/*" visible true -gui::set_display_controls "Pins" visible true +gui::set_display_controls "Pin Markers" visible true gui::set_display_controls "Misc/Instances/names" visible true gui::set_display_controls "Misc/Scale bar" visible true gui::set_display_controls "Misc/Highlight selected" visible true From 92e826d1c103c9dc5238424911bb38cce4752b43 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Mon, 30 Oct 2023 21:45:44 +0530 Subject: [PATCH 21/51] Change "content1" in if condition to "content2" the if condition checks "content1" against itself when it should check against "content2" --- .github/scripts/parse_rpt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index c0627bd79..0873331bb 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -18,7 +18,7 @@ with open(drc_filename, 'r') as f1, open("../../../.github/scripts/expected_drc_reports/expected_ldo_drc.rpt", 'r') as f2: content1 = f1.readlines() content2 = f2.readlines() - if content1 == content1: + if content1 == content2: print("DRC is clean!") else: raise ValueError("DRC failed!") From ad891837802d59b5c5c4d99ff103b665f62fd0d6 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Wed, 8 Nov 2023 12:04:35 +0530 Subject: [PATCH 22/51] add check for presence of json file --- .github/scripts/parse_rpt.py | 46 ++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index 0873331bb..c34eaffac 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -50,25 +50,29 @@ if ((len(sys.argv) > 1) and ((sys.argv[1] == "sky130hvl_ldo") or (sys.argv[1] == "sky130hvl_ldo_full"))) or ((len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo")): print("Generator check is clean!") else: - with open('test.json', 'r') as file: - data = json.load(file) - print('Found .json config file...') - - module_name = data.get("module_name", "default") - - work_dir = "./work/" - - if (os.path.exists(work_dir) == 0): - raise ValueError("work directory does not exist!") - else: - filename = work_dir + module_name - for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): - if (os.path.exists(file) == 0): - raise ValueError(file + " does not exist!") - print("Found necessary work result files!") + json_filename = "test.json" + if os.path.exists(json_filename): + with open(json_filename) as file: + data = json.load(file) + print('Found .json config file...') - for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): - if os.path.exists(file) == 0: - raise ValueError(file + " does not exist!") - print("Found generated .csv files!") - print("Generator check is clean!") + module_name = data.get("module_name", "default") + + work_dir = "./work/" + + if (os.path.exists(work_dir) == 0): + raise ValueError("work directory does not exist!") + else: + filename = work_dir + module_name + for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): + if (os.path.exists(file) == 0): + raise ValueError(file + " does not exist!") + print("Found necessary work result files!") + + for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): + if os.path.exists(file) == 0: + raise ValueError(file + " does not exist!") + print("Found generated .csv files!") + print("Generator check is clean!") + else: + raise ValueError(".json config file not found!") From 516ac535115b45741c8c6d1526443396b800cfe3 Mon Sep 17 00:00:00 2001 From: chetanyagoyal Date: Wed, 8 Nov 2023 13:47:06 +0530 Subject: [PATCH 23/51] modularised code and fixed misc. erros in .github/scripts/parse_rpt.py --- .github/scripts/parse_rpt.py | 32 +++------ openfasoc/generators/common/__init__.py | 2 + .../generators/common/check_gen_files.py | 29 ++++++++ openfasoc/generators/cryo-gen/parse_rpt.py | 66 +++++++++++++++++++ .../generators/cryo-gen/tools/parse_rpt.py | 35 ++++------ .../temp-sense-gen/tools/parse_rpt.py | 33 ++++------ 6 files changed, 130 insertions(+), 67 deletions(-) create mode 100644 openfasoc/generators/common/check_gen_files.py create mode 100644 openfasoc/generators/cryo-gen/parse_rpt.py diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index c34eaffac..874627658 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -1,6 +1,9 @@ import sys import json import os +import re, subprocess +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) +from common.check_gen_files import check_gen_files sys.stdout.flush() @@ -14,6 +17,7 @@ drc_filename = "work/"+sys.argv[1]+"/6_final_drc.rpt" lvs_filename = "work/"+sys.argv[1]+"/6_final_lvs.rpt" +# using full because sims disabled for LDO for now if (len(sys.argv) > 1) and ((sys.argv[1] == "sky130hvl_ldo") or (sys.argv[1] == "sky130hvl_ldo_full")): with open(drc_filename, 'r') as f1, open("../../../.github/scripts/expected_drc_reports/expected_ldo_drc.rpt", 'r') as f2: content1 = f1.readlines() @@ -27,6 +31,7 @@ else: print("DRC is clean!") +# cryo LVS check if (len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo"): lvs_line = subprocess.check_output(["tail", "-1", lvs_filename]).decode( sys.stdout.encoding @@ -48,31 +53,14 @@ print("LVS is clean!") if ((len(sys.argv) > 1) and ((sys.argv[1] == "sky130hvl_ldo") or (sys.argv[1] == "sky130hvl_ldo_full"))) or ((len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo")): - print("Generator check is clean!") + print("Flow check is clean!") else: json_filename = "test.json" + if os.path.exists(json_filename): - with open(json_filename) as file: - data = json.load(file) - print('Found .json config file...') - - module_name = data.get("module_name", "default") - - work_dir = "./work/" - - if (os.path.exists(work_dir) == 0): - raise ValueError("work directory does not exist!") + if check_gen_files(): + print("Flow check is clean!") else: - filename = work_dir + module_name - for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): - if (os.path.exists(file) == 0): - raise ValueError(file + " does not exist!") - print("Found necessary work result files!") - - for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): - if os.path.exists(file) == 0: - raise ValueError(file + " does not exist!") - print("Found generated .csv files!") - print("Generator check is clean!") + print("Flow check failed!") else: raise ValueError(".json config file not found!") diff --git a/openfasoc/generators/common/__init__.py b/openfasoc/generators/common/__init__.py index c1ca2645e..9d8da95c2 100644 --- a/openfasoc/generators/common/__init__.py +++ b/openfasoc/generators/common/__init__.py @@ -7,6 +7,8 @@ 2. `COMMON_PLATFORMS_PREFIX_MAP` (dict): This is a dictionary of common platforms (currently sky130) and their cell naming prefixes. - `common.simulation` 1. `run_simulations()`: Used to run SPICE testbenches with multiple parameters. +- `common.check_gen_files` + 1. `check_gen_files()`: Used to check if the various files that should be generated by the flow are present in their required directories. See individual function documentation for more information on a particular function. """ \ No newline at end of file diff --git a/openfasoc/generators/common/check_gen_files.py b/openfasoc/generators/common/check_gen_files.py new file mode 100644 index 000000000..3767612c8 --- /dev/null +++ b/openfasoc/generators/common/check_gen_files.py @@ -0,0 +1,29 @@ +import json +import os + +def check_gen_files(): + with open('test.json', 'r') as file: + data = json.load(file) + + # print('Found .json config file...') + + module_name = data.get("module_name", "default") + + work_dir = "./work/" + + if (os.path.exists(work_dir) == 0): + raise ValueError("work directory does not exist!") + else: + filename = work_dir + module_name + for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): + if (os.path.exists(file) == 0): + raise ValueError(file + " does not exist!") + + # print("Found necessary work result files!") + + for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): + if os.path.exists(file) == 0: + raise ValueError(file + " does not exist!") + + #print("Found generated .csv files!") + return 1 \ No newline at end of file diff --git a/openfasoc/generators/cryo-gen/parse_rpt.py b/openfasoc/generators/cryo-gen/parse_rpt.py new file mode 100644 index 000000000..874627658 --- /dev/null +++ b/openfasoc/generators/cryo-gen/parse_rpt.py @@ -0,0 +1,66 @@ +import sys +import json +import os +import re, subprocess +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) +from common.check_gen_files import check_gen_files + +sys.stdout.flush() + +if (len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo"): + drc_filename = "flow/reports/sky130hd/cryo/6_final_drc.rpt" + lvs_filename = "flow/reports/sky130hd/cyro/6_final_lvs.rpt" +elif (len(sys.argv) == 1) or (sys.argv[1] == "sky130hvl_ldo"): + drc_filename = "work/6_final_drc.rpt" + lvs_filename = "work/6_final_lvs.rpt" +else: + drc_filename = "work/"+sys.argv[1]+"/6_final_drc.rpt" + lvs_filename = "work/"+sys.argv[1]+"/6_final_lvs.rpt" + +# using full because sims disabled for LDO for now +if (len(sys.argv) > 1) and ((sys.argv[1] == "sky130hvl_ldo") or (sys.argv[1] == "sky130hvl_ldo_full")): + with open(drc_filename, 'r') as f1, open("../../../.github/scripts/expected_drc_reports/expected_ldo_drc.rpt", 'r') as f2: + content1 = f1.readlines() + content2 = f2.readlines() + if content1 == content2: + print("DRC is clean!") + else: + raise ValueError("DRC failed!") +elif sum(1 for line in open(drc_filename)) > 3: + raise ValueError("DRC failed!") +else: + print("DRC is clean!") + +# cryo LVS check +if (len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo"): + lvs_line = subprocess.check_output(["tail", "-1", lvs_filename]).decode( + sys.stdout.encoding + ) + regex = r"failed" + match = re.search(regex, lvs_line) + + if match != None: + raise ValueError("LVS failed!") + else: + print("LVS is clean!") +else: + with open(lvs_filename) as f: + f1 = f.read() + + if "failed" in f1: + raise ValueError("LVS failed!") + else: + print("LVS is clean!") + +if ((len(sys.argv) > 1) and ((sys.argv[1] == "sky130hvl_ldo") or (sys.argv[1] == "sky130hvl_ldo_full"))) or ((len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo")): + print("Flow check is clean!") +else: + json_filename = "test.json" + + if os.path.exists(json_filename): + if check_gen_files(): + print("Flow check is clean!") + else: + print("Flow check failed!") + else: + raise ValueError(".json config file not found!") diff --git a/openfasoc/generators/cryo-gen/tools/parse_rpt.py b/openfasoc/generators/cryo-gen/tools/parse_rpt.py index bcec6e23f..f4dfce2a2 100644 --- a/openfasoc/generators/cryo-gen/tools/parse_rpt.py +++ b/openfasoc/generators/cryo-gen/tools/parse_rpt.py @@ -1,6 +1,9 @@ import re import subprocess -import sys +import sys, os + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..')) +from common.check_gen_files import check_gen_files drc_filename = "flow/reports/sky130hd/cryo/6_final_drc.rpt" num_lines = sum(1 for line in open(drc_filename)) @@ -23,26 +26,12 @@ else: print("LVS is clean!") -# with open('test.json', 'r') as file: -# data = json.load(file) -# print('Found .json config file...') - -# module_name = data.get("module_name", "default") - -# work_dir = "./work/" +json_filename = "test.json" -# if (os.path.exists(work_dir) == 0): -# raise ValueError("work directory does not exist!") -# else: -# filename = work_dir + module_name -# for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): -# if (os.path.exists(file) == 0): -# raise ValueError(file + " does not exist!") -# print("Found necessary work result files!") - -# for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): -# if os.path.exists(file) == 0: -# raise ValueError(file + " does not exist!") -# print("Found generated .csv files!") - -print("Generator check is clean!") +if os.path.exists(json_filename): + if check_gen_files(): + print("Flow check is clean!") + else: + print("Flow check failed!") +else: + raise ValueError(".json config file not found!") diff --git a/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py b/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py index 581e4f43c..72b43bc89 100644 --- a/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py +++ b/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py @@ -1,5 +1,7 @@ -import json -import os +import os, sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..')) +from common.check_gen_files import check_gen_files drc_filename = "flow/reports/sky130hd/tempsense/6_final_drc.rpt" num_lines = sum(1 for line in open(drc_filename)) @@ -19,26 +21,13 @@ raise ValueError("LVS failed!") else: print("LVS is clean!") - -with open('test.json', 'r') as file: - data = json.load(file) -print('Found .json config file...') - -module_name = data.get("module_name", "default") -work_dir = "./work/" +json_filename = "test.json" -if (os.path.exists(work_dir) == 0): - raise ValueError("work directory does not exist!") +if os.path.exists(json_filename): + if check_gen_files(): + print("Flow check is clean!") + else: + print("Flow check failed!") else: - filename = work_dir + module_name - for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): - if (os.path.exists(file) == 0): - raise ValueError(file + " does not exist!") -print("Found necessary work result files!") - -for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): - if os.path.exists(file) == 0: - raise ValueError(file + " does not exist!") -print("Found generated .csv files!") -print("Generator check is clean!") + raise ValueError(".json config file not found!") From f3057569c854d497f2a7f01566381986b3810d44 Mon Sep 17 00:00:00 2001 From: chetanyagoyal Date: Wed, 8 Nov 2023 14:34:28 +0530 Subject: [PATCH 24/51] created file extension file to make editable (in common folder) --- openfasoc/generators/common/__init__.py | 3 +- .../generators/common/check_gen_extensions | 6 ++ .../generators/common/check_gen_files.py | 19 +++++- openfasoc/generators/cryo-gen/parse_rpt.py | 66 ------------------- 4 files changed, 24 insertions(+), 70 deletions(-) create mode 100644 openfasoc/generators/common/check_gen_extensions delete mode 100644 openfasoc/generators/cryo-gen/parse_rpt.py diff --git a/openfasoc/generators/common/__init__.py b/openfasoc/generators/common/__init__.py index 9d8da95c2..8d69262ce 100644 --- a/openfasoc/generators/common/__init__.py +++ b/openfasoc/generators/common/__init__.py @@ -9,6 +9,7 @@ 1. `run_simulations()`: Used to run SPICE testbenches with multiple parameters. - `common.check_gen_files` 1. `check_gen_files()`: Used to check if the various files that should be generated by the flow are present in their required directories. - +- `common.check_gen_extensions` + 1. Stores the extensions of the files generated by the flow. See individual function documentation for more information on a particular function. """ \ No newline at end of file diff --git a/openfasoc/generators/common/check_gen_extensions b/openfasoc/generators/common/check_gen_extensions new file mode 100644 index 000000000..93a7f6b57 --- /dev/null +++ b/openfasoc/generators/common/check_gen_extensions @@ -0,0 +1,6 @@ +.gds +.spice +.v +_pex.spice +.sdc +.def \ No newline at end of file diff --git a/openfasoc/generators/common/check_gen_files.py b/openfasoc/generators/common/check_gen_files.py index 3767612c8..823316edd 100644 --- a/openfasoc/generators/common/check_gen_files.py +++ b/openfasoc/generators/common/check_gen_files.py @@ -15,10 +15,23 @@ def check_gen_files(): raise ValueError("work directory does not exist!") else: filename = work_dir + module_name - for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): - if (os.path.exists(file) == 0): - raise ValueError(file + " does not exist!") + extension_file_path = "../common/check_gen_extensions" + if os.path.exists(extension_file_path): + with open(extension_file_path) as f: + + for extension in f: + file = "".join([filename, extension.strip()]) + if (os.path.exists(file) == 0): + raise ValueError(file + " does not exist!") + else: + print("checking flow results with possibly stale list of extensions...") + extensions = [".sdc", ".gds", ".def", ".spice", ".v", "_pex.spice"] + for extension in extensions: + file = "".join([filename, extension]) + + if (os.path.exists(file) == 0): + raise ValueError(file + " does not exist!") # print("Found necessary work result files!") for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): diff --git a/openfasoc/generators/cryo-gen/parse_rpt.py b/openfasoc/generators/cryo-gen/parse_rpt.py deleted file mode 100644 index 874627658..000000000 --- a/openfasoc/generators/cryo-gen/parse_rpt.py +++ /dev/null @@ -1,66 +0,0 @@ -import sys -import json -import os -import re, subprocess -sys.path.append(os.path.join(os.path.dirname(__file__), '..')) -from common.check_gen_files import check_gen_files - -sys.stdout.flush() - -if (len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo"): - drc_filename = "flow/reports/sky130hd/cryo/6_final_drc.rpt" - lvs_filename = "flow/reports/sky130hd/cyro/6_final_lvs.rpt" -elif (len(sys.argv) == 1) or (sys.argv[1] == "sky130hvl_ldo"): - drc_filename = "work/6_final_drc.rpt" - lvs_filename = "work/6_final_lvs.rpt" -else: - drc_filename = "work/"+sys.argv[1]+"/6_final_drc.rpt" - lvs_filename = "work/"+sys.argv[1]+"/6_final_lvs.rpt" - -# using full because sims disabled for LDO for now -if (len(sys.argv) > 1) and ((sys.argv[1] == "sky130hvl_ldo") or (sys.argv[1] == "sky130hvl_ldo_full")): - with open(drc_filename, 'r') as f1, open("../../../.github/scripts/expected_drc_reports/expected_ldo_drc.rpt", 'r') as f2: - content1 = f1.readlines() - content2 = f2.readlines() - if content1 == content2: - print("DRC is clean!") - else: - raise ValueError("DRC failed!") -elif sum(1 for line in open(drc_filename)) > 3: - raise ValueError("DRC failed!") -else: - print("DRC is clean!") - -# cryo LVS check -if (len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo"): - lvs_line = subprocess.check_output(["tail", "-1", lvs_filename]).decode( - sys.stdout.encoding - ) - regex = r"failed" - match = re.search(regex, lvs_line) - - if match != None: - raise ValueError("LVS failed!") - else: - print("LVS is clean!") -else: - with open(lvs_filename) as f: - f1 = f.read() - - if "failed" in f1: - raise ValueError("LVS failed!") - else: - print("LVS is clean!") - -if ((len(sys.argv) > 1) and ((sys.argv[1] == "sky130hvl_ldo") or (sys.argv[1] == "sky130hvl_ldo_full"))) or ((len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo")): - print("Flow check is clean!") -else: - json_filename = "test.json" - - if os.path.exists(json_filename): - if check_gen_files(): - print("Flow check is clean!") - else: - print("Flow check failed!") - else: - raise ValueError(".json config file not found!") From b7ffbf81d5a28783ea13cb5d5cb75642744977d9 Mon Sep 17 00:00:00 2001 From: chetanyagoyal Date: Wed, 8 Nov 2023 14:53:28 +0530 Subject: [PATCH 25/51] moved extension list file to tools folders for each generator --- openfasoc/generators/common/check_gen_files.py | 4 ++-- openfasoc/generators/cryo-gen/tools/check_gen_extensions | 8 ++++++++ .../{common => ldo-gen/tools}/check_gen_extensions | 0 .../generators/temp-sense-gen/tools/check_gen_extensions | 6 ++++++ 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 openfasoc/generators/cryo-gen/tools/check_gen_extensions rename openfasoc/generators/{common => ldo-gen/tools}/check_gen_extensions (100%) create mode 100644 openfasoc/generators/temp-sense-gen/tools/check_gen_extensions diff --git a/openfasoc/generators/common/check_gen_files.py b/openfasoc/generators/common/check_gen_files.py index 823316edd..63c49585a 100644 --- a/openfasoc/generators/common/check_gen_files.py +++ b/openfasoc/generators/common/check_gen_files.py @@ -15,7 +15,7 @@ def check_gen_files(): raise ValueError("work directory does not exist!") else: filename = work_dir + module_name - extension_file_path = "../common/check_gen_extensions" + extension_file_path = "./tools/check_gen_extensions" if os.path.exists(extension_file_path): with open(extension_file_path) as f: @@ -39,4 +39,4 @@ def check_gen_files(): raise ValueError(file + " does not exist!") #print("Found generated .csv files!") - return 1 \ No newline at end of file + return 1 diff --git a/openfasoc/generators/cryo-gen/tools/check_gen_extensions b/openfasoc/generators/cryo-gen/tools/check_gen_extensions new file mode 100644 index 000000000..499a23dfe --- /dev/null +++ b/openfasoc/generators/cryo-gen/tools/check_gen_extensions @@ -0,0 +1,8 @@ +.gds +.spice +.v +.cdl +_sim.spice +_pex.spice +.sdc +.def diff --git a/openfasoc/generators/common/check_gen_extensions b/openfasoc/generators/ldo-gen/tools/check_gen_extensions similarity index 100% rename from openfasoc/generators/common/check_gen_extensions rename to openfasoc/generators/ldo-gen/tools/check_gen_extensions diff --git a/openfasoc/generators/temp-sense-gen/tools/check_gen_extensions b/openfasoc/generators/temp-sense-gen/tools/check_gen_extensions new file mode 100644 index 000000000..93a7f6b57 --- /dev/null +++ b/openfasoc/generators/temp-sense-gen/tools/check_gen_extensions @@ -0,0 +1,6 @@ +.gds +.spice +.v +_pex.spice +.sdc +.def \ No newline at end of file From 49d615a4fcb817deea059debdad0aed1c18c0c22 Mon Sep 17 00:00:00 2001 From: chetanyagoyal Date: Wed, 8 Nov 2023 23:03:03 +0530 Subject: [PATCH 26/51] fix dubious if condition in .github/scripts/parse.py, add cryo libs --- .github/scripts/parse_rpt.py | 16 +- openfasoc/generators/common/__init__.py | 2 +- .../generators/common/check_gen_files.py | 12 +- .../generators/cryo-gen/tools/parse_rpt.py | 14 +- .../ldo-gen/blocks/sky130hvl/ldo_place.txt | 250 ------------------ .../temp-sense-gen/tools/parse_rpt.py | 7 +- 6 files changed, 21 insertions(+), 280 deletions(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index 874627658..e2951b139 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -52,15 +52,9 @@ else: print("LVS is clean!") -if ((len(sys.argv) > 1) and ((sys.argv[1] == "sky130hvl_ldo") or (sys.argv[1] == "sky130hvl_ldo_full"))) or ((len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo")): - print("Flow check is clean!") -else: - json_filename = "test.json" +json_filename = "test.json" - if os.path.exists(json_filename): - if check_gen_files(): - print("Flow check is clean!") - else: - print("Flow check failed!") - else: - raise ValueError(".json config file not found!") +if check_gen_files(json_filename, (len(sys.argv) == 1)): + print("Flow check is clean!") +else: + print("Flow check failed!") \ No newline at end of file diff --git a/openfasoc/generators/common/__init__.py b/openfasoc/generators/common/__init__.py index 8d69262ce..f7ed95929 100644 --- a/openfasoc/generators/common/__init__.py +++ b/openfasoc/generators/common/__init__.py @@ -8,7 +8,7 @@ - `common.simulation` 1. `run_simulations()`: Used to run SPICE testbenches with multiple parameters. - `common.check_gen_files` - 1. `check_gen_files()`: Used to check if the various files that should be generated by the flow are present in their required directories. + 1. `check_gen_files(parameters: json_filename, is_tempsense)`: Used to check if the various files that should be generated by the flow are present in their required directories. - `common.check_gen_extensions` 1. Stores the extensions of the files generated by the flow. See individual function documentation for more information on a particular function. diff --git a/openfasoc/generators/common/check_gen_files.py b/openfasoc/generators/common/check_gen_files.py index 63c49585a..53248e517 100644 --- a/openfasoc/generators/common/check_gen_files.py +++ b/openfasoc/generators/common/check_gen_files.py @@ -1,8 +1,8 @@ import json import os -def check_gen_files(): - with open('test.json', 'r') as file: +def check_gen_files(json_filename, is_tempsense) -> int: + with open(json_filename) as file: data = json.load(file) # print('Found .json config file...') @@ -33,10 +33,10 @@ def check_gen_files(): if (os.path.exists(file) == 0): raise ValueError(file + " does not exist!") # print("Found necessary work result files!") - - for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): - if os.path.exists(file) == 0: - raise ValueError(file + " does not exist!") + if (is_tempsense): + for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): + if os.path.exists(file) == 0: + raise ValueError(file + " does not exist!") #print("Found generated .csv files!") return 1 diff --git a/openfasoc/generators/cryo-gen/tools/parse_rpt.py b/openfasoc/generators/cryo-gen/tools/parse_rpt.py index f4dfce2a2..4c27870f4 100644 --- a/openfasoc/generators/cryo-gen/tools/parse_rpt.py +++ b/openfasoc/generators/cryo-gen/tools/parse_rpt.py @@ -5,7 +5,10 @@ sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..')) from common.check_gen_files import check_gen_files -drc_filename = "flow/reports/sky130hd/cryo/6_final_drc.rpt" +dir_path = r'flow/reports' +lib = os.listdir(dir_path) + +drc_filename = "flow/reports/" + str(lib[0]) + "/cryo/6_final_drc.rpt" num_lines = sum(1 for line in open(drc_filename)) if num_lines > 3: @@ -13,7 +16,7 @@ else: print("DRC is clean!") -lvs_filename = "flow/reports/sky130hd/cryo/6_final_lvs.rpt" +lvs_filename = "flow/reports/" + str(lib[0]) + "/cryo/6_final_lvs.rpt" lvs_line = subprocess.check_output(["tail", "-1", lvs_filename]).decode( sys.stdout.encoding ) @@ -28,10 +31,7 @@ json_filename = "test.json" -if os.path.exists(json_filename): - if check_gen_files(): +if check_gen_files(json_filename, (len(sys.argv) == 1)): print("Flow check is clean!") - else: - print("Flow check failed!") else: - raise ValueError(".json config file not found!") + print("Flow check failed!") \ No newline at end of file diff --git a/openfasoc/generators/ldo-gen/blocks/sky130hvl/ldo_place.txt b/openfasoc/generators/ldo-gen/blocks/sky130hvl/ldo_place.txt index 7eb07c204..e4a24a9f1 100644 --- a/openfasoc/generators/ldo-gen/blocks/sky130hvl/ldo_place.txt +++ b/openfasoc/generators/ldo-gen/blocks/sky130hvl/ldo_place.txt @@ -11,253 +11,3 @@ {pt_array_unit\\[10\\]} {pt_array_unit\[10\]} {pt_array_unit\\[11\\]} {pt_array_unit\[11\]} {pt_array_unit\\[12\\]} {pt_array_unit\[12\]} -{pt_array_unit\\[13\\]} {pt_array_unit\[13\]} -{pt_array_unit\\[14\\]} {pt_array_unit\[14\]} -{pt_array_unit\\[15\\]} {pt_array_unit\[15\]} -{pt_array_unit\\[16\\]} {pt_array_unit\[16\]} -{pt_array_unit\\[17\\]} {pt_array_unit\[17\]} -{pt_array_unit\\[18\\]} {pt_array_unit\[18\]} -{pt_array_unit\\[19\\]} {pt_array_unit\[19\]} -{pt_array_unit\\[20\\]} {pt_array_unit\[20\]} -{pt_array_unit\\[21\\]} {pt_array_unit\[21\]} -{pt_array_unit\\[22\\]} {pt_array_unit\[22\]} -{pt_array_unit\\[23\\]} {pt_array_unit\[23\]} -{pt_array_unit\\[24\\]} {pt_array_unit\[24\]} -{pt_array_unit\\[25\\]} {pt_array_unit\[25\]} -{pt_array_unit\\[26\\]} {pt_array_unit\[26\]} -{pt_array_unit\\[27\\]} {pt_array_unit\[27\]} -{pt_array_unit\\[28\\]} {pt_array_unit\[28\]} -{pt_array_unit\\[29\\]} {pt_array_unit\[29\]} -{pt_array_unit\\[30\\]} {pt_array_unit\[30\]} -{pt_array_unit\\[31\\]} {pt_array_unit\[31\]} -{pt_array_unit\\[32\\]} {pt_array_unit\[32\]} -{pt_array_unit\\[33\\]} {pt_array_unit\[33\]} -{pt_array_unit\\[34\\]} {pt_array_unit\[34\]} -{pt_array_unit\\[35\\]} {pt_array_unit\[35\]} -{pt_array_unit\\[36\\]} {pt_array_unit\[36\]} -{pt_array_unit\\[37\\]} {pt_array_unit\[37\]} -{pt_array_unit\\[38\\]} {pt_array_unit\[38\]} -{pt_array_unit\\[39\\]} {pt_array_unit\[39\]} -{pt_array_unit\\[40\\]} {pt_array_unit\[40\]} -{pt_array_unit\\[41\\]} {pt_array_unit\[41\]} -{pt_array_unit\\[42\\]} {pt_array_unit\[42\]} -{pt_array_unit\\[43\\]} {pt_array_unit\[43\]} -{pt_array_unit\\[44\\]} {pt_array_unit\[44\]} -{pt_array_unit\\[45\\]} {pt_array_unit\[45\]} -{pt_array_unit\\[46\\]} {pt_array_unit\[46\]} -{pt_array_unit\\[47\\]} {pt_array_unit\[47\]} -{pt_array_unit\\[48\\]} {pt_array_unit\[48\]} -{pt_array_unit\\[49\\]} {pt_array_unit\[49\]} -{pt_array_unit\\[50\\]} {pt_array_unit\[50\]} -{pt_array_unit\\[51\\]} {pt_array_unit\[51\]} -{pt_array_unit\\[52\\]} {pt_array_unit\[52\]} -{pt_array_unit\\[53\\]} {pt_array_unit\[53\]} -{pt_array_unit\\[54\\]} {pt_array_unit\[54\]} -{pt_array_unit\\[55\\]} {pt_array_unit\[55\]} -{pt_array_unit\\[56\\]} {pt_array_unit\[56\]} -{pt_array_unit\\[57\\]} {pt_array_unit\[57\]} -{pt_array_unit\\[58\\]} {pt_array_unit\[58\]} -{pt_array_unit\\[59\\]} {pt_array_unit\[59\]} -{pt_array_unit\\[60\\]} {pt_array_unit\[60\]} -{pt_array_unit\\[61\\]} {pt_array_unit\[61\]} -{pt_array_unit\\[62\\]} {pt_array_unit\[62\]} -{pt_array_unit\\[63\\]} {pt_array_unit\[63\]} -{pt_array_unit\\[64\\]} {pt_array_unit\[64\]} -{pt_array_unit\\[65\\]} {pt_array_unit\[65\]} -{pt_array_unit\\[66\\]} {pt_array_unit\[66\]} -{pt_array_unit\\[67\\]} {pt_array_unit\[67\]} -{pt_array_unit\\[68\\]} {pt_array_unit\[68\]} -{pt_array_unit\\[69\\]} {pt_array_unit\[69\]} -{pt_array_unit\\[70\\]} {pt_array_unit\[70\]} -{pt_array_unit\\[71\\]} {pt_array_unit\[71\]} -{pt_array_unit\\[72\\]} {pt_array_unit\[72\]} -{pt_array_unit\\[73\\]} {pt_array_unit\[73\]} -{pt_array_unit\\[74\\]} {pt_array_unit\[74\]} -{pt_array_unit\\[75\\]} {pt_array_unit\[75\]} -{pt_array_unit\\[76\\]} {pt_array_unit\[76\]} -{pt_array_unit\\[77\\]} {pt_array_unit\[77\]} -{pt_array_unit\\[78\\]} {pt_array_unit\[78\]} -{pt_array_unit\\[79\\]} {pt_array_unit\[79\]} -{pt_array_unit\\[80\\]} {pt_array_unit\[80\]} -{pt_array_unit\\[81\\]} {pt_array_unit\[81\]} -{pt_array_unit\\[82\\]} {pt_array_unit\[82\]} -{pt_array_unit\\[83\\]} {pt_array_unit\[83\]} -{pt_array_unit\\[84\\]} {pt_array_unit\[84\]} -{pt_array_unit\\[85\\]} {pt_array_unit\[85\]} -{pt_array_unit\\[86\\]} {pt_array_unit\[86\]} -{pt_array_unit\\[87\\]} {pt_array_unit\[87\]} -{pt_array_unit\\[88\\]} {pt_array_unit\[88\]} -{pt_array_unit\\[89\\]} {pt_array_unit\[89\]} -{pt_array_unit\\[90\\]} {pt_array_unit\[90\]} -{pt_array_unit\\[91\\]} {pt_array_unit\[91\]} -{pt_array_unit\\[92\\]} {pt_array_unit\[92\]} -{pt_array_unit\\[93\\]} {pt_array_unit\[93\]} -{pt_array_unit\\[94\\]} {pt_array_unit\[94\]} -{pt_array_unit\\[95\\]} {pt_array_unit\[95\]} -{pt_array_unit\\[96\\]} {pt_array_unit\[96\]} -{pt_array_unit\\[97\\]} {pt_array_unit\[97\]} -{pt_array_unit\\[98\\]} {pt_array_unit\[98\]} -{pt_array_unit\\[99\\]} {pt_array_unit\[99\]} -{pt_array_unit\\[100\\]} {pt_array_unit\[100\]} -{pt_array_unit\\[101\\]} {pt_array_unit\[101\]} -{pt_array_unit\\[102\\]} {pt_array_unit\[102\]} -{pt_array_unit\\[103\\]} {pt_array_unit\[103\]} -{pt_array_unit\\[104\\]} {pt_array_unit\[104\]} -{pt_array_unit\\[105\\]} {pt_array_unit\[105\]} -{pt_array_unit\\[106\\]} {pt_array_unit\[106\]} -{pt_array_unit\\[107\\]} {pt_array_unit\[107\]} -{pt_array_unit\\[108\\]} {pt_array_unit\[108\]} -{pt_array_unit\\[109\\]} {pt_array_unit\[109\]} -{pt_array_unit\\[110\\]} {pt_array_unit\[110\]} -{pt_array_unit\\[111\\]} {pt_array_unit\[111\]} -{pt_array_unit\\[112\\]} {pt_array_unit\[112\]} -{pt_array_unit\\[113\\]} {pt_array_unit\[113\]} -{pt_array_unit\\[114\\]} {pt_array_unit\[114\]} -{pt_array_unit\\[115\\]} {pt_array_unit\[115\]} -{pt_array_unit\\[116\\]} {pt_array_unit\[116\]} -{pt_array_unit\\[117\\]} {pt_array_unit\[117\]} -{pt_array_unit\\[118\\]} {pt_array_unit\[118\]} -{pt_array_unit\\[119\\]} {pt_array_unit\[119\]} -{pt_array_unit\\[120\\]} {pt_array_unit\[120\]} -{pt_array_unit\\[121\\]} {pt_array_unit\[121\]} -{pt_array_unit\\[122\\]} {pt_array_unit\[122\]} -{pt_array_unit\\[123\\]} {pt_array_unit\[123\]} -{pt_array_unit\\[124\\]} {pt_array_unit\[124\]} -{pt_array_unit\\[125\\]} {pt_array_unit\[125\]} -{pt_array_unit\\[126\\]} {pt_array_unit\[126\]} -{pt_array_unit\\[127\\]} {pt_array_unit\[127\]} -{pt_array_unit\\[128\\]} {pt_array_unit\[128\]} -{pt_array_unit\\[129\\]} {pt_array_unit\[129\]} -{pt_array_unit\\[130\\]} {pt_array_unit\[130\]} -{pt_array_unit\\[131\\]} {pt_array_unit\[131\]} -{pt_array_unit\\[132\\]} {pt_array_unit\[132\]} -{pt_array_unit\\[133\\]} {pt_array_unit\[133\]} -{pt_array_unit\\[134\\]} {pt_array_unit\[134\]} -{pt_array_unit\\[135\\]} {pt_array_unit\[135\]} -{pt_array_unit\\[136\\]} {pt_array_unit\[136\]} -{pt_array_unit\\[137\\]} {pt_array_unit\[137\]} -{pt_array_unit\\[138\\]} {pt_array_unit\[138\]} -{pt_array_unit\\[139\\]} {pt_array_unit\[139\]} -{pt_array_unit\\[140\\]} {pt_array_unit\[140\]} -{pt_array_unit\\[141\\]} {pt_array_unit\[141\]} -{pt_array_unit\\[142\\]} {pt_array_unit\[142\]} -{pt_array_unit\\[143\\]} {pt_array_unit\[143\]} -{pt_array_unit\\[144\\]} {pt_array_unit\[144\]} -{pt_array_unit\\[145\\]} {pt_array_unit\[145\]} -{pt_array_unit\\[146\\]} {pt_array_unit\[146\]} -{pt_array_unit\\[147\\]} {pt_array_unit\[147\]} -{pt_array_unit\\[148\\]} {pt_array_unit\[148\]} -{pt_array_unit\\[149\\]} {pt_array_unit\[149\]} -{pt_array_unit\\[150\\]} {pt_array_unit\[150\]} -{pt_array_unit\\[151\\]} {pt_array_unit\[151\]} -{pt_array_unit\\[152\\]} {pt_array_unit\[152\]} -{pt_array_unit\\[153\\]} {pt_array_unit\[153\]} -{pt_array_unit\\[154\\]} {pt_array_unit\[154\]} -{pt_array_unit\\[155\\]} {pt_array_unit\[155\]} -{pt_array_unit\\[156\\]} {pt_array_unit\[156\]} -{pt_array_unit\\[157\\]} {pt_array_unit\[157\]} -{pt_array_unit\\[158\\]} {pt_array_unit\[158\]} -{pt_array_unit\\[159\\]} {pt_array_unit\[159\]} -{pt_array_unit\\[160\\]} {pt_array_unit\[160\]} -{pt_array_unit\\[161\\]} {pt_array_unit\[161\]} -{pt_array_unit\\[162\\]} {pt_array_unit\[162\]} -{pt_array_unit\\[163\\]} {pt_array_unit\[163\]} -{pt_array_unit\\[164\\]} {pt_array_unit\[164\]} -{pt_array_unit\\[165\\]} {pt_array_unit\[165\]} -{pt_array_unit\\[166\\]} {pt_array_unit\[166\]} -{pt_array_unit\\[167\\]} {pt_array_unit\[167\]} -{pt_array_unit\\[168\\]} {pt_array_unit\[168\]} -{pt_array_unit\\[169\\]} {pt_array_unit\[169\]} -{pt_array_unit\\[170\\]} {pt_array_unit\[170\]} -{pt_array_unit\\[171\\]} {pt_array_unit\[171\]} -{pt_array_unit\\[172\\]} {pt_array_unit\[172\]} -{pt_array_unit\\[173\\]} {pt_array_unit\[173\]} -{pt_array_unit\\[174\\]} {pt_array_unit\[174\]} -{pt_array_unit\\[175\\]} {pt_array_unit\[175\]} -{pt_array_unit\\[176\\]} {pt_array_unit\[176\]} -{pt_array_unit\\[177\\]} {pt_array_unit\[177\]} -{pt_array_unit\\[178\\]} {pt_array_unit\[178\]} -{pt_array_unit\\[179\\]} {pt_array_unit\[179\]} -{pt_array_unit\\[180\\]} {pt_array_unit\[180\]} -{pt_array_unit\\[181\\]} {pt_array_unit\[181\]} -{pt_array_unit\\[182\\]} {pt_array_unit\[182\]} -{pt_array_unit\\[183\\]} {pt_array_unit\[183\]} -{pt_array_unit\\[184\\]} {pt_array_unit\[184\]} -{pt_array_unit\\[185\\]} {pt_array_unit\[185\]} -{pt_array_unit\\[186\\]} {pt_array_unit\[186\]} -{pt_array_unit\\[187\\]} {pt_array_unit\[187\]} -{pt_array_unit\\[188\\]} {pt_array_unit\[188\]} -{pt_array_unit\\[189\\]} {pt_array_unit\[189\]} -{pt_array_unit\\[190\\]} {pt_array_unit\[190\]} -{pt_array_unit\\[191\\]} {pt_array_unit\[191\]} -{pt_array_unit\\[192\\]} {pt_array_unit\[192\]} -{pt_array_unit\\[193\\]} {pt_array_unit\[193\]} -{pt_array_unit\\[194\\]} {pt_array_unit\[194\]} -{pt_array_unit\\[195\\]} {pt_array_unit\[195\]} -{pt_array_unit\\[196\\]} {pt_array_unit\[196\]} -{pt_array_unit\\[197\\]} {pt_array_unit\[197\]} -{pt_array_unit\\[198\\]} {pt_array_unit\[198\]} -{pt_array_unit\\[199\\]} {pt_array_unit\[199\]} -{pt_array_unit\\[200\\]} {pt_array_unit\[200\]} -{pt_array_unit\\[201\\]} {pt_array_unit\[201\]} -{pt_array_unit\\[202\\]} {pt_array_unit\[202\]} -{pt_array_unit\\[203\\]} {pt_array_unit\[203\]} -{pt_array_unit\\[204\\]} {pt_array_unit\[204\]} -{pt_array_unit\\[205\\]} {pt_array_unit\[205\]} -{pt_array_unit\\[206\\]} {pt_array_unit\[206\]} -{pt_array_unit\\[207\\]} {pt_array_unit\[207\]} -{pt_array_unit\\[208\\]} {pt_array_unit\[208\]} -{pt_array_unit\\[209\\]} {pt_array_unit\[209\]} -{pt_array_unit\\[210\\]} {pt_array_unit\[210\]} -{pt_array_unit\\[211\\]} {pt_array_unit\[211\]} -{pt_array_unit\\[212\\]} {pt_array_unit\[212\]} -{pt_array_unit\\[213\\]} {pt_array_unit\[213\]} -{pt_array_unit\\[214\\]} {pt_array_unit\[214\]} -{pt_array_unit\\[215\\]} {pt_array_unit\[215\]} -{pt_array_unit\\[216\\]} {pt_array_unit\[216\]} -{pt_array_unit\\[217\\]} {pt_array_unit\[217\]} -{pt_array_unit\\[218\\]} {pt_array_unit\[218\]} -{pt_array_unit\\[219\\]} {pt_array_unit\[219\]} -{pt_array_unit\\[220\\]} {pt_array_unit\[220\]} -{pt_array_unit\\[221\\]} {pt_array_unit\[221\]} -{pt_array_unit\\[222\\]} {pt_array_unit\[222\]} -{pt_array_unit\\[223\\]} {pt_array_unit\[223\]} -{pt_array_unit\\[224\\]} {pt_array_unit\[224\]} -{pt_array_unit\\[225\\]} {pt_array_unit\[225\]} -{pt_array_unit\\[226\\]} {pt_array_unit\[226\]} -{pt_array_unit\\[227\\]} {pt_array_unit\[227\]} -{pt_array_unit\\[228\\]} {pt_array_unit\[228\]} -{pt_array_unit\\[229\\]} {pt_array_unit\[229\]} -{pt_array_unit\\[230\\]} {pt_array_unit\[230\]} -{pt_array_unit\\[231\\]} {pt_array_unit\[231\]} -{pt_array_unit\\[232\\]} {pt_array_unit\[232\]} -{pt_array_unit\\[233\\]} {pt_array_unit\[233\]} -{pt_array_unit\\[234\\]} {pt_array_unit\[234\]} -{pt_array_unit\\[235\\]} {pt_array_unit\[235\]} -{pt_array_unit\\[236\\]} {pt_array_unit\[236\]} -{pt_array_unit\\[237\\]} {pt_array_unit\[237\]} -{pt_array_unit\\[238\\]} {pt_array_unit\[238\]} -{pt_array_unit\\[239\\]} {pt_array_unit\[239\]} -{pt_array_unit\\[240\\]} {pt_array_unit\[240\]} -{pt_array_unit\\[241\\]} {pt_array_unit\[241\]} -{pt_array_unit\\[242\\]} {pt_array_unit\[242\]} -{pt_array_unit\\[243\\]} {pt_array_unit\[243\]} -{pt_array_unit\\[244\\]} {pt_array_unit\[244\]} -{pt_array_unit\\[245\\]} {pt_array_unit\[245\]} -{pt_array_unit\\[246\\]} {pt_array_unit\[246\]} -{pt_array_unit\\[247\\]} {pt_array_unit\[247\]} -{pt_array_unit\\[248\\]} {pt_array_unit\[248\]} -{pt_array_unit\\[249\\]} {pt_array_unit\[249\]} -{pt_array_unit\\[250\\]} {pt_array_unit\[250\]} -{pt_array_unit\\[251\\]} {pt_array_unit\[251\]} -{pt_array_unit\\[252\\]} {pt_array_unit\[252\]} -{pt_array_unit\\[253\\]} {pt_array_unit\[253\]} -{pt_array_unit\\[254\\]} {pt_array_unit\[254\]} -{pt_array_unit\\[255\\]} {pt_array_unit\[255\]} -{pt_array_unit\\[256\\]} {pt_array_unit\[256\]} -{pt_array_unit\\[257\\]} {pt_array_unit\[257\]} -{pt_array_unit\\[258\\]} {pt_array_unit\[258\]} -{pt_array_unit\\[259\\]} {pt_array_unit\[259\]} -{pt_array_unit\\[260\\]} {pt_array_unit\[260\]} -{pt_array_unit\\[261\\]} {pt_array_unit\[261\]} -{pt_array_unit\\[262\\]} {pt_array_unit\[262\]} diff --git a/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py b/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py index 72b43bc89..dbe536754 100644 --- a/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py +++ b/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py @@ -24,10 +24,7 @@ json_filename = "test.json" -if os.path.exists(json_filename): - if check_gen_files(): +if check_gen_files(json_filename, (len(sys.argv) == 1)): print("Flow check is clean!") - else: - print("Flow check failed!") else: - raise ValueError(".json config file not found!") + print("Flow check failed!") \ No newline at end of file From 634db539dfd30e57014459c960f5b71cbf1f74d5 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Wed, 8 Nov 2023 23:05:31 +0530 Subject: [PATCH 27/51] reform ldo_place.txt --- .../ldo-gen/blocks/sky130hvl/ldo_place.txt | 250 ++++++++++++++++++ 1 file changed, 250 insertions(+) diff --git a/openfasoc/generators/ldo-gen/blocks/sky130hvl/ldo_place.txt b/openfasoc/generators/ldo-gen/blocks/sky130hvl/ldo_place.txt index e4a24a9f1..7eb07c204 100644 --- a/openfasoc/generators/ldo-gen/blocks/sky130hvl/ldo_place.txt +++ b/openfasoc/generators/ldo-gen/blocks/sky130hvl/ldo_place.txt @@ -11,3 +11,253 @@ {pt_array_unit\\[10\\]} {pt_array_unit\[10\]} {pt_array_unit\\[11\\]} {pt_array_unit\[11\]} {pt_array_unit\\[12\\]} {pt_array_unit\[12\]} +{pt_array_unit\\[13\\]} {pt_array_unit\[13\]} +{pt_array_unit\\[14\\]} {pt_array_unit\[14\]} +{pt_array_unit\\[15\\]} {pt_array_unit\[15\]} +{pt_array_unit\\[16\\]} {pt_array_unit\[16\]} +{pt_array_unit\\[17\\]} {pt_array_unit\[17\]} +{pt_array_unit\\[18\\]} {pt_array_unit\[18\]} +{pt_array_unit\\[19\\]} {pt_array_unit\[19\]} +{pt_array_unit\\[20\\]} {pt_array_unit\[20\]} +{pt_array_unit\\[21\\]} {pt_array_unit\[21\]} +{pt_array_unit\\[22\\]} {pt_array_unit\[22\]} +{pt_array_unit\\[23\\]} {pt_array_unit\[23\]} +{pt_array_unit\\[24\\]} {pt_array_unit\[24\]} +{pt_array_unit\\[25\\]} {pt_array_unit\[25\]} +{pt_array_unit\\[26\\]} {pt_array_unit\[26\]} +{pt_array_unit\\[27\\]} {pt_array_unit\[27\]} +{pt_array_unit\\[28\\]} {pt_array_unit\[28\]} +{pt_array_unit\\[29\\]} {pt_array_unit\[29\]} +{pt_array_unit\\[30\\]} {pt_array_unit\[30\]} +{pt_array_unit\\[31\\]} {pt_array_unit\[31\]} +{pt_array_unit\\[32\\]} {pt_array_unit\[32\]} +{pt_array_unit\\[33\\]} {pt_array_unit\[33\]} +{pt_array_unit\\[34\\]} {pt_array_unit\[34\]} +{pt_array_unit\\[35\\]} {pt_array_unit\[35\]} +{pt_array_unit\\[36\\]} {pt_array_unit\[36\]} +{pt_array_unit\\[37\\]} {pt_array_unit\[37\]} +{pt_array_unit\\[38\\]} {pt_array_unit\[38\]} +{pt_array_unit\\[39\\]} {pt_array_unit\[39\]} +{pt_array_unit\\[40\\]} {pt_array_unit\[40\]} +{pt_array_unit\\[41\\]} {pt_array_unit\[41\]} +{pt_array_unit\\[42\\]} {pt_array_unit\[42\]} +{pt_array_unit\\[43\\]} {pt_array_unit\[43\]} +{pt_array_unit\\[44\\]} {pt_array_unit\[44\]} +{pt_array_unit\\[45\\]} {pt_array_unit\[45\]} +{pt_array_unit\\[46\\]} {pt_array_unit\[46\]} +{pt_array_unit\\[47\\]} {pt_array_unit\[47\]} +{pt_array_unit\\[48\\]} {pt_array_unit\[48\]} +{pt_array_unit\\[49\\]} {pt_array_unit\[49\]} +{pt_array_unit\\[50\\]} {pt_array_unit\[50\]} +{pt_array_unit\\[51\\]} {pt_array_unit\[51\]} +{pt_array_unit\\[52\\]} {pt_array_unit\[52\]} +{pt_array_unit\\[53\\]} {pt_array_unit\[53\]} +{pt_array_unit\\[54\\]} {pt_array_unit\[54\]} +{pt_array_unit\\[55\\]} {pt_array_unit\[55\]} +{pt_array_unit\\[56\\]} {pt_array_unit\[56\]} +{pt_array_unit\\[57\\]} {pt_array_unit\[57\]} +{pt_array_unit\\[58\\]} {pt_array_unit\[58\]} +{pt_array_unit\\[59\\]} {pt_array_unit\[59\]} +{pt_array_unit\\[60\\]} {pt_array_unit\[60\]} +{pt_array_unit\\[61\\]} {pt_array_unit\[61\]} +{pt_array_unit\\[62\\]} {pt_array_unit\[62\]} +{pt_array_unit\\[63\\]} {pt_array_unit\[63\]} +{pt_array_unit\\[64\\]} {pt_array_unit\[64\]} +{pt_array_unit\\[65\\]} {pt_array_unit\[65\]} +{pt_array_unit\\[66\\]} {pt_array_unit\[66\]} +{pt_array_unit\\[67\\]} {pt_array_unit\[67\]} +{pt_array_unit\\[68\\]} {pt_array_unit\[68\]} +{pt_array_unit\\[69\\]} {pt_array_unit\[69\]} +{pt_array_unit\\[70\\]} {pt_array_unit\[70\]} +{pt_array_unit\\[71\\]} {pt_array_unit\[71\]} +{pt_array_unit\\[72\\]} {pt_array_unit\[72\]} +{pt_array_unit\\[73\\]} {pt_array_unit\[73\]} +{pt_array_unit\\[74\\]} {pt_array_unit\[74\]} +{pt_array_unit\\[75\\]} {pt_array_unit\[75\]} +{pt_array_unit\\[76\\]} {pt_array_unit\[76\]} +{pt_array_unit\\[77\\]} {pt_array_unit\[77\]} +{pt_array_unit\\[78\\]} {pt_array_unit\[78\]} +{pt_array_unit\\[79\\]} {pt_array_unit\[79\]} +{pt_array_unit\\[80\\]} {pt_array_unit\[80\]} +{pt_array_unit\\[81\\]} {pt_array_unit\[81\]} +{pt_array_unit\\[82\\]} {pt_array_unit\[82\]} +{pt_array_unit\\[83\\]} {pt_array_unit\[83\]} +{pt_array_unit\\[84\\]} {pt_array_unit\[84\]} +{pt_array_unit\\[85\\]} {pt_array_unit\[85\]} +{pt_array_unit\\[86\\]} {pt_array_unit\[86\]} +{pt_array_unit\\[87\\]} {pt_array_unit\[87\]} +{pt_array_unit\\[88\\]} {pt_array_unit\[88\]} +{pt_array_unit\\[89\\]} {pt_array_unit\[89\]} +{pt_array_unit\\[90\\]} {pt_array_unit\[90\]} +{pt_array_unit\\[91\\]} {pt_array_unit\[91\]} +{pt_array_unit\\[92\\]} {pt_array_unit\[92\]} +{pt_array_unit\\[93\\]} {pt_array_unit\[93\]} +{pt_array_unit\\[94\\]} {pt_array_unit\[94\]} +{pt_array_unit\\[95\\]} {pt_array_unit\[95\]} +{pt_array_unit\\[96\\]} {pt_array_unit\[96\]} +{pt_array_unit\\[97\\]} {pt_array_unit\[97\]} +{pt_array_unit\\[98\\]} {pt_array_unit\[98\]} +{pt_array_unit\\[99\\]} {pt_array_unit\[99\]} +{pt_array_unit\\[100\\]} {pt_array_unit\[100\]} +{pt_array_unit\\[101\\]} {pt_array_unit\[101\]} +{pt_array_unit\\[102\\]} {pt_array_unit\[102\]} +{pt_array_unit\\[103\\]} {pt_array_unit\[103\]} +{pt_array_unit\\[104\\]} {pt_array_unit\[104\]} +{pt_array_unit\\[105\\]} {pt_array_unit\[105\]} +{pt_array_unit\\[106\\]} {pt_array_unit\[106\]} +{pt_array_unit\\[107\\]} {pt_array_unit\[107\]} +{pt_array_unit\\[108\\]} {pt_array_unit\[108\]} +{pt_array_unit\\[109\\]} {pt_array_unit\[109\]} +{pt_array_unit\\[110\\]} {pt_array_unit\[110\]} +{pt_array_unit\\[111\\]} {pt_array_unit\[111\]} +{pt_array_unit\\[112\\]} {pt_array_unit\[112\]} +{pt_array_unit\\[113\\]} {pt_array_unit\[113\]} +{pt_array_unit\\[114\\]} {pt_array_unit\[114\]} +{pt_array_unit\\[115\\]} {pt_array_unit\[115\]} +{pt_array_unit\\[116\\]} {pt_array_unit\[116\]} +{pt_array_unit\\[117\\]} {pt_array_unit\[117\]} +{pt_array_unit\\[118\\]} {pt_array_unit\[118\]} +{pt_array_unit\\[119\\]} {pt_array_unit\[119\]} +{pt_array_unit\\[120\\]} {pt_array_unit\[120\]} +{pt_array_unit\\[121\\]} {pt_array_unit\[121\]} +{pt_array_unit\\[122\\]} {pt_array_unit\[122\]} +{pt_array_unit\\[123\\]} {pt_array_unit\[123\]} +{pt_array_unit\\[124\\]} {pt_array_unit\[124\]} +{pt_array_unit\\[125\\]} {pt_array_unit\[125\]} +{pt_array_unit\\[126\\]} {pt_array_unit\[126\]} +{pt_array_unit\\[127\\]} {pt_array_unit\[127\]} +{pt_array_unit\\[128\\]} {pt_array_unit\[128\]} +{pt_array_unit\\[129\\]} {pt_array_unit\[129\]} +{pt_array_unit\\[130\\]} {pt_array_unit\[130\]} +{pt_array_unit\\[131\\]} {pt_array_unit\[131\]} +{pt_array_unit\\[132\\]} {pt_array_unit\[132\]} +{pt_array_unit\\[133\\]} {pt_array_unit\[133\]} +{pt_array_unit\\[134\\]} {pt_array_unit\[134\]} +{pt_array_unit\\[135\\]} {pt_array_unit\[135\]} +{pt_array_unit\\[136\\]} {pt_array_unit\[136\]} +{pt_array_unit\\[137\\]} {pt_array_unit\[137\]} +{pt_array_unit\\[138\\]} {pt_array_unit\[138\]} +{pt_array_unit\\[139\\]} {pt_array_unit\[139\]} +{pt_array_unit\\[140\\]} {pt_array_unit\[140\]} +{pt_array_unit\\[141\\]} {pt_array_unit\[141\]} +{pt_array_unit\\[142\\]} {pt_array_unit\[142\]} +{pt_array_unit\\[143\\]} {pt_array_unit\[143\]} +{pt_array_unit\\[144\\]} {pt_array_unit\[144\]} +{pt_array_unit\\[145\\]} {pt_array_unit\[145\]} +{pt_array_unit\\[146\\]} {pt_array_unit\[146\]} +{pt_array_unit\\[147\\]} {pt_array_unit\[147\]} +{pt_array_unit\\[148\\]} {pt_array_unit\[148\]} +{pt_array_unit\\[149\\]} {pt_array_unit\[149\]} +{pt_array_unit\\[150\\]} {pt_array_unit\[150\]} +{pt_array_unit\\[151\\]} {pt_array_unit\[151\]} +{pt_array_unit\\[152\\]} {pt_array_unit\[152\]} +{pt_array_unit\\[153\\]} {pt_array_unit\[153\]} +{pt_array_unit\\[154\\]} {pt_array_unit\[154\]} +{pt_array_unit\\[155\\]} {pt_array_unit\[155\]} +{pt_array_unit\\[156\\]} {pt_array_unit\[156\]} +{pt_array_unit\\[157\\]} {pt_array_unit\[157\]} +{pt_array_unit\\[158\\]} {pt_array_unit\[158\]} +{pt_array_unit\\[159\\]} {pt_array_unit\[159\]} +{pt_array_unit\\[160\\]} {pt_array_unit\[160\]} +{pt_array_unit\\[161\\]} {pt_array_unit\[161\]} +{pt_array_unit\\[162\\]} {pt_array_unit\[162\]} +{pt_array_unit\\[163\\]} {pt_array_unit\[163\]} +{pt_array_unit\\[164\\]} {pt_array_unit\[164\]} +{pt_array_unit\\[165\\]} {pt_array_unit\[165\]} +{pt_array_unit\\[166\\]} {pt_array_unit\[166\]} +{pt_array_unit\\[167\\]} {pt_array_unit\[167\]} +{pt_array_unit\\[168\\]} {pt_array_unit\[168\]} +{pt_array_unit\\[169\\]} {pt_array_unit\[169\]} +{pt_array_unit\\[170\\]} {pt_array_unit\[170\]} +{pt_array_unit\\[171\\]} {pt_array_unit\[171\]} +{pt_array_unit\\[172\\]} {pt_array_unit\[172\]} +{pt_array_unit\\[173\\]} {pt_array_unit\[173\]} +{pt_array_unit\\[174\\]} {pt_array_unit\[174\]} +{pt_array_unit\\[175\\]} {pt_array_unit\[175\]} +{pt_array_unit\\[176\\]} {pt_array_unit\[176\]} +{pt_array_unit\\[177\\]} {pt_array_unit\[177\]} +{pt_array_unit\\[178\\]} {pt_array_unit\[178\]} +{pt_array_unit\\[179\\]} {pt_array_unit\[179\]} +{pt_array_unit\\[180\\]} {pt_array_unit\[180\]} +{pt_array_unit\\[181\\]} {pt_array_unit\[181\]} +{pt_array_unit\\[182\\]} {pt_array_unit\[182\]} +{pt_array_unit\\[183\\]} {pt_array_unit\[183\]} +{pt_array_unit\\[184\\]} {pt_array_unit\[184\]} +{pt_array_unit\\[185\\]} {pt_array_unit\[185\]} +{pt_array_unit\\[186\\]} {pt_array_unit\[186\]} +{pt_array_unit\\[187\\]} {pt_array_unit\[187\]} +{pt_array_unit\\[188\\]} {pt_array_unit\[188\]} +{pt_array_unit\\[189\\]} {pt_array_unit\[189\]} +{pt_array_unit\\[190\\]} {pt_array_unit\[190\]} +{pt_array_unit\\[191\\]} {pt_array_unit\[191\]} +{pt_array_unit\\[192\\]} {pt_array_unit\[192\]} +{pt_array_unit\\[193\\]} {pt_array_unit\[193\]} +{pt_array_unit\\[194\\]} {pt_array_unit\[194\]} +{pt_array_unit\\[195\\]} {pt_array_unit\[195\]} +{pt_array_unit\\[196\\]} {pt_array_unit\[196\]} +{pt_array_unit\\[197\\]} {pt_array_unit\[197\]} +{pt_array_unit\\[198\\]} {pt_array_unit\[198\]} +{pt_array_unit\\[199\\]} {pt_array_unit\[199\]} +{pt_array_unit\\[200\\]} {pt_array_unit\[200\]} +{pt_array_unit\\[201\\]} {pt_array_unit\[201\]} +{pt_array_unit\\[202\\]} {pt_array_unit\[202\]} +{pt_array_unit\\[203\\]} {pt_array_unit\[203\]} +{pt_array_unit\\[204\\]} {pt_array_unit\[204\]} +{pt_array_unit\\[205\\]} {pt_array_unit\[205\]} +{pt_array_unit\\[206\\]} {pt_array_unit\[206\]} +{pt_array_unit\\[207\\]} {pt_array_unit\[207\]} +{pt_array_unit\\[208\\]} {pt_array_unit\[208\]} +{pt_array_unit\\[209\\]} {pt_array_unit\[209\]} +{pt_array_unit\\[210\\]} {pt_array_unit\[210\]} +{pt_array_unit\\[211\\]} {pt_array_unit\[211\]} +{pt_array_unit\\[212\\]} {pt_array_unit\[212\]} +{pt_array_unit\\[213\\]} {pt_array_unit\[213\]} +{pt_array_unit\\[214\\]} {pt_array_unit\[214\]} +{pt_array_unit\\[215\\]} {pt_array_unit\[215\]} +{pt_array_unit\\[216\\]} {pt_array_unit\[216\]} +{pt_array_unit\\[217\\]} {pt_array_unit\[217\]} +{pt_array_unit\\[218\\]} {pt_array_unit\[218\]} +{pt_array_unit\\[219\\]} {pt_array_unit\[219\]} +{pt_array_unit\\[220\\]} {pt_array_unit\[220\]} +{pt_array_unit\\[221\\]} {pt_array_unit\[221\]} +{pt_array_unit\\[222\\]} {pt_array_unit\[222\]} +{pt_array_unit\\[223\\]} {pt_array_unit\[223\]} +{pt_array_unit\\[224\\]} {pt_array_unit\[224\]} +{pt_array_unit\\[225\\]} {pt_array_unit\[225\]} +{pt_array_unit\\[226\\]} {pt_array_unit\[226\]} +{pt_array_unit\\[227\\]} {pt_array_unit\[227\]} +{pt_array_unit\\[228\\]} {pt_array_unit\[228\]} +{pt_array_unit\\[229\\]} {pt_array_unit\[229\]} +{pt_array_unit\\[230\\]} {pt_array_unit\[230\]} +{pt_array_unit\\[231\\]} {pt_array_unit\[231\]} +{pt_array_unit\\[232\\]} {pt_array_unit\[232\]} +{pt_array_unit\\[233\\]} {pt_array_unit\[233\]} +{pt_array_unit\\[234\\]} {pt_array_unit\[234\]} +{pt_array_unit\\[235\\]} {pt_array_unit\[235\]} +{pt_array_unit\\[236\\]} {pt_array_unit\[236\]} +{pt_array_unit\\[237\\]} {pt_array_unit\[237\]} +{pt_array_unit\\[238\\]} {pt_array_unit\[238\]} +{pt_array_unit\\[239\\]} {pt_array_unit\[239\]} +{pt_array_unit\\[240\\]} {pt_array_unit\[240\]} +{pt_array_unit\\[241\\]} {pt_array_unit\[241\]} +{pt_array_unit\\[242\\]} {pt_array_unit\[242\]} +{pt_array_unit\\[243\\]} {pt_array_unit\[243\]} +{pt_array_unit\\[244\\]} {pt_array_unit\[244\]} +{pt_array_unit\\[245\\]} {pt_array_unit\[245\]} +{pt_array_unit\\[246\\]} {pt_array_unit\[246\]} +{pt_array_unit\\[247\\]} {pt_array_unit\[247\]} +{pt_array_unit\\[248\\]} {pt_array_unit\[248\]} +{pt_array_unit\\[249\\]} {pt_array_unit\[249\]} +{pt_array_unit\\[250\\]} {pt_array_unit\[250\]} +{pt_array_unit\\[251\\]} {pt_array_unit\[251\]} +{pt_array_unit\\[252\\]} {pt_array_unit\[252\]} +{pt_array_unit\\[253\\]} {pt_array_unit\[253\]} +{pt_array_unit\\[254\\]} {pt_array_unit\[254\]} +{pt_array_unit\\[255\\]} {pt_array_unit\[255\]} +{pt_array_unit\\[256\\]} {pt_array_unit\[256\]} +{pt_array_unit\\[257\\]} {pt_array_unit\[257\]} +{pt_array_unit\\[258\\]} {pt_array_unit\[258\]} +{pt_array_unit\\[259\\]} {pt_array_unit\[259\]} +{pt_array_unit\\[260\\]} {pt_array_unit\[260\]} +{pt_array_unit\\[261\\]} {pt_array_unit\[261\]} +{pt_array_unit\\[262\\]} {pt_array_unit\[262\]} From d001629c5664bb5b816157e3992e36fe559d502d Mon Sep 17 00:00:00 2001 From: chetanyagoyal Date: Thu, 9 Nov 2023 09:49:24 +0530 Subject: [PATCH 28/51] add missing cryo library check in .github/scripts --- .github/scripts/parse_rpt.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index e2951b139..fac59b6b5 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -7,9 +7,12 @@ sys.stdout.flush() -if (len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo"): - drc_filename = "flow/reports/sky130hd/cryo/6_final_drc.rpt" - lvs_filename = "flow/reports/sky130hd/cyro/6_final_lvs.rpt" +dir_path = r'flow/reports' +lib = os.listdir(dir_path) + +if (len(sys.argv) > 1) and (sys.argv[1] == str(lib[0])): + drc_filename = "flow/reports/" + sys.argv[1] + "/cryo/6_final_drc.rpt" + lvs_filename = "flow/reports/" + sys.argv[1] + "/cryo/6_final_lvs.rpt" elif (len(sys.argv) == 1) or (sys.argv[1] == "sky130hvl_ldo"): drc_filename = "work/6_final_drc.rpt" lvs_filename = "work/6_final_lvs.rpt" @@ -17,8 +20,7 @@ drc_filename = "work/"+sys.argv[1]+"/6_final_drc.rpt" lvs_filename = "work/"+sys.argv[1]+"/6_final_lvs.rpt" -# using full because sims disabled for LDO for now -if (len(sys.argv) > 1) and ((sys.argv[1] == "sky130hvl_ldo") or (sys.argv[1] == "sky130hvl_ldo_full")): +if (len(sys.argv) > 1) and (sys.argv[1] == "sky130hvl_ldo"): with open(drc_filename, 'r') as f1, open("../../../.github/scripts/expected_drc_reports/expected_ldo_drc.rpt", 'r') as f2: content1 = f1.readlines() content2 = f2.readlines() @@ -32,7 +34,7 @@ print("DRC is clean!") # cryo LVS check -if (len(sys.argv) > 1) and (sys.argv[1] == "sky130hd_cryo"): +if (len(sys.argv) > 1) and (sys.argv[1] == str(lib[0])): lvs_line = subprocess.check_output(["tail", "-1", lvs_filename]).decode( sys.stdout.encoding ) From d98a878fd1b671082ddbb303b1fb220bf78f139b Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Thu, 9 Nov 2023 10:25:30 +0530 Subject: [PATCH 29/51] Add ngspice installation commands --- docker/conda/Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docker/conda/Dockerfile b/docker/conda/Dockerfile index 89a8eb8ad..ef0042161 100755 --- a/docker/conda/Dockerfile +++ b/docker/conda/Dockerfile @@ -29,3 +29,7 @@ RUN dpkg -i klayout_0.28.12-1_amd64.deb RUN strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 COPY ./scripts /scripts + +RUN git clone http://git.code.sf.net/p/ngspice/ngspice && \ + cd ngspice && \ + ./compile_linux.sh From f7a15ab277990ddf6ca626621aaac1908c6997f4 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Thu, 9 Nov 2023 18:10:12 +0530 Subject: [PATCH 30/51] Update packages.txt to include ngspice reqs --- docker/conda/packages.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docker/conda/packages.txt b/docker/conda/packages.txt index 04d7597fc..a55890efb 100644 --- a/docker/conda/packages.txt +++ b/docker/conda/packages.txt @@ -17,3 +17,9 @@ libz-dev build-essential time git +bison +flex +libX11-devel +libX11 +libXaw-devel +readline-devel From c2ed4c1863ec56cce2310e1363094b3d360d691f Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Thu, 9 Nov 2023 18:11:38 +0530 Subject: [PATCH 31/51] Update packages.txt --- docker/conda/packages.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/conda/packages.txt b/docker/conda/packages.txt index a55890efb..bfe190315 100644 --- a/docker/conda/packages.txt +++ b/docker/conda/packages.txt @@ -19,7 +19,7 @@ time git bison flex -libX11-devel -libX11 -libXaw-devel -readline-devel +libx11-dev +libx11-6 +libxaw7-dev +libreadline6-dev From 784936de7f2de89ee6ffb1b7f99b03e4260e90a2 Mon Sep 17 00:00:00 2001 From: openfasoc-bot Date: Sat, 11 Nov 2023 02:36:11 +0000 Subject: [PATCH 32/51] [BOT] Update dependencies successful version records in the repository --- README.rst | 2 +- conda_versions.txt | 2 +- versions.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 80fb1f935..8bfec4c91 100644 --- a/README.rst +++ b/README.rst @@ -46,7 +46,7 @@ For more info on getting-started, please refer to ["Getting Started" section ](h Below are the tool requirements along with their currently support versions that are updated regularly upon testing againsts the generators. - 1. `Magic `_ (version:8.3.445) + 1. `Magic `_ (version:8.3.446) 2. `Netgen `_ (version:1.5.262) diff --git a/conda_versions.txt b/conda_versions.txt index dae601a24..f4c13cfac 100644 --- a/conda_versions.txt +++ b/conda_versions.txt @@ -1,4 +1,4 @@ -magic==8.3.445_0_g8445f3e +magic==8.3.445_3_g7db77d4 netgen==1.5.262_0_gc1ed4ce open_pdks.sky130a==1.0.286_0_g52af776 openroad==2.0_10905_ge89829335 diff --git a/versions.txt b/versions.txt index 18bc77c62..93be99a12 100644 --- a/versions.txt +++ b/versions.txt @@ -1,6 +1,6 @@ klayout - 0.28.12-1 OpenROAD - 2.0_10905 yosys - 0.35+7 -magic - 8.3.445 +magic - 8.3.446 netgen - 1.5.262 open_pdks - 1.0.286 From bddf4750e472ac2ebefa2f22015bd62ec7cb621d Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 15:13:48 +0530 Subject: [PATCH 33/51] Remove block comment for file check --- .../generators/PMU-gen/tools/parse_rpt.py | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/openfasoc/generators/PMU-gen/tools/parse_rpt.py b/openfasoc/generators/PMU-gen/tools/parse_rpt.py index 8b35c1b86..1eb96c06e 100755 --- a/openfasoc/generators/PMU-gen/tools/parse_rpt.py +++ b/openfasoc/generators/PMU-gen/tools/parse_rpt.py @@ -22,26 +22,4 @@ raise ValueError("LVS failed!") else: print("LVS is clean!") - -# with open('test.json', 'r') as file: -# data = json.load(file) -# print('Found .json config file...') - -# module_name = data.get("module_name", "default") - -# work_dir = "./work/" - -# if (os.path.exists(work_dir) == 0): -# raise ValueError("work directory does not exist!") -# else: -# filename = work_dir + module_name -# for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): -# if (os.path.exists(file) == 0): -# raise ValueError(file + " does not exist!") -# print("Found necessary work result files!") - -# for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): -# if os.path.exists(file) == 0: -# raise ValueError(file + " does not exist!") -# print("Found generated .csv files!") print("Generator check is clean!") From 2174b3da5f5350bb5a0f5cbd41626a91d0a3ab7e Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 15:14:35 +0530 Subject: [PATCH 34/51] Remove block comment for file check --- .../generators/dcdc-gen/tools/parse_rpt.py | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/openfasoc/generators/dcdc-gen/tools/parse_rpt.py b/openfasoc/generators/dcdc-gen/tools/parse_rpt.py index acec41c6e..1eb96c06e 100755 --- a/openfasoc/generators/dcdc-gen/tools/parse_rpt.py +++ b/openfasoc/generators/dcdc-gen/tools/parse_rpt.py @@ -22,27 +22,4 @@ raise ValueError("LVS failed!") else: print("LVS is clean!") - -# with open('test.json', 'r') as file: -# data = json.load(file) -# print('Found .json config file...') - -# module_name = data.get("module_name", "default") - -# work_dir = "./work/" - -# if (os.path.exists(work_dir) == 0): -# raise ValueError("work directory does not exist!") -# else: -# filename = work_dir + module_name -# for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): -# if (os.path.exists(file) == 0): -# raise ValueError(file + " does not exist!") -# print("Found necessary work result files!") - -# for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): -# if os.path.exists(file) == 0: -# raise ValueError(file + " does not exist!") -# print("Found generated .csv files!") - print("Generator check is clean!") From a5a99632376bcddd65003e994726bab49f0e9ef1 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 15:15:35 +0530 Subject: [PATCH 35/51] Remove block comment for file check --- .../generators/scpa-gen/tools/parse_rpt.py | 36 ------------------- 1 file changed, 36 deletions(-) diff --git a/openfasoc/generators/scpa-gen/tools/parse_rpt.py b/openfasoc/generators/scpa-gen/tools/parse_rpt.py index a0d911277..31f20ff03 100644 --- a/openfasoc/generators/scpa-gen/tools/parse_rpt.py +++ b/openfasoc/generators/scpa-gen/tools/parse_rpt.py @@ -6,40 +6,4 @@ else: print("DRC is clean!") - -# LVS Bypassed - -# lvs_filename = "flow/reports/sky130hd/tempsense/6_final_lvs.rpt" -# lvs_line = subprocess.check_output(['tail', '-1', lvs_filename]).decode(sys.stdout.encoding) - -# regex = r"failed" -# match = re.search(regex, lvs_line) - -# if match != None: -# raise ValueError("LVS failed!") -# else: -# print("LVS is clean!") - -# with open('test.json', 'r') as file: -# data = json.load(file) -# print('Found .json config file...') - -# module_name = data.get("module_name", "default") - -# work_dir = "./work/" - -# if (os.path.exists(work_dir) == 0): -# raise ValueError("work directory does not exist!") -# else: -# filename = work_dir + module_name -# for file in (filename + ".gds", filename + ".spice", filename + ".v", filename + ".def", filename + "_pex.spice", filename + ".sdc"): -# if (os.path.exists(file) == 0): -# raise ValueError(file + " does not exist!") -# print("Found necessary work result files!") - -# for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): -# if os.path.exists(file) == 0: -# raise ValueError(file + " does not exist!") -# print("Found generated .csv files!") - print("Generator check is clean!") From 889a4aa1e70353886e34d0ab43e2d20e47ee3cf9 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 15:17:30 +0530 Subject: [PATCH 36/51] update file_paths to follow convention --- openfasoc/generators/temp-sense-gen/tools/parse_rpt.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py b/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py index dbe536754..d0c40630c 100644 --- a/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py +++ b/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py @@ -3,7 +3,7 @@ sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..')) from common.check_gen_files import check_gen_files -drc_filename = "flow/reports/sky130hd/tempsense/6_final_drc.rpt" +drc_filename = "work/6_final_drc.rpt" num_lines = sum(1 for line in open(drc_filename)) if num_lines > 3: @@ -12,7 +12,7 @@ print("DRC is clean!") -lvs_filename = "flow/reports/sky130hd/tempsense/6_final_lvs.rpt" +lvs_filename = "work/6_final_lvs.rpt" with open(lvs_filename) as f: f1 = f.read() @@ -27,4 +27,4 @@ if check_gen_files(json_filename, (len(sys.argv) == 1)): print("Flow check is clean!") else: - print("Flow check failed!") \ No newline at end of file + print("Flow check failed!") From 2f64d4c6341fec150e83bb8e09d30e34fda60523 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 15:23:52 +0530 Subject: [PATCH 37/51] Remove redundant if statement --- .github/scripts/parse_rpt.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index fac59b6b5..5c12e27cb 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -10,10 +10,7 @@ dir_path = r'flow/reports' lib = os.listdir(dir_path) -if (len(sys.argv) > 1) and (sys.argv[1] == str(lib[0])): - drc_filename = "flow/reports/" + sys.argv[1] + "/cryo/6_final_drc.rpt" - lvs_filename = "flow/reports/" + sys.argv[1] + "/cryo/6_final_lvs.rpt" -elif (len(sys.argv) == 1) or (sys.argv[1] == "sky130hvl_ldo"): +if (len(sys.argv) == 1) or (sys.argv[1] == "sky130hvl_ldo"): drc_filename = "work/6_final_drc.rpt" lvs_filename = "work/6_final_lvs.rpt" else: @@ -59,4 +56,4 @@ if check_gen_files(json_filename, (len(sys.argv) == 1)): print("Flow check is clean!") else: - print("Flow check failed!") \ No newline at end of file + print("Flow check failed!") From b9cdbd97cbbeed844cd9deef263d5da7c76b3ef0 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 15:54:36 +0530 Subject: [PATCH 38/51] Update if statements to set lvs and drc filenames --- .github/scripts/parse_rpt.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index 5c12e27cb..866c93416 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -11,11 +11,13 @@ lib = os.listdir(dir_path) if (len(sys.argv) == 1) or (sys.argv[1] == "sky130hvl_ldo"): + # temp-sense-gen and ldo-gen drc_filename = "work/6_final_drc.rpt" lvs_filename = "work/6_final_lvs.rpt" -else: - drc_filename = "work/"+sys.argv[1]+"/6_final_drc.rpt" - lvs_filename = "work/"+sys.argv[1]+"/6_final_lvs.rpt" +elif (len(sys.argv) > 1) and (sys.argv[1] == str(lib[0]): + # cryo + drc_filename = "flow/reports/" + sys.argv[1] + "/cryo/6_final_drc.rpt" + lvs_filename = "flow/reports/" + sys.argv[1] + "/cryo/6_final_lvs.rpt" if (len(sys.argv) > 1) and (sys.argv[1] == "sky130hvl_ldo"): with open(drc_filename, 'r') as f1, open("../../../.github/scripts/expected_drc_reports/expected_ldo_drc.rpt", 'r') as f2: From bb6c48368b6817d0bbeee844816868d937cb94b1 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 16:03:08 +0530 Subject: [PATCH 39/51] Update parse_rpt.py --- .github/scripts/parse_rpt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index 866c93416..28c994da9 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -14,7 +14,7 @@ # temp-sense-gen and ldo-gen drc_filename = "work/6_final_drc.rpt" lvs_filename = "work/6_final_lvs.rpt" -elif (len(sys.argv) > 1) and (sys.argv[1] == str(lib[0]): +elif (len(sys.argv) > 1) and (sys.argv[1] == str(lib[0])): # cryo drc_filename = "flow/reports/" + sys.argv[1] + "/cryo/6_final_drc.rpt" lvs_filename = "flow/reports/" + sys.argv[1] + "/cryo/6_final_lvs.rpt" From ba5674ca25195b10bb5b6d8560efb0f8fdb7e70d Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 19:04:50 +0530 Subject: [PATCH 40/51] Make all updates for modularity --- openfasoc/generators/cryo-gen/tools/parse_rpt.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/openfasoc/generators/cryo-gen/tools/parse_rpt.py b/openfasoc/generators/cryo-gen/tools/parse_rpt.py index 4c27870f4..e05f6bc06 100644 --- a/openfasoc/generators/cryo-gen/tools/parse_rpt.py +++ b/openfasoc/generators/cryo-gen/tools/parse_rpt.py @@ -5,10 +5,17 @@ sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..')) from common.check_gen_files import check_gen_files +_generator_is = { + 'sky130hvl_ldo': 0, + 'sky130hd_temp': 0, + 'sky130XX_cryo': 1 +} + dir_path = r'flow/reports' lib = os.listdir(dir_path) +cryo_library = str(lib[0]) -drc_filename = "flow/reports/" + str(lib[0]) + "/cryo/6_final_drc.rpt" +drc_filename = "flow/reports/" + cryo_library + "/cryo/6_final_drc.rpt" num_lines = sum(1 for line in open(drc_filename)) if num_lines > 3: @@ -16,7 +23,7 @@ else: print("DRC is clean!") -lvs_filename = "flow/reports/" + str(lib[0]) + "/cryo/6_final_lvs.rpt" +lvs_filename = "flow/reports/" + cryo_library + "/cryo/6_final_lvs.rpt" lvs_line = subprocess.check_output(["tail", "-1", lvs_filename]).decode( sys.stdout.encoding ) @@ -31,7 +38,7 @@ json_filename = "test.json" -if check_gen_files(json_filename, (len(sys.argv) == 1)): +if check_gen_files(json_filename, _generator_is, cryo_library): print("Flow check is clean!") else: - print("Flow check failed!") \ No newline at end of file + print("Flow check failed!") From 2e9b5adbe7ea97ca0180cc25a29b0c75113abe2b Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 19:05:01 +0530 Subject: [PATCH 41/51] make all updates for modularity --- openfasoc/generators/temp-sense-gen/tools/parse_rpt.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py b/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py index d0c40630c..b574d3c77 100644 --- a/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py +++ b/openfasoc/generators/temp-sense-gen/tools/parse_rpt.py @@ -3,6 +3,12 @@ sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..')) from common.check_gen_files import check_gen_files +_generator_is = { + 'sky130hvl_ldo': 0, + 'sky130hd_temp': 1, + 'sky130XX_cryo': 0 +} + drc_filename = "work/6_final_drc.rpt" num_lines = sum(1 for line in open(drc_filename)) @@ -24,7 +30,7 @@ json_filename = "test.json" -if check_gen_files(json_filename, (len(sys.argv) == 1)): +if check_gen_files(json_filename, _generator_is, " "): print("Flow check is clean!") else: print("Flow check failed!") From 8ce7a994329bd34b1bb7899905af1bf787d9432c Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 19:05:32 +0530 Subject: [PATCH 42/51] make updates for modularity and add difference in workdir for cryo --- openfasoc/generators/common/check_gen_files.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/openfasoc/generators/common/check_gen_files.py b/openfasoc/generators/common/check_gen_files.py index 53248e517..3d255332f 100644 --- a/openfasoc/generators/common/check_gen_files.py +++ b/openfasoc/generators/common/check_gen_files.py @@ -1,7 +1,7 @@ import json import os -def check_gen_files(json_filename, is_tempsense) -> int: +def check_gen_files(json_filename, _generator_is, cryo_library) -> int: with open(json_filename) as file: data = json.load(file) @@ -9,7 +9,10 @@ def check_gen_files(json_filename, is_tempsense) -> int: module_name = data.get("module_name", "default") - work_dir = "./work/" + if _generator_is['sky130XX_cryo']: + work_dir = "./work/" + cryo_library + "/" + else: + work_dir = "./work/" if (os.path.exists(work_dir) == 0): raise ValueError("work directory does not exist!") @@ -33,7 +36,7 @@ def check_gen_files(json_filename, is_tempsense) -> int: if (os.path.exists(file) == 0): raise ValueError(file + " does not exist!") # print("Found necessary work result files!") - if (is_tempsense): + if _generator_is['sky130hd_temp']: for file in ("error_within_x.csv", "golden_error_opt.csv", "search_result.csv"): if os.path.exists(file) == 0: raise ValueError(file + " does not exist!") From 8ac2a58e31529674bde9fd2b25be24838e1f8d23 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 19:09:11 +0530 Subject: [PATCH 43/51] Modularise code and make the if-else conditions easier to read --- .github/scripts/parse_rpt.py | 68 ++++++++++++++++++++++++++++++------ 1 file changed, 58 insertions(+), 10 deletions(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index 28c994da9..32ef92494 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -1,3 +1,31 @@ +########################################################################################################### +## 1. DRC and LVS Filename Declaration - ## +## This section declares the possible DRC and LVS filenames for the different generators ## +## The if condition checks for sky130hd_temp and sky130hvl_ldo, and the elif condition ## +## checks for the various possible cryo libraries (sky130hd_cryo, sky130hs_cryo, sky130hvl_cryo) ## +## ## +## 2. DRC Check - ## +## The if condition checks if the content in the generated DRC report file matches the template ## +## report DRC report file stored in .github/scripts/expected_drc_reports/ . ## +## The else condition checks if the number of lines in the DRC report files for the temp-sense- ## +## gen and cryo-gen is greater than 3 (which is the case if there is a non-zero number of errors ## +## in the make process ## +## ## +## 3. LVS Check - ## +## The if condition checks if the LVS report generated by the cryo-gen make has the word 'failed' ## +## in the last line (throws an error if yes). ## +## The else condition carries out a search for the word 'failed' in the LVS reports for ldo-gen ## +## and temp-sense-gen and raises a valueError if found. ## +## ## +## 4. Result File Check - ## +## This section calls the check_gen_files() function in generators/common/check_gen_files.py ## +## script. This function checks if the various files (.v, .sdc, .cdl, .sp, .spice, etc) have been ## +## generated for the required generators. ## +## Takes input parameters as the test.json filename, the dictionary of possible generators, and ## +## the cryo_library ## +########################################################################################################### + + import sys import json import os @@ -7,20 +35,38 @@ sys.stdout.flush() +_generator_is = { + 'sky130hvl_ldo': 0, + 'sky130hd_temp': 0, + 'sky130XX_cryo': 0 +} + +if len(sys.argv) == 1: + _generator_is['sky130hd_temp'] = 1 +elif len(sys.argv) > 1: + if sys.argv[1] == 'sky130hvl_ldo': + _generator_is['sky130hvl_ldo'] = 1 + else: + _generator_is['sky13XX_cryo'] = 1 + +# check which cryo-gen library's check is possibly being run dir_path = r'flow/reports' lib = os.listdir(dir_path) +cryo_library = str(lib[0]) -if (len(sys.argv) == 1) or (sys.argv[1] == "sky130hvl_ldo"): - # temp-sense-gen and ldo-gen +## DRC and LVS Filename Declaration +if _generator_is['sky130hd_temp'] or _generator_is['sky130hvl_ldo']: drc_filename = "work/6_final_drc.rpt" lvs_filename = "work/6_final_lvs.rpt" -elif (len(sys.argv) > 1) and (sys.argv[1] == str(lib[0])): - # cryo +elif _generator_is['sky130XX_cryo'] and (sys.argv[1] == cryo_library): drc_filename = "flow/reports/" + sys.argv[1] + "/cryo/6_final_drc.rpt" lvs_filename = "flow/reports/" + sys.argv[1] + "/cryo/6_final_lvs.rpt" -if (len(sys.argv) > 1) and (sys.argv[1] == "sky130hvl_ldo"): - with open(drc_filename, 'r') as f1, open("../../../.github/scripts/expected_drc_reports/expected_ldo_drc.rpt", 'r') as f2: + +## DRC check +if _generator_is['sky130hvl_ldo']: + expected_ldo_rpt_filename = "../../../.github/scripts/expected_drc_reports/expected_ldo_drc.rpt" + with open(drc_filename) as f1, open(expected_ldo_rpt_filename) as f2: content1 = f1.readlines() content2 = f2.readlines() if content1 == content2: @@ -32,8 +78,9 @@ else: print("DRC is clean!") -# cryo LVS check -if (len(sys.argv) > 1) and (sys.argv[1] == str(lib[0])): + +## LVS Check +if _generator_is['sky130XX_cryo'] and (sys.argv[1] == cryo_library): lvs_line = subprocess.check_output(["tail", "-1", lvs_filename]).decode( sys.stdout.encoding ) @@ -44,7 +91,7 @@ raise ValueError("LVS failed!") else: print("LVS is clean!") -else: +else: with open(lvs_filename) as f: f1 = f.read() @@ -53,9 +100,10 @@ else: print("LVS is clean!") +## Result File Check json_filename = "test.json" -if check_gen_files(json_filename, (len(sys.argv) == 1)): +if check_gen_files(json_filename, _generator_is, cryo_library): print("Flow check is clean!") else: print("Flow check failed!") From 93c824fbc2d32cc79f5c3cb6f8a03f2f6db00773 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 19:20:14 +0530 Subject: [PATCH 44/51] Update documentation --- .github/scripts/parse_rpt.py | 76 ++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index 32ef92494..06a14c3dc 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -1,29 +1,38 @@ -########################################################################################################### -## 1. DRC and LVS Filename Declaration - ## -## This section declares the possible DRC and LVS filenames for the different generators ## -## The if condition checks for sky130hd_temp and sky130hvl_ldo, and the elif condition ## -## checks for the various possible cryo libraries (sky130hd_cryo, sky130hs_cryo, sky130hvl_cryo) ## -## ## -## 2. DRC Check - ## -## The if condition checks if the content in the generated DRC report file matches the template ## -## report DRC report file stored in .github/scripts/expected_drc_reports/ . ## -## The else condition checks if the number of lines in the DRC report files for the temp-sense- ## -## gen and cryo-gen is greater than 3 (which is the case if there is a non-zero number of errors ## -## in the make process ## -## ## -## 3. LVS Check - ## -## The if condition checks if the LVS report generated by the cryo-gen make has the word 'failed' ## -## in the last line (throws an error if yes). ## -## The else condition carries out a search for the word 'failed' in the LVS reports for ldo-gen ## -## and temp-sense-gen and raises a valueError if found. ## -## ## -## 4. Result File Check - ## -## This section calls the check_gen_files() function in generators/common/check_gen_files.py ## -## script. This function checks if the various files (.v, .sdc, .cdl, .sp, .spice, etc) have been ## -## generated for the required generators. ## -## Takes input parameters as the test.json filename, the dictionary of possible generators, and ## -## the cryo_library ## -########################################################################################################### +############################################################################################################ +## ## +## The _generator_is variable is a dictionary of keys and value that has information about which ## +## workflow is being run. The values for each keys are decided based on how this script is called ## +## by the .yml files in .github/workflows ## +## ## +## The cryo_library variable is used to ascertain which library (sky130hd_cryo, sky130hs_cryo, ## +## sky130hvl_cryo) workflow is being run ## +## ## +## 1. DRC and LVS Filename Declaration - ## +## This section declares the possible DRC and LVS filenames for the different generators ## +## The if condition checks for sky130hd_temp and sky130hvl_ldo, and the elif condition ## +## checks for the various possible cryo libraries ## +## ## +## 2. DRC Check - ## +## The if condition checks if the content in the generated DRC report file matches the template ## +## report DRC report file stored in .github/scripts/expected_drc_reports/ . ## +## The else condition checks if the number of lines in the DRC report files for the temp-sense- ## +## gen and cryo-gen is greater than 3 (which is the case if there is a non-zero number of errors ## +## in the make process ## +## ## +## 3. LVS Check - ## +## The if condition checks if the LVS report generated by the cryo-gen make has the word 'failed' ## +## in the last line (throws an error if yes). ## +## The else condition carries out a search for the word 'failed' in the LVS reports for ldo-gen ## +## and temp-sense-gen and raises a valueError if found. ## +## ## +## 4. Result File Check - ## +## This section calls the check_gen_files() function in generators/common/check_gen_files.py ## +## script. This function checks if the various files (.v, .sdc, .cdl, .sp, .spice, etc) have been ## +## generated for the required generators. ## +## Takes input parameters as the test.json filename, the dictionary of possible generators, and ## +## the cryo_library ## +## ## +############################################################################################################ import sys @@ -47,18 +56,19 @@ if sys.argv[1] == 'sky130hvl_ldo': _generator_is['sky130hvl_ldo'] = 1 else: - _generator_is['sky13XX_cryo'] = 1 + _generator_is['sky130XX_cryo'] = 1 -# check which cryo-gen library's check is possibly being run -dir_path = r'flow/reports' -lib = os.listdir(dir_path) -cryo_library = str(lib[0]) +if _generator_is['sky130XX_cryo']: + # check which cryo-gen library's workflow is being run + dir_path = r'flow/reports' + lib = os.listdir(dir_path) + cryo_library = str(lib[0]) ## DRC and LVS Filename Declaration if _generator_is['sky130hd_temp'] or _generator_is['sky130hvl_ldo']: drc_filename = "work/6_final_drc.rpt" lvs_filename = "work/6_final_lvs.rpt" -elif _generator_is['sky130XX_cryo'] and (sys.argv[1] == cryo_library): +elif sys.argv[1] == cryo_library: drc_filename = "flow/reports/" + sys.argv[1] + "/cryo/6_final_drc.rpt" lvs_filename = "flow/reports/" + sys.argv[1] + "/cryo/6_final_lvs.rpt" @@ -80,7 +90,7 @@ ## LVS Check -if _generator_is['sky130XX_cryo'] and (sys.argv[1] == cryo_library): +if sys.argv[1] == cryo_library: lvs_line = subprocess.check_output(["tail", "-1", lvs_filename]).decode( sys.stdout.encoding ) From 837a9246eb6a7b54187558baefdb8f1fbb35a984 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 19:27:05 +0530 Subject: [PATCH 45/51] Convert documentation to google docstring format --- .github/scripts/parse_rpt.py | 59 +++++++++++++++--------------------- 1 file changed, 24 insertions(+), 35 deletions(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index 06a14c3dc..3f4939938 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -1,39 +1,28 @@ -############################################################################################################ -## ## -## The _generator_is variable is a dictionary of keys and value that has information about which ## -## workflow is being run. The values for each keys are decided based on how this script is called ## -## by the .yml files in .github/workflows ## -## ## -## The cryo_library variable is used to ascertain which library (sky130hd_cryo, sky130hs_cryo, ## -## sky130hvl_cryo) workflow is being run ## -## ## -## 1. DRC and LVS Filename Declaration - ## -## This section declares the possible DRC and LVS filenames for the different generators ## -## The if condition checks for sky130hd_temp and sky130hvl_ldo, and the elif condition ## -## checks for the various possible cryo libraries ## -## ## -## 2. DRC Check - ## -## The if condition checks if the content in the generated DRC report file matches the template ## -## report DRC report file stored in .github/scripts/expected_drc_reports/ . ## -## The else condition checks if the number of lines in the DRC report files for the temp-sense- ## -## gen and cryo-gen is greater than 3 (which is the case if there is a non-zero number of errors ## -## in the make process ## -## ## -## 3. LVS Check - ## -## The if condition checks if the LVS report generated by the cryo-gen make has the word 'failed' ## -## in the last line (throws an error if yes). ## -## The else condition carries out a search for the word 'failed' in the LVS reports for ldo-gen ## -## and temp-sense-gen and raises a valueError if found. ## -## ## -## 4. Result File Check - ## -## This section calls the check_gen_files() function in generators/common/check_gen_files.py ## -## script. This function checks if the various files (.v, .sdc, .cdl, .sp, .spice, etc) have been ## -## generated for the required generators. ## -## Takes input parameters as the test.json filename, the dictionary of possible generators, and ## -## the cryo_library ## -## ## -############################################################################################################ +""" +This script performs checks on generated files and reports for different generators based on workflow parameters. +The `_generator_is` variable is a dictionary with keys and values indicating information about the workflow being run. +Values for each key are determined by how this script is called by the .yml files in .github/workflows. + +The `cryo_library` variable is used to determine which library (sky130hd_cryo, sky130hs_cryo, sky130hvl_cryo) the workflow is targeting. + +1. DRC and LVS Filename Declaration: + This section declares possible DRC and LVS filenames for different generators. + The first condition checks for sky130hd_temp and sky130hvl_ldo, while the elif condition checks for various cryo libraries. + +2. DRC Check: + - Checks if the content in the generated DRC report file matches the template DRC report file stored in .github/scripts/expected_drc_reports/. + - If the number of lines in the DRC report files for temp-sense-gen and cryo-gen is greater than 3, it indicates non-zero errors in the make process. + +3. LVS Check: + - Checks if the LVS report generated by the cryo-gen make has the word 'failed' in the last line, raising an error if found. + - Conducts a search for the word 'failed' in the LVS reports for ldo-gen and temp-sense-gen, raising a ValueError if found. + +4. Result File Check: + - Calls the check_gen_files() function from generators/common/check_gen_files.py. + - Checks if various files (.v, .sdc, .cdl, .sp, .spice, etc.) have been generated for the required generators. + - Takes input parameters: the test.json filename, the dictionary of possible generators, and the cryo_library. +""" import sys import json From 91bb365efc7f8c304a7532719b9d7ebf811c24dc Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 19:42:04 +0530 Subject: [PATCH 46/51] Add documentation --- .../generators/common/check_gen_files.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/openfasoc/generators/common/check_gen_files.py b/openfasoc/generators/common/check_gen_files.py index 3d255332f..9673c5f14 100644 --- a/openfasoc/generators/common/check_gen_files.py +++ b/openfasoc/generators/common/check_gen_files.py @@ -1,3 +1,22 @@ +""" +This script is used to check for the presence of the required non-report files that each generator creates. It gets +the module_name (str) from the .json file present in the generator top-level folder. + +Args: + json_filename (str): String containing the name of the .json filename for each generator + _generator_is (dict): Dictionary containing key-value pairs that signify which generator's flow results are being checked + cryo_library (str): String containing which cryo-gen library (sky130hs, sky130hd, sky130hvl) is being checked for +Uses: + work_dir (str): String containing the directory in which to check files + data (str): String containing data from the .json file + module_name (str): String containing the name of module that the check is being done for (eg. tempsenseInst_error) + extension_file_path (str): Contains the extensions of the files which each generator produces for the flows +Returns: + 1: if all checks are successful +Raises: + ValueError: If any of the various checks go wrong (.csv file checks for temp-sense, flow generated files for all generators) +""" + import json import os From 6431f344d9bc4a45ed9954423f97a20fef99d62b Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 19:43:31 +0530 Subject: [PATCH 47/51] Finalise --- .github/scripts/parse_rpt.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index 3f4939938..38f4d7a15 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -100,7 +100,10 @@ print("LVS is clean!") ## Result File Check -json_filename = "test.json" +if _generator_is['sky130hvl_ldo']: + json_filename = "spec.json" +else: + json_filename = "test.json" if check_gen_files(json_filename, _generator_is, cryo_library): print("Flow check is clean!") From f31097ce9deb0a87cf2d71e1d58d901b2b4172f0 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 19:49:52 +0530 Subject: [PATCH 48/51] Fix index error --- .github/scripts/parse_rpt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index 38f4d7a15..15bf05c30 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -57,7 +57,7 @@ if _generator_is['sky130hd_temp'] or _generator_is['sky130hvl_ldo']: drc_filename = "work/6_final_drc.rpt" lvs_filename = "work/6_final_lvs.rpt" -elif sys.argv[1] == cryo_library: +elif len(sys.argv) > 1 and sys.argv[1] == cryo_library: drc_filename = "flow/reports/" + sys.argv[1] + "/cryo/6_final_drc.rpt" lvs_filename = "flow/reports/" + sys.argv[1] + "/cryo/6_final_lvs.rpt" @@ -79,7 +79,7 @@ ## LVS Check -if sys.argv[1] == cryo_library: +if len(sys.argv) > 1 and sys.argv[1] == cryo_library: lvs_line = subprocess.check_output(["tail", "-1", lvs_filename]).decode( sys.stdout.encoding ) From 2b90e9ed4dfbf63653d7ded9dff30f65644f2963 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 19:55:01 +0530 Subject: [PATCH 49/51] Update parse_rpt.py --- .github/scripts/parse_rpt.py | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/scripts/parse_rpt.py b/.github/scripts/parse_rpt.py index 15bf05c30..5ae66f197 100644 --- a/.github/scripts/parse_rpt.py +++ b/.github/scripts/parse_rpt.py @@ -33,6 +33,7 @@ sys.stdout.flush() +cryo_library = "" _generator_is = { 'sky130hvl_ldo': 0, 'sky130hd_temp': 0, From 300fe8e2e8f85c66ac0b275791e09f822ff96af3 Mon Sep 17 00:00:00 2001 From: Chetanya <95761876+chetanyagoyal@users.noreply.github.com> Date: Sat, 11 Nov 2023 20:35:36 +0530 Subject: [PATCH 50/51] remove ngspice from conda packages --- docker/conda/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/docker/conda/Dockerfile b/docker/conda/Dockerfile index ef0042161..604ed4910 100755 --- a/docker/conda/Dockerfile +++ b/docker/conda/Dockerfile @@ -17,7 +17,6 @@ RUN conda install python=3.10 \ magic \ netgen \ openroad \ - ngspice \ -c litex-hub \ -c conda-forge \ -c anaconda \ From 46bc354e602936312b25c63470917f17843e74c5 Mon Sep 17 00:00:00 2001 From: openfasoc-bot Date: Sun, 12 Nov 2023 02:22:40 +0000 Subject: [PATCH 51/51] [BOT] Update dependencies successful version records in the repository --- README.rst | 4 ++-- conda_versions.txt | 4 ++-- versions.txt | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.rst b/README.rst index 8bfec4c91..6a83aa73b 100644 --- a/README.rst +++ b/README.rst @@ -46,7 +46,7 @@ For more info on getting-started, please refer to ["Getting Started" section ](h Below are the tool requirements along with their currently support versions that are updated regularly upon testing againsts the generators. - 1. `Magic `_ (version:8.3.446) + 1. `Magic `_ (version:8.3.447) 2. `Netgen `_ (version:1.5.262) @@ -60,7 +60,7 @@ Below are the tool requirements along with their currently support versions that 5. `OpenROAD `_ (version:2.0_10905) - 6. `Open_pdks `_ (version:1.0.286) + 6. `Open_pdks `_ (version:1.0.457) - open_pdks is required to run drc/lvs check and the simulations - After open_pdks is installed, please update the **open_pdks** key in `common/platform_config.json` with the installed path, down to the sky130A folder diff --git a/conda_versions.txt b/conda_versions.txt index f4c13cfac..e9e587610 100644 --- a/conda_versions.txt +++ b/conda_versions.txt @@ -1,5 +1,5 @@ -magic==8.3.445_3_g7db77d4 +magic==8.3.446_1_g1108046 netgen==1.5.262_0_gc1ed4ce -open_pdks.sky130a==1.0.286_0_g52af776 +open_pdks.sky130a==1.0.457_0_g32e8f23 openroad==2.0_10905_ge89829335 yosys==0.35_8_g5691cd095 diff --git a/versions.txt b/versions.txt index 93be99a12..7f3ba739e 100644 --- a/versions.txt +++ b/versions.txt @@ -1,6 +1,6 @@ klayout - 0.28.12-1 OpenROAD - 2.0_10905 yosys - 0.35+7 -magic - 8.3.446 +magic - 8.3.447 netgen - 1.5.262 -open_pdks - 1.0.286 +open_pdks - 1.0.457