Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

noflatten option does not work for instance count mismatches #58

Open
d-m-bailey opened this issue Sep 7, 2022 · 4 comments
Open

noflatten option does not work for instance count mismatches #58

d-m-bailey opened this issue Sep 7, 2022 · 4 comments

Comments

@d-m-bailey
Copy link
Contributor

Specifying cells with the -noflatten option should prevent those cells from being flattened.

However, if there is a difference in the cell counts, netgen will flatten cells regardless of whether or not they're tagged noflatten.

Netgen 1.5.227

From the stdout:

Will not flatten these subcells: sky130_fd_sc_hd__decap_12 sky130_fd_sc_hd__decap_3 sky130_fd_sc_hd__decap_4 sky130_fd_sc_hd__decap_6 sky130_fd_sc_hd__decap_8 sky130_fd_sc_hd__diode_2

From the lvs report:

Flattening instances of sky130_fd_sc_hd__diode_2 in cell uP16_efabless (0) makes a better match
Flattening instances of sky130_fd_sc_hd__diode_2 in cell uP16_efabless (1) makes a better match
Flattening instances of sky130_fd_sc_hd__decap_12 in cell uP16_efabless (0) makes a better match
Flattening instances of sky130_fd_sc_hd__decap_12 in cell uP16_efabless (1) makes a better match
Flattening instances of sky130_fd_sc_hd__decap_3 in cell uP16_efabless (0) makes a better match
Flattening instances of sky130_fd_sc_hd__decap_3 in cell uP16_efabless (1) makes a better match
Flattening instances of sky130_fd_sc_hd__decap_4 in cell uP16_efabless (0) makes a better match
Flattening instances of sky130_fd_sc_hd__decap_4 in cell uP16_efabless (1) makes a better match
Flattening instances of sky130_fd_sc_hd__decap_6 in cell uP16_efabless (0) makes a better match
Flattening instances of sky130_fd_sc_hd__decap_6 in cell uP16_efabless (1) makes a better match
Flattening instances of sky130_fd_sc_hd__decap_8 in cell uP16_efabless (0) makes a better match
Flattening instances of sky130_fd_sc_hd__decap_8 in cell uP16_efabless (1) makes a better match
@RTimothyEdwards
Copy link
Owner

Should be simple enough to fix. . .

@RTimothyEdwards
Copy link
Owner

Okay, straightforward but not simple. The -noflatten option only works on the script level and has not correspondence in the netgen code. I will need to implement some command line option like flatten <cell> prohibit and build up a list of cells that can be checked against during prematch or after a failed match to prohibit flattening.

@RTimothyEdwards
Copy link
Owner

Okay, I am implementing what I mentioned above (almost): flatten prohibit <cell> or flatten deny <cell> will mark a cell as a placeholder, which will prevent it from being flattened. The command option will be called for each cell specified by the -noflatten option, although the command can also be put in the setup file (which would render the -noflatten option unnecessary).

I have coded this up but I need to test it because I have questions around the use of the placeholder flag vs. setting the cell class to type "module"; these two are related but I forget the circumstances under which each is used. I'll post an update tomorrow (ping me if I don't).

@RTimothyEdwards
Copy link
Owner

Fixed in version 1.5.228. -noflatten will now call a new command line option flatten prohibit <cell_name> which then prohibits cells from being flattened at any time during a comparison.

I also discovered another bug in which the -noflatten=<cell_name> syntax does not work (only works with a file name) and fixed that as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants