use crate::{
ast::{Attributes, GroupComments, GroupFn},
common::{
items::{Domain, WordSet},
table::TableLookUp,
},
expression::IdBooleanExpression,
timing::items::Mode,
};
#[derive(Debug, Default, Clone)]
#[derive(liberty_macros::Group)]
#[mut_set::derive::item(sort)]
#[derive(serde::Serialize, serde::Deserialize)]
pub struct InternalPower {
#[size = 120]
#[liberty(comments)]
pub comments: GroupComments<Self>,
#[size = 48]
#[liberty(attributes)]
pub attributes: Attributes,
#[id]
#[size = 48]
#[liberty(simple)]
pub related_pin: WordSet,
#[id]
#[size = 48]
#[liberty(simple)]
pub related_pg_pin: WordSet,
#[size = 80]
#[liberty(simple(type = Option))]
#[id(borrow = "Option<&IdBooleanExpression>", check_fn = "mut_set::borrow_option!")]
pub when: Option<IdBooleanExpression>,
#[size = 16]
#[liberty(complex(type = Option))]
mode: Option<Mode>,
#[size = 336]
#[liberty(group(type = Option))]
pub domain: Option<Domain>,
#[size = 336]
#[liberty(group(type = Option))]
pub rise_power: Option<TableLookUp>,
#[size = 336]
#[liberty(group(type = Option))]
pub fall_power: Option<TableLookUp>,
#[size = 336]
#[liberty(group(type = Option))]
pub power: Option<TableLookUp>,
}
impl GroupFn for InternalPower {}