Skip to content

Commit 8fa2112

Browse files
committed
Add 0V to ground
1 parent a201acd commit 8fa2112

File tree

1 file changed

+17
-2
lines changed
  • crates/pcb-zen-core/src/lang

1 file changed

+17
-2
lines changed

crates/pcb-zen-core/src/lang/eval.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ use std::{
44
cell::RefCell,
55
collections::{BTreeMap, HashMap, HashSet},
66
path::{Path, PathBuf},
7+
str::FromStr,
78
sync::{Arc, Mutex},
89
};
910

1011
use anyhow::anyhow;
11-
use pcb_sch::physical::{PhysicalRangeType, PhysicalValueType};
12+
use pcb_sch::physical::{PhysicalRange, PhysicalRangeType, PhysicalValueType};
1213
use starlark::{codemap::ResolvedSpan, collections::SmallMap, values::FrozenHeap};
1314
use starlark::{environment::FrozenModule, typing::Interface};
1415
use starlark::{
@@ -1245,11 +1246,25 @@ impl EvalContext {
12451246
}
12461247
}
12471248

1248-
// Ground: symbol=GND
1249+
// Ground: symbol=GND, voltage=0V
12491250
if self.module.get("Ground").is_some() {
12501251
if let Ok(symbol_field) = make_symbol_field("GND") {
12511252
let mut fields = SmallMap::new();
12521253
fields.insert("symbol".to_owned(), symbol_field);
1254+
1255+
// Add voltage field with default of 0V
1256+
let voltage_range_type = PhysicalRangeType::new(PhysicalUnit::Volts.into());
1257+
let default_voltage = heap.alloc(
1258+
PhysicalRange::from_str("0V").expect("Failed to parse 0V as PhysicalRange"),
1259+
);
1260+
let voltage_type_compiled =
1261+
TypeCompiled::new(heap.alloc(voltage_range_type).to_value(), heap).unwrap();
1262+
let voltage_field = heap.alloc(FieldGen::new(
1263+
voltage_type_compiled,
1264+
Some(default_voltage.to_value()),
1265+
));
1266+
fields.insert("voltage".to_owned(), voltage_field.to_value());
1267+
12531268
self.module.set(
12541269
"Ground",
12551270
heap.alloc(NetType {

0 commit comments

Comments
 (0)