3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2026-03-23 04:49:15 +00:00
yosys/passes/opt
Sabina Sokol 841a29496d opt_expr: Respect keep attribute for double-inverter folding
The double-inverter optimization in opt_expr folds consecutive NOT gates
without checking if the cell has the keep attribute. This causes ring
oscillator PUFs and other intentional feedback loops to be broken even
when explicitly marked for preservation.

This patch adds a has_keep_attr() check before folding double inverters,
consistent with how opt_clean handles the keep attribute.

Fixes: Ring oscillator cells marked with (* keep *) being optimized away

Signed-off-by: Sabina Sokol <Sabina.Sokol@gtri.gatech.edu>
2026-03-10 13:39:06 -04:00
..
.gitignore pmgen: Move passes out of pmgen folder 2025-01-31 15:18:28 +13:00
Makefile.inc Add opt_balance_tree pass for timing optimization 2026-01-13 14:20:11 -08:00
muxpack.cc rtlil: represent Const strings as std::string 2024-10-14 06:28:12 +02:00
opt.cc Move Design::sort() calls out of opt and opt_clean passes into the synth passes that need them. 2026-01-23 01:14:35 +00:00
opt_balance_tree.cc opt_balance_tree: mark experimental 2026-01-19 12:01:25 +01:00
opt_clean.cc newcelltypes: wrap design celltypes support 2026-03-04 12:22:14 +01:00
opt_demorgan.cc opt_demorgan: skip zero width cells 2024-09-24 14:24:59 +01:00
opt_dff.cc OptDff more accurate ctrl/pattern desc. 2026-01-26 22:19:36 +01:00
opt_expr.cc opt_expr: Respect keep attribute for double-inverter folding 2026-03-10 13:39:06 -04:00
opt_ffinv.cc Instead of using builtin_ff_cell_types() directly, go through a method Cell::is_builtin_ff() 2025-09-17 03:24:19 +00:00
opt_hier.cc opt_hier: Adjust messages 2025-09-29 12:27:27 +02:00
opt_lut.cc Remove .c_str() from parameters to log_debug() 2025-09-23 19:10:33 +12:00
opt_lut_ins.cc Update opt_lut_ins and stat for analogdevices and remove ecp5 2026-03-06 09:10:36 +01:00
opt_mem.cc Update passes/opt to avoid bits() 2025-09-16 03:17:23 +00:00
opt_mem_feedback.cc kernel/mem: Introduce transparency masks. 2021-08-11 00:04:16 +02:00
opt_mem_priority.cc opt_mem_priority: Fix non-ascii char in help message. 2021-12-09 00:56:14 +01:00
opt_mem_widen.cc Add opt_mem_widen pass. 2021-08-14 01:06:23 +02:00
opt_merge.cc Parallelize opt_merge. 2026-01-08 04:21:39 +00:00
opt_muxtree.cc Use digit separators for large decimal integers 2026-01-13 16:38:12 +01:00
opt_reduce.cc Remove .c_str() calls from log()/log_error() 2025-09-11 20:59:37 +00:00
opt_share.cc opt_share: Fix input confusion with ANDNOT, ORNOT gates 2023-07-20 20:58:52 +01:00
peepopt.cc Add muldiv_c peepopt pass 2025-04-30 08:06:59 -07:00
peepopt_formal_clockgateff.pmg pmgen: Move passes out of pmgen folder 2025-01-31 15:18:28 +13:00
peepopt_muldiv.pmg pmgen: Move passes out of pmgen folder 2025-01-31 15:18:28 +13:00
peepopt_muldiv_c.pmg Add muldiv_c peepopt pass 2025-04-30 08:06:59 -07:00
peepopt_shiftadd.pmg pmgen: Move passes out of pmgen folder 2025-01-31 15:18:28 +13:00
peepopt_shiftmul_left.pmg pmgen: Move passes out of pmgen folder 2025-01-31 15:18:28 +13:00
peepopt_shiftmul_right.pmg pmgen: Move passes out of pmgen folder 2025-01-31 15:18:28 +13:00
pmux2shiftx.cc Update passes/opt to avoid bits() 2025-09-16 03:17:23 +00:00
rmports.cc Remove .c_str() calls from log()/log_error() 2025-09-11 20:59:37 +00:00
share.cc share: use newcelltypes 2026-03-04 12:22:14 +01:00
wreduce.cc Update passes/opt to avoid bits() 2025-09-16 03:17:23 +00:00