diff --git a/convert_pm3_to_csv.py b/convert_pm3_to_csv.py
index e152c94..85fc690 100644
--- a/convert_pm3_to_csv.py
+++ b/convert_pm3_to_csv.py
@@ -26,6 +26,23 @@
 import json
 import clean_spice_files
 
+copyright = [
+    '* Copyright 2020 The Skywater PDK Authors',
+    '*',
+    '* Licensed under the Apache License, Version 2.0 (the "License");',
+    '* you may not use this file except in compliance with the License.',
+    '* You may obtain a copy of the License at',
+    '*',
+    '*     https://www.apache.org/licenses/LICENSE-2.0',
+    '*',
+    '* Unless required by applicable law or agreed to in writing, software',
+    '* distributed under the License is distributed on an "AS IS" BASIS,',
+    '* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.',
+    '* See the License for the specific language governing permissions and',
+    '* limitations under the License.',
+    ''
+]
+
 sourcetodests = defaultdict(list)
 
 RE_SUBCKT = re.compile(r'\.subckt\s+(?P<subcktname>[^ ]+)\s?(?P<nodenames>.*)')
@@ -35,28 +52,37 @@
 # RE_SUBCKT_END = re.compile(r'^.ends')
 RE_GROUP = re.compile(r'[*\s]*?(?P<group>[^*\n]+?)[*\s]*(\n|$)')
 RE_MODE_LINE = re.compile(r'(?P<modeid>\d+)\s*:\s*type=\s*(?P<modetype>.*)(\n|$)')
-RE_INLINE_SUBCKT_MODEL = re.compile(r'^(?P<subcktname>[^ ]+)\s*\((?P<nodenames>.*)\)\s*(?P<modelname>[^ ]+)\s*(?P<parameters>.*)($|\n)')
+RE_INLINE_SUBCKT_MODEL = re.compile(r'^(?P<modelname>[^ ]+)\s*\((?P<nodenames>.*)\)\s*(?P<subcktname>[^ ]+)\s*(?P<parameters>.*)($|\n)')
 
 RE_MODEL = re.compile(r'[\.]?model')
 
 def order_parameters(paramname):
     priority = {
-        'subckt': 0,
-        'inlinesubckt': 1,
-        'nodes': 2,
-        'model': 3,
-        'type': 4,
-        'mode': 5,
-        'modetype': 6,
-        'lmin': 7,
-        'lmax': 8,
-        'wmin': 9,
-        'wmax': 10,
-        'level': 11,
-        'tnom': 12,
-        'version': 13,
-        'tox': 14,
-        'toxm': 15,
+        'subckt$subckt': 0,
+        'subckt$inlinesubckt': 1,
+        'subckt$nodes': 2,
+        'model$model': 3,
+        'model$type': 4,
+        'mode$mode': 5,
+        'mode$modetype': 6,
+        'model$lmin': 7,
+        'model$lmax': 8,
+        'model$wmin': 9,
+        'model$wmax': 10,
+        'model$level': 11,
+        'model$tnom': 12,
+        'model$version': 13,
+        'model$tox': 14,
+        'model$toxm': 15,
+        'mode$lmin': 7,
+        'mode$lmax': 8,
+        'mode$wmin': 9,
+        'mode$wmax': 10,
+        'mode$level': 11,
+        'mode$tnom': 12,
+        'mode$version': 13,
+        'mode$tox': 14,
+        'mode$toxm': 15,
     }
     if paramname in priority:
         return (priority[paramname], paramname)
@@ -71,48 +97,34 @@
     # subckt nodes
     # subckt nodes model type
     result = []
-    if parameters[0] == 'model':
+    if parameters[0] == 'model$model':
+        assert all(['model$' in parameter for parameter in parameters]), parameters
         for entry in csventry:
             assert 'N/A' not in entry[:2], entry
             result.append(f'.model {entry[0]} {entry[1]}')
             for parameter, value in zip(parameters[2:], entry[2:]):
                 if value != 'N/A':
-                    result.append(f'+{parameter}= {value}')
-    elif parameters[0] == 'subckt':
-        lastsubckt = None
-        firstsubckt = True
-        for entry in csventry:
-            assert 'N/A' not in entry[:2], entry
-            if lastsubckt != entry[0]:
-                if not firstsubckt:
-                    result.append('.ends')
-                firstsubckt = False
-                result.append(f'.subckt {entry[0]} {" ".join(entry[1].split(","))}')
-                lastsubckt = entry[0]
-            startpoint = 2
-            if entry[2] == 'model':
-                assert 'N/A' not in entry[2:4], entry
-                result.append(f'.model {entry[2]} {entry[3]}')
-                startpoint = 4
-            for parameter, value in zip(parameters[startpoint:], entry[startpoint:]):
-                if value != 'N/A':
-                    result.append(f'+{parameter}= {value}')
-        if not firstsubckt:
-            result.append('.ends')
-    elif parameters[0] == 'inlinesubckt':
+                    result.append(f'+{parameter.split("$")[1]}= {value}')
+    elif 'mode$mode' in parameters:
         lastsubcktdef = None
         lastmodel = None
         firstsubcktdef = True
         firstmodel = True
         for entry in csventry:
             assert 'N/A' not in entry[:4], entry
-            if not entry[0].endswith('_dummy') and entry[0] != lastsubcktdef:
+            if entry[0] != lastsubcktdef:
                 if not firstsubcktdef:
                     result.append(f'ends {lastsubcktdef}')
                 lastsubcktdef = entry[0]
                 firstsubcktdef = False
-                result.append(f'inline subckt {entry[0]} ({" ".join(entry[1].split(","))})')
-            if 'mode' in set(parameters):
+                if 'subckt$inlinesubckt' in parameters:
+                    result.append(f'inline subckt {entry[0]} ({" ".join(entry[1].split(","))})')
+                else:
+                    result.append(f'.subckt {entry[0]} {" ".join(entry[1].split(","))}')
+                for parameter, value in zip(parameters[2:], entry[2:]):
+                    if value != 'N/A' and parameter.split("$")[0] == 'subckt':
+                        result.append(f'+{parameter.split("$")[1]}= {value}')
+            if 'mode$mode' in set(parameters):
                 if entry[2] != lastmodel:
                     if not firstmodel:
                         result.append('}')
@@ -121,16 +133,44 @@
                     lastmodel = entry[2]
                 result.append(f'{entry[4]}: type={entry[5]}')
                 for parameter, value in zip(parameters[6:], entry[6:]):
-                    result.append(f'+{parameter}= {value}')
-            else:
-                result.append(f'{entry[0]} ({" ".join(entry[1].split(","))}) {entry[2]}')
-                for parameter, value in zip(parameters[3:], entry[3:]):
-                    if value != 'N/A':
-                        result.append(f'+{parameter}= {value}')
+                    if value != 'N/A' and parameter.split("$")[0] == 'mode':
+                        result.append(f'+{parameter.split("$")[1]}= {value}')
         if not firstmodel:
             result.append('}')
         if not firstsubcktdef:
             result.append(f'ends {lastsubcktdef}')
+    elif parameters[0] in ['subckt$subckt', 'subckt$inlinesubckt']:
+        lastsubckt = None
+        firstsubckt = True
+        assert not any(['mode$' in parameter for parameter in parameters]), entry
+        for entry in csventry:
+            assert 'N/A' not in entry[:2], entry
+            if lastsubckt != entry[0]:
+                if not firstsubckt:
+                    result.append('.ends')
+                firstsubckt = False
+                if parameters[0] == 'subckt$subckt':
+                    result.append(f'.subckt {entry[0]} {" ".join(entry[1].split(","))}')
+                else:
+                    result.append(f'inline subckt {entry[0]} ({" ".join(entry[1].split(","))})')
+                lastsubckt = entry[0]
+            startpoint = 2
+            for parameter, value in zip(parameters[startpoint:], entry[startpoint:]):
+                if value != 'N/A' and parameter.split('$')[0] == 'subckt':
+                    result.append(f'+{parameter.split("$")[1]}= {value}')
+            if parameters[2] == 'model$model' and 'N/A' not in entry[2:4]:
+                assert 'N/A' not in entry[2:4], (parameters, entry)
+                if parameters[0] == 'subckt$subckt':
+                    result.append(f'.model {entry[2]} {entry[3]}')
+                else:
+                    result.append(f'{entry[2]} ({" ".join(entry[1].split(","))})')
+                startpoint = 4
+                for parameter, value in zip(parameters[startpoint:], entry[startpoint:]):
+                    if value != 'N/A' and parameter.split('$')[0] == 'model':
+                        result.append(f'+{parameter.split("$")[1]}= {value}')
+        if not firstsubckt:
+            result.append('.ends')
+    # elif parameters[0] == 'subckt$inlinesubckt':
     result = clean_spice_files.basic_cleaning(result)
     result = clean_spice_files.makefixedwidthcolumn(result)
     return result
@@ -143,6 +183,7 @@
     params['mode'] = {}
     scopetype = None
     leftovers = []
+    parameterbag = {}
     def produce_line():
         finparams = {}
         finparams.update(params['subckt'])
@@ -155,21 +196,31 @@
         try:
             if not line.strip():
                 continue
+            if line.strip().startswith('*'):
+                continue
+            line = re.sub(r'\$.*$', '', line)
             origline = line
             line = line.strip()
             elements = shlex.split(line, posix=False)
-            if line.startswith('*'):
-                continue
             m = RE_MODE_LINE.match(line)
             if m:
                 if scopetype == 'mode':
                     produce_line()
                 params['mode'] = {}
-                params['mode']['mode'] = m.group('modeid')
-                params['mode']['modetype'] = m.group('modetype')
+                params['mode']['mode$mode'] = m.group('modeid')
+                params['mode']['mode$modetype'] = m.group('modetype')
                 scopetype = 'mode'
                 continue
             ind = 0
+            if line.startswith('parameters'):
+                l = re.sub('\s+', ' ', line)
+                prs = l.split(' ')[1:]
+                assert len(prs) % 2 == 0
+                ind = 0
+                while ind < len(prs):
+                    parameterbag[prs[ind].split('=')[0]] = prs[ind+1]
+                    ind += 2
+                continue
             def parse_parameters():
                 if scopetype is None:
                     return
@@ -183,16 +234,32 @@
                             print(colored(line, 'magenta'), file=sys.stderr)
                             ind += 2
                             continue
-                        params[scopetype][elements[ind][:-1]] = elements[ind+1]
-                        prevkey = elements[ind][:-1]
+                        key = elements[ind][:-1]
+                        val = elements[ind+1]
+                        for paramnam, paramval in parameterbag.items():
+                            val = val.replace(paramnam, paramval)
+                        params[scopetype][f'{scopetype}${key}'] = val
+                        prevkey = key
                         ind += 2
+                        if ind + 1 < len(elements) and 'dev/gauss' in elements[ind]:
+                            val = elements[ind+1]
+                            for paramnam, paramval in parameterbag.items():
+                                val = val.replace(paramnam, paramval)
+                            params[scopetype][f'{scopetype}${key}'] = ' '.join([params[scopetype][f'{scopetype}${key}'], elements[ind], val])
+                            ind += 2
                     elif '=' in elements[ind]:
                         res = elements[ind].split('=')
-                        params[scopetype][res[0]] = res[1]
+                        val = res[1]
+                        for paramnam, paramval in parameterbag.items():
+                            val = val.replace(paramnam, paramval)
+                        params[scopetype][f'{scopetype}${res[0]}'] = val
                         prevkey = res[0]
                         ind += 1
                     elif prevkey is not None:
-                        params[scopetype][prevkey] += elements[ind]
+                        val = elements[ind]
+                        for paramnam, paramval in parameterbag.items():
+                            val = val.replace(paramnam, paramval)
+                        params[scopetype][f'{scopetype}${prevkey}'] += elements[ind]
                         ind += 1
                     else:
                         print(colored(line, 'cyan'), file=sys.stderr)
@@ -202,7 +269,7 @@
                 params['subckt'] = {}
                 params['model'] = {}
                 params['mode'] = {}
-                params['subckt']['subckt'] = elements[1]
+                params['subckt']['subckt$subckt'] = elements[1]
                 nodelist = []
                 ind = 2
                 for element in elements[2:]:
@@ -212,7 +279,7 @@
                     element = element.replace(')', '')
                     nodelist.append(element)
                     ind += 1
-                params['subckt']['nodes'] = ','.join(nodelist)
+                params['subckt']['subckt$nodes'] = ','.join(nodelist)
                 scopetype = 'subckt'
                 elements = elements[ind:]
                 parse_parameters()
@@ -221,8 +288,8 @@
                     produce_line()
                 params['model'] = {}
                 params['mode'] = {}
