From 414e4e44aa1bacfc86641e1793a8b4737da50896 Mon Sep 17 00:00:00 2001 From: Ethan Mahintorabi Date: Mon, 11 Jul 2022 08:49:12 -0700 Subject: [PATCH] Initial Pass at Attribute parsing --- .gitignore | 3 + examples/attribute_parsing_test.tcl | 15 + examples/attribute_parsing_test.v | 4740 +++++++++++++++++++++++++++ include/sta/ConcreteLibrary.hh | 4 + include/sta/ConcreteNetwork.hh | 12 + include/sta/Network.hh | 9 + include/sta/SdcNetwork.hh | 2 + network/ConcreteLibrary.cc | 13 + network/ConcreteNetwork.cc | 45 + network/SdcNetwork.cc | 12 + tcl/StaTcl.i | 2 + test/regression_vars.tcl | 1 + verilog/VerilogLex.ll | 18 +- verilog/VerilogParse.yy | 99 +- verilog/VerilogReader.cc | 133 +- verilog/VerilogReaderPvt.hh | 49 + 16 files changed, 5101 insertions(+), 56 deletions(-) create mode 100644 examples/attribute_parsing_test.tcl create mode 100644 examples/attribute_parsing_test.v diff --git a/.gitignore b/.gitignore index e5e79e9a..2013c841 100644 --- a/.gitignore +++ b/.gitignore @@ -6,9 +6,12 @@ TAGS .#* .~lock.*\.*# .DS_Store +.vscode +.idea Makefile gmon.out +cmake-build-debug build pvt diff --git a/examples/attribute_parsing_test.tcl b/examples/attribute_parsing_test.tcl new file mode 100644 index 00000000..912cab8d --- /dev/null +++ b/examples/attribute_parsing_test.tcl @@ -0,0 +1,15 @@ +read_liberty sky130hd_tt.lib +read_verilog attribute_parsing_test.v +link_design counter +create_clock -name clk [get_ports clk] -period 50 +set timing_paths [find_timing_paths -sort_by_slack] +set critical_path [lindex $timing_paths 0] +set critical_path_length [expr {- [get_property $critical_path slack]}] +report_checks -format full +puts stderr "Critical path length is $critical_path_length\n" + +set instance [sta::top_instance] +set cell [$instance cell] +set cell_name [$cell name] +set src_location [$cell get_attribute "src"] +puts "top_instance:\"$cell_name\" attribute \"src\" = $src_location \n" diff --git a/examples/attribute_parsing_test.v b/examples/attribute_parsing_test.v new file mode 100644 index 00000000..e4c9b2b6 --- /dev/null +++ b/examples/attribute_parsing_test.v @@ -0,0 +1,4740 @@ +/* Generated by Yosys 0.8+ */ + +(* hdlname = "\\counter" *) +(* top = 1 *) +(* src = "synthesis/tests/counter.v:16.1-32.10" *) +module counter(clk, reset, out); + wire _0000_; + wire _0001_; + wire _0002_; + wire _0003_; + wire _0004_; + wire _0005_; + wire _0006_; + wire _0007_; + wire _0008_; + wire _0009_; + wire _0010_; + wire _0011_; + wire _0012_; + wire _0013_; + wire _0014_; + wire _0015_; + wire _0016_; + wire _0017_; + wire _0018_; + wire _0019_; + wire _0020_; + wire _0021_; + wire _0022_; + wire _0023_; + wire _0024_; + wire _0025_; + wire _0026_; + wire _0027_; + wire _0028_; + wire _0029_; + wire _0030_; + wire _0031_; + wire _0032_; + wire _0033_; + wire _0034_; + wire _0035_; + wire _0036_; + wire _0037_; + wire _0038_; + wire _0039_; + wire _0040_; + wire _0041_; + wire _0042_; + wire _0043_; + wire _0044_; + wire _0045_; + wire _0046_; + wire _0047_; + wire _0048_; + wire _0049_; + wire _0050_; + wire _0051_; + wire _0052_; + wire _0053_; + wire _0054_; + wire _0055_; + wire _0056_; + wire _0057_; + wire _0058_; + wire _0059_; + wire _0060_; + wire _0061_; + wire _0062_; + wire _0063_; + wire _0064_; + wire _0065_; + wire _0066_; + wire _0067_; + wire _0068_; + wire _0069_; + wire _0070_; + wire _0071_; + wire _0072_; + wire _0073_; + wire _0074_; + wire _0075_; + wire _0076_; + wire _0077_; + wire _0078_; + wire _0079_; + wire _0080_; + wire _0081_; + wire _0082_; + wire _0083_; + wire _0084_; + wire _0085_; + wire _0086_; + wire _0087_; + wire _0088_; + wire _0089_; + wire _0090_; + wire _0091_; + wire _0092_; + wire _0093_; + wire _0094_; + wire _0095_; + wire _0096_; + wire _0097_; + wire _0098_; + wire _0099_; + wire _0100_; + wire _0101_; + wire _0102_; + wire _0103_; + wire _0104_; + wire _0105_; + wire _0106_; + wire _0107_; + wire _0108_; + wire _0109_; + wire _0110_; + wire _0111_; + wire _0112_; + wire _0113_; + wire _0114_; + wire _0115_; + wire _0116_; + wire _0117_; + wire _0118_; + wire _0119_; + wire _0120_; + wire _0121_; + wire _0122_; + wire _0123_; + wire _0124_; + wire _0125_; + wire _0126_; + wire _0127_; + wire _0128_; + wire _0129_; + wire _0130_; + wire _0131_; + wire _0132_; + wire _0133_; + wire _0134_; + wire _0135_; + wire _0136_; + wire _0137_; + wire _0138_; + wire _0139_; + wire _0140_; + wire _0141_; + wire _0142_; + wire _0143_; + wire _0144_; + wire _0145_; + wire _0146_; + wire _0147_; + wire _0148_; + wire _0149_; + wire _0150_; + wire _0151_; + wire _0152_; + wire _0153_; + wire _0154_; + wire _0155_; + wire _0156_; + wire _0157_; + wire _0158_; + wire _0159_; + wire _0160_; + wire _0161_; + wire _0162_; + wire _0163_; + wire _0164_; + wire _0165_; + wire _0166_; + wire _0167_; + wire _0168_; + wire _0169_; + wire _0170_; + wire _0171_; + wire _0172_; + wire _0173_; + wire _0174_; + wire _0175_; + wire _0176_; + wire _0177_; + wire _0178_; + wire _0179_; + wire _0180_; + wire _0181_; + wire _0182_; + wire _0183_; + wire _0184_; + wire _0185_; + wire _0186_; + wire _0187_; + wire _0188_; + wire _0189_; + wire _0190_; + wire _0191_; + wire _0192_; + wire _0193_; + wire _0194_; + wire _0195_; + wire _0196_; + wire _0197_; + wire _0198_; + wire _0199_; + wire _0200_; + wire _0201_; + wire _0202_; + wire _0203_; + wire _0204_; + wire _0205_; + wire _0206_; + wire _0207_; + wire _0208_; + wire _0209_; + wire _0210_; + wire _0211_; + wire _0212_; + wire _0213_; + wire _0214_; + wire _0215_; + wire _0216_; + wire _0217_; + wire _0218_; + wire _0219_; + wire _0220_; + wire _0221_; + wire _0222_; + wire _0223_; + wire _0224_; + wire _0225_; + wire _0226_; + wire _0227_; + wire _0228_; + wire _0229_; + wire _0230_; + wire _0231_; + wire _0232_; + wire _0233_; + wire _0234_; + wire _0235_; + wire _0236_; + wire _0237_; + wire _0238_; + wire _0239_; + wire _0240_; + wire _0241_; + wire _0242_; + wire _0243_; + wire _0244_; + wire _0245_; + wire _0246_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.23-270.24" *) + wire _0247_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0248_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0249_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0250_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0251_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0252_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0253_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0254_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0255_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0256_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0257_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0258_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0259_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0260_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0261_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0262_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0263_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0264_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0265_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0266_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0267_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0268_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0269_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0270_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0271_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0272_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0273_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0274_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0275_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0276_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0277_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0278_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0279_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0280_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0281_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0282_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0283_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0284_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0285_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0286_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0287_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0288_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0289_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0290_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0291_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0292_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0293_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0294_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0295_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0296_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0297_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0298_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0299_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0300_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0301_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0302_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0303_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0304_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0305_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0306_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0307_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0308_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0309_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0310_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0311_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0312_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0313_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0314_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0315_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0316_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0317_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0318_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0319_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0320_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0321_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0322_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0323_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0324_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0325_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0326_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0327_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0328_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0329_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0330_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0331_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0332_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0333_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0334_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0335_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0336_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0337_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0338_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0339_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0340_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0341_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0342_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0343_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0344_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0345_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0346_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0347_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0348_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0349_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0350_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0351_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0352_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0353_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0354_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0355_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0356_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0357_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0358_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0359_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0360_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0361_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0362_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0363_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0364_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0365_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0366_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0367_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0368_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0369_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0370_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0371_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0372_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0373_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0374_; + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire _0375_; + wire _0376_; + wire _0377_; + wire _0378_; + wire _0379_; + wire _0380_; + wire _0381_; + wire _0382_; + wire _0383_; + wire _0384_; + wire _0385_; + wire _0386_; + wire _0387_; + wire _0388_; + wire _0389_; + wire _0390_; + wire _0391_; + wire _0392_; + wire _0393_; + wire _0394_; + wire _0395_; + wire _0396_; + wire _0397_; + wire _0398_; + wire _0399_; + wire _0400_; + wire _0401_; + wire _0402_; + wire _0403_; + wire _0404_; + wire _0405_; + wire _0406_; + wire _0407_; + wire _0408_; + wire _0409_; + wire _0410_; + wire _0411_; + wire _0412_; + wire _0413_; + wire _0414_; + wire _0415_; + wire _0416_; + wire _0417_; + wire _0418_; + wire _0419_; + wire _0420_; + wire _0421_; + wire _0422_; + wire _0423_; + wire _0424_; + wire _0425_; + wire _0426_; + wire _0427_; + wire _0428_; + wire _0429_; + wire _0430_; + wire _0431_; + wire _0432_; + wire _0433_; + wire _0434_; + wire _0435_; + wire _0436_; + wire _0437_; + wire _0438_; + wire _0439_; + wire _0440_; + wire _0441_; + wire _0442_; + wire _0443_; + wire _0444_; + wire _0445_; + wire _0446_; + wire _0447_; + wire _0448_; + wire _0449_; + wire _0450_; + wire _0451_; + wire _0452_; + wire _0453_; + wire _0454_; + wire _0455_; + wire _0456_; + wire _0457_; + wire _0458_; + wire _0459_; + wire _0460_; + wire _0461_; + wire _0462_; + wire _0463_; + wire _0464_; + wire _0465_; + wire _0466_; + wire _0467_; + wire _0468_; + wire _0469_; + wire _0470_; + wire _0471_; + wire _0472_; + wire _0473_; + wire _0474_; + wire _0475_; + wire _0476_; + wire _0477_; + wire _0478_; + wire _0479_; + wire _0480_; + wire _0481_; + wire _0482_; + wire _0483_; + wire _0484_; + wire _0485_; + wire _0486_; + wire _0487_; + wire _0488_; + wire _0489_; + wire _0490_; + wire _0491_; + wire _0492_; + wire _0493_; + wire _0494_; + wire _0495_; + wire _0496_; + wire _0497_; + wire _0498_; + wire _0499_; + wire _0500_; + wire _0501_; + wire _0502_; + wire _0503_; + wire _0504_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0505_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0506_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0507_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0508_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0509_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0510_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0511_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0512_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0513_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0514_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0515_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0516_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0517_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0518_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0519_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0520_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0521_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0522_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0523_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0524_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0525_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0526_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0527_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0528_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0529_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0530_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0531_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0532_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0533_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0534_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0535_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0536_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0537_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0538_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0539_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0540_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0541_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0542_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0543_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0544_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0545_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0546_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0547_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0548_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0549_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0550_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0551_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0552_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0553_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0554_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0555_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0556_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0557_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0558_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0559_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0560_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0561_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0562_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0563_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0564_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0565_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0566_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0567_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0568_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0569_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0570_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0571_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0572_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0573_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0574_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0575_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0576_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0577_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0578_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0579_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0580_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0581_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0582_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0583_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0584_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0585_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0586_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0587_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0588_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0589_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0590_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0591_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0592_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0593_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0594_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0595_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0596_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0597_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0598_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0599_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0600_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0601_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0602_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0603_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0604_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0605_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0606_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0607_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0608_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0609_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0610_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0611_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0612_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0613_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0614_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0615_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0616_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0617_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0618_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0619_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0620_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0621_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0622_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0623_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0624_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0625_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0626_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0627_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0628_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0629_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0630_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0631_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0632_; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire _0633_; + wire _0634_; + wire _0635_; + wire _0636_; + wire _0637_; + wire _0638_; + wire _0639_; + wire _0640_; + wire _0641_; + wire _0642_; + wire _0643_; + wire _0644_; + wire _0645_; + wire _0646_; + wire _0647_; + wire _0648_; + wire _0649_; + wire _0650_; + wire _0651_; + wire _0652_; + wire _0653_; + wire _0654_; + wire _0655_; + wire _0656_; + wire _0657_; + wire _0658_; + wire _0659_; + wire _0660_; + wire _0661_; + wire _0662_; + wire _0663_; + wire _0664_; + wire _0665_; + wire _0666_; + wire _0667_; + wire _0668_; + wire _0669_; + wire _0670_; + wire _0671_; + wire _0672_; + wire _0673_; + wire _0674_; + wire _0675_; + wire _0676_; + wire _0677_; + wire _0678_; + wire _0679_; + wire _0680_; + wire _0681_; + wire _0682_; + wire _0683_; + wire _0684_; + wire _0685_; + wire _0686_; + wire _0687_; + wire _0688_; + wire _0689_; + wire _0690_; + wire _0691_; + wire _0692_; + wire _0693_; + wire _0694_; + wire _0695_; + wire _0696_; + wire _0697_; + wire _0698_; + wire _0699_; + wire _0700_; + wire _0701_; + wire _0702_; + wire _0703_; + wire _0704_; + wire _0705_; + wire _0706_; + wire _0707_; + wire _0708_; + wire _0709_; + wire _0710_; + wire _0711_; + wire _0712_; + wire _0713_; + wire _0714_; + wire _0715_; + wire _0716_; + wire _0717_; + wire _0718_; + wire _0719_; + wire _0720_; + wire _0721_; + wire _0722_; + wire _0723_; + wire _0724_; + wire _0725_; + wire _0726_; + wire _0727_; + wire _0728_; + wire _0729_; + wire _0730_; + wire _0731_; + wire _0732_; + wire _0733_; + wire _0734_; + wire _0735_; + wire _0736_; + wire _0737_; + wire _0738_; + wire _0739_; + wire _0740_; + wire _0741_; + wire _0742_; + wire _0743_; + wire _0744_; + wire _0745_; + wire _0746_; + wire _0747_; + wire _0748_; + wire _0749_; + wire _0750_; + wire _0751_; + wire _0752_; + wire _0753_; + wire _0754_; + wire _0755_; + wire _0756_; + wire _0757_; + wire _0758_; + wire _0759_; + wire _0760_; + wire _0761_; + wire _0762_; + wire _0763_; + wire _0764_; + wire _0765_; + wire _0766_; + wire _0767_; + wire _0768_; + wire _0769_; + wire _0770_; + wire _0771_; + wire _0772_; + wire _0773_; + wire _0774_; + wire _0775_; + wire _0776_; + wire _0777_; + wire _0778_; + wire _0779_; + wire _0780_; + wire _0781_; + wire _0782_; + wire _0783_; + wire _0784_; + wire _0785_; + wire _0786_; + wire _0787_; + wire _0788_; + wire _0789_; + wire _0790_; + wire _0791_; + wire _0792_; + wire _0793_; + wire _0794_; + wire _0795_; + wire _0796_; + wire _0797_; + wire _0798_; + wire _0799_; + wire _0800_; + wire _0801_; + wire _0802_; + wire _0803_; + wire _0804_; + wire _0805_; + wire _0806_; + wire _0807_; + wire _0808_; + wire _0809_; + wire _0810_; + wire _0811_; + wire _0812_; + wire _0813_; + wire _0814_; + wire _0815_; + wire _0816_; + wire _0817_; + wire _0818_; + wire _0819_; + wire _0820_; + wire _0821_; + wire _0822_; + wire _0823_; + wire _0824_; + wire _0825_; + wire _0826_; + wire _0827_; + wire _0828_; + (* src = "synthesis/tests/counter.v:18.14-18.19" *) + wire _0829_; + (* force_downto = 32'd1 *) + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.23-270.24" *) + wire [128:0] _0830_; + (* force_downto = 32'd1 *) + (* src = "synthesis/tests/counter.v:26.22-26.37|bazel-out/k8-opt-exec-2B5CBBC6/bin/external/at_clifford_yosys/yosys.runfiles/at_clifford_yosys/techlibs/techmap.v:270.26-270.27" *) + wire [128:0] _0831_; + wire _0832_; + wire _0833_; + wire _0834_; + wire _0835_; + wire _0836_; + wire _0837_; + wire _0838_; + wire _0839_; + wire _0840_; + wire _0841_; + wire _0842_; + wire _0843_; + wire _0844_; + wire _0845_; + wire _0846_; + wire _0847_; + wire _0848_; + wire _0849_; + wire _0850_; + wire _0851_; + wire _0852_; + wire _0853_; + wire _0854_; + wire _0855_; + wire _0856_; + wire _0857_; + wire _0858_; + wire _0859_; + wire _0860_; + wire _0861_; + wire _0862_; + wire _0863_; + wire _0864_; + wire _0865_; + wire _0866_; + wire _0867_; + wire _0868_; + wire _0869_; + wire _0870_; + wire _0871_; + wire _0872_; + wire _0873_; + wire _0874_; + wire _0875_; + wire _0876_; + wire _0877_; + wire _0878_; + wire _0879_; + wire _0880_; + wire _0881_; + wire _0882_; + wire _0883_; + wire _0884_; + wire _0885_; + wire _0886_; + wire _0887_; + wire _0888_; + wire _0889_; + wire _0890_; + wire _0891_; + wire _0892_; + wire _0893_; + wire _0894_; + wire _0895_; + wire _0896_; + wire _0897_; + wire _0898_; + wire _0899_; + wire _0900_; + wire _0901_; + wire _0902_; + wire _0903_; + wire _0904_; + wire _0905_; + wire _0906_; + wire _0907_; + wire _0908_; + wire _0909_; + wire _0910_; + wire _0911_; + wire _0912_; + wire _0913_; + wire _0914_; + wire _0915_; + wire _0916_; + wire _0917_; + wire _0918_; + wire _0919_; + wire _0920_; + wire _0921_; + wire _0922_; + wire _0923_; + wire _0924_; + wire _0925_; + wire _0926_; + wire _0927_; + wire _0928_; + wire _0929_; + wire _0930_; + wire _0931_; + wire _0932_; + wire _0933_; + wire _0934_; + wire _0935_; + wire _0936_; + wire _0937_; + wire _0938_; + wire _0939_; + wire _0940_; + wire _0941_; + wire _0942_; + wire _0943_; + wire _0944_; + wire _0945_; + wire _0946_; + wire _0947_; + wire _0948_; + wire _0949_; + wire _0950_; + wire _0951_; + wire _0952_; + wire _0953_; + wire _0954_; + wire _0955_; + wire _0956_; + wire _0957_; + wire _0958_; + wire _0959_; + wire _0960_; + (* src = "synthesis/tests/counter.v:17.14-17.17" *) + input clk; + (* src = "synthesis/tests/counter.v:21.15-21.26" *) + wire [128:0] counter_tmp; + (* src = "synthesis/tests/counter.v:19.18-19.21" *) + output [128:0] out; + (* src = "synthesis/tests/counter.v:18.14-18.19" *) + input reset; + sky130_fd_sc_hd__clkinv_1 _0961_ ( + .A(_0609_), + .Y(_0634_) + ); + sky130_fd_sc_hd__clkinv_1 _0962_ ( + .A(_0610_), + .Y(_0635_) + ); + sky130_fd_sc_hd__clkinv_1 _0963_ ( + .A(_0584_), + .Y(_0636_) + ); + sky130_fd_sc_hd__clkinv_1 _0964_ ( + .A(_0543_), + .Y(_0637_) + ); + sky130_fd_sc_hd__clkinv_1 _0965_ ( + .A(_0544_), + .Y(_0638_) + ); + sky130_fd_sc_hd__clkinv_1 _0966_ ( + .A(_0516_), + .Y(_0639_) + ); + sky130_fd_sc_hd__clkinv_1 _0967_ ( + .A(_0572_), + .Y(_0640_) + ); + sky130_fd_sc_hd__clkinv_1 _0968_ ( + .A(_0505_), + .Y(_0247_) + ); + sky130_fd_sc_hd__clkinv_1 _0969_ ( + .A(_0546_), + .Y(_0641_) + ); + sky130_fd_sc_hd__clkinv_1 _0970_ ( + .A(_0547_), + .Y(_0642_) + ); + sky130_fd_sc_hd__clkinv_1 _0971_ ( + .A(_0537_), + .Y(_0643_) + ); + sky130_fd_sc_hd__clkinv_1 _0972_ ( + .A(_0553_), + .Y(_0644_) + ); + sky130_fd_sc_hd__clkinv_1 _0973_ ( + .A(_0552_), + .Y(_0645_) + ); + sky130_fd_sc_hd__clkinv_1 _0974_ ( + .A(_0558_), + .Y(_0646_) + ); + sky130_fd_sc_hd__clkinv_1 _0975_ ( + .A(_0559_), + .Y(_0647_) + ); + sky130_fd_sc_hd__clkinv_1 _0976_ ( + .A(_0560_), + .Y(_0648_) + ); + sky130_fd_sc_hd__clkinv_1 _0977_ ( + .A(_0527_), + .Y(_0649_) + ); + sky130_fd_sc_hd__clkinv_1 _0978_ ( + .A(_0551_), + .Y(_0650_) + ); + sky130_fd_sc_hd__clkinv_1 _0979_ ( + .A(_0626_), + .Y(_0651_) + ); + sky130_fd_sc_hd__clkinv_1 _0980_ ( + .A(_0625_), + .Y(_0652_) + ); + sky130_fd_sc_hd__clkinv_1 _0981_ ( + .A(_0623_), + .Y(_0653_) + ); + sky130_fd_sc_hd__clkinv_1 _0982_ ( + .A(_0624_), + .Y(_0654_) + ); + sky130_fd_sc_hd__clkinv_1 _0983_ ( + .A(_0616_), + .Y(_0655_) + ); + sky130_fd_sc_hd__clkinv_1 _0984_ ( + .A(_0617_), + .Y(_0656_) + ); + sky130_fd_sc_hd__clkinv_1 _0985_ ( + .A(_0585_), + .Y(_0657_) + ); + sky130_fd_sc_hd__clkinv_1 _0986_ ( + .A(_0586_), + .Y(_0658_) + ); + sky130_fd_sc_hd__clkinv_1 _0987_ ( + .A(_0598_), + .Y(_0659_) + ); + sky130_fd_sc_hd__clkinv_1 _0988_ ( + .A(_0541_), + .Y(_0660_) + ); + sky130_fd_sc_hd__clkinv_1 _0989_ ( + .A(_0542_), + .Y(_0661_) + ); + sky130_fd_sc_hd__clkinv_1 _0990_ ( + .A(_0597_), + .Y(_0662_) + ); + sky130_fd_sc_hd__clkinv_1 _0991_ ( + .A(_0592_), + .Y(_0663_) + ); + sky130_fd_sc_hd__clkinv_1 _0992_ ( + .A(_0591_), + .Y(_0664_) + ); + sky130_fd_sc_hd__clkinv_1 _0993_ ( + .A(_0593_), + .Y(_0665_) + ); + sky130_fd_sc_hd__clkinv_1 _0994_ ( + .A(_0508_), + .Y(_0666_) + ); + sky130_fd_sc_hd__clkinv_1 _0995_ ( + .A(_0577_), + .Y(_0667_) + ); + sky130_fd_sc_hd__clkinv_1 _0996_ ( + .A(_0579_), + .Y(_0668_) + ); + sky130_fd_sc_hd__clkinv_1 _0997_ ( + .A(_0580_), + .Y(_0669_) + ); + sky130_fd_sc_hd__clkinv_1 _0998_ ( + .A(_0612_), + .Y(_0670_) + ); + sky130_fd_sc_hd__clkinv_1 _0999_ ( + .A(_0517_), + .Y(_0671_) + ); + sky130_fd_sc_hd__clkinv_1 _1000_ ( + .A(_0627_), + .Y(_0672_) + ); + sky130_fd_sc_hd__clkinv_1 _1001_ ( + .A(_0628_), + .Y(_0673_) + ); + sky130_fd_sc_hd__clkinv_1 _1002_ ( + .A(_0510_), + .Y(_0674_) + ); + sky130_fd_sc_hd__clkinv_1 _1003_ ( + .A(_0509_), + .Y(_0675_) + ); + sky130_fd_sc_hd__clkinv_1 _1004_ ( + .A(_0631_), + .Y(_0676_) + ); + sky130_fd_sc_hd__clkinv_1 _1005_ ( + .A(_0629_), + .Y(_0677_) + ); + sky130_fd_sc_hd__clkinv_1 _1006_ ( + .A(_0630_), + .Y(_0678_) + ); + sky130_fd_sc_hd__clkinv_1 _1007_ ( + .A(_0618_), + .Y(_0679_) + ); + sky130_fd_sc_hd__clkinv_1 _1008_ ( + .A(_0515_), + .Y(_0680_) + ); + sky130_fd_sc_hd__clkinv_1 _1009_ ( + .A(_0514_), + .Y(_0681_) + ); + sky130_fd_sc_hd__clkinv_1 _1010_ ( + .A(_0523_), + .Y(_0682_) + ); + sky130_fd_sc_hd__clkinv_1 _1011_ ( + .A(_0524_), + .Y(_0683_) + ); + sky130_fd_sc_hd__clkinv_1 _1012_ ( + .A(_0573_), + .Y(_0684_) + ); + sky130_fd_sc_hd__clkinv_1 _1013_ ( + .A(_0571_), + .Y(_0685_) + ); + sky130_fd_sc_hd__clkinv_1 _1014_ ( + .A(_0829_), + .Y(_0376_) + ); + sky130_fd_sc_hd__nand2_1 _1015_ ( + .A(_0545_), + .B(_0505_), + .Y(_0686_) + ); + sky130_fd_sc_hd__and4_1 _1016_ ( + .A(_0545_), + .B(_0505_), + .C(_0567_), + .D(_0556_), + .X(_0687_) + ); + sky130_fd_sc_hd__nand2_1 _1017_ ( + .A(_0578_), + .B(_0687_), + .Y(_0688_) + ); + sky130_fd_sc_hd__and4_1 _1018_ ( + .A(_0589_), + .B(_0578_), + .C(_0600_), + .D(_0687_), + .X(_0689_) + ); + sky130_fd_sc_hd__and2_0 _1019_ ( + .A(_0611_), + .B(_0689_), + .X(_0690_) + ); + sky130_fd_sc_hd__nand2_1 _1020_ ( + .A(_0622_), + .B(_0690_), + .Y(_0691_) + ); + sky130_fd_sc_hd__nand4_1 _1021_ ( + .A(_0622_), + .B(_0611_), + .C(_0633_), + .D(_0689_), + .Y(_0692_) + ); + sky130_fd_sc_hd__nor2_1 _1022_ ( + .A(_0639_), + .B(_0692_), + .Y(_0693_) + ); + sky130_fd_sc_hd__nand2_1 _1023_ ( + .A(_0527_), + .B(_0693_), + .Y(_0694_) + ); + sky130_fd_sc_hd__nor4_1 _1024_ ( + .A(_0639_), + .B(_0643_), + .C(_0649_), + .D(_0692_), + .Y(_0695_) + ); + sky130_fd_sc_hd__and2_0 _1025_ ( + .A(_0538_), + .B(_0695_), + .X(_0696_) + ); + sky130_fd_sc_hd__nand2_1 _1026_ ( + .A(_0539_), + .B(_0696_), + .Y(_0697_) + ); + sky130_fd_sc_hd__nand4_1 _1027_ ( + .A(_0539_), + .B(_0540_), + .C(_0538_), + .D(_0695_), + .Y(_0698_) + ); + sky130_fd_sc_hd__nor2_1 _1028_ ( + .A(_0660_), + .B(_0698_), + .Y(_0699_) + ); + sky130_fd_sc_hd__or4_1 _1029_ ( + .A(_0637_), + .B(_0660_), + .C(_0661_), + .D(_0698_), + .X(_0700_) + ); + sky130_fd_sc_hd__nor2_1 _1030_ ( + .A(_0638_), + .B(_0700_), + .Y(_0701_) + ); + sky130_fd_sc_hd__nor3_1 _1031_ ( + .A(_0638_), + .B(_0641_), + .C(_0700_), + .Y(_0702_) + ); + sky130_fd_sc_hd__nor4_1 _1032_ ( + .A(_0638_), + .B(_0641_), + .C(_0642_), + .D(_0700_), + .Y(_0703_) + ); + sky130_fd_sc_hd__and2_0 _1033_ ( + .A(_0548_), + .B(_0703_), + .X(_0704_) + ); + sky130_fd_sc_hd__nand4_1 _1034_ ( + .A(_0549_), + .B(_0548_), + .C(_0550_), + .D(_0703_), + .Y(_0705_) + ); + sky130_fd_sc_hd__nor2_1 _1035_ ( + .A(_0650_), + .B(_0705_), + .Y(_0706_) + ); + sky130_fd_sc_hd__nor4_1 _1036_ ( + .A(_0644_), + .B(_0645_), + .C(_0650_), + .D(_0705_), + .Y(_0707_) + ); + sky130_fd_sc_hd__and2_0 _1037_ ( + .A(_0554_), + .B(_0707_), + .X(_0708_) + ); + sky130_fd_sc_hd__nand2_1 _1038_ ( + .A(_0555_), + .B(_0708_), + .Y(_0709_) + ); + sky130_fd_sc_hd__nand4_1 _1039_ ( + .A(_0554_), + .B(_0555_), + .C(_0557_), + .D(_0707_), + .Y(_0710_) + ); + sky130_fd_sc_hd__nor2_1 _1040_ ( + .A(_0646_), + .B(_0710_), + .Y(_0711_) + ); + sky130_fd_sc_hd__nor4_1 _1041_ ( + .A(_0646_), + .B(_0647_), + .C(_0648_), + .D(_0710_), + .Y(_0712_) + ); + sky130_fd_sc_hd__and2_0 _1042_ ( + .A(_0561_), + .B(_0712_), + .X(_0713_) + ); + sky130_fd_sc_hd__and4_1 _1043_ ( + .A(_0562_), + .B(_0561_), + .C(_0563_), + .D(_0712_), + .X(_0714_) + ); + sky130_fd_sc_hd__and2_0 _1044_ ( + .A(_0564_), + .B(_0714_), + .X(_0715_) + ); + sky130_fd_sc_hd__and4_1 _1045_ ( + .A(_0565_), + .B(_0566_), + .C(_0564_), + .D(_0714_), + .X(_0716_) + ); + sky130_fd_sc_hd__and2_0 _1046_ ( + .A(_0568_), + .B(_0716_), + .X(_0717_) + ); + sky130_fd_sc_hd__nand2_1 _1047_ ( + .A(_0569_), + .B(_0717_), + .Y(_0718_) + ); + sky130_fd_sc_hd__nand4_1 _1048_ ( + .A(_0568_), + .B(_0569_), + .C(_0570_), + .D(_0716_), + .Y(_0719_) + ); + sky130_fd_sc_hd__nor2_1 _1049_ ( + .A(_0685_), + .B(_0719_), + .Y(_0720_) + ); + sky130_fd_sc_hd__nand2_1 _1050_ ( + .A(_0572_), + .B(_0720_), + .Y(_0721_) + ); + sky130_fd_sc_hd__nor4_1 _1051_ ( + .A(_0640_), + .B(_0684_), + .C(_0685_), + .D(_0719_), + .Y(_0722_) + ); + sky130_fd_sc_hd__and2_0 _1052_ ( + .A(_0574_), + .B(_0722_), + .X(_0723_) + ); + sky130_fd_sc_hd__nand2_1 _1053_ ( + .A(_0575_), + .B(_0723_), + .Y(_0724_) + ); + sky130_fd_sc_hd__nand4_1 _1054_ ( + .A(_0574_), + .B(_0575_), + .C(_0576_), + .D(_0722_), + .Y(_0725_) + ); + sky130_fd_sc_hd__nor2_1 _1055_ ( + .A(_0667_), + .B(_0725_), + .Y(_0726_) + ); + sky130_fd_sc_hd__nor4_1 _1056_ ( + .A(_0667_), + .B(_0668_), + .C(_0669_), + .D(_0725_), + .Y(_0727_) + ); + sky130_fd_sc_hd__and2_0 _1057_ ( + .A(_0581_), + .B(_0727_), + .X(_0728_) + ); + sky130_fd_sc_hd__nand2_1 _1058_ ( + .A(_0582_), + .B(_0728_), + .Y(_0729_) + ); + sky130_fd_sc_hd__nand4_1 _1059_ ( + .A(_0583_), + .B(_0581_), + .C(_0582_), + .D(_0727_), + .Y(_0730_) + ); + sky130_fd_sc_hd__nor2_1 _1060_ ( + .A(_0636_), + .B(_0730_), + .Y(_0731_) + ); + sky130_fd_sc_hd__nand2_1 _1061_ ( + .A(_0585_), + .B(_0731_), + .Y(_0732_) + ); + sky130_fd_sc_hd__nor4_1 _1062_ ( + .A(_0636_), + .B(_0657_), + .C(_0658_), + .D(_0730_), + .Y(_0733_) + ); + sky130_fd_sc_hd__and2_0 _1063_ ( + .A(_0587_), + .B(_0733_), + .X(_0734_) + ); + sky130_fd_sc_hd__nand2_1 _1064_ ( + .A(_0588_), + .B(_0734_), + .Y(_0735_) + ); + sky130_fd_sc_hd__nand4_1 _1065_ ( + .A(_0590_), + .B(_0587_), + .C(_0588_), + .D(_0733_), + .Y(_0736_) + ); + sky130_fd_sc_hd__nor2_1 _1066_ ( + .A(_0664_), + .B(_0736_), + .Y(_0737_) + ); + sky130_fd_sc_hd__nor4_1 _1067_ ( + .A(_0663_), + .B(_0664_), + .C(_0665_), + .D(_0736_), + .Y(_0738_) + ); + sky130_fd_sc_hd__and2_0 _1068_ ( + .A(_0594_), + .B(_0738_), + .X(_0739_) + ); + sky130_fd_sc_hd__and3_1 _1069_ ( + .A(_0596_), + .B(_0595_), + .C(_0739_), + .X(_0740_) + ); + sky130_fd_sc_hd__nand4_1 _1070_ ( + .A(_0596_), + .B(_0594_), + .C(_0595_), + .D(_0738_), + .Y(_0741_) + ); + sky130_fd_sc_hd__nor3_1 _1071_ ( + .A(_0659_), + .B(_0662_), + .C(_0741_), + .Y(_0742_) + ); + sky130_fd_sc_hd__nand3_1 _1072_ ( + .A(_0601_), + .B(_0602_), + .C(_0599_), + .Y(_0743_) + ); + sky130_fd_sc_hd__nor4_1 _1073_ ( + .A(_0659_), + .B(_0662_), + .C(_0741_), + .D(_0743_), + .Y(_0744_) + ); + sky130_fd_sc_hd__and2_0 _1074_ ( + .A(_0603_), + .B(_0744_), + .X(_0745_) + ); + sky130_fd_sc_hd__and4_1 _1075_ ( + .A(_0603_), + .B(_0604_), + .C(_0605_), + .D(_0744_), + .X(_0746_) + ); + sky130_fd_sc_hd__and2_0 _1076_ ( + .A(_0606_), + .B(_0746_), + .X(_0747_) + ); + sky130_fd_sc_hd__and3_1 _1077_ ( + .A(_0607_), + .B(_0608_), + .C(_0747_), + .X(_0748_) + ); + sky130_fd_sc_hd__nand4_1 _1078_ ( + .A(_0606_), + .B(_0607_), + .C(_0608_), + .D(_0746_), + .Y(_0749_) + ); + sky130_fd_sc_hd__nand2_1 _1079_ ( + .A(_0609_), + .B(_0748_), + .Y(_0750_) + ); + sky130_fd_sc_hd__xnor2_1 _1080_ ( + .A(_0610_), + .B(_0750_), + .Y(_0352_) + ); + sky130_fd_sc_hd__xnor2_1 _1081_ ( + .A(_0609_), + .B(_0749_), + .Y(_0351_) + ); + sky130_fd_sc_hd__xnor2_1 _1082_ ( + .A(_0540_), + .B(_0697_), + .Y(_0282_) + ); + sky130_fd_sc_hd__xor2_1 _1083_ ( + .A(_0568_), + .B(_0716_), + .X(_0310_) + ); + sky130_fd_sc_hd__xnor2_1 _1084_ ( + .A(_0584_), + .B(_0730_), + .Y(_0326_) + ); + sky130_fd_sc_hd__xnor2_1 _1085_ ( + .A(_0583_), + .B(_0729_), + .Y(_0325_) + ); + sky130_fd_sc_hd__xnor2_1 _1086_ ( + .A(_0544_), + .B(_0700_), + .Y(_0286_) + ); + sky130_fd_sc_hd__xnor2_1 _1087_ ( + .A(_0516_), + .B(_0692_), + .Y(_0258_) + ); + sky130_fd_sc_hd__xnor2_1 _1088_ ( + .A(_0640_), + .B(_0720_), + .Y(_0314_) + ); + sky130_fd_sc_hd__nor2_1 _1089_ ( + .A(_0547_), + .B(_0702_), + .Y(_0751_) + ); + sky130_fd_sc_hd__nor2_1 _1090_ ( + .A(_0703_), + .B(_0751_), + .Y(_0289_) + ); + sky130_fd_sc_hd__nor2_1 _1091_ ( + .A(_0546_), + .B(_0701_), + .Y(_0752_) + ); + sky130_fd_sc_hd__nor2_1 _1092_ ( + .A(_0702_), + .B(_0752_), + .Y(_0288_) + ); + sky130_fd_sc_hd__xor2_1 _1093_ ( + .A(_0575_), + .B(_0723_), + .X(_0317_) + ); + sky130_fd_sc_hd__xor2_1 _1094_ ( + .A(_0539_), + .B(_0696_), + .X(_0281_) + ); + sky130_fd_sc_hd__xor2_1 _1095_ ( + .A(_0549_), + .B(_0704_), + .X(_0291_) + ); + sky130_fd_sc_hd__xor2_1 _1096_ ( + .A(_0548_), + .B(_0703_), + .X(_0290_) + ); + sky130_fd_sc_hd__a21oi_1 _1097_ ( + .A1(_0552_), + .A2(_0706_), + .B1(_0553_), + .Y(_0753_) + ); + sky130_fd_sc_hd__nor2_1 _1098_ ( + .A(_0707_), + .B(_0753_), + .Y(_0295_) + ); + sky130_fd_sc_hd__xnor2_1 _1099_ ( + .A(_0645_), + .B(_0706_), + .Y(_0294_) + ); + sky130_fd_sc_hd__xor2_1 _1100_ ( + .A(_0545_), + .B(_0505_), + .X(_0287_) + ); + sky130_fd_sc_hd__nor2_1 _1101_ ( + .A(_0554_), + .B(_0707_), + .Y(_0754_) + ); + sky130_fd_sc_hd__nor2_1 _1102_ ( + .A(_0708_), + .B(_0754_), + .Y(_0296_) + ); + sky130_fd_sc_hd__nor4_1 _1103_ ( + .A(_0634_), + .B(_0635_), + .C(_0670_), + .D(_0749_), + .Y(_0755_) + ); + sky130_fd_sc_hd__and2_0 _1104_ ( + .A(_0613_), + .B(_0755_), + .X(_0756_) + ); + sky130_fd_sc_hd__nand2_1 _1105_ ( + .A(_0614_), + .B(_0756_), + .Y(_0757_) + ); + sky130_fd_sc_hd__nand4_1 _1106_ ( + .A(_0614_), + .B(_0615_), + .C(_0613_), + .D(_0755_), + .Y(_0758_) + ); + sky130_fd_sc_hd__nor2_1 _1107_ ( + .A(_0655_), + .B(_0758_), + .Y(_0759_) + ); + sky130_fd_sc_hd__nor3_1 _1108_ ( + .A(_0655_), + .B(_0656_), + .C(_0758_), + .Y(_0760_) + ); + sky130_fd_sc_hd__nor4_1 _1109_ ( + .A(_0655_), + .B(_0656_), + .C(_0679_), + .D(_0758_), + .Y(_0761_) + ); + sky130_fd_sc_hd__and2_0 _1110_ ( + .A(_0619_), + .B(_0761_), + .X(_0762_) + ); + sky130_fd_sc_hd__nand2_1 _1111_ ( + .A(_0620_), + .B(_0762_), + .Y(_0763_) + ); + sky130_fd_sc_hd__nand4_1 _1112_ ( + .A(_0620_), + .B(_0621_), + .C(_0619_), + .D(_0761_), + .Y(_0764_) + ); + sky130_fd_sc_hd__or3_1 _1113_ ( + .A(_0653_), + .B(_0654_), + .C(_0764_), + .X(_0765_) + ); + sky130_fd_sc_hd__or4_1 _1114_ ( + .A(_0652_), + .B(_0653_), + .C(_0654_), + .D(_0764_), + .X(_0766_) + ); + sky130_fd_sc_hd__nor2_1 _1115_ ( + .A(_0651_), + .B(_0766_), + .Y(_0767_) + ); + sky130_fd_sc_hd__nand2_1 _1116_ ( + .A(_0627_), + .B(_0767_), + .Y(_0768_) + ); + sky130_fd_sc_hd__or4_1 _1117_ ( + .A(_0651_), + .B(_0672_), + .C(_0673_), + .D(_0766_), + .X(_0769_) + ); + sky130_fd_sc_hd__or3_1 _1118_ ( + .A(_0677_), + .B(_0678_), + .C(_0769_), + .X(_0770_) + ); + sky130_fd_sc_hd__nor4_1 _1119_ ( + .A(_0676_), + .B(_0677_), + .C(_0678_), + .D(_0769_), + .Y(_0771_) + ); + sky130_fd_sc_hd__and2_0 _1120_ ( + .A(_0632_), + .B(_0771_), + .X(_0772_) + ); + sky130_fd_sc_hd__nand2_1 _1121_ ( + .A(_0506_), + .B(_0772_), + .Y(_0773_) + ); + sky130_fd_sc_hd__nand4_1 _1122_ ( + .A(_0506_), + .B(_0507_), + .C(_0632_), + .D(_0771_), + .Y(_0774_) + ); + sky130_fd_sc_hd__nor2_1 _1123_ ( + .A(_0666_), + .B(_0774_), + .Y(_0775_) + ); + sky130_fd_sc_hd__nor4_1 _1124_ ( + .A(_0666_), + .B(_0674_), + .C(_0675_), + .D(_0774_), + .Y(_0776_) + ); + sky130_fd_sc_hd__and2_0 _1125_ ( + .A(_0511_), + .B(_0776_), + .X(_0777_) + ); + sky130_fd_sc_hd__nand2_1 _1126_ ( + .A(_0512_), + .B(_0777_), + .Y(_0778_) + ); + sky130_fd_sc_hd__nand4_1 _1127_ ( + .A(_0511_), + .B(_0512_), + .C(_0513_), + .D(_0776_), + .Y(_0779_) + ); + sky130_fd_sc_hd__nor2_1 _1128_ ( + .A(_0681_), + .B(_0779_), + .Y(_0780_) + ); + sky130_fd_sc_hd__nor4_1 _1129_ ( + .A(_0671_), + .B(_0680_), + .C(_0681_), + .D(_0779_), + .Y(_0781_) + ); + sky130_fd_sc_hd__and2_0 _1130_ ( + .A(_0518_), + .B(_0781_), + .X(_0782_) + ); + sky130_fd_sc_hd__nand2_1 _1131_ ( + .A(_0519_), + .B(_0782_), + .Y(_0783_) + ); + sky130_fd_sc_hd__nand4_1 _1132_ ( + .A(_0518_), + .B(_0519_), + .C(_0520_), + .D(_0781_), + .Y(_0784_) + ); + sky130_fd_sc_hd__nand2_1 _1133_ ( + .A(_0522_), + .B(_0521_), + .Y(_0785_) + ); + sky130_fd_sc_hd__nor2_1 _1134_ ( + .A(_0784_), + .B(_0785_), + .Y(_0786_) + ); + sky130_fd_sc_hd__nor3_1 _1135_ ( + .A(_0682_), + .B(_0784_), + .C(_0785_), + .Y(_0787_) + ); + sky130_fd_sc_hd__nor4_1 _1136_ ( + .A(_0682_), + .B(_0683_), + .C(_0784_), + .D(_0785_), + .Y(_0788_) + ); + sky130_fd_sc_hd__nand3_1 _1137_ ( + .A(_0525_), + .B(_0526_), + .C(_0788_), + .Y(_0789_) + ); + sky130_fd_sc_hd__nand4_1 _1138_ ( + .A(_0528_), + .B(_0525_), + .C(_0526_), + .D(_0788_), + .Y(_0790_) + ); + sky130_fd_sc_hd__lpflow_isobufsrc_1 _1139_ ( + .A(_0529_), + .SLEEP(_0790_), + .X(_0791_) + ); + sky130_fd_sc_hd__nand2_1 _1140_ ( + .A(_0530_), + .B(_0791_), + .Y(_0792_) + ); + sky130_fd_sc_hd__xor2_1 _1141_ ( + .A(_0530_), + .B(_0791_), + .X(_0272_) + ); + sky130_fd_sc_hd__a31oi_1 _1142_ ( + .A1(_0545_), + .A2(_0505_), + .A3(_0556_), + .B1(_0567_), + .Y(_0793_) + ); + sky130_fd_sc_hd__nor2_1 _1143_ ( + .A(_0687_), + .B(_0793_), + .Y(_0309_) + ); + sky130_fd_sc_hd__xnor2_1 _1144_ ( + .A(_0556_), + .B(_0686_), + .Y(_0298_) + ); + sky130_fd_sc_hd__xor2_1 _1145_ ( + .A(_0555_), + .B(_0708_), + .X(_0297_) + ); + sky130_fd_sc_hd__xnor2_1 _1146_ ( + .A(_0589_), + .B(_0688_), + .Y(_0331_) + ); + sky130_fd_sc_hd__xor2_1 _1147_ ( + .A(_0578_), + .B(_0687_), + .X(_0320_) + ); + sky130_fd_sc_hd__xnor2_1 _1148_ ( + .A(_0558_), + .B(_0710_), + .Y(_0300_) + ); + sky130_fd_sc_hd__xnor2_1 _1149_ ( + .A(_0557_), + .B(_0709_), + .Y(_0299_) + ); + sky130_fd_sc_hd__a31oi_1 _1150_ ( + .A1(_0589_), + .A2(_0578_), + .A3(_0687_), + .B1(_0600_), + .Y(_0794_) + ); + sky130_fd_sc_hd__nor2_1 _1151_ ( + .A(_0689_), + .B(_0794_), + .Y(_0342_) + ); + sky130_fd_sc_hd__xor2_1 _1152_ ( + .A(_0622_), + .B(_0690_), + .X(_0364_) + ); + sky130_fd_sc_hd__xor2_1 _1153_ ( + .A(_0611_), + .B(_0689_), + .X(_0353_) + ); + sky130_fd_sc_hd__a21oi_1 _1154_ ( + .A1(_0559_), + .A2(_0711_), + .B1(_0560_), + .Y(_0795_) + ); + sky130_fd_sc_hd__nor2_1 _1155_ ( + .A(_0712_), + .B(_0795_), + .Y(_0302_) + ); + sky130_fd_sc_hd__xnor2_1 _1156_ ( + .A(_0647_), + .B(_0711_), + .Y(_0301_) + ); + sky130_fd_sc_hd__xnor2_1 _1157_ ( + .A(_0633_), + .B(_0691_), + .Y(_0375_) + ); + sky130_fd_sc_hd__xor2_1 _1158_ ( + .A(_0562_), + .B(_0713_), + .X(_0304_) + ); + sky130_fd_sc_hd__nor2_1 _1159_ ( + .A(_0561_), + .B(_0712_), + .Y(_0796_) + ); + sky130_fd_sc_hd__nor2_1 _1160_ ( + .A(_0713_), + .B(_0796_), + .Y(_0303_) + ); + sky130_fd_sc_hd__xnor2_1 _1161_ ( + .A(_0649_), + .B(_0693_), + .Y(_0269_) + ); + sky130_fd_sc_hd__a21oi_1 _1162_ ( + .A1(_0562_), + .A2(_0713_), + .B1(_0563_), + .Y(_0797_) + ); + sky130_fd_sc_hd__nor2_1 _1163_ ( + .A(_0714_), + .B(_0797_), + .Y(_0305_) + ); + sky130_fd_sc_hd__xnor2_1 _1164_ ( + .A(_0551_), + .B(_0705_), + .Y(_0293_) + ); + sky130_fd_sc_hd__a21oi_1 _1165_ ( + .A1(_0549_), + .A2(_0704_), + .B1(_0550_), + .Y(_0798_) + ); + sky130_fd_sc_hd__lpflow_isobufsrc_1 _1166_ ( + .A(_0705_), + .SLEEP(_0798_), + .X(_0292_) + ); + sky130_fd_sc_hd__xnor2_1 _1167_ ( + .A(_0615_), + .B(_0757_), + .Y(_0357_) + ); + sky130_fd_sc_hd__xnor2_1 _1168_ ( + .A(_0626_), + .B(_0766_), + .Y(_0368_) + ); + sky130_fd_sc_hd__xnor2_1 _1169_ ( + .A(_0625_), + .B(_0765_), + .Y(_0367_) + ); + sky130_fd_sc_hd__xnor2_1 _1170_ ( + .A(_0531_), + .B(_0792_), + .Y(_0273_) + ); + sky130_fd_sc_hd__xnor2_1 _1171_ ( + .A(_0576_), + .B(_0724_), + .Y(_0318_) + ); + sky130_fd_sc_hd__xnor2_1 _1172_ ( + .A(_0623_), + .B(_0764_), + .Y(_0365_) + ); + sky130_fd_sc_hd__o21ai_0 _1173_ ( + .A1(_0653_), + .A2(_0764_), + .B1(_0654_), + .Y(_0799_) + ); + sky130_fd_sc_hd__and2_0 _1174_ ( + .A(_0765_), + .B(_0799_), + .X(_0366_) + ); + sky130_fd_sc_hd__nor2_1 _1175_ ( + .A(_0617_), + .B(_0759_), + .Y(_0800_) + ); + sky130_fd_sc_hd__nor2_1 _1176_ ( + .A(_0760_), + .B(_0800_), + .Y(_0359_) + ); + sky130_fd_sc_hd__xnor2_1 _1177_ ( + .A(_0616_), + .B(_0758_), + .Y(_0358_) + ); + sky130_fd_sc_hd__xnor2_1 _1178_ ( + .A(_0590_), + .B(_0735_), + .Y(_0332_) + ); + sky130_fd_sc_hd__xnor2_1 _1179_ ( + .A(_0586_), + .B(_0732_), + .Y(_0328_) + ); + sky130_fd_sc_hd__xor2_1 _1180_ ( + .A(_0588_), + .B(_0734_), + .X(_0330_) + ); + sky130_fd_sc_hd__nor2_1 _1181_ ( + .A(_0587_), + .B(_0733_), + .Y(_0801_) + ); + sky130_fd_sc_hd__nor2_1 _1182_ ( + .A(_0734_), + .B(_0801_), + .Y(_0329_) + ); + sky130_fd_sc_hd__xnor2_1 _1183_ ( + .A(_0657_), + .B(_0731_), + .Y(_0327_) + ); + sky130_fd_sc_hd__nand2_1 _1184_ ( + .A(_0599_), + .B(_0742_), + .Y(_0802_) + ); + sky130_fd_sc_hd__a31oi_1 _1185_ ( + .A1(_0601_), + .A2(_0599_), + .A3(_0742_), + .B1(_0602_), + .Y(_0803_) + ); + sky130_fd_sc_hd__nor2_1 _1186_ ( + .A(_0744_), + .B(_0803_), + .Y(_0344_) + ); + sky130_fd_sc_hd__xnor2_1 _1187_ ( + .A(_0601_), + .B(_0802_), + .Y(_0343_) + ); + sky130_fd_sc_hd__xor2_1 _1188_ ( + .A(_0604_), + .B(_0745_), + .X(_0346_) + ); + sky130_fd_sc_hd__nor2_1 _1189_ ( + .A(_0603_), + .B(_0744_), + .Y(_0804_) + ); + sky130_fd_sc_hd__nor2_1 _1190_ ( + .A(_0745_), + .B(_0804_), + .Y(_0345_) + ); + sky130_fd_sc_hd__xor2_1 _1191_ ( + .A(_0599_), + .B(_0742_), + .X(_0341_) + ); + sky130_fd_sc_hd__a21oi_1 _1192_ ( + .A1(_0542_), + .A2(_0699_), + .B1(_0543_), + .Y(_0805_) + ); + sky130_fd_sc_hd__lpflow_isobufsrc_1 _1193_ ( + .A(_0700_), + .SLEEP(_0805_), + .X(_0285_) + ); + sky130_fd_sc_hd__xnor2_1 _1194_ ( + .A(_0597_), + .B(_0741_), + .Y(_0339_) + ); + sky130_fd_sc_hd__a21oi_1 _1195_ ( + .A1(_0595_), + .A2(_0739_), + .B1(_0596_), + .Y(_0806_) + ); + sky130_fd_sc_hd__nor2_1 _1196_ ( + .A(_0740_), + .B(_0806_), + .Y(_0338_) + ); + sky130_fd_sc_hd__a21oi_1 _1197_ ( + .A1(_0597_), + .A2(_0740_), + .B1(_0598_), + .Y(_0807_) + ); + sky130_fd_sc_hd__nor2_1 _1198_ ( + .A(_0742_), + .B(_0807_), + .Y(_0340_) + ); + sky130_fd_sc_hd__xnor2_1 _1199_ ( + .A(_0663_), + .B(_0737_), + .Y(_0334_) + ); + sky130_fd_sc_hd__xnor2_1 _1200_ ( + .A(_0591_), + .B(_0736_), + .Y(_0333_) + ); + sky130_fd_sc_hd__a21oi_1 _1201_ ( + .A1(_0592_), + .A2(_0737_), + .B1(_0593_), + .Y(_0808_) + ); + sky130_fd_sc_hd__nor2_1 _1202_ ( + .A(_0738_), + .B(_0808_), + .Y(_0335_) + ); + sky130_fd_sc_hd__xor2_1 _1203_ ( + .A(_0595_), + .B(_0739_), + .X(_0337_) + ); + sky130_fd_sc_hd__nor2_1 _1204_ ( + .A(_0594_), + .B(_0738_), + .Y(_0809_) + ); + sky130_fd_sc_hd__nor2_1 _1205_ ( + .A(_0739_), + .B(_0809_), + .Y(_0336_) + ); + sky130_fd_sc_hd__xnor2_1 _1206_ ( + .A(_0508_), + .B(_0774_), + .Y(_0250_) + ); + sky130_fd_sc_hd__nor2_1 _1207_ ( + .A(_0606_), + .B(_0746_), + .Y(_0810_) + ); + sky130_fd_sc_hd__nor2_1 _1208_ ( + .A(_0747_), + .B(_0810_), + .Y(_0348_) + ); + sky130_fd_sc_hd__a21oi_1 _1209_ ( + .A1(_0604_), + .A2(_0745_), + .B1(_0605_), + .Y(_0811_) + ); + sky130_fd_sc_hd__nor2_1 _1210_ ( + .A(_0746_), + .B(_0811_), + .Y(_0347_) + ); + sky130_fd_sc_hd__xnor2_1 _1211_ ( + .A(_0621_), + .B(_0763_), + .Y(_0363_) + ); + sky130_fd_sc_hd__xor2_1 _1212_ ( + .A(_0620_), + .B(_0762_), + .X(_0362_) + ); + sky130_fd_sc_hd__xor2_1 _1213_ ( + .A(_0582_), + .B(_0728_), + .X(_0324_) + ); + sky130_fd_sc_hd__xnor2_1 _1214_ ( + .A(_0577_), + .B(_0725_), + .Y(_0319_) + ); + sky130_fd_sc_hd__a21oi_1 _1215_ ( + .A1(_0607_), + .A2(_0747_), + .B1(_0608_), + .Y(_0812_) + ); + sky130_fd_sc_hd__nor2_1 _1216_ ( + .A(_0748_), + .B(_0812_), + .Y(_0350_) + ); + sky130_fd_sc_hd__xnor2_1 _1217_ ( + .A(_0661_), + .B(_0699_), + .Y(_0284_) + ); + sky130_fd_sc_hd__xnor2_1 _1218_ ( + .A(_0541_), + .B(_0698_), + .Y(_0283_) + ); + sky130_fd_sc_hd__nor2_1 _1219_ ( + .A(_0581_), + .B(_0727_), + .Y(_0813_) + ); + sky130_fd_sc_hd__nor2_1 _1220_ ( + .A(_0728_), + .B(_0813_), + .Y(_0323_) + ); + sky130_fd_sc_hd__a21oi_1 _1221_ ( + .A1(_0579_), + .A2(_0726_), + .B1(_0580_), + .Y(_0814_) + ); + sky130_fd_sc_hd__nor2_1 _1222_ ( + .A(_0727_), + .B(_0814_), + .Y(_0322_) + ); + sky130_fd_sc_hd__xnor2_1 _1223_ ( + .A(_0668_), + .B(_0726_), + .Y(_0321_) + ); + sky130_fd_sc_hd__and4_1 _1224_ ( + .A(_0530_), + .B(_0531_), + .C(_0532_), + .D(_0791_), + .X(_0815_) + ); + sky130_fd_sc_hd__nand3_1 _1225_ ( + .A(_0534_), + .B(_0533_), + .C(_0815_), + .Y(_0816_) + ); + sky130_fd_sc_hd__nand4_1 _1226_ ( + .A(_0534_), + .B(_0535_), + .C(_0533_), + .D(_0815_), + .Y(_0817_) + ); + sky130_fd_sc_hd__xnor2_1 _1227_ ( + .A(_0535_), + .B(_0816_), + .Y(_0277_) + ); + sky130_fd_sc_hd__xor2_1 _1228_ ( + .A(_0613_), + .B(_0755_), + .X(_0355_) + ); + sky130_fd_sc_hd__a31oi_1 _1229_ ( + .A1(_0609_), + .A2(_0610_), + .A3(_0748_), + .B1(_0612_), + .Y(_0818_) + ); + sky130_fd_sc_hd__nor2_1 _1230_ ( + .A(_0755_), + .B(_0818_), + .Y(_0354_) + ); + sky130_fd_sc_hd__a41oi_1 _1231_ ( + .A1(_0521_), + .A2(_0519_), + .A3(_0520_), + .A4(_0782_), + .B1(_0522_), + .Y(_0819_) + ); + sky130_fd_sc_hd__nor2_1 _1232_ ( + .A(_0786_), + .B(_0819_), + .Y(_0264_) + ); + sky130_fd_sc_hd__xnor2_1 _1233_ ( + .A(_0521_), + .B(_0784_), + .Y(_0263_) + ); + sky130_fd_sc_hd__xor2_1 _1234_ ( + .A(_0518_), + .B(_0781_), + .X(_0260_) + ); + sky130_fd_sc_hd__xnor2_1 _1235_ ( + .A(_0628_), + .B(_0768_), + .Y(_0370_) + ); + sky130_fd_sc_hd__xnor2_1 _1236_ ( + .A(_0536_), + .B(_0817_), + .Y(_0278_) + ); + sky130_fd_sc_hd__a21oi_1 _1237_ ( + .A1(_0533_), + .A2(_0815_), + .B1(_0534_), + .Y(_0820_) + ); + sky130_fd_sc_hd__lpflow_isobufsrc_1 _1238_ ( + .A(_0816_), + .SLEEP(_0820_), + .X(_0276_) + ); + sky130_fd_sc_hd__xnor2_1 _1239_ ( + .A(_0529_), + .B(_0790_), + .Y(_0271_) + ); + sky130_fd_sc_hd__xnor2_1 _1240_ ( + .A(_0528_), + .B(_0789_), + .Y(_0270_) + ); + sky130_fd_sc_hd__xor2_1 _1241_ ( + .A(_0511_), + .B(_0776_), + .X(_0253_) + ); + sky130_fd_sc_hd__a21oi_1 _1242_ ( + .A1(_0509_), + .A2(_0775_), + .B1(_0510_), + .Y(_0821_) + ); + sky130_fd_sc_hd__nor2_1 _1243_ ( + .A(_0776_), + .B(_0821_), + .Y(_0252_) + ); + sky130_fd_sc_hd__xnor2_1 _1244_ ( + .A(_0675_), + .B(_0775_), + .Y(_0251_) + ); + sky130_fd_sc_hd__xnor2_1 _1245_ ( + .A(_0631_), + .B(_0770_), + .Y(_0373_) + ); + sky130_fd_sc_hd__xnor2_1 _1246_ ( + .A(_0520_), + .B(_0783_), + .Y(_0262_) + ); + sky130_fd_sc_hd__xnor2_1 _1247_ ( + .A(_0679_), + .B(_0760_), + .Y(_0360_) + ); + sky130_fd_sc_hd__xnor2_1 _1248_ ( + .A(_0680_), + .B(_0780_), + .Y(_0257_) + ); + sky130_fd_sc_hd__xnor2_1 _1249_ ( + .A(_0514_), + .B(_0779_), + .Y(_0256_) + ); + sky130_fd_sc_hd__xnor2_1 _1250_ ( + .A(_0672_), + .B(_0767_), + .Y(_0369_) + ); + sky130_fd_sc_hd__nor2_1 _1251_ ( + .A(_0524_), + .B(_0787_), + .Y(_0822_) + ); + sky130_fd_sc_hd__nor2_1 _1252_ ( + .A(_0788_), + .B(_0822_), + .Y(_0266_) + ); + sky130_fd_sc_hd__xor2_1 _1253_ ( + .A(_0632_), + .B(_0771_), + .X(_0374_) + ); + sky130_fd_sc_hd__a21oi_1 _1254_ ( + .A1(_0525_), + .A2(_0788_), + .B1(_0526_), + .Y(_0823_) + ); + sky130_fd_sc_hd__lpflow_isobufsrc_1 _1255_ ( + .A(_0789_), + .SLEEP(_0823_), + .X(_0268_) + ); + sky130_fd_sc_hd__xor2_1 _1256_ ( + .A(_0525_), + .B(_0788_), + .X(_0267_) + ); + sky130_fd_sc_hd__xor2_1 _1257_ ( + .A(_0619_), + .B(_0761_), + .X(_0361_) + ); + sky130_fd_sc_hd__o21ai_0 _1258_ ( + .A1(_0677_), + .A2(_0769_), + .B1(_0678_), + .Y(_0824_) + ); + sky130_fd_sc_hd__and2_0 _1259_ ( + .A(_0770_), + .B(_0824_), + .X(_0372_) + ); + sky130_fd_sc_hd__xnor2_1 _1260_ ( + .A(_0629_), + .B(_0769_), + .Y(_0371_) + ); + sky130_fd_sc_hd__xor2_1 _1261_ ( + .A(_0533_), + .B(_0815_), + .X(_0275_) + ); + sky130_fd_sc_hd__a31oi_1 _1262_ ( + .A1(_0530_), + .A2(_0531_), + .A3(_0791_), + .B1(_0532_), + .Y(_0825_) + ); + sky130_fd_sc_hd__nor2_1 _1263_ ( + .A(_0815_), + .B(_0825_), + .Y(_0274_) + ); + sky130_fd_sc_hd__xor2_1 _1264_ ( + .A(_0519_), + .B(_0782_), + .X(_0261_) + ); + sky130_fd_sc_hd__xnor2_1 _1265_ ( + .A(_0507_), + .B(_0773_), + .Y(_0249_) + ); + sky130_fd_sc_hd__xor2_1 _1266_ ( + .A(_0506_), + .B(_0772_), + .X(_0248_) + ); + sky130_fd_sc_hd__xnor2_1 _1267_ ( + .A(_0513_), + .B(_0778_), + .Y(_0255_) + ); + sky130_fd_sc_hd__xor2_1 _1268_ ( + .A(_0538_), + .B(_0695_), + .X(_0280_) + ); + sky130_fd_sc_hd__xnor2_1 _1269_ ( + .A(_0537_), + .B(_0694_), + .Y(_0279_) + ); + sky130_fd_sc_hd__xor2_1 _1270_ ( + .A(_0512_), + .B(_0777_), + .X(_0254_) + ); + sky130_fd_sc_hd__nor2_1 _1271_ ( + .A(_0523_), + .B(_0786_), + .Y(_0826_) + ); + sky130_fd_sc_hd__nor2_1 _1272_ ( + .A(_0787_), + .B(_0826_), + .Y(_0265_) + ); + sky130_fd_sc_hd__xor2_1 _1273_ ( + .A(_0569_), + .B(_0717_), + .X(_0311_) + ); + sky130_fd_sc_hd__a21oi_1 _1274_ ( + .A1(_0565_), + .A2(_0715_), + .B1(_0566_), + .Y(_0827_) + ); + sky130_fd_sc_hd__nor2_1 _1275_ ( + .A(_0716_), + .B(_0827_), + .Y(_0308_) + ); + sky130_fd_sc_hd__xor2_1 _1276_ ( + .A(_0565_), + .B(_0715_), + .X(_0307_) + ); + sky130_fd_sc_hd__a21oi_1 _1277_ ( + .A1(_0515_), + .A2(_0780_), + .B1(_0517_), + .Y(_0828_) + ); + sky130_fd_sc_hd__nor2_1 _1278_ ( + .A(_0781_), + .B(_0828_), + .Y(_0259_) + ); + sky130_fd_sc_hd__xor2_1 _1279_ ( + .A(_0614_), + .B(_0756_), + .X(_0356_) + ); + sky130_fd_sc_hd__xor2_1 _1280_ ( + .A(_0564_), + .B(_0714_), + .X(_0306_) + ); + sky130_fd_sc_hd__xor2_1 _1281_ ( + .A(_0607_), + .B(_0747_), + .X(_0349_) + ); + sky130_fd_sc_hd__xor2_1 _1282_ ( + .A(_0574_), + .B(_0722_), + .X(_0316_) + ); + sky130_fd_sc_hd__xnor2_1 _1283_ ( + .A(_0573_), + .B(_0721_), + .Y(_0315_) + ); + sky130_fd_sc_hd__xnor2_1 _1284_ ( + .A(_0571_), + .B(_0719_), + .Y(_0313_) + ); + sky130_fd_sc_hd__xnor2_1 _1285_ ( + .A(_0570_), + .B(_0718_), + .Y(_0312_) + ); + sky130_fd_sc_hd__clkinv_1 _1286_ ( + .A(_0829_), + .Y(_0377_) + ); + sky130_fd_sc_hd__clkinv_1 _1287_ ( + .A(_0829_), + .Y(_0378_) + ); + sky130_fd_sc_hd__clkinv_1 _1288_ ( + .A(_0829_), + .Y(_0379_) + ); + sky130_fd_sc_hd__clkinv_1 _1289_ ( + .A(_0829_), + .Y(_0380_) + ); + sky130_fd_sc_hd__clkinv_1 _1290_ ( + .A(_0829_), + .Y(_0381_) + ); + sky130_fd_sc_hd__clkinv_1 _1291_ ( + .A(_0829_), + .Y(_0382_) + ); + sky130_fd_sc_hd__clkinv_1 _1292_ ( + .A(_0829_), + .Y(_0383_) + ); + sky130_fd_sc_hd__clkinv_1 _1293_ ( + .A(_0829_), + .Y(_0384_) + ); + sky130_fd_sc_hd__clkinv_1 _1294_ ( + .A(_0829_), + .Y(_0385_) + ); + sky130_fd_sc_hd__clkinv_1 _1295_ ( + .A(_0829_), + .Y(_0386_) + ); + sky130_fd_sc_hd__clkinv_1 _1296_ ( + .A(_0829_), + .Y(_0387_) + ); + sky130_fd_sc_hd__clkinv_1 _1297_ ( + .A(_0829_), + .Y(_0388_) + ); + sky130_fd_sc_hd__clkinv_1 _1298_ ( + .A(_0829_), + .Y(_0389_) + ); + sky130_fd_sc_hd__clkinv_1 _1299_ ( + .A(_0829_), + .Y(_0390_) + ); + sky130_fd_sc_hd__clkinv_1 _1300_ ( + .A(_0829_), + .Y(_0391_) + ); + sky130_fd_sc_hd__clkinv_1 _1301_ ( + .A(_0829_), + .Y(_0392_) + ); + sky130_fd_sc_hd__clkinv_1 _1302_ ( + .A(_0829_), + .Y(_0393_) + ); + sky130_fd_sc_hd__clkinv_1 _1303_ ( + .A(_0829_), + .Y(_0394_) + ); + sky130_fd_sc_hd__clkinv_1 _1304_ ( + .A(_0829_), + .Y(_0395_) + ); + sky130_fd_sc_hd__clkinv_1 _1305_ ( + .A(_0829_), + .Y(_0396_) + ); + sky130_fd_sc_hd__clkinv_1 _1306_ ( + .A(_0829_), + .Y(_0397_) + ); + sky130_fd_sc_hd__clkinv_1 _1307_ ( + .A(_0829_), + .Y(_0398_) + ); + sky130_fd_sc_hd__clkinv_1 _1308_ ( + .A(_0829_), + .Y(_0399_) + ); + sky130_fd_sc_hd__clkinv_1 _1309_ ( + .A(_0829_), + .Y(_0400_) + ); + sky130_fd_sc_hd__clkinv_1 _1310_ ( + .A(_0829_), + .Y(_0401_) + ); + sky130_fd_sc_hd__clkinv_1 _1311_ ( + .A(_0829_), + .Y(_0402_) + ); + sky130_fd_sc_hd__clkinv_1 _1312_ ( + .A(_0829_), + .Y(_0403_) + ); + sky130_fd_sc_hd__clkinv_1 _1313_ ( + .A(_0829_), + .Y(_0404_) + ); + sky130_fd_sc_hd__clkinv_1 _1314_ ( + .A(_0829_), + .Y(_0405_) + ); + sky130_fd_sc_hd__clkinv_1 _1315_ ( + .A(_0829_), + .Y(_0406_) + ); + sky130_fd_sc_hd__clkinv_1 _1316_ ( + .A(_0829_), + .Y(_0407_) + ); + sky130_fd_sc_hd__clkinv_1 _1317_ ( + .A(_0829_), + .Y(_0408_) + ); + sky130_fd_sc_hd__clkinv_1 _1318_ ( + .A(_0829_), + .Y(_0409_) + ); + sky130_fd_sc_hd__clkinv_1 _1319_ ( + .A(_0829_), + .Y(_0410_) + ); + sky130_fd_sc_hd__clkinv_1 _1320_ ( + .A(_0829_), + .Y(_0411_) + ); + sky130_fd_sc_hd__clkinv_1 _1321_ ( + .A(_0829_), + .Y(_0412_) + ); + sky130_fd_sc_hd__clkinv_1 _1322_ ( + .A(_0829_), + .Y(_0413_) + ); + sky130_fd_sc_hd__clkinv_1 _1323_ ( + .A(_0829_), + .Y(_0414_) + ); + sky130_fd_sc_hd__clkinv_1 _1324_ ( + .A(_0829_), + .Y(_0415_) + ); + sky130_fd_sc_hd__clkinv_1 _1325_ ( + .A(_0829_), + .Y(_0416_) + ); + sky130_fd_sc_hd__clkinv_1 _1326_ ( + .A(_0829_), + .Y(_0417_) + ); + sky130_fd_sc_hd__clkinv_1 _1327_ ( + .A(_0829_), + .Y(_0418_) + ); + sky130_fd_sc_hd__clkinv_1 _1328_ ( + .A(_0829_), + .Y(_0419_) + ); + sky130_fd_sc_hd__clkinv_1 _1329_ ( + .A(_0829_), + .Y(_0420_) + ); + sky130_fd_sc_hd__clkinv_1 _1330_ ( + .A(_0829_), + .Y(_0421_) + ); + sky130_fd_sc_hd__clkinv_1 _1331_ ( + .A(_0829_), + .Y(_0422_) + ); + sky130_fd_sc_hd__clkinv_1 _1332_ ( + .A(_0829_), + .Y(_0423_) + ); + sky130_fd_sc_hd__clkinv_1 _1333_ ( + .A(_0829_), + .Y(_0424_) + ); + sky130_fd_sc_hd__clkinv_1 _1334_ ( + .A(_0829_), + .Y(_0425_) + ); + sky130_fd_sc_hd__clkinv_1 _1335_ ( + .A(_0829_), + .Y(_0426_) + ); + sky130_fd_sc_hd__clkinv_1 _1336_ ( + .A(_0829_), + .Y(_0427_) + ); + sky130_fd_sc_hd__clkinv_1 _1337_ ( + .A(_0829_), + .Y(_0428_) + ); + sky130_fd_sc_hd__clkinv_1 _1338_ ( + .A(_0829_), + .Y(_0429_) + ); + sky130_fd_sc_hd__clkinv_1 _1339_ ( + .A(_0829_), + .Y(_0430_) + ); + sky130_fd_sc_hd__clkinv_1 _1340_ ( + .A(_0829_), + .Y(_0431_) + ); + sky130_fd_sc_hd__clkinv_1 _1341_ ( + .A(_0829_), + .Y(_0432_) + ); + sky130_fd_sc_hd__clkinv_1 _1342_ ( + .A(_0829_), + .Y(_0433_) + ); + sky130_fd_sc_hd__clkinv_1 _1343_ ( + .A(_0829_), + .Y(_0434_) + ); + sky130_fd_sc_hd__clkinv_1 _1344_ ( + .A(_0829_), + .Y(_0435_) + ); + sky130_fd_sc_hd__clkinv_1 _1345_ ( + .A(_0829_), + .Y(_0436_) + ); + sky130_fd_sc_hd__clkinv_1 _1346_ ( + .A(_0829_), + .Y(_0437_) + ); + sky130_fd_sc_hd__clkinv_1 _1347_ ( + .A(_0829_), + .Y(_0438_) + ); + sky130_fd_sc_hd__clkinv_1 _1348_ ( + .A(_0829_), + .Y(_0439_) + ); + sky130_fd_sc_hd__clkinv_1 _1349_ ( + .A(_0829_), + .Y(_0440_) + ); + sky130_fd_sc_hd__clkinv_1 _1350_ ( + .A(_0829_), + .Y(_0441_) + ); + sky130_fd_sc_hd__clkinv_1 _1351_ ( + .A(_0829_), + .Y(_0442_) + ); + sky130_fd_sc_hd__clkinv_1 _1352_ ( + .A(_0829_), + .Y(_0443_) + ); + sky130_fd_sc_hd__clkinv_1 _1353_ ( + .A(_0829_), + .Y(_0444_) + ); + sky130_fd_sc_hd__clkinv_1 _1354_ ( + .A(_0829_), + .Y(_0445_) + ); + sky130_fd_sc_hd__clkinv_1 _1355_ ( + .A(_0829_), + .Y(_0446_) + ); + sky130_fd_sc_hd__clkinv_1 _1356_ ( + .A(_0829_), + .Y(_0447_) + ); + sky130_fd_sc_hd__clkinv_1 _1357_ ( + .A(_0829_), + .Y(_0448_) + ); + sky130_fd_sc_hd__clkinv_1 _1358_ ( + .A(_0829_), + .Y(_0449_) + ); + sky130_fd_sc_hd__clkinv_1 _1359_ ( + .A(_0829_), + .Y(_0450_) + ); + sky130_fd_sc_hd__clkinv_1 _1360_ ( + .A(_0829_), + .Y(_0451_) + ); + sky130_fd_sc_hd__clkinv_1 _1361_ ( + .A(_0829_), + .Y(_0452_) + ); + sky130_fd_sc_hd__clkinv_1 _1362_ ( + .A(_0829_), + .Y(_0453_) + ); + sky130_fd_sc_hd__clkinv_1 _1363_ ( + .A(_0829_), + .Y(_0454_) + ); + sky130_fd_sc_hd__clkinv_1 _1364_ ( + .A(_0829_), + .Y(_0455_) + ); + sky130_fd_sc_hd__clkinv_1 _1365_ ( + .A(_0829_), + .Y(_0456_) + ); + sky130_fd_sc_hd__clkinv_1 _1366_ ( + .A(_0829_), + .Y(_0457_) + ); + sky130_fd_sc_hd__clkinv_1 _1367_ ( + .A(_0829_), + .Y(_0458_) + ); + sky130_fd_sc_hd__clkinv_1 _1368_ ( + .A(_0829_), + .Y(_0459_) + ); + sky130_fd_sc_hd__clkinv_1 _1369_ ( + .A(_0829_), + .Y(_0460_) + ); + sky130_fd_sc_hd__clkinv_1 _1370_ ( + .A(_0829_), + .Y(_0461_) + ); + sky130_fd_sc_hd__clkinv_1 _1371_ ( + .A(_0829_), + .Y(_0462_) + ); + sky130_fd_sc_hd__clkinv_1 _1372_ ( + .A(_0829_), + .Y(_0463_) + ); + sky130_fd_sc_hd__clkinv_1 _1373_ ( + .A(_0829_), + .Y(_0464_) + ); + sky130_fd_sc_hd__clkinv_1 _1374_ ( + .A(_0829_), + .Y(_0465_) + ); + sky130_fd_sc_hd__clkinv_1 _1375_ ( + .A(_0829_), + .Y(_0466_) + ); + sky130_fd_sc_hd__clkinv_1 _1376_ ( + .A(_0829_), + .Y(_0467_) + ); + sky130_fd_sc_hd__clkinv_1 _1377_ ( + .A(_0829_), + .Y(_0468_) + ); + sky130_fd_sc_hd__clkinv_1 _1378_ ( + .A(_0829_), + .Y(_0469_) + ); + sky130_fd_sc_hd__clkinv_1 _1379_ ( + .A(_0829_), + .Y(_0470_) + ); + sky130_fd_sc_hd__clkinv_1 _1380_ ( + .A(_0829_), + .Y(_0471_) + ); + sky130_fd_sc_hd__clkinv_1 _1381_ ( + .A(_0829_), + .Y(_0472_) + ); + sky130_fd_sc_hd__clkinv_1 _1382_ ( + .A(_0829_), + .Y(_0473_) + ); + sky130_fd_sc_hd__clkinv_1 _1383_ ( + .A(_0829_), + .Y(_0474_) + ); + sky130_fd_sc_hd__clkinv_1 _1384_ ( + .A(_0829_), + .Y(_0475_) + ); + sky130_fd_sc_hd__clkinv_1 _1385_ ( + .A(_0829_), + .Y(_0476_) + ); + sky130_fd_sc_hd__clkinv_1 _1386_ ( + .A(_0829_), + .Y(_0477_) + ); + sky130_fd_sc_hd__clkinv_1 _1387_ ( + .A(_0829_), + .Y(_0478_) + ); + sky130_fd_sc_hd__clkinv_1 _1388_ ( + .A(_0829_), + .Y(_0479_) + ); + sky130_fd_sc_hd__clkinv_1 _1389_ ( + .A(_0829_), + .Y(_0480_) + ); + sky130_fd_sc_hd__clkinv_1 _1390_ ( + .A(_0829_), + .Y(_0481_) + ); + sky130_fd_sc_hd__clkinv_1 _1391_ ( + .A(_0829_), + .Y(_0482_) + ); + sky130_fd_sc_hd__clkinv_1 _1392_ ( + .A(_0829_), + .Y(_0483_) + ); + sky130_fd_sc_hd__clkinv_1 _1393_ ( + .A(_0829_), + .Y(_0484_) + ); + sky130_fd_sc_hd__clkinv_1 _1394_ ( + .A(_0829_), + .Y(_0485_) + ); + sky130_fd_sc_hd__clkinv_1 _1395_ ( + .A(_0829_), + .Y(_0486_) + ); + sky130_fd_sc_hd__clkinv_1 _1396_ ( + .A(_0829_), + .Y(_0487_) + ); + sky130_fd_sc_hd__clkinv_1 _1397_ ( + .A(_0829_), + .Y(_0488_) + ); + sky130_fd_sc_hd__clkinv_1 _1398_ ( + .A(_0829_), + .Y(_0489_) + ); + sky130_fd_sc_hd__clkinv_1 _1399_ ( + .A(_0829_), + .Y(_0490_) + ); + sky130_fd_sc_hd__clkinv_1 _1400_ ( + .A(_0829_), + .Y(_0491_) + ); + sky130_fd_sc_hd__clkinv_1 _1401_ ( + .A(_0829_), + .Y(_0492_) + ); + sky130_fd_sc_hd__clkinv_1 _1402_ ( + .A(_0829_), + .Y(_0493_) + ); + sky130_fd_sc_hd__clkinv_1 _1403_ ( + .A(_0829_), + .Y(_0494_) + ); + sky130_fd_sc_hd__clkinv_1 _1404_ ( + .A(_0829_), + .Y(_0495_) + ); + sky130_fd_sc_hd__clkinv_1 _1405_ ( + .A(_0829_), + .Y(_0496_) + ); + sky130_fd_sc_hd__clkinv_1 _1406_ ( + .A(_0829_), + .Y(_0497_) + ); + sky130_fd_sc_hd__clkinv_1 _1407_ ( + .A(_0829_), + .Y(_0498_) + ); + sky130_fd_sc_hd__clkinv_1 _1408_ ( + .A(_0829_), + .Y(_0499_) + ); + sky130_fd_sc_hd__clkinv_1 _1409_ ( + .A(_0829_), + .Y(_0500_) + ); + sky130_fd_sc_hd__clkinv_1 _1410_ ( + .A(_0829_), + .Y(_0501_) + ); + sky130_fd_sc_hd__clkinv_1 _1411_ ( + .A(_0829_), + .Y(_0502_) + ); + sky130_fd_sc_hd__clkinv_1 _1412_ ( + .A(_0829_), + .Y(_0503_) + ); + sky130_fd_sc_hd__clkinv_1 _1413_ ( + .A(_0829_), + .Y(_0504_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1414_ ( + .CLK(clk), + .D(_0831_[22]), + .Q(counter_tmp[22]), + .RESET_B(_0832_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1415_ ( + .CLK(clk), + .D(_0831_[23]), + .Q(counter_tmp[23]), + .RESET_B(_0833_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1416_ ( + .CLK(clk), + .D(_0831_[24]), + .Q(counter_tmp[24]), + .RESET_B(_0834_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1417_ ( + .CLK(clk), + .D(_0831_[25]), + .Q(counter_tmp[25]), + .RESET_B(_0835_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1418_ ( + .CLK(clk), + .D(_0831_[26]), + .Q(counter_tmp[26]), + .RESET_B(_0836_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1419_ ( + .CLK(clk), + .D(_0831_[27]), + .Q(counter_tmp[27]), + .RESET_B(_0837_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1420_ ( + .CLK(clk), + .D(_0831_[28]), + .Q(counter_tmp[28]), + .RESET_B(_0838_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1421_ ( + .CLK(clk), + .D(_0831_[29]), + .Q(counter_tmp[29]), + .RESET_B(_0839_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1422_ ( + .CLK(clk), + .D(_0831_[30]), + .Q(counter_tmp[30]), + .RESET_B(_0840_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1423_ ( + .CLK(clk), + .D(_0831_[31]), + .Q(counter_tmp[31]), + .RESET_B(_0841_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1424_ ( + .CLK(clk), + .D(_0831_[32]), + .Q(counter_tmp[32]), + .RESET_B(_0842_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1425_ ( + .CLK(clk), + .D(_0831_[33]), + .Q(counter_tmp[33]), + .RESET_B(_0843_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1426_ ( + .CLK(clk), + .D(_0831_[34]), + .Q(counter_tmp[34]), + .RESET_B(_0844_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1427_ ( + .CLK(clk), + .D(_0831_[35]), + .Q(counter_tmp[35]), + .RESET_B(_0845_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1428_ ( + .CLK(clk), + .D(_0831_[36]), + .Q(counter_tmp[36]), + .RESET_B(_0846_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1429_ ( + .CLK(clk), + .D(_0831_[37]), + .Q(counter_tmp[37]), + .RESET_B(_0847_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1430_ ( + .CLK(clk), + .D(_0831_[38]), + .Q(counter_tmp[38]), + .RESET_B(_0848_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1431_ ( + .CLK(clk), + .D(_0831_[39]), + .Q(counter_tmp[39]), + .RESET_B(_0849_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1432_ ( + .CLK(clk), + .D(_0831_[40]), + .Q(counter_tmp[40]), + .RESET_B(_0850_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1433_ ( + .CLK(clk), + .D(_0831_[41]), + .Q(counter_tmp[41]), + .RESET_B(_0851_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1434_ ( + .CLK(clk), + .D(_0831_[42]), + .Q(counter_tmp[42]), + .RESET_B(_0852_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1435_ ( + .CLK(clk), + .D(_0831_[43]), + .Q(counter_tmp[43]), + .RESET_B(_0853_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1436_ ( + .CLK(clk), + .D(_0831_[44]), + .Q(counter_tmp[44]), + .RESET_B(_0854_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1437_ ( + .CLK(clk), + .D(_0831_[45]), + .Q(counter_tmp[45]), + .RESET_B(_0855_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1438_ ( + .CLK(clk), + .D(_0831_[46]), + .Q(counter_tmp[46]), + .RESET_B(_0856_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1439_ ( + .CLK(clk), + .D(_0831_[47]), + .Q(counter_tmp[47]), + .RESET_B(_0857_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1440_ ( + .CLK(clk), + .D(_0831_[48]), + .Q(counter_tmp[48]), + .RESET_B(_0858_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1441_ ( + .CLK(clk), + .D(_0831_[49]), + .Q(counter_tmp[49]), + .RESET_B(_0859_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1442_ ( + .CLK(clk), + .D(_0831_[50]), + .Q(counter_tmp[50]), + .RESET_B(_0860_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1443_ ( + .CLK(clk), + .D(_0831_[51]), + .Q(counter_tmp[51]), + .RESET_B(_0861_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1444_ ( + .CLK(clk), + .D(_0831_[52]), + .Q(counter_tmp[52]), + .RESET_B(_0862_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1445_ ( + .CLK(clk), + .D(_0831_[53]), + .Q(counter_tmp[53]), + .RESET_B(_0863_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1446_ ( + .CLK(clk), + .D(_0831_[54]), + .Q(counter_tmp[54]), + .RESET_B(_0864_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1447_ ( + .CLK(clk), + .D(_0831_[55]), + .Q(counter_tmp[55]), + .RESET_B(_0865_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1448_ ( + .CLK(clk), + .D(_0831_[56]), + .Q(counter_tmp[56]), + .RESET_B(_0866_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1449_ ( + .CLK(clk), + .D(_0831_[57]), + .Q(counter_tmp[57]), + .RESET_B(_0867_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1450_ ( + .CLK(clk), + .D(_0831_[58]), + .Q(counter_tmp[58]), + .RESET_B(_0868_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1451_ ( + .CLK(clk), + .D(_0831_[59]), + .Q(counter_tmp[59]), + .RESET_B(_0869_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1452_ ( + .CLK(clk), + .D(_0831_[60]), + .Q(counter_tmp[60]), + .RESET_B(_0870_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1453_ ( + .CLK(clk), + .D(_0831_[61]), + .Q(counter_tmp[61]), + .RESET_B(_0871_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1454_ ( + .CLK(clk), + .D(_0831_[62]), + .Q(counter_tmp[62]), + .RESET_B(_0872_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1455_ ( + .CLK(clk), + .D(_0831_[63]), + .Q(counter_tmp[63]), + .RESET_B(_0873_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1456_ ( + .CLK(clk), + .D(_0831_[64]), + .Q(counter_tmp[64]), + .RESET_B(_0874_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1457_ ( + .CLK(clk), + .D(_0831_[65]), + .Q(counter_tmp[65]), + .RESET_B(_0875_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1458_ ( + .CLK(clk), + .D(_0831_[66]), + .Q(counter_tmp[66]), + .RESET_B(_0876_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1459_ ( + .CLK(clk), + .D(_0831_[67]), + .Q(counter_tmp[67]), + .RESET_B(_0877_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1460_ ( + .CLK(clk), + .D(_0831_[68]), + .Q(counter_tmp[68]), + .RESET_B(_0878_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1461_ ( + .CLK(clk), + .D(_0831_[69]), + .Q(counter_tmp[69]), + .RESET_B(_0879_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1462_ ( + .CLK(clk), + .D(_0831_[70]), + .Q(counter_tmp[70]), + .RESET_B(_0880_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1463_ ( + .CLK(clk), + .D(_0831_[71]), + .Q(counter_tmp[71]), + .RESET_B(_0881_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1464_ ( + .CLK(clk), + .D(_0831_[72]), + .Q(counter_tmp[72]), + .RESET_B(_0882_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1465_ ( + .CLK(clk), + .D(_0831_[73]), + .Q(counter_tmp[73]), + .RESET_B(_0883_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1466_ ( + .CLK(clk), + .D(_0831_[74]), + .Q(counter_tmp[74]), + .RESET_B(_0884_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1467_ ( + .CLK(clk), + .D(_0831_[75]), + .Q(counter_tmp[75]), + .RESET_B(_0885_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1468_ ( + .CLK(clk), + .D(_0831_[76]), + .Q(counter_tmp[76]), + .RESET_B(_0886_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1469_ ( + .CLK(clk), + .D(_0831_[77]), + .Q(counter_tmp[77]), + .RESET_B(_0887_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1470_ ( + .CLK(clk), + .D(_0831_[78]), + .Q(counter_tmp[78]), + .RESET_B(_0888_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1471_ ( + .CLK(clk), + .D(_0831_[79]), + .Q(counter_tmp[79]), + .RESET_B(_0889_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1472_ ( + .CLK(clk), + .D(_0831_[80]), + .Q(counter_tmp[80]), + .RESET_B(_0890_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1473_ ( + .CLK(clk), + .D(_0831_[81]), + .Q(counter_tmp[81]), + .RESET_B(_0891_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1474_ ( + .CLK(clk), + .D(_0831_[82]), + .Q(counter_tmp[82]), + .RESET_B(_0892_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1475_ ( + .CLK(clk), + .D(_0831_[83]), + .Q(counter_tmp[83]), + .RESET_B(_0893_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1476_ ( + .CLK(clk), + .D(_0831_[84]), + .Q(counter_tmp[84]), + .RESET_B(_0894_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1477_ ( + .CLK(clk), + .D(_0831_[85]), + .Q(counter_tmp[85]), + .RESET_B(_0895_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1478_ ( + .CLK(clk), + .D(_0831_[86]), + .Q(counter_tmp[86]), + .RESET_B(_0896_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1479_ ( + .CLK(clk), + .D(_0831_[87]), + .Q(counter_tmp[87]), + .RESET_B(_0897_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1480_ ( + .CLK(clk), + .D(_0831_[88]), + .Q(counter_tmp[88]), + .RESET_B(_0898_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1481_ ( + .CLK(clk), + .D(_0831_[89]), + .Q(counter_tmp[89]), + .RESET_B(_0899_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1482_ ( + .CLK(clk), + .D(_0831_[90]), + .Q(counter_tmp[90]), + .RESET_B(_0900_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1483_ ( + .CLK(clk), + .D(_0831_[91]), + .Q(counter_tmp[91]), + .RESET_B(_0901_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1484_ ( + .CLK(clk), + .D(_0831_[92]), + .Q(counter_tmp[92]), + .RESET_B(_0902_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1485_ ( + .CLK(clk), + .D(_0831_[93]), + .Q(counter_tmp[93]), + .RESET_B(_0903_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1486_ ( + .CLK(clk), + .D(_0831_[94]), + .Q(counter_tmp[94]), + .RESET_B(_0904_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1487_ ( + .CLK(clk), + .D(_0831_[95]), + .Q(counter_tmp[95]), + .RESET_B(_0905_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1488_ ( + .CLK(clk), + .D(_0831_[96]), + .Q(counter_tmp[96]), + .RESET_B(_0906_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1489_ ( + .CLK(clk), + .D(_0831_[97]), + .Q(counter_tmp[97]), + .RESET_B(_0907_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1490_ ( + .CLK(clk), + .D(_0831_[98]), + .Q(counter_tmp[98]), + .RESET_B(_0908_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1491_ ( + .CLK(clk), + .D(_0831_[99]), + .Q(counter_tmp[99]), + .RESET_B(_0909_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1492_ ( + .CLK(clk), + .D(_0831_[100]), + .Q(counter_tmp[100]), + .RESET_B(_0910_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1493_ ( + .CLK(clk), + .D(_0831_[101]), + .Q(counter_tmp[101]), + .RESET_B(_0911_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1494_ ( + .CLK(clk), + .D(_0831_[102]), + .Q(counter_tmp[102]), + .RESET_B(_0912_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1495_ ( + .CLK(clk), + .D(_0831_[103]), + .Q(counter_tmp[103]), + .RESET_B(_0913_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1496_ ( + .CLK(clk), + .D(_0831_[104]), + .Q(counter_tmp[104]), + .RESET_B(_0914_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1497_ ( + .CLK(clk), + .D(_0831_[105]), + .Q(counter_tmp[105]), + .RESET_B(_0915_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1498_ ( + .CLK(clk), + .D(_0831_[106]), + .Q(counter_tmp[106]), + .RESET_B(_0916_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1499_ ( + .CLK(clk), + .D(_0831_[107]), + .Q(counter_tmp[107]), + .RESET_B(_0917_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1500_ ( + .CLK(clk), + .D(_0831_[108]), + .Q(counter_tmp[108]), + .RESET_B(_0918_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1501_ ( + .CLK(clk), + .D(_0831_[109]), + .Q(counter_tmp[109]), + .RESET_B(_0919_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1502_ ( + .CLK(clk), + .D(_0831_[110]), + .Q(counter_tmp[110]), + .RESET_B(_0920_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1503_ ( + .CLK(clk), + .D(_0831_[111]), + .Q(counter_tmp[111]), + .RESET_B(_0921_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1504_ ( + .CLK(clk), + .D(_0831_[112]), + .Q(counter_tmp[112]), + .RESET_B(_0922_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1505_ ( + .CLK(clk), + .D(_0831_[113]), + .Q(counter_tmp[113]), + .RESET_B(_0923_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1506_ ( + .CLK(clk), + .D(_0831_[114]), + .Q(counter_tmp[114]), + .RESET_B(_0924_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1507_ ( + .CLK(clk), + .D(_0831_[115]), + .Q(counter_tmp[115]), + .RESET_B(_0925_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1508_ ( + .CLK(clk), + .D(_0831_[116]), + .Q(counter_tmp[116]), + .RESET_B(_0926_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1509_ ( + .CLK(clk), + .D(_0831_[117]), + .Q(counter_tmp[117]), + .RESET_B(_0927_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1510_ ( + .CLK(clk), + .D(_0831_[118]), + .Q(counter_tmp[118]), + .RESET_B(_0928_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1511_ ( + .CLK(clk), + .D(_0831_[119]), + .Q(counter_tmp[119]), + .RESET_B(_0929_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1512_ ( + .CLK(clk), + .D(_0831_[120]), + .Q(counter_tmp[120]), + .RESET_B(_0930_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1513_ ( + .CLK(clk), + .D(_0831_[121]), + .Q(counter_tmp[121]), + .RESET_B(_0931_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1514_ ( + .CLK(clk), + .D(_0831_[122]), + .Q(counter_tmp[122]), + .RESET_B(_0932_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1515_ ( + .CLK(clk), + .D(_0831_[123]), + .Q(counter_tmp[123]), + .RESET_B(_0933_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1516_ ( + .CLK(clk), + .D(_0831_[124]), + .Q(counter_tmp[124]), + .RESET_B(_0934_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1517_ ( + .CLK(clk), + .D(_0831_[125]), + .Q(counter_tmp[125]), + .RESET_B(_0935_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1518_ ( + .CLK(clk), + .D(_0831_[126]), + .Q(counter_tmp[126]), + .RESET_B(_0936_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1519_ ( + .CLK(clk), + .D(_0831_[127]), + .Q(counter_tmp[127]), + .RESET_B(_0937_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1520_ ( + .CLK(clk), + .D(_0831_[128]), + .Q(counter_tmp[128]), + .RESET_B(_0938_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1521_ ( + .CLK(clk), + .D(_0830_[0]), + .Q(counter_tmp[0]), + .RESET_B(_0939_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1522_ ( + .CLK(clk), + .D(_0831_[1]), + .Q(counter_tmp[1]), + .RESET_B(_0940_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1523_ ( + .CLK(clk), + .D(_0831_[2]), + .Q(counter_tmp[2]), + .RESET_B(_0941_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1524_ ( + .CLK(clk), + .D(_0831_[3]), + .Q(counter_tmp[3]), + .RESET_B(_0942_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1525_ ( + .CLK(clk), + .D(_0831_[4]), + .Q(counter_tmp[4]), + .RESET_B(_0943_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1526_ ( + .CLK(clk), + .D(_0831_[5]), + .Q(counter_tmp[5]), + .RESET_B(_0944_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1527_ ( + .CLK(clk), + .D(_0831_[6]), + .Q(counter_tmp[6]), + .RESET_B(_0945_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1528_ ( + .CLK(clk), + .D(_0831_[7]), + .Q(counter_tmp[7]), + .RESET_B(_0946_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1529_ ( + .CLK(clk), + .D(_0831_[8]), + .Q(counter_tmp[8]), + .RESET_B(_0947_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1530_ ( + .CLK(clk), + .D(_0831_[9]), + .Q(counter_tmp[9]), + .RESET_B(_0948_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1531_ ( + .CLK(clk), + .D(_0831_[10]), + .Q(counter_tmp[10]), + .RESET_B(_0949_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1532_ ( + .CLK(clk), + .D(_0831_[11]), + .Q(counter_tmp[11]), + .RESET_B(_0950_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1533_ ( + .CLK(clk), + .D(_0831_[12]), + .Q(counter_tmp[12]), + .RESET_B(_0951_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1534_ ( + .CLK(clk), + .D(_0831_[13]), + .Q(counter_tmp[13]), + .RESET_B(_0952_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1535_ ( + .CLK(clk), + .D(_0831_[14]), + .Q(counter_tmp[14]), + .RESET_B(_0953_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1536_ ( + .CLK(clk), + .D(_0831_[15]), + .Q(counter_tmp[15]), + .RESET_B(_0954_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1537_ ( + .CLK(clk), + .D(_0831_[16]), + .Q(counter_tmp[16]), + .RESET_B(_0955_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1538_ ( + .CLK(clk), + .D(_0831_[17]), + .Q(counter_tmp[17]), + .RESET_B(_0956_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1539_ ( + .CLK(clk), + .D(_0831_[18]), + .Q(counter_tmp[18]), + .RESET_B(_0957_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1540_ ( + .CLK(clk), + .D(_0831_[19]), + .Q(counter_tmp[19]), + .RESET_B(_0958_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1541_ ( + .CLK(clk), + .D(_0831_[20]), + .Q(counter_tmp[20]), + .RESET_B(_0959_) + ); + (* src = "synthesis/tests/counter.v:22.3-28.6" *) + sky130_fd_sc_hd__dfrtp_1 _1542_ ( + .CLK(clk), + .D(_0831_[21]), + .Q(counter_tmp[21]), + .RESET_B(_0960_) + ); + assign _0830_[128:1] = counter_tmp[128:1]; + assign _0831_[0] = _0830_[0]; + assign out = counter_tmp; + assign _0609_ = counter_tmp[78]; + assign _0610_ = counter_tmp[79]; + assign _0831_[79] = _0352_; + assign _0831_[78] = _0351_; + assign _0539_ = counter_tmp[14]; + assign _0540_ = counter_tmp[15]; + assign _0831_[15] = _0282_; + assign _0568_ = counter_tmp[40]; + assign _0831_[40] = _0310_; + assign _0583_ = counter_tmp[54]; + assign _0584_ = counter_tmp[55]; + assign _0831_[55] = _0326_; + assign _0831_[54] = _0325_; + assign _0543_ = counter_tmp[18]; + assign _0544_ = counter_tmp[19]; + assign _0831_[19] = _0286_; + assign _0516_ = counter_tmp[10]; + assign _0831_[10] = _0258_; + assign _0572_ = counter_tmp[44]; + assign _0831_[44] = _0314_; + assign _0545_ = counter_tmp[1]; + assign _0505_ = counter_tmp[0]; + assign _0546_ = counter_tmp[20]; + assign _0547_ = counter_tmp[21]; + assign _0831_[21] = _0289_; + assign _0831_[20] = _0288_; + assign _0574_ = counter_tmp[46]; + assign _0575_ = counter_tmp[47]; + assign _0831_[47] = _0317_; + assign _0831_[14] = _0281_; + assign _0537_ = counter_tmp[12]; + assign _0538_ = counter_tmp[13]; + assign _0549_ = counter_tmp[23]; + assign _0831_[23] = _0291_; + assign _0548_ = counter_tmp[22]; + assign _0831_[22] = _0290_; + assign _0553_ = counter_tmp[27]; + assign _0831_[27] = _0295_; + assign _0552_ = counter_tmp[26]; + assign _0831_[26] = _0294_; + assign _0831_[1] = _0287_; + assign _0830_[0] = _0247_; + assign _0554_ = counter_tmp[28]; + assign _0831_[28] = _0296_; + assign _0530_ = counter_tmp[122]; + assign _0831_[122] = _0272_; + assign _0567_ = counter_tmp[3]; + assign _0831_[3] = _0309_; + assign _0556_ = counter_tmp[2]; + assign _0831_[2] = _0298_; + assign _0555_ = counter_tmp[29]; + assign _0831_[29] = _0297_; + assign _0589_ = counter_tmp[5]; + assign _0831_[5] = _0331_; + assign _0578_ = counter_tmp[4]; + assign _0831_[4] = _0320_; + assign _0557_ = counter_tmp[30]; + assign _0558_ = counter_tmp[31]; + assign _0831_[31] = _0300_; + assign _0831_[30] = _0299_; + assign _0600_ = counter_tmp[6]; + assign _0831_[6] = _0342_; + assign _0622_ = counter_tmp[8]; + assign _0831_[8] = _0364_; + assign _0611_ = counter_tmp[7]; + assign _0831_[7] = _0353_; + assign _0559_ = counter_tmp[32]; + assign _0560_ = counter_tmp[33]; + assign _0831_[33] = _0302_; + assign _0831_[32] = _0301_; + assign _0633_ = counter_tmp[9]; + assign _0831_[9] = _0375_; + assign _0562_ = counter_tmp[35]; + assign _0831_[35] = _0304_; + assign _0561_ = counter_tmp[34]; + assign _0831_[34] = _0303_; + assign _0527_ = counter_tmp[11]; + assign _0831_[11] = _0269_; + assign _0563_ = counter_tmp[36]; + assign _0831_[36] = _0305_; + assign _0550_ = counter_tmp[24]; + assign _0551_ = counter_tmp[25]; + assign _0831_[25] = _0293_; + assign _0831_[24] = _0292_; + assign _0614_ = counter_tmp[82]; + assign _0615_ = counter_tmp[83]; + assign _0831_[83] = _0357_; + assign _0626_ = counter_tmp[93]; + assign _0831_[93] = _0368_; + assign _0625_ = counter_tmp[92]; + assign _0831_[92] = _0367_; + assign _0531_ = counter_tmp[123]; + assign _0831_[123] = _0273_; + assign _0576_ = counter_tmp[48]; + assign _0831_[48] = _0318_; + assign _0623_ = counter_tmp[90]; + assign _0831_[90] = _0365_; + assign _0620_ = counter_tmp[88]; + assign _0621_ = counter_tmp[89]; + assign _0624_ = counter_tmp[91]; + assign _0831_[91] = _0366_; + assign _0616_ = counter_tmp[84]; + assign _0617_ = counter_tmp[85]; + assign _0831_[85] = _0359_; + assign _0831_[84] = _0358_; + assign _0590_ = counter_tmp[60]; + assign _0831_[60] = _0332_; + assign _0585_ = counter_tmp[56]; + assign _0586_ = counter_tmp[57]; + assign _0831_[57] = _0328_; + assign _0587_ = counter_tmp[58]; + assign _0588_ = counter_tmp[59]; + assign _0831_[59] = _0330_; + assign _0831_[58] = _0329_; + assign _0831_[56] = _0327_; + assign _0601_ = counter_tmp[70]; + assign _0602_ = counter_tmp[71]; + assign _0831_[71] = _0344_; + assign _0831_[70] = _0343_; + assign _0603_ = counter_tmp[72]; + assign _0604_ = counter_tmp[73]; + assign _0831_[73] = _0346_; + assign _0831_[72] = _0345_; + assign _0598_ = counter_tmp[68]; + assign _0599_ = counter_tmp[69]; + assign _0831_[69] = _0341_; + assign _0831_[18] = _0285_; + assign _0541_ = counter_tmp[16]; + assign _0542_ = counter_tmp[17]; + assign _0597_ = counter_tmp[67]; + assign _0831_[67] = _0339_; + assign _0596_ = counter_tmp[66]; + assign _0831_[66] = _0338_; + assign _0831_[68] = _0340_; + assign _0592_ = counter_tmp[62]; + assign _0831_[62] = _0334_; + assign _0591_ = counter_tmp[61]; + assign _0831_[61] = _0333_; + assign _0593_ = counter_tmp[63]; + assign _0831_[63] = _0335_; + assign _0594_ = counter_tmp[64]; + assign _0595_ = counter_tmp[65]; + assign _0831_[65] = _0337_; + assign _0831_[64] = _0336_; + assign _0508_ = counter_tmp[102]; + assign _0831_[102] = _0250_; + assign _0506_ = counter_tmp[100]; + assign _0507_ = counter_tmp[101]; + assign _0606_ = counter_tmp[75]; + assign _0831_[75] = _0348_; + assign _0605_ = counter_tmp[74]; + assign _0831_[74] = _0347_; + assign _0831_[89] = _0363_; + assign _0831_[88] = _0362_; + assign _0581_ = counter_tmp[52]; + assign _0582_ = counter_tmp[53]; + assign _0831_[53] = _0324_; + assign _0577_ = counter_tmp[49]; + assign _0831_[49] = _0319_; + assign _0607_ = counter_tmp[76]; + assign _0608_ = counter_tmp[77]; + assign _0831_[77] = _0350_; + assign _0831_[17] = _0284_; + assign _0831_[16] = _0283_; + assign _0831_[52] = _0323_; + assign _0579_ = counter_tmp[50]; + assign _0580_ = counter_tmp[51]; + assign _0831_[51] = _0322_; + assign _0831_[50] = _0321_; + assign _0534_ = counter_tmp[126]; + assign _0535_ = counter_tmp[127]; + assign _0831_[127] = _0277_; + assign _0532_ = counter_tmp[124]; + assign _0533_ = counter_tmp[125]; + assign _0613_ = counter_tmp[81]; + assign _0831_[81] = _0355_; + assign _0612_ = counter_tmp[80]; + assign _0831_[80] = _0354_; + assign _0522_ = counter_tmp[115]; + assign _0831_[115] = _0264_; + assign _0521_ = counter_tmp[114]; + assign _0831_[114] = _0263_; + assign _0517_ = counter_tmp[110]; + assign _0518_ = counter_tmp[111]; + assign _0831_[111] = _0260_; + assign _0627_ = counter_tmp[94]; + assign _0628_ = counter_tmp[95]; + assign _0831_[95] = _0370_; + assign _0536_ = counter_tmp[128]; + assign _0831_[128] = _0278_; + assign _0831_[126] = _0276_; + assign _0528_ = counter_tmp[120]; + assign _0529_ = counter_tmp[121]; + assign _0831_[121] = _0271_; + assign _0831_[120] = _0270_; + assign _0525_ = counter_tmp[118]; + assign _0526_ = counter_tmp[119]; + assign _0511_ = counter_tmp[105]; + assign _0831_[105] = _0253_; + assign _0510_ = counter_tmp[104]; + assign _0831_[104] = _0252_; + assign _0509_ = counter_tmp[103]; + assign _0831_[103] = _0251_; + assign _0631_ = counter_tmp[98]; + assign _0831_[98] = _0373_; + assign _0629_ = counter_tmp[96]; + assign _0630_ = counter_tmp[97]; + assign _0519_ = counter_tmp[112]; + assign _0520_ = counter_tmp[113]; + assign _0831_[113] = _0262_; + assign _0618_ = counter_tmp[86]; + assign _0831_[86] = _0360_; + assign _0515_ = counter_tmp[109]; + assign _0831_[109] = _0257_; + assign _0514_ = counter_tmp[108]; + assign _0831_[108] = _0256_; + assign _0512_ = counter_tmp[106]; + assign _0831_[94] = _0369_; + assign _0523_ = counter_tmp[116]; + assign _0524_ = counter_tmp[117]; + assign _0831_[117] = _0266_; + assign _0632_ = counter_tmp[99]; + assign _0831_[99] = _0374_; + assign _0831_[119] = _0268_; + assign _0831_[118] = _0267_; + assign _0619_ = counter_tmp[87]; + assign _0831_[87] = _0361_; + assign _0831_[97] = _0372_; + assign _0831_[96] = _0371_; + assign _0831_[125] = _0275_; + assign _0831_[124] = _0274_; + assign _0831_[112] = _0261_; + assign _0831_[101] = _0249_; + assign _0831_[100] = _0248_; + assign _0513_ = counter_tmp[107]; + assign _0831_[107] = _0255_; + assign _0831_[13] = _0280_; + assign _0831_[12] = _0279_; + assign _0831_[106] = _0254_; + assign _0831_[116] = _0265_; + assign _0569_ = counter_tmp[41]; + assign _0831_[41] = _0311_; + assign _0565_ = counter_tmp[38]; + assign _0566_ = counter_tmp[39]; + assign _0831_[39] = _0308_; + assign _0831_[38] = _0307_; + assign _0831_[110] = _0259_; + assign _0831_[82] = _0356_; + assign _0564_ = counter_tmp[37]; + assign _0831_[37] = _0306_; + assign _0831_[76] = _0349_; + assign _0831_[46] = _0316_; + assign _0573_ = counter_tmp[45]; + assign _0831_[45] = _0315_; + assign _0570_ = counter_tmp[42]; + assign _0571_ = counter_tmp[43]; + assign _0831_[43] = _0313_; + assign _0831_[42] = _0312_; + assign _0829_ = reset; + assign _0832_ = _0376_; + assign _0833_ = _0377_; + assign _0834_ = _0378_; + assign _0835_ = _0379_; + assign _0836_ = _0380_; + assign _0837_ = _0381_; + assign _0838_ = _0382_; + assign _0839_ = _0383_; + assign _0840_ = _0384_; + assign _0841_ = _0385_; + assign _0842_ = _0386_; + assign _0843_ = _0387_; + assign _0844_ = _0388_; + assign _0845_ = _0389_; + assign _0846_ = _0390_; + assign _0847_ = _0391_; + assign _0848_ = _0392_; + assign _0849_ = _0393_; + assign _0850_ = _0394_; + assign _0851_ = _0395_; + assign _0852_ = _0396_; + assign _0853_ = _0397_; + assign _0854_ = _0398_; + assign _0855_ = _0399_; + assign _0856_ = _0400_; + assign _0857_ = _0401_; + assign _0858_ = _0402_; + assign _0859_ = _0403_; + assign _0860_ = _0404_; + assign _0861_ = _0405_; + assign _0862_ = _0406_; + assign _0863_ = _0407_; + assign _0864_ = _0408_; + assign _0865_ = _0409_; + assign _0866_ = _0410_; + assign _0867_ = _0411_; + assign _0868_ = _0412_; + assign _0869_ = _0413_; + assign _0870_ = _0414_; + assign _0871_ = _0415_; + assign _0872_ = _0416_; + assign _0873_ = _0417_; + assign _0874_ = _0418_; + assign _0875_ = _0419_; + assign _0876_ = _0420_; + assign _0877_ = _0421_; + assign _0878_ = _0422_; + assign _0879_ = _0423_; + assign _0880_ = _0424_; + assign _0881_ = _0425_; + assign _0882_ = _0426_; + assign _0883_ = _0427_; + assign _0884_ = _0428_; + assign _0885_ = _0429_; + assign _0886_ = _0430_; + assign _0887_ = _0431_; + assign _0888_ = _0432_; + assign _0889_ = _0433_; + assign _0890_ = _0434_; + assign _0891_ = _0435_; + assign _0892_ = _0436_; + assign _0893_ = _0437_; + assign _0894_ = _0438_; + assign _0895_ = _0439_; + assign _0896_ = _0440_; + assign _0897_ = _0441_; + assign _0898_ = _0442_; + assign _0899_ = _0443_; + assign _0900_ = _0444_; + assign _0901_ = _0445_; + assign _0902_ = _0446_; + assign _0903_ = _0447_; + assign _0904_ = _0448_; + assign _0905_ = _0449_; + assign _0906_ = _0450_; + assign _0907_ = _0451_; + assign _0908_ = _0452_; + assign _0909_ = _0453_; + assign _0910_ = _0454_; + assign _0911_ = _0455_; + assign _0912_ = _0456_; + assign _0913_ = _0457_; + assign _0914_ = _0458_; + assign _0915_ = _0459_; + assign _0916_ = _0460_; + assign _0917_ = _0461_; + assign _0918_ = _0462_; + assign _0919_ = _0463_; + assign _0920_ = _0464_; + assign _0921_ = _0465_; + assign _0922_ = _0466_; + assign _0923_ = _0467_; + assign _0924_ = _0468_; + assign _0925_ = _0469_; + assign _0926_ = _0470_; + assign _0927_ = _0471_; + assign _0928_ = _0472_; + assign _0929_ = _0473_; + assign _0930_ = _0474_; + assign _0931_ = _0475_; + assign _0932_ = _0476_; + assign _0933_ = _0477_; + assign _0934_ = _0478_; + assign _0935_ = _0479_; + assign _0936_ = _0480_; + assign _0937_ = _0481_; + assign _0938_ = _0482_; + assign _0939_ = _0483_; + assign _0940_ = _0484_; + assign _0941_ = _0485_; + assign _0942_ = _0486_; + assign _0943_ = _0487_; + assign _0944_ = _0488_; + assign _0945_ = _0489_; + assign _0946_ = _0490_; + assign _0947_ = _0491_; + assign _0948_ = _0492_; + assign _0949_ = _0493_; + assign _0950_ = _0494_; + assign _0951_ = _0495_; + assign _0952_ = _0496_; + assign _0953_ = _0497_; + assign _0954_ = _0498_; + assign _0955_ = _0499_; + assign _0956_ = _0500_; + assign _0957_ = _0501_; + assign _0958_ = _0502_; + assign _0959_ = _0503_; + assign _0960_ = _0504_; +endmodule diff --git a/include/sta/ConcreteLibrary.hh b/include/sta/ConcreteLibrary.hh index 5909b81e..78b3a596 100644 --- a/include/sta/ConcreteLibrary.hh +++ b/include/sta/ConcreteLibrary.hh @@ -38,6 +38,7 @@ class LibertyCell; class LibertyPort; typedef Map ConcreteCellMap; +typedef Map AttributeMap; typedef Vector ConcretePortSeq; typedef Map ConcretePortMap; typedef ConcreteCellMap::ConstIterator ConcreteLibraryCellIterator; @@ -105,6 +106,8 @@ public: ConcreteCellPortBitIterator *portBitIterator() const; bool isLeaf() const { return is_leaf_; } void setIsLeaf(bool is_leaf); + void setAttribute(const char *key, const char *value); + const char *getAttribute(const char *key) const; // Cell acts as port factory. ConcretePort *makePort(const char *name); @@ -158,6 +161,7 @@ protected: // Port bit count (expanded buses). int port_bit_count_; bool is_leaf_; + AttributeMap attribute_map_; private: friend class ConcreteLibrary; diff --git a/include/sta/ConcreteNetwork.hh b/include/sta/ConcreteNetwork.hh index 99728c9c..d8856611 100644 --- a/include/sta/ConcreteNetwork.hh +++ b/include/sta/ConcreteNetwork.hh @@ -38,6 +38,7 @@ class ConcreteBindingTbl; class ConcreteLibertyLibraryIterator; typedef Vector ConcreteLibrarySeq; +typedef Map AttributeMap; typedef Map ConcreteLibraryMap; typedef ConcreteLibrarySeq::ConstIterator ConcreteLibraryIterator; typedef MapsetIsLeaf(is_leaf); } +void +ConcreteNetwork::setAttribute(Cell *cell, + const char *key, + const char *value) +{ + ConcreteCell *ccell = reinterpret_cast(cell); + ccell->setAttribute(key, value); +} + Library * ConcreteNetwork::library(const Cell *cell) const { @@ -597,6 +606,13 @@ ConcreteNetwork::filename(const Cell *cell) return ccell->filename(); } +const char * +ConcreteNetwork::getAttribute(const Cell *cell, const char *key) const +{ + const ConcreteCell *ccell = reinterpret_cast(cell); + return ccell->getAttribute(key); +} + Port * ConcreteNetwork::findPort(const Cell *cell, const char *name) const @@ -921,6 +937,13 @@ ConcreteNetwork::id(const Instance *instance) const return inst->id(); } +const char * +ConcreteNetwork::getAttribute(const Instance *inst, const char *key) const +{ + const ConcreteInstance *cinst = reinterpret_cast(inst); + return cinst->getAttribute(key); +} + Cell * ConcreteNetwork::cell(const Instance *instance) const { @@ -1325,6 +1348,15 @@ ConcreteNetwork::connect(Instance *inst, return connect(inst, reinterpret_cast(port), net); } +void +ConcreteNetwork::setAttribute(Instance *inst, + const char *key, + const char *value) +{ + ConcreteInstance *cinst = reinterpret_cast(inst); + cinst->setAttribute(key, value); +} + Pin * ConcreteNetwork::connect(Instance *inst, Port *port, @@ -1564,6 +1596,7 @@ ConcreteInstance::~ConcreteInstance() stringDelete(name_); delete children_; delete nets_; + attribute_map_.deleteArrayContents(); } Instance * @@ -1648,6 +1681,18 @@ ConcreteInstance::childIterator() const return new ConcreteInstanceChildIterator(children_); } +void +ConcreteInstance::setAttribute(const char *key, const char *value) +{ + attribute_map_.insert(key, stringCopy(value)); +} + +const char * +ConcreteInstance::getAttribute(const char *key) const +{ + return attribute_map_.findKey(key); +} + void ConcreteInstance::addChild(ConcreteInstance *child) { diff --git a/network/SdcNetwork.cc b/network/SdcNetwork.cc index e5eb36bb..b83beb21 100644 --- a/network/SdcNetwork.cc +++ b/network/SdcNetwork.cc @@ -122,6 +122,12 @@ NetworkNameAdapter::id(const Cell *cell) const return network_->id(cell); } +const char * +NetworkNameAdapter::getAttribute(const Cell *cell, const char *key) const +{ + return network_->getAttribute(cell, key); +} + Library * NetworkNameAdapter::library(const Cell *cell) const { @@ -327,6 +333,12 @@ NetworkNameAdapter::cell(const Instance *instance) const return network_->cell(instance); } +const char * +NetworkNameAdapter::getAttribute(const Instance *inst, const char *key) const +{ + return network_->getAttribute(inst, key); +} + Instance * NetworkNameAdapter::parent(const Instance *instance) const { diff --git a/tcl/StaTcl.i b/tcl/StaTcl.i index 39d4ec55..64bcabe9 100644 --- a/tcl/StaTcl.i +++ b/tcl/StaTcl.i @@ -4180,11 +4180,13 @@ void finish() { delete self; } } // LibertyLibraryIterator methods %extend Cell { +const char *name() { return cmdNetwork()->name(self); } Library *library() { return cmdNetwork()->library(self); } LibertyCell *liberty_cell() { return cmdNetwork()->libertyCell(self); } bool is_leaf() { return cmdNetwork()->isLeaf(self); } CellPortIterator * port_iterator() { return cmdNetwork()->portIterator(self); } +const char *get_attribute(const char *key) { return cmdNetwork()->getAttribute(self, key); } Port * find_port(const char *name) diff --git a/test/regression_vars.tcl b/test/regression_vars.tcl index 8509e04a..9ab48816 100644 --- a/test/regression_vars.tcl +++ b/test/regression_vars.tcl @@ -119,6 +119,7 @@ record_example_tests { multi_corner power power_vcd + attribute_parsing_test } record_sta_tests { diff --git a/verilog/VerilogLex.ll b/verilog/VerilogLex.ll index 42880540..60dd6109 100644 --- a/verilog/VerilogLex.ll +++ b/verilog/VerilogLex.ll @@ -41,7 +41,6 @@ verilogFlushBuffer() %option never-interactive %x COMMENT -%x ATTRIBUTE %x QSTRING SIGN "+"|"-" @@ -77,21 +76,6 @@ ID_TOKEN {ID_ESCAPED_TOKEN}|{ID_ALPHA_TOKEN} } } -"(*" { BEGIN ATTRIBUTE; } -{ -. - -{EOL} { sta::verilog_reader->incrLine(); } - -"*)" { BEGIN INITIAL; } - -<> { - VerilogParse_error("unterminated attribute"); - BEGIN(INITIAL); - yyterminate(); - } -} - {SIGN}?{UNSIGNED_NUMBER}?"'"[bB][01_xz]+ { VerilogParse_lval.constant = sta::stringCopy(VerilogLex_text); return CONSTANT; @@ -121,6 +105,8 @@ ID_TOKEN {ID_ESCAPED_TOKEN}|{ID_ALPHA_TOKEN} return ((int) VerilogLex_text[0]); } +"(*" { return ATTRIBUTE_OPEN; } +"*)" { return ATTRIBUTE_CLOSED; } assign { return ASSIGN; } endmodule { return ENDMODULE; } inout { return INOUT; } diff --git a/verilog/VerilogParse.yy b/verilog/VerilogParse.yy index b12f3cef..d53ba4ed 100644 --- a/verilog/VerilogParse.yy +++ b/verilog/VerilogParse.yy @@ -17,6 +17,8 @@ // along with this program. If not, see . #include +#include +#include #include "PortDirection.hh" #include "verilog/VerilogReaderPvt.hh" @@ -33,6 +35,7 @@ int VerilogLex_lex(); int ival; const char *string; const char *constant; + const char *attribute_spec_value; sta::VerilogModule *module; sta::VerilogStmt *stmt; sta::VerilogStmtSeq *stmt_seq; @@ -44,10 +47,15 @@ int VerilogLex_lex(); sta::VerilogNet *net; sta::VerilogNetBitSelect *net_bit; sta::VerilogNetSeq *nets; + sta::VerilogAttributeEntry *attribute_entry; + sta::VerilogAttributeEntrySeq *attribute_seq; + sta::VerilogAttributeStmt *attribute_stmt; + sta::VerilogAttributeStmtSeq *attribute_stmt_seq; } %token INT CONSTANT ID STRING MODULE ENDMODULE ASSIGN PARAMETER DEFPARAM %token WIRE WAND WOR TRI INPUT OUTPUT INOUT SUPPLY1 SUPPLY0 REG +%token ATTRIBUTE_OPEN ATTRIBUTE_CLOSED %left '-' '+' %left '*' '/' @@ -55,8 +63,10 @@ int VerilogLex_lex(); %type ID STRING %type WIRE WAND WOR TRI INPUT OUTPUT INOUT SUPPLY1 SUPPLY0 +%type ATTRIBUTE_OPEN ATTRIBUTE_CLOSED %type INT parameter_exprs parameter_expr module_begin %type CONSTANT +%type attr_spec_value %type dcl_type port_dcl_type %type stmt declaration instance parameter parameter_dcls parameter_dcl %type defparam param_values param_value port_dcl @@ -69,6 +79,10 @@ int VerilogLex_lex(); %type inst_named_pin net_named net_expr_concat %type port_list port_refs inst_ordered_pins %type inst_named_pins net_exprs inst_pins +%type attr_spec +%type attr_specs +%type attribute_instance +%type attribute_instance_seq %start file @@ -92,14 +106,14 @@ module_begin: ; module: - module_begin ID ';' stmts ENDMODULE - { sta::verilog_reader->makeModule($2, new sta::VerilogNetSeq,$4,$1);} -| module_begin ID '(' ')' ';' stmts ENDMODULE - { sta::verilog_reader->makeModule($2, new sta::VerilogNetSeq,$6,$1);} -| module_begin ID '(' port_list ')' ';' stmts ENDMODULE - { sta::verilog_reader->makeModule($2, $4, $7, $1); } -| module_begin ID '(' port_dcls ')' ';' stmts ENDMODULE - { sta::verilog_reader->makeModule($2, $4, $7, $1); } + attribute_instance_seq module_begin ID ';' stmts ENDMODULE + { sta::verilog_reader->makeModule($3, new sta::VerilogNetSeq, $5, $1, $2);} +| attribute_instance_seq module_begin ID '(' ')' ';' stmts ENDMODULE + { sta::verilog_reader->makeModule($3, new sta::VerilogNetSeq, $7, $1, $2);} +| attribute_instance_seq module_begin ID '(' port_list ')' ';' stmts ENDMODULE + { sta::verilog_reader->makeModule($3, $5, $8, $1, $2); } +| attribute_instance_seq module_begin ID '(' port_dcls ')' ';' stmts ENDMODULE + { sta::verilog_reader->makeModule($3, $5, $8, $1, $2); } ; port_list: @@ -157,11 +171,12 @@ port_dcls: ; port_dcl: - port_dcl_type { $$ = sta::verilog_reader->line(); } dcl_arg - { $$ = sta::verilog_reader->makeDcl($1, $3, $2); } -| port_dcl_type { $$ = sta::verilog_reader->line(); } - '[' INT ':' INT ']' dcl_arg - { $$ = sta::verilog_reader->makeDclBus($1, $4, $6, $8, $2); } + attribute_instance_seq port_dcl_type + { $$ = sta::verilog_reader->line(); } dcl_arg + { $$ = sta::verilog_reader->makeDcl($2, $4, $1, $3); } +| attribute_instance_seq port_dcl_type + { $$ = sta::verilog_reader->line(); } '[' INT ':' INT ']' dcl_arg + { $$ = sta::verilog_reader->makeDclBus($2, $5, $7, $9, $1, $3); } ; port_dcl_type: @@ -282,11 +297,11 @@ param_value: ; declaration: - dcl_type { $$ = sta::verilog_reader->line(); } dcl_args ';' - { $$ = sta::verilog_reader->makeDcl($1, $3, $2); } -| dcl_type { $$ = sta::verilog_reader->line(); } + attribute_instance_seq dcl_type { $$ = sta::verilog_reader->line(); } dcl_args ';' + { $$ = sta::verilog_reader->makeDcl($2, $4, $1, $3); } +| attribute_instance_seq dcl_type { $$ = sta::verilog_reader->line(); } '[' INT ':' INT ']' dcl_args ';' - { $$ = sta::verilog_reader->makeDclBus($1, $4, $6, $8, $2); } + { $$ = sta::verilog_reader->makeDclBus($2, $5, $7, $9, $1,$3); } ; dcl_type: @@ -344,11 +359,11 @@ net_assign_lhs: ; instance: - ID { $$ = sta::verilog_reader->line(); } ID '(' inst_pins ')' ';' - { $$ = sta::verilog_reader->makeModuleInst($1, $3, $5, $2); } -| ID { $$ = sta::verilog_reader->line(); } parameter_values + attribute_instance_seq ID { $$ = sta::verilog_reader->line(); } ID '(' inst_pins ')' ';' + { $$ = sta::verilog_reader->makeModuleInst($2, $4, $6, $1, $3); } +| attribute_instance_seq ID { $$ = sta::verilog_reader->line(); } parameter_values ID '(' inst_pins ')' ';' - { $$ = sta::verilog_reader->makeModuleInst($1, $4, $6, $2); } + { $$ = sta::verilog_reader->makeModuleInst($2, $5, $7, $1, $3); } ; parameter_values: @@ -467,4 +482,46 @@ net_expr: | net_expr_concat ; +attribute_instance_seq: + // empty + { $$ = new sta::VerilogAttributeStmtSeq; } +| attribute_instance_seq attribute_instance + { if ($2) $1->push_back($2); } + ; + +attribute_instance: + ATTRIBUTE_OPEN attr_specs ATTRIBUTE_CLOSED + { + $$ = new sta::VerilogAttributeStmt($2); + } + ; + +attr_specs: + attr_spec + { + $$ = new sta::VerilogAttributeEntrySeq; + $$->push_back($1); + } +| attr_spec ',' attr_spec + { $$->push_back($3); } + ; + +attr_spec: + ID + { $$ = new sta::VerilogAttributeEntry($1, "1");} +| ID '=' attr_spec_value + { + $$ = new sta::VerilogAttributeEntry($1, $3); + } + ; + +attr_spec_value: + CONSTANT + {$$ = $1;} +| STRING + {$$ = $1;} +| INT + {$$ = sta::stringCopy(std::to_string($1).c_str());} + ; + %% diff --git a/verilog/VerilogReader.cc b/verilog/VerilogReader.cc index fdfa1288..b7e4a763 100644 --- a/verilog/VerilogReader.cc +++ b/verilog/VerilogReader.cc @@ -26,6 +26,7 @@ #include "PortDirection.hh" #include "Network.hh" #include "VerilogNamespace.hh" +#include "StringUtil.hh" #include "verilog/VerilogReaderPvt.hh" extern int @@ -253,6 +254,7 @@ void VerilogReader::makeModule(const char *module_vname, VerilogNetSeq *ports, VerilogStmtSeq *stmts, + VerilogAttributeStmtSeq *attribute_stmts, int line) { string module_name = moduleVerilogToSta(module_vname); @@ -263,10 +265,17 @@ VerilogReader::makeModule(const char *module_vname, module_map_.erase(cell); network_->deleteCell(cell); } - VerilogModule *module = new VerilogModule(module_name.c_str(), - ports, stmts, - filename_, line, this); + + VerilogModule *module = new VerilogModule(module_name.c_str(), ports, stmts, + attribute_stmts, filename_, line, this); cell = network_->makeCell(library_, module_name.c_str(), false, filename_); + + for (VerilogAttributeStmt *stmt : *attribute_stmts) { + for (VerilogAttributeEntry *entry : *stmt->attribute_sequence()) { + network_->setAttribute(cell, entry->key(), entry->value()); + } + } + module_map_[cell] = module; makeCellPorts(cell, module, ports); module_count_++; @@ -277,6 +286,7 @@ void VerilogReader::makeModule(const char *module_name, VerilogStmtSeq *port_dcls, VerilogStmtSeq *stmts, + VerilogAttributeStmtSeq *attribute_stmts, int line) { VerilogNetSeq *ports = new VerilogNetSeq; @@ -293,7 +303,7 @@ VerilogReader::makeModule(const char *module_name, } } delete port_dcls; - makeModule(module_name, ports, stmts, line); + makeModule(module_name, ports, stmts, attribute_stmts, line); } void @@ -392,6 +402,7 @@ VerilogReader::checkModuleDcls(VerilogModule *module, VerilogDcl * VerilogReader::makeDcl(PortDirection *dir, VerilogDclArgSeq *args, + VerilogAttributeStmtSeq* attribute_stmts, int line) { if (dir->isInternal()) { @@ -411,24 +422,25 @@ VerilogReader::makeDcl(PortDirection *dir, delete args; if (assign_args) { dcl_count_++; - return new VerilogDcl(dir, assign_args, line); + return new VerilogDcl(dir, assign_args, attribute_stmts, line); } else return nullptr; } else { dcl_count_++; - return new VerilogDcl(dir, args, line); + return new VerilogDcl(dir, args, attribute_stmts, line); } } VerilogDcl * VerilogReader::makeDcl(PortDirection *dir, VerilogDclArg *arg, + VerilogAttributeStmtSeq* attribute_stmts, int line) { dcl_count_++; - return new VerilogDcl(dir, arg, line); + return new VerilogDcl(dir, arg, attribute_stmts, line); } VerilogDclBus * @@ -436,10 +448,12 @@ VerilogReader::makeDclBus(PortDirection *dir, int from_index, int to_index, VerilogDclArg *arg, + VerilogAttributeStmtSeq* attribute_stmts, int line) { dcl_bus_count_++; - return new VerilogDclBus(dir, from_index, to_index, arg, line); + return new VerilogDclBus(dir, from_index, to_index, arg, attribute_stmts, + line); } VerilogDclBus * @@ -447,10 +461,12 @@ VerilogReader::makeDclBus(PortDirection *dir, int from_index, int to_index, VerilogDclArgSeq *args, + VerilogAttributeStmtSeq* attribute_stmts, int line) { dcl_bus_count_++; - return new VerilogDclBus(dir, from_index, to_index, args, line); + return new VerilogDclBus(dir, from_index, to_index, args, attribute_stmts, + line); } VerilogDclArg * @@ -531,6 +547,7 @@ VerilogInst * VerilogReader::makeModuleInst(const char *module_vname, const char *inst_vname, VerilogNetSeq *pins, + VerilogAttributeStmtSeq* attribute_stmts, const int line) { string module_name = moduleVerilogToSta(module_vname); @@ -571,7 +588,7 @@ VerilogReader::makeModuleInst(const char *module_vname, net_port_ref_scalar_net_count_--; } VerilogInst *inst = new VerilogLibertyInst(liberty_cell, inst_name.c_str(), - net_names, line); + net_names, attribute_stmts, line); delete pins; if (report_stmt_stats_) { inst_names_ += inst_name.size() + 1; @@ -585,7 +602,9 @@ VerilogReader::makeModuleInst(const char *module_vname, else { VerilogInst *inst = new VerilogModuleInst(module_name.c_str(), inst_name.c_str(), - pins, line); + pins, + attribute_stmts, + line); if (report_stmt_stats_) { inst_module_names_ += module_name.size() + 1; inst_names_ += inst_name.size() + 1; @@ -819,6 +838,7 @@ VerilogReader::netVerilogName(const char *net_name) VerilogModule::VerilogModule(const char *name, VerilogNetSeq *ports, VerilogStmtSeq *stmts, + VerilogAttributeStmtSeq *attribute_stmts, const char *filename, int line, VerilogReader *reader) : @@ -826,7 +846,8 @@ VerilogModule::VerilogModule(const char *name, name_(stringCopy(name)), filename_(filename), ports_(ports), - stmts_(stmts) + stmts_(stmts), + attribute_stmts_(attribute_stmts) { parseStmts(reader); } @@ -837,6 +858,8 @@ VerilogModule::~VerilogModule() delete ports_; stmts_->deleteContents(); delete stmts_; + attribute_stmts_->deleteContents(); + delete attribute_stmts_; stringDelete(name_); } @@ -936,15 +959,19 @@ VerilogStmt::VerilogStmt(int line) : } VerilogInst::VerilogInst(const char *inst_name, + VerilogAttributeStmtSeq* attribute_stmts, const int line) : VerilogStmt(line), - inst_name_(stringCopy(inst_name)) + inst_name_(stringCopy(inst_name)), + attribute_stmts_(attribute_stmts) { } VerilogInst::~VerilogInst() { stringDelete(inst_name_); + attribute_stmts_->deleteContents(); + delete attribute_stmts_; } void @@ -957,8 +984,9 @@ VerilogInst::setInstanceName(const char *inst_name) VerilogModuleInst::VerilogModuleInst(const char *module_name, const char *inst_name, VerilogNetSeq *pins, + VerilogAttributeStmtSeq* attribute_stmts, int line) : - VerilogInst(inst_name, line), + VerilogInst(inst_name, attribute_stmts, line), module_name_(stringCopy(module_name)), pins_(pins) { @@ -992,8 +1020,9 @@ VerilogModuleInst::namedPins() VerilogLibertyInst::VerilogLibertyInst(LibertyCell *cell, const char *inst_name, const char **net_names, + VerilogAttributeStmtSeq* attribute_stmts, const int line) : - VerilogInst(inst_name, line), + VerilogInst(inst_name, attribute_stmts, line), cell_(cell), net_names_(net_names) { @@ -1013,27 +1042,33 @@ VerilogLibertyInst::~VerilogLibertyInst() VerilogDcl::VerilogDcl(PortDirection *dir, VerilogDclArgSeq *args, + VerilogAttributeStmtSeq* attribute_stmts, int line) : VerilogStmt(line), dir_(dir), - args_(args) + args_(args), + attribute_stmts_(attribute_stmts) { } VerilogDcl::VerilogDcl(PortDirection *dir, VerilogDclArg *arg, + VerilogAttributeStmtSeq* attribute_stmts, int line) : VerilogStmt(line), dir_(dir) { args_ = new VerilogDclArgSeq; args_->push_back(arg); + attribute_stmts_ = attribute_stmts; } VerilogDcl::~VerilogDcl() { args_->deleteContents(); delete args_; + attribute_stmts_->deleteContents(); + delete attribute_stmts_; } void @@ -1052,8 +1087,9 @@ VerilogDclBus::VerilogDclBus(PortDirection *dir, int from_index, int to_index, VerilogDclArgSeq *args, + VerilogAttributeStmtSeq* attribute_stmts, int line) : - VerilogDcl(dir, args, line), + VerilogDcl(dir, args, attribute_stmts, line), from_index_(from_index), to_index_(to_index) { @@ -1063,8 +1099,9 @@ VerilogDclBus::VerilogDclBus(PortDirection *dir, int from_index, int to_index, VerilogDclArg *arg, + VerilogAttributeStmtSeq* attribute_stmts, int line) : - VerilogDcl(dir, arg, line), + VerilogDcl(dir, arg, attribute_stmts, line), from_index_(from_index), to_index_(to_index) { @@ -1702,6 +1739,51 @@ VerilogNetPortRefPart::name() const return name_; } +VerilogAttributeEntry::VerilogAttributeEntry(const char *key, + const char * value) : + key_(key), + value_(value) +{ +} + +VerilogAttributeEntry::~VerilogAttributeEntry() +{ + stringDelete(key_); + stringDelete(value_); +} + + +const char * +VerilogAttributeEntry::key() +{ + return key_; +} + +const char * +VerilogAttributeEntry::value() +{ + return value_; +} + +VerilogAttributeStmt::VerilogAttributeStmt( + VerilogAttributeEntrySeq* attribute_sequence): + attribute_sequence_(attribute_sequence) +{ +} + +VerilogAttributeStmt::~VerilogAttributeStmt() +{ + attribute_sequence_->deleteContents(); + delete attribute_sequence_; +} + +VerilogAttributeEntrySeq* +VerilogAttributeStmt::attribute_sequence() +{ + return attribute_sequence_; +} + + //////////////////////////////////////////////////////////////// // // Link verilog network @@ -1859,6 +1941,13 @@ VerilogReader::makeModuleInstNetwork(VerilogModuleInst *mod_inst, cell = network_->cell(lib_cell); Instance *inst = network_->makeInstance(cell, mod_inst->instanceName(), parent); + VerilogAttributeStmtSeq *attribute_stmts = mod_inst->attribute_stmts(); + for (VerilogAttributeStmt *stmt : *attribute_stmts) { + for (VerilogAttributeEntry *entry : *stmt->attribute_sequence()) { + network_->setAttribute(inst, entry->key(), entry->value()); + } + } + if (lib_cell) { // Make all pins so timing arcs are built. LibertyCellPortBitIterator port_iter(lib_cell); @@ -2044,6 +2133,12 @@ VerilogReader::makeLibertyInst(VerilogLibertyInst *lib_inst, Cell *cell = reinterpret_cast(lib_cell); Instance *inst = network_->makeInstance(cell, lib_inst->instanceName(), parent); + VerilogAttributeStmtSeq *attribute_stmts = lib_inst->attribute_stmts(); + for (VerilogAttributeStmt *stmt : *attribute_stmts) { + for (VerilogAttributeEntry *entry : *stmt->attribute_sequence()) { + network_->setAttribute(inst, entry->key(), entry->value()); + } + } const char **net_names = lib_inst->netNames(); LibertyCellPortBitIterator port_iter(lib_cell); while (port_iter.hasNext()) { @@ -2205,7 +2300,7 @@ VerilogBindingTbl::find(const char *name, NetworkReader *network) } void -VerilogBindingTbl::bind(const char *name, +VerilogBindingTbl::bind(const char *name, Net *net) { map_[name] = net; diff --git a/verilog/VerilogReaderPvt.hh b/verilog/VerilogReaderPvt.hh index eb6afa09..bb279ffb 100644 --- a/verilog/VerilogReaderPvt.hh +++ b/verilog/VerilogReaderPvt.hh @@ -37,6 +37,8 @@ using std::set; class Debug; class Report; +class VerilogAttributeEntry; +class VerilogAttributeStmt; class VerilogReader; class VerilogStmt; class VerilogNet; @@ -60,6 +62,8 @@ class VerilogNetPortRef; class VerilogError; class LibertyCell; +typedef Vector VerilogAttributeStmtSeq; +typedef Vector VerilogAttributeEntrySeq; typedef Vector VerilogNetSeq; typedef Vector VerilogStmtSeq; typedef Map VerilogDclMap; @@ -89,16 +93,20 @@ public: void makeModule(const char *module_name, VerilogNetSeq *ports, VerilogStmtSeq *stmts, + VerilogAttributeStmtSeq *attribute_stmts, int line); void makeModule(const char *module_name, VerilogStmtSeq *port_dcls, VerilogStmtSeq *stmts, + VerilogAttributeStmtSeq *attribute_stmts, int line); VerilogDcl *makeDcl(PortDirection *dir, VerilogDclArgSeq *args, + VerilogAttributeStmtSeq* attribute_stmts, int line); VerilogDcl *makeDcl(PortDirection *dir, VerilogDclArg *arg, + VerilogAttributeStmtSeq* attribute_stmts, int line); VerilogDclArg *makeDclArg(const char *net_name); VerilogDclArg*makeDclArg(VerilogAssign *assign); @@ -106,15 +114,18 @@ public: int from_index, int to_index, VerilogDclArg *arg, + VerilogAttributeStmtSeq* attribute_stmts, int line); VerilogDclBus *makeDclBus(PortDirection *dir, int from_index, int to_index, VerilogDclArgSeq *args, + VerilogAttributeStmtSeq* attribute_stmts, int line); VerilogInst *makeModuleInst(const char *module_name, const char *inst_name, VerilogNetSeq *pins, + VerilogAttributeStmtSeq* attribute_stmts, const int line); VerilogAssign *makeAssign(VerilogNet *lhs, VerilogNet *rhs, @@ -328,12 +339,14 @@ public: VerilogModule(const char *name, VerilogNetSeq *ports, VerilogStmtSeq *stmts, + VerilogAttributeStmtSeq *attribute_stmts, const char *filename, int line, VerilogReader *reader); virtual ~VerilogModule(); const char *name() { return name_; } const char *filename() { return filename_; } + VerilogAttributeStmtSeq *attribute_stmts() { return attribute_stmts_; } VerilogNetSeq *ports() { return ports_; } VerilogDcl *declaration(const char *net_name); VerilogStmtSeq *stmts() { return stmts_; } @@ -352,6 +365,7 @@ private: VerilogNetSeq *ports_; VerilogStmtSeq *stmts_; VerilogDclMap dcl_map_; + VerilogAttributeStmtSeq *attribute_stmts_; }; class VerilogDcl : public VerilogStmt @@ -359,9 +373,11 @@ class VerilogDcl : public VerilogStmt public: VerilogDcl(PortDirection *dir, VerilogDclArgSeq *args, + VerilogAttributeStmtSeq *attribute_stmts, int line); VerilogDcl(PortDirection *dir, VerilogDclArg *arg, + VerilogAttributeStmtSeq *attribute_stmts, int line); virtual ~VerilogDcl(); const char *portName(); @@ -376,6 +392,7 @@ public: private: PortDirection *dir_; VerilogDclArgSeq *args_; + VerilogAttributeStmtSeq *attribute_stmts_; }; class VerilogDclBus : public VerilogDcl @@ -385,11 +402,13 @@ public: int from_index, int to_index, VerilogDclArgSeq *args, + VerilogAttributeStmtSeq* attribute_stmts, int line); VerilogDclBus(PortDirection *dir, int from_index, int to_index, VerilogDclArg *arg, + VerilogAttributeStmtSeq* attribute_stmts, int line); virtual bool isBus() const { return true; } int fromIndex() const { return from_index_; } @@ -437,14 +456,17 @@ class VerilogInst : public VerilogStmt { public: VerilogInst(const char *inst_name, + VerilogAttributeStmtSeq* attribute_stmts, const int line); virtual ~VerilogInst(); virtual bool isInstance() const { return true; } const char *instanceName() const { return inst_name_; } + VerilogAttributeStmtSeq *attribute_stmts() const { return attribute_stmts_; } void setInstanceName(const char *inst_name); private: const char *inst_name_; + VerilogAttributeStmtSeq* attribute_stmts_; }; class VerilogModuleInst : public VerilogInst @@ -453,6 +475,7 @@ public: VerilogModuleInst(const char *module_name, const char *inst_name, VerilogNetSeq *pins, + VerilogAttributeStmtSeq* attribute_stmts, const int line); virtual ~VerilogModuleInst(); virtual bool isModuleInst() const { return true; } @@ -475,6 +498,7 @@ public: VerilogLibertyInst(LibertyCell *cell, const char *inst_name, const char **net_names, + VerilogAttributeStmtSeq* attribute_stmts, const int line); virtual ~VerilogLibertyInst(); virtual bool isLibertyInst() const { return true; } @@ -691,4 +715,29 @@ class VerilogNetNameIterator : public Iterator { }; +class VerilogAttributeStmt +{ +public: + VerilogAttributeStmt(VerilogAttributeEntrySeq *attribute_sequence); + VerilogAttributeEntrySeq *attribute_sequence(); + virtual ~VerilogAttributeStmt(); + +private: + VerilogAttributeEntrySeq *attribute_sequence_; +}; + +class VerilogAttributeEntry +{ +public: + VerilogAttributeEntry(const char *key, const char *value); + virtual const char *key(); + virtual const char *value(); + virtual ~VerilogAttributeEntry(); + +private: + const char *key_; + const char *value_; + +}; + } // namespace