virtuoso_cli/ocean/
corner.rs1use serde::Deserialize;
2
3#[derive(Debug, Deserialize)]
4pub struct CornerConfig {
5 pub simulator: Option<String>,
6 pub design: DesignTarget,
7 pub model_file: String,
8 pub analysis: AnalysisConfig,
9 pub corners: Vec<Corner>,
10 pub measures: Vec<Measure>,
11}
12
13#[derive(Debug, Deserialize)]
14pub struct DesignTarget {
15 pub lib: String,
16 pub cell: String,
17 #[serde(default = "default_view")]
18 pub view: String,
19}
20
21fn default_view() -> String {
22 "schematic".into()
23}
24
25#[derive(Debug, Deserialize)]
26pub struct AnalysisConfig {
27 #[serde(rename = "type")]
28 pub analysis_type: String,
29 #[serde(flatten)]
30 pub params: std::collections::HashMap<String, serde_json::Value>,
31}
32
33#[derive(Debug, Deserialize)]
34pub struct Corner {
35 pub name: String,
36 pub section: String,
37 pub temp: f64,
38 #[serde(flatten)]
39 pub vars: std::collections::HashMap<String, serde_json::Value>,
40}
41
42#[derive(Debug, Deserialize)]
43pub struct Measure {
44 pub name: String,
45 pub expr: String,
46}