11using SpiceSharp . Components ;
2- using SpiceSharpParser . Common . Validation ;
3- using SpiceSharpParser . ModelReaders . Netlist . Spice . Context ;
42using SpiceSharpParser . ModelReaders . Netlist . Spice . Context . Models ;
5- using SpiceSharpParser . Models . Netlist . Spice . Objects ;
6- using SpiceSharpParser . Models . Netlist . Spice . Objects . Parameters ;
7- using System ;
83
94namespace SpiceSharpParser . ModelReaders . Netlist . Spice . Readers . EntityGenerators . Models
105{
@@ -44,85 +39,5 @@ public Context.Models.Model Process(Context.Models.Model model, IModelsRegistry
4439 }
4540 return model ;
4641 }
47-
48- public override void AddGenericLevel < TModel , TParameters > ( int level )
49- {
50- base . AddGenericLevel < TModel , TParameters > ( level ) ;
51- }
52-
53- public override void AddLevel < TModel , TParameters > ( int level )
54- {
55- Levels [ level ] = ( name , type , _ ) =>
56- {
57- var mosfet = ( TModel ) Activator . CreateInstance ( typeof ( TModel ) , name ) ;
58- switch ( type . ToLower ( ) )
59- {
60- case "nmos" : mosfet . SetParameter ( "nmos" , true ) ; break ;
61- case "pmos" : mosfet . SetParameter ( "pmos" , true ) ; break ;
62- }
63-
64- return new Context . Models . Model ( name , mosfet , mosfet . Parameters ) ;
65- } ;
66- }
67-
68-
69- public override Context . Models . Model Generate ( string id , string type , ParameterCollection parameters , IReadingContext context )
70- {
71- var clonedParameters = ( ParameterCollection ) parameters . Clone ( ) ;
72-
73- int level = 1 ;
74- string version = null ;
75- int lindex = - 1 , vindex = - 1 ;
76- for ( int i = 0 ; i < clonedParameters . Count ; i ++ )
77- {
78- if ( clonedParameters [ i ] is AssignmentParameter ap )
79- {
80- if ( ap . Name . ToLower ( ) == "level" )
81- {
82- lindex = i ;
83- level = ( int ) Math . Round ( context . Evaluator . EvaluateDouble ( ap . Value ) ) ;
84- }
85-
86- if ( ap . Name . ToLower ( ) == "version" )
87- {
88- vindex = i ;
89- version = ap . Value . ToLower ( ) ;
90- }
91-
92- if ( vindex >= 0 && lindex >= 0 )
93- {
94- break ;
95- }
96- }
97- }
98-
99- if ( lindex >= 0 )
100- {
101- clonedParameters . RemoveAt ( lindex ) ;
102- }
103-
104- if ( vindex >= 0 )
105- {
106- clonedParameters . RemoveAt ( vindex < lindex ? vindex : vindex - 1 ) ;
107- }
108-
109- // Generate the model
110- Context . Models . Model model ;
111- if ( Levels . ContainsKey ( level ) )
112- {
113- model = Levels [ level ] . Invoke ( id , type , version ) ;
114- }
115- else
116- {
117- context . Result . ValidationResult . AddError ( ValidationEntrySource . Reader , $ "Unknown mosfet model level { level } ", parameters . LineInfo ) ;
118- return null ;
119- }
120-
121- // Read all the parameters
122- SetParameters ( context , model . Entity , clonedParameters ) ;
123-
124- return model ;
125- }
126-
12742 }
12843}
0 commit comments