-                params['model']['model'] = elements[1]
-                params['model']['type'] = elements[2]
+                params['model']['model$model'] = elements[1]
+                params['model']['model$type'] = elements[2]
                 scopetype = 'model'
                 if len(elements) >=4 and elements[3] == '{':
                     continue
@@ -242,15 +309,35 @@
                     params['subckt'] = {}
                     params['model'] = {}
                     params['mode'] = {}
-                    scopetype = 'subckt'
-                    params['subckt']['inlinesubckt'] = m.group('subcktname')
-                    params['subckt']['nodes'] = ','.join(m.group('nodenames').split(' '))
-                    params['model']['model'] = m.group('modelname')
-                    params['model']['type'] = params['subckt']['inlinesubckt']
+                    scopetype = 'model'
+                    params['subckt']['subckt$inlinesubckt'] = m.group('subcktname')
+                    params['subckt']['subckt$nodes'] = ','.join(m.group('nodenames').split(' '))
+                    params['model']['model$model'] = m.group('modelname')
+                    params['model']['model$type'] = params['subckt']['subckt$inlinesubckt']
                     elements = m.group('parameters').split()
                     parse_parameters()
+                elif ('subckt$subckt' in params['subckt'] and params['subckt']['subckt$subckt'] in elements) or ('model$model' in params['model'] and params['model']['model$model'].split('.')[0] in elements):
+                    typend = params['subckt']['subckt$subckt'] if params['subckt']['subckt$subckt'] in elements else params['model']['model$model'].split('.')[0]
+                    typ = params['subckt']['subckt$subckt'] if params['subckt']['subckt$subckt'] in elements else params['model']['model$type']
+                    if scopetype != 'subckt':
+                        produce_line()
+                    params['model'] = {}
+                    params['mode'] = {}
+                    params['model']['model$model'] = elements[0]
+                    scopetype = 'model'
+                    ind = 1
+                    nodes = []
+                    for el in elements[1:]:
+                        if el == typend:
+                            break
+                        nodes.append(el)
+                        ind += 1
+                    params['subckt']['subckt$nodes'] = ','.join(nodes)
+                    params['model']['model$type'] = elements[ind]
+                    elements = elements[ind+1:]
+                    parse_parameters()
                 else:
-                    if not line.strip().startswith('ends') and not line.strip().startswith('inline subckt'):
+                    if 'ends' not in line.strip() and not line.strip().startswith('inline subckt'):
                         if scopetype is None or not line.strip() in ['{', '}']:
                             leftovers.append(origline.rstrip())
                             print(colored(line, 'yellow'), file=sys.stderr)
@@ -330,9 +417,9 @@
                 binnedspice = csv_to_pm3(result[0], result[1:])
                 csv2bsimname = filename.with_suffix(f'.csv2bsim{filename.suffix}')
                 with open(csv2bsimname, 'w') as csv2bsimfile:
-                    csv2bsimfile.write('\n'.join(binnedspice))
+                    csv2bsimfile.write('\n'.join(copyright + binnedspice))
                 with open(filename.with_suffix(f'.csvwrap{filename.suffix}'), 'w') as csvwrapfile:
                     leftovers.append(f'.include "{Path(csv2bsimname).name}"')
-                    csvwrapfile.write('\n'.join(leftovers))
+                    csvwrapfile.write('\n'.join(copyright + leftovers))
     with open(args.sourcetodests, 'w') as srctodst:
         json.dump(sourcetodests, srctodst, indent=2)
