1#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
10#[allow(clippy::derive_partial_eq_without_eq)]
11#[derive(Clone, PartialEq, ::prost::Message)]
12pub struct SimInput {
13 #[prost(message, optional, tag = "1")]
16 pub pkg: ::core::option::Option<super::circuit::Package>,
17 #[prost(string, tag = "2")]
19 pub top: ::prost::alloc::string::String,
20 #[prost(message, repeated, tag = "10")]
23 pub opts: ::prost::alloc::vec::Vec<SimOptions>,
24 #[prost(message, repeated, tag = "11")]
26 pub an: ::prost::alloc::vec::Vec<Analysis>,
27 #[prost(message, repeated, tag = "12")]
30 pub ctrls: ::prost::alloc::vec::Vec<Control>,
31}
32#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
35#[allow(clippy::derive_partial_eq_without_eq)]
36#[derive(Clone, PartialEq, ::prost::Message)]
37pub struct SimResult {
38 #[prost(message, repeated, tag = "1")]
39 pub an: ::prost::alloc::vec::Vec<AnalysisResult>,
40}
41#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
44#[allow(clippy::derive_partial_eq_without_eq)]
45#[derive(Clone, PartialEq, ::prost::Message)]
46pub struct SimOptions {
47 #[prost(string, tag = "1")]
49 pub name: ::prost::alloc::string::String,
50 #[prost(message, optional, tag = "2")]
52 pub value: ::core::option::Option<super::utils::ParamValue>,
53}
54#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
60#[allow(clippy::derive_partial_eq_without_eq)]
61#[derive(Clone, PartialEq, ::prost::Message)]
62pub struct Analysis {
63 #[prost(oneof = "analysis::An", tags = "1, 2, 3, 4, 5, 10, 11, 20")]
64 pub an: ::core::option::Option<analysis::An>,
65}
66pub mod analysis {
68 #[derive(serde_derive::Serialize, serde_derive::Deserialize)]
69 #[allow(clippy::derive_partial_eq_without_eq)]
70 #[derive(Clone, PartialEq, ::prost::Oneof)]
71 pub enum An {
72 #[prost(message, tag = "1")]
73 Op(super::OpInput),
74 #[prost(message, tag = "2")]
75 Dc(super::DcInput),
76 #[prost(message, tag = "3")]
77 Tran(super::TranInput),
78 #[prost(message, tag = "4")]
79 Ac(super::AcInput),
80 #[prost(message, tag = "5")]
81 Noise(super::NoiseInput),
82 #[prost(message, tag = "10")]
83 Sweep(super::SweepInput),
84 #[prost(message, tag = "11")]
85 Monte(super::MonteInput),
86 #[prost(message, tag = "20")]
87 Custom(super::CustomAnalysisInput),
88 }
89}
90#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
94#[allow(clippy::derive_partial_eq_without_eq)]
95#[derive(Clone, PartialEq, ::prost::Message)]
96pub struct AnalysisResult {
97 #[prost(oneof = "analysis_result::An", tags = "1, 2, 3, 4, 5, 10, 11, 20")]
98 pub an: ::core::option::Option<analysis_result::An>,
99}
100pub mod analysis_result {
102 #[derive(serde_derive::Serialize, serde_derive::Deserialize)]
103 #[allow(clippy::derive_partial_eq_without_eq)]
104 #[derive(Clone, PartialEq, ::prost::Oneof)]
105 pub enum An {
106 #[prost(message, tag = "1")]
107 Op(super::OpResult),
108 #[prost(message, tag = "2")]
109 Dc(super::DcResult),
110 #[prost(message, tag = "3")]
111 Tran(super::TranResult),
112 #[prost(message, tag = "4")]
113 Ac(super::AcResult),
114 #[prost(message, tag = "5")]
115 Noise(super::NoiseResult),
116 #[prost(message, tag = "10")]
117 Sweep(super::SweepResult),
118 #[prost(message, tag = "11")]
119 Monte(super::MonteResult),
120 #[prost(message, tag = "20")]
121 Custom(super::CustomAnalysisResult),
122 }
123}
124#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
126#[allow(clippy::derive_partial_eq_without_eq)]
127#[derive(Clone, PartialEq, ::prost::Message)]
128pub struct OpInput {
129 #[prost(string, tag = "1")]
131 pub analysis_name: ::prost::alloc::string::String,
132 #[prost(message, repeated, tag = "5")]
134 pub ctrls: ::prost::alloc::vec::Vec<Control>,
135}
136#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
138#[allow(clippy::derive_partial_eq_without_eq)]
139#[derive(Clone, PartialEq, ::prost::Message)]
140pub struct OpResult {
141 #[prost(string, tag = "1")]
143 pub analysis_name: ::prost::alloc::string::String,
144 #[prost(string, repeated, tag = "3")]
148 pub signals: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
149 #[prost(double, repeated, tag = "5")]
151 pub data: ::prost::alloc::vec::Vec<f64>,
152}
153#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
155#[allow(clippy::derive_partial_eq_without_eq)]
156#[derive(Clone, PartialEq, ::prost::Message)]
157pub struct DcInput {
158 #[prost(string, tag = "1")]
160 pub analysis_name: ::prost::alloc::string::String,
161 #[prost(string, tag = "2")]
163 pub indep_name: ::prost::alloc::string::String,
164 #[prost(message, optional, tag = "3")]
166 pub sweep: ::core::option::Option<Sweep>,
167 #[prost(message, repeated, tag = "5")]
169 pub ctrls: ::prost::alloc::vec::Vec<Control>,
170}
171#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
175#[allow(clippy::derive_partial_eq_without_eq)]
176#[derive(Clone, PartialEq, ::prost::Message)]
177pub struct DcResult {
178 #[prost(string, tag = "1")]
180 pub analysis_name: ::prost::alloc::string::String,
181 #[prost(string, tag = "2")]
183 pub indep_name: ::prost::alloc::string::String,
184 #[prost(string, repeated, tag = "3")]
188 pub signals: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
189 #[prost(double, repeated, tag = "5")]
191 pub data: ::prost::alloc::vec::Vec<f64>,
192 #[prost(map = "string, double", tag = "10")]
194 pub measurements: ::std::collections::HashMap<::prost::alloc::string::String, f64>,
195}
196#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
198#[allow(clippy::derive_partial_eq_without_eq)]
199#[derive(Clone, PartialEq, ::prost::Message)]
200pub struct TranInput {
201 #[prost(string, tag = "1")]
203 pub analysis_name: ::prost::alloc::string::String,
204 #[prost(double, tag = "2")]
206 pub tstop: f64,
207 #[prost(double, tag = "3")]
209 pub tstep: f64,
210 #[prost(map = "string, double", tag = "4")]
212 pub ic: ::std::collections::HashMap<::prost::alloc::string::String, f64>,
213 #[prost(message, repeated, tag = "5")]
215 pub ctrls: ::prost::alloc::vec::Vec<Control>,
216}
217#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
219#[allow(clippy::derive_partial_eq_without_eq)]
220#[derive(Clone, PartialEq, ::prost::Message)]
221pub struct TranResult {
222 #[prost(string, tag = "1")]
224 pub analysis_name: ::prost::alloc::string::String,
225 #[prost(string, repeated, tag = "3")]
229 pub signals: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
230 #[prost(double, repeated, tag = "5")]
232 pub data: ::prost::alloc::vec::Vec<f64>,
233 #[prost(map = "string, double", tag = "10")]
235 pub measurements: ::std::collections::HashMap<::prost::alloc::string::String, f64>,
236}
237#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
239#[allow(clippy::derive_partial_eq_without_eq)]
240#[derive(Clone, PartialEq, ::prost::Message)]
241pub struct ComplexNum {
242 #[prost(double, tag = "1")]
243 pub re: f64,
244 #[prost(double, tag = "2")]
245 pub im: f64,
246}
247#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
249#[allow(clippy::derive_partial_eq_without_eq)]
250#[derive(Clone, PartialEq, ::prost::Message)]
251pub struct AcInput {
252 #[prost(string, tag = "1")]
254 pub analysis_name: ::prost::alloc::string::String,
255 #[prost(double, tag = "2")]
257 pub fstart: f64,
258 #[prost(double, tag = "3")]
260 pub fstop: f64,
261 #[prost(uint64, tag = "4")]
263 pub npts: u64,
264 #[prost(message, repeated, tag = "5")]
266 pub ctrls: ::prost::alloc::vec::Vec<Control>,
267}
268#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
274#[allow(clippy::derive_partial_eq_without_eq)]
275#[derive(Clone, PartialEq, ::prost::Message)]
276pub struct AcResult {
277 #[prost(string, tag = "1")]
279 pub analysis_name: ::prost::alloc::string::String,
280 #[prost(double, repeated, tag = "2")]
282 pub freq: ::prost::alloc::vec::Vec<f64>,
283 #[prost(string, repeated, tag = "3")]
287 pub signals: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
288 #[prost(message, repeated, tag = "5")]
290 pub data: ::prost::alloc::vec::Vec<ComplexNum>,
291 #[prost(map = "string, double", tag = "10")]
293 pub measurements: ::std::collections::HashMap<::prost::alloc::string::String, f64>,
294}
295#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
297#[allow(clippy::derive_partial_eq_without_eq)]
298#[derive(Clone, PartialEq, ::prost::Message)]
299pub struct NoiseInput {
300 #[prost(string, tag = "1")]
302 pub analysis_name: ::prost::alloc::string::String,
303 #[prost(string, tag = "2")]
305 pub output_p: ::prost::alloc::string::String,
306 #[prost(string, tag = "3")]
309 pub output_n: ::prost::alloc::string::String,
310 #[prost(string, tag = "4")]
312 pub input_source: ::prost::alloc::string::String,
313 #[prost(double, tag = "10")]
315 pub fstart: f64,
316 #[prost(double, tag = "11")]
318 pub fstop: f64,
319 #[prost(uint64, tag = "12")]
321 pub npts: u64,
322 #[prost(message, repeated, tag = "20")]
324 pub ctrls: ::prost::alloc::vec::Vec<Control>,
325}
326#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
332#[allow(clippy::derive_partial_eq_without_eq)]
333#[derive(Clone, PartialEq, ::prost::Message)]
334pub struct NoiseResult {
335 #[prost(string, tag = "1")]
337 pub analysis_name: ::prost::alloc::string::String,
338 #[prost(string, repeated, tag = "3")]
342 pub signals: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
343 #[prost(double, repeated, tag = "5")]
346 pub data: ::prost::alloc::vec::Vec<f64>,
347 #[prost(map = "string, double", tag = "10")]
349 pub integrated_noise: ::std::collections::HashMap<
350 ::prost::alloc::string::String,
351 f64,
352 >,
353 #[prost(map = "string, double", tag = "11")]
355 pub measurements: ::std::collections::HashMap<::prost::alloc::string::String, f64>,
356}
357#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
365#[allow(clippy::derive_partial_eq_without_eq)]
366#[derive(Clone, PartialEq, ::prost::Message)]
367pub struct SweepInput {
368 #[prost(string, tag = "1")]
370 pub analysis_name: ::prost::alloc::string::String,
371 #[prost(string, tag = "2")]
373 pub variable: ::prost::alloc::string::String,
374 #[prost(message, optional, tag = "3")]
376 pub sweep: ::core::option::Option<Sweep>,
377 #[prost(message, repeated, tag = "4")]
379 pub an: ::prost::alloc::vec::Vec<Analysis>,
380 #[prost(message, repeated, tag = "5")]
382 pub ctrls: ::prost::alloc::vec::Vec<Control>,
383}
384#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
386#[allow(clippy::derive_partial_eq_without_eq)]
387#[derive(Clone, PartialEq, ::prost::Message)]
388pub struct SweepResult {
389 #[prost(string, tag = "1")]
391 pub analysis_name: ::prost::alloc::string::String,
392 #[prost(string, tag = "2")]
394 pub variable: ::prost::alloc::string::String,
395 #[prost(message, optional, tag = "3")]
397 pub sweep: ::core::option::Option<Sweep>,
398 #[prost(message, repeated, tag = "4")]
401 pub an: ::prost::alloc::vec::Vec<AnalysisResult>,
402}
403#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
409#[allow(clippy::derive_partial_eq_without_eq)]
410#[derive(Clone, PartialEq, ::prost::Message)]
411pub struct MonteInput {
412 #[prost(string, tag = "1")]
414 pub analysis_name: ::prost::alloc::string::String,
415 #[prost(int64, tag = "2")]
417 pub npts: i64,
418 #[prost(int64, tag = "3")]
420 pub seed: i64,
421 #[prost(message, repeated, tag = "4")]
423 pub an: ::prost::alloc::vec::Vec<Analysis>,
424 #[prost(message, repeated, tag = "5")]
426 pub ctrls: ::prost::alloc::vec::Vec<Control>,
427}
428#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
430#[allow(clippy::derive_partial_eq_without_eq)]
431#[derive(Clone, PartialEq, ::prost::Message)]
432pub struct MonteResult {
433 #[prost(string, tag = "1")]
435 pub analysis_name: ::prost::alloc::string::String,
436 #[prost(string, tag = "2")]
438 pub variable: ::prost::alloc::string::String,
439 #[prost(message, optional, tag = "3")]
441 pub sweep: ::core::option::Option<Sweep>,
442 #[prost(message, repeated, tag = "4")]
445 pub an: ::prost::alloc::vec::Vec<AnalysisResult>,
446}
447#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
456#[allow(clippy::derive_partial_eq_without_eq)]
457#[derive(Clone, PartialEq, ::prost::Message)]
458pub struct CustomAnalysisInput {
459 #[prost(string, tag = "1")]
461 pub analysis_name: ::prost::alloc::string::String,
462 #[prost(string, tag = "2")]
464 pub cmd: ::prost::alloc::string::String,
465 #[prost(message, repeated, tag = "5")]
467 pub ctrls: ::prost::alloc::vec::Vec<Control>,
468}
469#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
473#[allow(clippy::derive_partial_eq_without_eq)]
474#[derive(Clone, PartialEq, ::prost::Message)]
475pub struct CustomAnalysisResult {}
476#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
478#[allow(clippy::derive_partial_eq_without_eq)]
479#[derive(Clone, PartialEq, ::prost::Message)]
480pub struct Sweep {
481 #[prost(oneof = "sweep::Tp", tags = "1, 2, 3")]
482 pub tp: ::core::option::Option<sweep::Tp>,
483}
484pub mod sweep {
486 #[derive(serde_derive::Serialize, serde_derive::Deserialize)]
487 #[allow(clippy::derive_partial_eq_without_eq)]
488 #[derive(Clone, PartialEq, ::prost::Oneof)]
489 pub enum Tp {
490 #[prost(message, tag = "1")]
491 Linear(super::LinearSweep),
492 #[prost(message, tag = "2")]
493 Log(super::LogSweep),
494 #[prost(message, tag = "3")]
495 Points(super::PointSweep),
496 }
497}
498#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
500#[allow(clippy::derive_partial_eq_without_eq)]
501#[derive(Clone, PartialEq, ::prost::Message)]
502pub struct LinearSweep {
503 #[prost(double, tag = "1")]
504 pub start: f64,
505 #[prost(double, tag = "2")]
506 pub stop: f64,
507 #[prost(double, tag = "3")]
508 pub step: f64,
509}
510#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
512#[allow(clippy::derive_partial_eq_without_eq)]
513#[derive(Clone, PartialEq, ::prost::Message)]
514pub struct LogSweep {
515 #[prost(double, tag = "1")]
516 pub start: f64,
517 #[prost(double, tag = "2")]
518 pub stop: f64,
519 #[prost(double, tag = "3")]
521 pub npts: f64,
522}
523#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
525#[allow(clippy::derive_partial_eq_without_eq)]
526#[derive(Clone, PartialEq, ::prost::Message)]
527pub struct PointSweep {
528 #[prost(double, repeated, tag = "1")]
529 pub points: ::prost::alloc::vec::Vec<f64>,
530 #[prost(double, tag = "2")]
531 pub stop: f64,
532 #[prost(double, tag = "3")]
533 pub npts: f64,
534}
535#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
537#[allow(clippy::derive_partial_eq_without_eq)]
538#[derive(Clone, PartialEq, ::prost::Message)]
539pub struct Control {
540 #[prost(oneof = "control::Ctrl", tags = "1, 2, 5, 6, 7, 10")]
541 pub ctrl: ::core::option::Option<control::Ctrl>,
542}
543pub mod control {
545 #[derive(serde_derive::Serialize, serde_derive::Deserialize)]
546 #[allow(clippy::derive_partial_eq_without_eq)]
547 #[derive(Clone, PartialEq, ::prost::Oneof)]
548 pub enum Ctrl {
549 #[prost(message, tag = "1")]
550 Include(super::Include),
551 #[prost(message, tag = "2")]
552 Lib(super::LibInclude),
553 #[prost(message, tag = "5")]
554 Save(super::Save),
555 #[prost(message, tag = "6")]
556 Meas(super::Meas),
557 #[prost(message, tag = "7")]
558 Param(super::super::utils::Param),
559 #[prost(string, tag = "10")]
560 Literal(::prost::alloc::string::String),
561 }
562}
563#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
565#[allow(clippy::derive_partial_eq_without_eq)]
566#[derive(Clone, PartialEq, ::prost::Message)]
567pub struct Save {
568 #[prost(oneof = "save::Save", tags = "1, 2")]
569 pub save: ::core::option::Option<save::Save>,
570}
571pub mod save {
573 #[derive(serde_derive::Serialize, serde_derive::Deserialize)]
575 #[derive(
576 Clone,
577 Copy,
578 Debug,
579 PartialEq,
580 Eq,
581 Hash,
582 PartialOrd,
583 Ord,
584 ::prost::Enumeration
585 )]
586 #[repr(i32)]
587 pub enum SaveMode {
588 None = 0,
589 All = 1,
590 }
591 impl SaveMode {
592 pub fn as_str_name(&self) -> &'static str {
597 match self {
598 SaveMode::None => "NONE",
599 SaveMode::All => "ALL",
600 }
601 }
602 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
604 match value {
605 "NONE" => Some(Self::None),
606 "ALL" => Some(Self::All),
607 _ => None,
608 }
609 }
610 }
611 #[derive(serde_derive::Serialize, serde_derive::Deserialize)]
612 #[allow(clippy::derive_partial_eq_without_eq)]
613 #[derive(Clone, PartialEq, ::prost::Oneof)]
614 pub enum Save {
615 #[prost(enumeration = "SaveMode", tag = "1")]
616 Mode(i32),
617 #[prost(string, tag = "2")]
618 Signal(::prost::alloc::string::String),
619 }
620}
621#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
623#[allow(clippy::derive_partial_eq_without_eq)]
624#[derive(Clone, PartialEq, ::prost::Message)]
625pub struct Include {
626 #[prost(string, tag = "1")]
629 pub path: ::prost::alloc::string::String,
630}
631#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
637#[allow(clippy::derive_partial_eq_without_eq)]
638#[derive(Clone, PartialEq, ::prost::Message)]
639pub struct LibInclude {
640 #[prost(string, tag = "1")]
643 pub path: ::prost::alloc::string::String,
644 #[prost(string, tag = "2")]
646 pub section: ::prost::alloc::string::String,
647}
648#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
650#[allow(clippy::derive_partial_eq_without_eq)]
651#[derive(Clone, PartialEq, ::prost::Message)]
652pub struct Meas {
653 #[prost(string, tag = "1")]
655 pub analysis_type: ::prost::alloc::string::String,
656 #[prost(string, tag = "2")]
658 pub name: ::prost::alloc::string::String,
659 #[prost(string, tag = "3")]
661 pub expr: ::prost::alloc::string::String,
662}
663#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
667#[allow(clippy::derive_partial_eq_without_eq)]
668#[derive(Clone, PartialEq, ::prost::Message)]
669pub struct Signal {
670 #[prost(string, tag = "1")]
672 pub name: ::prost::alloc::string::String,
673 #[prost(enumeration = "signal::Quantity", tag = "2")]
674 pub quantity: i32,
675}
676pub mod signal {
678 #[derive(serde_derive::Serialize, serde_derive::Deserialize)]
680 #[derive(
681 Clone,
682 Copy,
683 Debug,
684 PartialEq,
685 Eq,
686 Hash,
687 PartialOrd,
688 Ord,
689 ::prost::Enumeration
690 )]
691 #[repr(i32)]
692 pub enum Quantity {
693 Voltage = 0,
694 Current = 1,
695 None = 3,
696 }
697 impl Quantity {
698 pub fn as_str_name(&self) -> &'static str {
703 match self {
704 Quantity::Voltage => "VOLTAGE",
705 Quantity::Current => "CURRENT",
706 Quantity::None => "NONE",
707 }
708 }
709 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
711 match value {
712 "VOLTAGE" => Some(Self::Voltage),
713 "CURRENT" => Some(Self::Current),
714 "NONE" => Some(Self::None),
715 _ => None,
716 }
717 }
718 }
719}