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}