diff --git a/test-pm3-to-csv/test1.csv b/test-pm3-to-csv/test1.csv
deleted file mode 100644
index b33a3a9..0000000
--- a/test-pm3-to-csv/test1.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-model;type;lmin;lmax;wmin;wmax;level;tnom;dev/gauss;toxe
-name;nmos;1.5;1.0e-04;'a + b';100.56;100.0;15.0;'1.16e-08*(nhv_toxe_slope/sqrt(E(*,1)*E(*,w)*E(*,m)))';1.16e-08
diff --git a/test-pm3-to-csv/test1.table b/test-pm3-to-csv/test1.table
deleted file mode 100644
index 81922ac..0000000
--- a/test-pm3-to-csv/test1.table
+++ /dev/null
@@ -1,2 +0,0 @@
- model  type  lmin  lmax     wmin     wmax    level  tnom  dev/gauss                                               toxe     
- name   nmos  1.5   1.0e-04  'a + b'  100.56  100.0  15.0  '1.16e-08*(nhv_toxe_slope/sqrt(E(*,1)*E(*,w)*E(*,m)))'  1.16e-08 
\ No newline at end of file
diff --git a/test-pm3-to-csv/test2.csv b/test-pm3-to-csv/test2.csv
deleted file mode 100644
index 756512f..0000000
--- a/test-pm3-to-csv/test2.csv
+++ /dev/null
@@ -1,3 +0,0 @@
-model;type;lmin;lmax;wmin;wmax;level;tnom;dev/gauss;toxe
-name1;nmos;1.5;1.0e-04;'a + b';100.56;100.0;15.0;'1.16e-08*(nhv_toxe_slope/sqrt(E(*,1)*E(*,w)*E(*,m)))';1.16e-08
-name2;pmos;N/A;N/A;N/A;N/A;N/A;N/A;N/A;N/A
diff --git a/test-pm3-to-csv/test2.pm3 b/test-pm3-to-csv/test2.pm3
index 1555e7c..f1990b5 100644
--- a/test-pm3-to-csv/test2.pm3
+++ b/test-pm3-to-csv/test2.pm3
@@ -2,7 +2,7 @@
 
 +lmin= 1.5 lmax= 1.0e-04 wmin= 'a + b' wmax= 100.56
 
-+level=   100.0
++level=   100.0 $ this is level testing= 15
 +tnom=    15.0
 +toxe= 1.16e-08 dev/gauss= '1.16e-08*(nhv_toxe_slope/sqrt(E(*,1)*E(*,w)*E(*,m)))'
 
