Skip to main content

virtuoso_cli/ocean/
corner.rs

1use 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}