Skip to content

Commit cb35863

Browse files
Fix/validate bias source limit (#56)
1 parent 864ae77 commit cb35863

File tree

6 files changed

+39
-18
lines changed

6 files changed

+39
-18
lines changed

script-gen-manager/src/instr_metadata/mpsu50_metadata.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ impl Mpsu50Metadata {
3535
max_supported_current,
3636
);
3737

38-
base.add_range("source.limiti".to_string(), 0.01, 5.1);
38+
base.add_range("source.limiti".to_string(), -5.1, 5.1);
3939

4040
base.add_range("source.step_to_sweep_delay".to_string(), 0.0, 100.0);
4141

@@ -44,21 +44,21 @@ impl Mpsu50Metadata {
4444
let exclude_i = NumberLimit::new(-10.0e-9, 10.0e-9, false, None);
4545
let mut region_map_metadata = RegionMapMetadata::new(None, exclude_i);
4646

47-
region_map_metadata.add_region(1, 0.0, 0.0, 10.0, max_supported_current);
48-
region_map_metadata.add_region(1, 0.0, 0.0, -10.0, -max_supported_current);
47+
region_map_metadata.add_region(1, 0.0, 10.0e-9, 10.0, max_supported_current);
48+
region_map_metadata.add_region(1, 0.0, -10.0e-9, -10.0, -max_supported_current);
4949

5050
Self::add_1st_quadrant_curved_region(
5151
10.0,
5252
max_supported_voltage,
5353
0.0001,
54-
0.0,
54+
10.0e-9,
5555
&mut region_map_metadata,
5656
); //First quadrant curve
5757
Self::add_3rd_quadrant_curved_region(
5858
-10.0,
5959
-max_supported_voltage,
6060
-0.0001,
61-
0.0,
61+
-10.0e-9,
6262
&mut region_map_metadata,
6363
); //Third quadrant curve
6464

script-gen-manager/src/instr_metadata/msmu60_metadata.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ impl Msmu60Metadata {
6969
base.add_range("source.levelv".to_string(), -60.6, 60.6);
7070
base.add_range("source.leveli".to_string(), -1.515, 1.515);
7171

72-
base.add_range("source.limiti".to_string(), -1.515, 1.515);
73-
base.add_range("source.limitv".to_string(), -60.6, 60.6);
72+
base.add_range("source.limiti".to_string(), 10.0e-9, 1.515);
73+
base.add_range("source.limitv".to_string(), 10.0e-9, 60.6);
7474

7575
base.add_range("source.step_to_sweep_delay".to_string(), 0.0, 100.0);
7676

script-gen-manager/src/model/chan_data/bias_channel.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ impl BiasChannel {
2626

2727
pub fn evaluate(&mut self) {
2828
self.common_chan_attributes.evaluate();
29+
self.common_chan_attributes
30+
.evaluate_source_limits(&self.bias, &self.bias); //Use the bias value for both start and stop as the absolute max is used
2931
self.determine_bias_value();
3032
}
3133

script-gen-manager/src/model/chan_data/default_channel.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,13 +286,13 @@ impl CommonChanAttributes {
286286
stop_value: &ParameterFloat,
287287
) {
288288
//Use region map to further limit the source limits based on the source function and range
289-
let mut limit_value = start_value.value;
289+
let mut limit_value = start_value.value.abs();
290290
if let Some(region_map) =
291291
self.get_region_map(&self.device.metadata, &self.source_range.value)
292292
{
293293
if stop_value.value.abs() > limit_value.abs() {
294294
//Use the largest absolute value
295-
limit_value = stop_value.value;
295+
limit_value = stop_value.value.abs();
296296
}
297297
match &self.source_function.value[..] {
298298
s if s == BaseMetadata::FUNCTION_VOLTAGE => {

script-gen-manager/src/model/chan_data/start_stop_channel.rs

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,33 @@ impl StartStopChannel {
5757
}
5858
}
5959

60-
pub fn evaluate(&mut self, list_size: usize) {
60+
pub fn evaluate(&mut self, list_size: usize, is_list_enabled: bool) {
6161
self.common_chan_attributes.evaluate();
6262
self.determine_start_value();
6363
self.determine_stop_value();
6464

6565
//List evaluation
6666

6767
self.update_list(list_size);
68-
self.common_chan_attributes
69-
.evaluate_source_limits(&self.start, &self.stop);
68+
69+
if is_list_enabled {
70+
let min_value = self
71+
.list
72+
.iter()
73+
.min_by(|a, b| a.value.partial_cmp(&b.value).unwrap())
74+
.unwrap();
75+
let max_value = self
76+
.list
77+
.iter()
78+
.max_by(|a, b| a.value.partial_cmp(&b.value).unwrap())
79+
.unwrap();
80+
81+
self.common_chan_attributes
82+
.evaluate_source_limits(min_value, max_value);
83+
} else {
84+
self.common_chan_attributes
85+
.evaluate_source_limits(&self.start, &self.stop);
86+
}
7087
}
7188

7289
fn update_list(&mut self, list_size: usize) {

script-gen-manager/src/model/sweep_data/sweep_config.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -393,14 +393,16 @@ impl SweepConfig {
393393
}
394394

395395
for step_channel in &mut self.step_channels {
396-
step_channel
397-
.start_stop_channel
398-
.evaluate(self.step_global_parameters.step_points.value as usize);
396+
step_channel.start_stop_channel.evaluate(
397+
self.step_global_parameters.step_points.value as usize,
398+
self.step_global_parameters.list_step,
399+
);
399400
}
400401
for sweep_channel in &mut self.sweep_channels {
401-
sweep_channel
402-
.start_stop_channel
403-
.evaluate(self.sweep_global_parameters.sweep_points.value as usize);
402+
sweep_channel.start_stop_channel.evaluate(
403+
self.sweep_global_parameters.sweep_points.value as usize,
404+
self.sweep_global_parameters.list_sweep,
405+
);
404406
}
405407
}
406408

0 commit comments

Comments
 (0)