Skip to content

Commit

Permalink
techmap: Support dynamic cell types
Browse files Browse the repository at this point in the history
  • Loading branch information
povik committed May 3, 2024
1 parent dd21955 commit fc82251
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
2 changes: 2 additions & 0 deletions kernel/constids.inc
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,8 @@ X(_TECHMAP_REPLACE_)
X(techmap_simplemap)
X(_techmap_special_)
X(techmap_wrap)
X(_TECHMAP_PLACEHOLDER_)
X(techmap_chtype)
X(T_FALL_MAX)
X(T_FALL_MIN)
X(T_FALL_TYP)
Expand Down
7 changes: 7 additions & 0 deletions passes/techmap/techmap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,9 @@ struct TechmapWorker

if (c->type.begins_with("\\$"))
c->type = c->type.substr(1);

if (c->type == ID::_TECHMAP_PLACEHOLDER_ && tpl_cell->has_attribute(ID::techmap_chtype))
c->type = RTLIL::escape_id(tpl_cell->get_string_attribute(ID::techmap_chtype));

vector<IdString> autopurge_ports;

Expand Down Expand Up @@ -1135,6 +1138,10 @@ struct TechmapPass : public Pass {
log("new wire alias to be created and named as above but with the `_TECHMAP_REPLACE_'\n");
log("prefix also substituted.\n");
log("\n");
log("A cell with the type _TECHMAP_PLACEHOLDER_ in the map file will have its type\n");
log("changed to the content of the techmap_chtype attribute. This allows for choosing\n");
log("the cell type dynamically.\n");
log("\n");
log("See 'help extract' for a pass that does the opposite thing.\n");
log("\n");
log("See 'help flatten' for a pass that does flatten the design (which is\n");
Expand Down

0 comments on commit fc82251

Please sign in to comment.