library (retention) { delay_model : table_lookup; voltage_unit : 1V; current_unit : 1mA; leakage_power_unit : 1nW; time_unit : 1ns; capacitive_load_unit (1, pf); pulling_resistance_unit : 1kohm; input_threshold_pct_rise : 50; input_threshold_pct_fall : 50; output_threshold_pct_rise : 50; output_threshold_pct_fall : 50; slew_lower_threshold_pct_rise : 30; slew_upper_threshold_pct_rise : 70; slew_upper_threshold_pct_fall : 70; slew_lower_threshold_pct_fall : 30; cell ("retention_cell") { ff (Q1,QN1) { clocked_on : "CK"; next_state : "(D * !SE + SI * SE)"; clear : "(((!B2B) * !Q2) + !RD)"; preset : "((!B2B) * Q2)"; clear_preset_var1 : "L"; clear_preset_var2 : "H"; } latch (Q2,QN2) { enable : "B1"; data_in : "Q1"; } pin (B1) { direction : input; } pin (B2B) { direction : input; } pin (CK) { clock : true; direction : input; } pin (D) { direction : input; } pin (Q) { direction : output; function : "Q1"; } pin (RD) { direction : input; } pin (SE) { direction : input; } pin (SI) { direction : input; } } }