From 82ae46dfeb1d5e4cba9d8b5cec223f8b82859b3f Mon Sep 17 00:00:00 2001 From: Krystine Sherwin <93062060+KrystalDelusion@users.noreply.github.com> Date: Sat, 1 Mar 2025 10:52:29 +1300 Subject: [PATCH] celltypes: Add help -celltypes Like `help -cells` but instead of printing the cell's ports, prints its flags. --- kernel/register.cc | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/kernel/register.cc b/kernel/register.cc index 11cf5b0e4..dbdcfc408 100644 --- a/kernel/register.cc +++ b/kernel/register.cc @@ -1074,6 +1074,36 @@ struct HelpPass : public Pass { log("\n"); return; } + else if (args[1] == "-celltypes") { + log("\n"); + for (auto &it : cell_help_messages.cell_help) { + SimHelper help_cell = it.second; + auto *ct = yosys_celltypes.get_cell(it.first); + char ct_flags[8] = ""; + if (ct != nullptr && ct->is_internal) { + ct_flags[0] = ct->is_evaluable ? 'E' : '-'; + ct_flags[1] = ct->is_combinatorial ? 'C' : '-'; + ct_flags[2] = ct->is_synthesizable ? 'S' : '-'; + ct_flags[3] = ct->is_builtin_ff ? 'M' : '-'; + ct_flags[4] = ct->is_formal ? 'F' : '-'; + ct_flags[5] = ct->is_metainfo ? 'I' : '-'; + ct_flags[6] = ct->has_effects ? 'X' : '-'; + ct_flags[7] = 0; + } + log(" %-15s %s\n", help_cell.name.c_str(), ct_flags); + } + log("\n"); + log("Legend:\n"); + log(" E = evaluable\n"); + log(" C = combinatorial\n"); + log(" S = synthesizable\n"); + log(" M = builtin_ff\n"); + log(" F = formal\n"); + log(" I = metainfo\n"); + log(" X = effects\n"); + log("\n"); + return; + } // this option is undocumented as it is for internal use only else if (args[1] == "-write-rst-command-reference-manual") { for (auto &it : pass_register) {