Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
asic:cells:start [2025/07/31 12:52] – [Using an existing cell library] rajit | asic:cells:start [2025/07/31 13:11] (current) – [Using an existing cell library] rajit | ||
---|---|---|---|
Line 133: | Line 133: | ||
design. This is similar to what happens when using a commercial digital ASIC flow, where logic synthesis explicitly selects cells from the standard cell library and creates a netlist that instantiates technology-specific cells. | design. This is similar to what happens when using a commercial digital ASIC flow, where logic synthesis explicitly selects cells from the standard cell library and creates a netlist that instantiates technology-specific cells. | ||
- | If the '' | + | If the '' |
+ | |||
+ | Currently we do not provide automated mechanisms to map cells extracted from production rule descriptions to cell libraries in other formats. This is primarily because the legality of this mapping depends on the underlying circuit family. For example, mapping a three-input OR gate into multiple two-input OR gates may introduce timing-dependent switching hazards, and is therefore legal only in certain contexts. | ||
+ | |||
+ | If you know, for example, the production rule in your ACT file | ||
+ | <code act> | ||
+ | prs { | ||
+ | a<8> & b<8> -> c- | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | should be mapped to a '' | ||
+ | |||
+ | **Step 1: create a dummy cell that matches this rule.** In this example, that would look like this: | ||
+ | <code act> | ||
+ | namespace cell { | ||
+ | |||
+ | defcell gmycell0 (bool? in[2]; bool! out) | ||
+ | { | ||
+ | prs { | ||
+ | in[0]< | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | Running the cell mapper will use your own cell. Note that you must follow the naming convention for cells used by ACT: (i) the cell name begins with '' | ||
+ | |||
+ | **Step 2: swap in your actual cell.** | ||
+ | |||
+ | <code act> | ||
+ | namespace cell { | ||
+ | |||
+ | defcell gmycell0 (bool? in[2]; bool! out) | ||
+ | { | ||
+ | | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | where '' | ||
+ | |||
+ | |||
+ | |||
+ |