@@ -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
1011use anyhow:: anyhow;
11- use pcb_sch:: physical:: { PhysicalRangeType , PhysicalValueType } ;
12+ use pcb_sch:: physical:: { PhysicalRange , PhysicalRangeType , PhysicalValueType } ;
1213use starlark:: { codemap:: ResolvedSpan , collections:: SmallMap , values:: FrozenHeap } ;
1314use starlark:: { environment:: FrozenModule , typing:: Interface } ;
1415use 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