Skip to content

Commit 3371ab1

Browse files
Fixes
1 parent f470714 commit 3371ab1

3 files changed

Lines changed: 22 additions & 9 deletions

File tree

src/SpiceSharpParser.IntegrationTests/Examples/Extensions/CustomMosfetModelTest.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using System.IO;
1+
using SpiceSharpParser.ModelReaders.Netlist.Spice.Readers.EntityGenerators.Components.Semiconductors;
2+
using SpiceSharpParser.ModelReaders.Netlist.Spice.Readers.EntityGenerators.Models;
3+
using System.IO;
24
using Xunit;
35

46
namespace SpiceSharpParser.IntegrationTests.Examples.Extensions
@@ -18,9 +20,19 @@ public void When_CustomMosfetModel_Used_NoExceptions()
1820
// Convert to Spice#
1921
var spiceSharpReader = new SpiceSharpReader();
2022
spiceSharpReader.Settings.CaseSensitivity.IsModelTypeCaseSensitive = false;
21-
spiceSharpReader.Settings.Mappings.Models.Map(new[] { "PMOS", "NMOS" }, new CustomMosfetModelGenerator());
22-
var spiceSharpModel = spiceSharpReader.Read(parseResult.FinalModel);
2323

24+
25+
// custom mappings
26+
var modelGenerator = new MosfetModelGenerator();
27+
modelGenerator.AddLevel<SpiceSharp.Components.Mosfet1Model, SpiceSharp.Components.Mosfets.Level1.ModelParameters>(39);
28+
spiceSharpReader.Settings.Mappings.Models.Map(new[] { "PMOS", "NMOS" }, modelGenerator);
29+
var mosfetGenerator = new MosfetGenerator();
30+
mosfetGenerator.AddMosfet<SpiceSharp.Components.Mosfet1Model, SpiceSharp.Components.Mosfet1>();
31+
spiceSharpReader.Settings.Mappings.Components.Map("M", mosfetGenerator);
32+
33+
34+
var spiceSharpModel = spiceSharpReader.Read(parseResult.FinalModel);
35+
2436
Assert.False(spiceSharpModel.ValidationResult.HasError);
2537
Assert.False(spiceSharpModel.ValidationResult.HasWarning);
2638
}

src/SpiceSharpParser/ModelReaders/Netlist/Spice/Readers/EntityGenerators/Components/Semiconductors/MosfetGenerator.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,10 @@ public MosfetGenerator()
3535
});
3636
}
3737

38-
protected static Dictionary<Type, Func<string, MosfetDetails>> Mosfets { get; } = new ();
38+
protected Dictionary<Type, Func<string, MosfetDetails>> Mosfets { get; } = new ();
3939

40-
public static void AddMosfet<TModel, TMosfet>()
40+
public void AddMosfet<TModel, TMosfet>()
4141
where TMosfet : SpiceSharp.Components.Component
42-
where TModel : Context.Models.Model
4342
{
4443
Mosfets.Add(typeof(TModel), (name) =>
4544
{

src/SpiceSharpParser/ModelReaders/Netlist/Spice/Readers/EntityGenerators/Models/MosfetModelGenerator.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using SpiceSharp;
34
using SpiceSharp.Components;
45
using SpiceSharp.Components.Mosfets;
56
using SpiceSharp.Entities;
@@ -56,10 +57,11 @@ public MosfetModelGenerator()
5657
/// Gets available model generators indexed by their LEVEL.
5758
/// The parameters passed are name, type (nmos or pmos) and the version.
5859
/// </summary>
59-
protected static Dictionary<int, Func<string, string, string, Context.Models.Model>> Levels { get; } = new Dictionary<int, Func<string, string, string, Context.Models.Model>>();
60+
protected Dictionary<int, Func<string, string, string, Context.Models.Model>> Levels { get; } = new Dictionary<int, Func<string, string, string, Context.Models.Model>>();
6061

61-
public static void AddLevel<TModel>(int level)
62-
where TModel : Entity<Parameters>
62+
public void AddLevel<TModel, TParameters>(int level)
63+
where TModel : Entity<TParameters>
64+
where TParameters : ModelParameters, ICloneable<TParameters>, new()
6365
{
6466
Levels[level] = (name, type, _) =>
6567
{

0 commit comments

Comments
 (0)