diff options
author | Eddie Hung <eddie@fpgeh.com> | 2019-08-01 12:02:16 -0700 |
---|---|---|
committer | Eddie Hung <eddie@fpgeh.com> | 2019-08-01 12:02:16 -0700 |
commit | ed303b07b770c6aa4bc69f04bc517ce4701988ed (patch) | |
tree | 47eba7043cf616be11d30f8302a7036e89392965 /passes | |
parent | 7e86c8bcfb10f6a819273ad8bd10fa461987f2f1 (diff) | |
parent | e8a2d10982cd8f6ba3b0e66fbd922b051073f0cf (diff) | |
download | yosys-ed303b07b770c6aa4bc69f04bc517ce4701988ed.tar.gz yosys-ed303b07b770c6aa4bc69f04bc517ce4701988ed.tar.bz2 yosys-ed303b07b770c6aa4bc69f04bc517ce4701988ed.zip |
Merge remote-tracking branch 'origin/master' into xc7dsp
Diffstat (limited to 'passes')
-rw-r--r-- | passes/cmds/stat.cc | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/passes/cmds/stat.cc b/passes/cmds/stat.cc index 27c5fb60c..80b400e0c 100644 --- a/passes/cmds/stat.cc +++ b/passes/cmds/stat.cc @@ -223,6 +223,33 @@ struct statdata_t log("\n"); log(" Estimated number of LCs: %10d\n", lc_cnt); } + + if (tech == "cmos") + { + int tran_cnt = 0; + bool tran_cnt_exact = true; + + for (auto it : num_cells_by_type) { + auto ctype = it.first; + auto cnum = it.second; + + if (ctype == "$_NOT_") + tran_cnt += 2*cnum; + else if (ctype.in("$_NAND_", "$_NOR_")) + tran_cnt += 4*cnum; + else if (ctype.in("$_AOI3_", "$_OAI3_")) + tran_cnt += 6*cnum; + else if (ctype.in("$_AOI4_", "$_OAI4_")) + tran_cnt += 8*cnum; + else if (ctype.in("$_DFF_P_", "$_DFF_N_")) + tran_cnt += 16*cnum; + else + tran_cnt_exact = false; + } + + log("\n"); + log(" Estimated number of transistors: %10d%s\n", tran_cnt, tran_cnt_exact ? "" : "+"); + } } }; @@ -286,7 +313,7 @@ struct StatPass : public Pass { log("\n"); log(" -tech <technology>\n"); log(" print area estemate for the specified technology. Currently supported\n"); - log(" values for <technology>: xilinx\n"); + log(" values for <technology>: xilinx, cmos\n"); log("\n"); log(" -width\n"); log(" annotate internal cell types with their word width.\n"); @@ -330,7 +357,7 @@ struct StatPass : public Pass { } extra_args(args, argidx, design); - if (techname != "" && techname != "xilinx") + if (techname != "" && techname != "xilinx" && techname != "cmos") log_cmd_error("Unsupported technology: '%s'\n", techname.c_str()); for (auto mod : design->selected_modules()) |