liberty_db/timing/impls.rs
1//! All trait `impl` for
2//! `Timing`.
3
4// mod check {
5// //! impl [Check](crate::common::Check) for
6// //! `Timing`.
7
8// use crate::{common::traits::Check, timing::Timing};
9
10use crate::Ctx;
11
12use super::{Timing, TimingType};
13
14// TODO:
15/// Timing arcs with a timing type of `clear` or `preset` require a `timing_sense` attribute.
16/// <a name ="reference_link" href="
17/// https://zao111222333.github.io/liberty-db/2020.09/reference_manual.html?field=null&bgn=330.5&end=330.6
18/// ">Reference</a>
19pub(super) fn need_timing_sense_when_timing_type_is_clear_or_preset<C: 'static + Ctx>(
20 timing: &Timing<C>,
21) {
22 if matches!(timing.timing_type, Some(TimingType::CLEAR | TimingType::PRESET))
23 && timing.timing_sense.is_none()
24 {
25 crate::error!(
26 "Build Error: Timing arcs with a timing type of `clear` or `preset` require a `timing_sense` attribute."
27 );
28 }
29}
30
31/// If `related_pin` is an output pin, you must define a `timing_sense` attribute for that pin.
32/// <a name ="reference_link" href="
33/// https://zao111222333.github.io/liberty-db/2020.09/reference_manual.html?field=null&bgn=330.6&end=330.7
34/// ">Reference</a>
35pub(super) const fn need_timing_sense_when_related_pin_is_output<C: 'static + Ctx>(
36 _timing: &Timing<C>,
37) {
38 // TODO
39 // if timing.related_pin && timing.timing_sense.is_none() {
40 // crate::error!("Build Error: If `related_pin` is an output pin, you must define a `timing_sense` attribute for that pin.");
41 // }
42}