diff --git a/test-pm3-to-csv/test2.table b/test-pm3-to-csv/test2.table
deleted file mode 100644
index 4941cd9..0000000
--- a/test-pm3-to-csv/test2.table
+++ /dev/null
@@ -1,3 +0,0 @@
- model  type  lmin  lmax     wmin     wmax    level  tnom  dev/gauss                                               toxe     
- name1  nmos  1.5   1.0e-04  'a + b'  100.56  100.0  15.0  '1.16e-08*(nhv_toxe_slope/sqrt(E(*,1)*E(*,w)*E(*,m)))'  1.16e-08 
- name2  pmos  N/A   N/A      N/A      N/A     N/A    N/A   N/A                                                     N/A      
\ No newline at end of file
diff --git a/test-pm3-to-csv/test3.csv b/test-pm3-to-csv/test3.csv
deleted file mode 100644
index b9601a2..0000000
--- a/test-pm3-to-csv/test3.csv
+++ /dev/null
@@ -1,3 +0,0 @@
-model;type;lmin;lmax;wmin;wmax;level;tnom;dev/gauss;toxe
-name;nmos;1.5;1.0e-04;'a + b';100.56;100.0;15.0;'1.16e-08*(nhv_toxe_slope/sqrt(E(*,1)*E(*,w)*E(*,m)))';1.16e-08
-name;pmos;N/A;N/A;N/A;N/A;50.0;N/A;N/A;N/A
diff --git a/test-pm3-to-csv/test3.table b/test-pm3-to-csv/test3.table
deleted file mode 100644
index f6a0d03..0000000
--- a/test-pm3-to-csv/test3.table
+++ /dev/null
@@ -1,3 +0,0 @@
- model  type  lmin  lmax     wmin     wmax    level  tnom  dev/gauss                                               toxe     
- name   nmos  1.5   1.0e-04  'a + b'  100.56  100.0  15.0  '1.16e-08*(nhv_toxe_slope/sqrt(E(*,1)*E(*,w)*E(*,m)))'  1.16e-08 
- name   pmos  N/A   N/A      N/A      N/A     50.0   N/A   N/A                                                     N/A      
\ No newline at end of file
diff --git a/test-pm3-to-csv/test4.csv b/test-pm3-to-csv/test4.csv
deleted file mode 100644
index 1b5a72d..0000000
--- a/test-pm3-to-csv/test4.csv
+++ /dev/null
@@ -1,6 +0,0 @@
-subckt;nodes;model;type;mode;modetype;lmin;lmax;wmin;wmax;level;tnom;version;dev/gauss;global1;global2;global3;lln;toxe
-nhv;a b c d efgh;name1;bsim4;0;p;1.5;1.0e-04;'a + b';100.56;100.0;15.0;4.5;'1.16e-08*(nhv_toxe_slope/sqrt(E(*,1)*E(*,w)*E(*,m)))';5;7;8;1.0;1.16e-08
-nhv;a b c d efgh;name1;bsim4;1;n;2.5;3.0e-07;1;100.56;10.0;5.0;1.5;N/A;5;7;8;6.0;N/A
-nhv;a b c d efgh;name2;bsim3;0;p;1.5;1.0e-04;'a + b';100.56;100.0;15.0;4.5;N/A;5;7;8;1.0;1.16e-08
-nhv;a b c d efgh;name2;bsim3;1;n;2.5;3.0e-07;1;100.56;10.0;5.0;1.5;N/A;5;7;8;6.0;N/A
-nhv;a b c d efgh;name2;bsim3;5;n;2.5;3.0e-07;1;100.56;N/A;5.0;1.5;N/A;5;7;8;6.0;N/A
diff --git a/test-pm3-to-csv/test4.table b/test-pm3-to-csv/test4.table
deleted file mode 100644
index cb2cf29..0000000
--- a/test-pm3-to-csv/test4.table
+++ /dev/null
@@ -1,6 +0,0 @@
- subckt  nodes         model  type   mode  modetype  lmin  lmax     wmin     wmax    level  tnom  version  dev/gauss                                               global1  global2  global3  lln  toxe     
- nhv     a b c d efgh  name1  bsim4  0     p         1.5   1.0e-04  'a + b'  100.56  100.0  15.0  4.5      '1.16e-08*(nhv_toxe_slope/sqrt(E(*,1)*E(*,w)*E(*,m)))'  5        7        8        1.0  1.16e-08 
- nhv     a b c d efgh  name1  bsim4  1     n         2.5   3.0e-07  1        100.56  10.0   5.0   1.5      N/A                                                     5        7        8        6.0  N/A      
- nhv     a b c d efgh  name2  bsim3  0     p         1.5   1.0e-04  'a + b'  100.56  100.0  15.0  4.5      N/A                                                     5        7        8        1.0  1.16e-08 
- nhv     a b c d efgh  name2  bsim3  1     n         2.5   3.0e-07  1        100.56  10.0   5.0   1.5      N/A                                                     5        7        8        6.0  N/A      
- nhv     a b c d efgh  name2  bsim3  5     n         2.5   3.0e-07  1        100.56  N/A    5.0   1.5      N/A                                                     5        7        8        6.0  N/A      
\ No newline at end of file
diff --git a/test-pm3-to-csv/test5.pm3 b/test-pm3-to-csv/test5.pm3
new file mode 100644
index 0000000..a71c3e0
--- /dev/null
+++ b/test-pm3-to-csv/test5.pm3
@@ -0,0 +1,87 @@
+* Copyright 2020 The Skywater PDK Authors
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     https://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+
+simulator lang=spectre
+
+inline subckt nhvrf_3p50m10_b (d g s b)
+
+parameters mult= 1
+
+nhvrf_3p50m10_b       (d g s b) nhv_rf_base_m10_b w= 3.01 l= 0.50 m= 10 ad= 0.421 pd= 3.29 as= 0.51 ps= 3.948 nrd= 40.44 nrs= 33.70 mult= 10 * mult
+nhvrf_3p50m10_b_dummy (b b s b) nhv_rf_base_m10_b w= 3.01 l= 0.50 m= 2  ad= 0.903 pd= 6.62 as= 0.0  ps= 0.0   nrd= 20.22 nrs= 0.0   mult= 2  * mult
+
+ends nhvrf_3p50m10_b
+
+inline subckt nhvrf_3p50m4_b (d g s b)
+
+parameters mult= 1
+
+nhvrf_3p50m4_b       (d g s b) nhv_rf_base_m4_b w= 3.01 l= 0.50 m= 4 ad= 0.421 pd= 3.29 as= 0.63 ps= 4.935 nrd= 40.44 nrs= 26.96 mult= 4 * mult
+nhvrf_3p50m4_b_dummy (b b s b) nhv_rf_base_m4_b w= 3.01 l= 0.50 m= 2 ad= 0.903 pd= 6.62 as= 0.0  ps= 0.0   nrd= 20.22 nrs= 0.0   mult= 2 * mult
+
+ends nhvrf_3p50m4_b
+
+inline subckt nhvrf_5p50m10_b (d g s b)
+
+parameters mult= 1
+
+nhvrf_5p50m10_b       (d g s b) nhv_rf_base_m10_b_w5 w= 5.05 l= 0.50 m= 10 ad= 0.707 pd= 5.33 as= 0.85 ps= 6.396 nrd= 24.27 nrs= 20.22 mult= 10 * mult
+nhvrf_5p50m10_b_dummy (b b s b) nhv_rf_base_m10_b_w5 w= 5.05 l= 0.50 m= 2  ad= 1.515 pd= 10.7 as= 0.0  ps= 0.0   nrd= 12.13 nrs= 0.0   mult= 2  * mult
+
+ends nhvrf_5p50m10_b
+
+inline subckt nhvrf_5p50m4_b (d g s b)
+
+parameters mult= 1
+
+nhvrf_5p50m4_b       (d g s b) nhv_rf_base_m4_b_w5 w= 5.05 l= 0.50 m= 4 ad= 0.707 pd= 5.33 as= 1.06 ps= 7.995 nrd= 24.267 nrs= 16.178 mult= 4 * mult
+nhvrf_5p50m4_b_dummy (b b s b) nhv_rf_base_m4_b_w5 w= 5.05 l= 0.50 m= 2 ad= 1.515 pd= 10.7 as= 0.0  ps= 0.0   nrd= 12.13  nrs= 0.0    mult= 2 * mult
+
+ends nhvrf_5p50m4_b
+
+inline subckt nhvrf_7p50m10_b (d g s b)
+
+parameters mult= 1
+
+nhvrf_7p50m10_b       (d g s b) nhv_rf_base_m10_b_w7 w= 7.09 l= 0.50 m= 10 ad= 0.993 pd= 7.37  as= 1.19 ps= 8.844 nrd= 17.33 nrs= 14.44 mult= 10 * mult
+nhvrf_7p50m10_b_dummy (b b s b) nhv_rf_base_m10_b_w7 w= 7.09 l= 0.50 m= 2  ad= 2.127 pd= 14.78 as= 0.0  ps= 0.0   nrd= 8.67  nrs= 0.0   mult= 2  * mult
+
+ends nhvrf_7p50m10_b
+
+inline subckt nhvrf_7p50m4_b (d g s b)
+
+parameters mult= 1
+
+nhvrf_7p50m4_b       (d g s b) nhv_rf_base_m4_b_w7 w= 7.09 l= 0.50 m= 4 ad= 0.993 pd= 7.37  as= 1.49 ps= 11.055 nrd= 17.33 nrs= 11.56 mult= 4 * mult
+nhvrf_7p50m4_b_dummy (b b s b) nhv_rf_base_m4_b_w7 w= 7.09 l= 0.50 m= 2 ad= 2.127 pd= 14.78 as= 0.0  ps= 0.0    nrd= 8.67  nrs= 0.0   mult= 2 * mult
+
+ends nhvrf_7p50m4_b
+
+inline subckt nhvrf_5p50m2_b (d g s b)
+
+parameters mult= 1
+
+nhvrf_5p50m2_b       (d g s b) nhv_rf_base_m2_b_w5 w= 5.05 l= 0.50 m= 2 ad= 0.707 pd= 5.33 as= 1.414 ps= 10.66 nrd= 24.267 nrs= 12.133 mult= 2 * mult
+nhvrf_5p50m2_b_dummy (b b s b) nhv_rf_base_m2_b_w5 w= 5.05 l= 0.50 m= 2 ad= 1.515 pd= 10.7 as= 0.0   ps= 0.0   nrd= 12.13  nrs= 0.0    mult= 2 * mult
+
+ends nhvrf_5p50m2_b
+
+inline subckt nhvrf_3p50m2_b (d g s b)
+
+parameters mult= 1
+
+nhvrf_3p50m2_b       (d g s b) nhv_rf_base_m2_b w= 3.01 l= 0.50 m= 2 ad= 0.42  pd= 3.29 as= 0.84 ps= 6.58 nrd= 40.44 nrs= 20.22 mult= 2 * mult
+nhvrf_3p50m2_b_dummy (b b s b) nhv_rf_base_m2_b w= 3.01 l= 0.50 m= 2 ad= 0.903 pd= 6.62 as= 0.0  ps= 0.0  nrd= 20.22 nrs= 0.0   mult= 2 * mult
+
+ends nhvrf_3p50m2_b
