Skip to content

Commit 6767dc1

Browse files
committed
Merge branch 'dev' of https://github.com/mabrains/IHP-Open-PDK into devices_ngspice_testing
2 parents eb96241 + 92974fb commit 6767dc1

40 files changed

+685
-93
lines changed

README.md

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ release was derived have been used to create many designs that have been
2727
successfully manufactured in significant quantities, the open source PDK
2828
is not intended to be used for production at this moment.
2929

30+
# Documentation
31+
32+
Comprehensive documentation for the IHP Open Source PDK is available on [ReadTheDocs](https://ihp-open-pdk.readthedocs.io/en/latest/).
33+
34+
The documentation provides detailed information on PDK installation, setup for supported EDA tools, device libraries, layout rules, process specifications and design flow examples. It is the recommended starting point for users who want to explore the PDK structure, simulation models, layout design environments, etc.
35+
3036
# SG13G2 Process Node
3137

3238
SG13G2 is a high performance BiCMOS technology with a 0.13 μm CMOS process. It contains bipolar
@@ -62,10 +68,15 @@ backend option offers 5 thin metal layers, two thick metal layers (2 and 3 μm t
6268
* GDSII
6369
* KLayout tool data:
6470
* layer property and tech files
65-
* DRC rules (minimal/maximal set)
71+
* DRC rules
6672
* LVS rules
67-
* PyCells (1st priority)
73+
* PyCells
6874
* XSection initial settings
75+
* 2.5D viewer configuration
76+
* Magic tool data:
77+
* tech files, parasitic extraction rules
78+
* DRC rules
79+
* LVS rules
6980
* MOS/HBT/Passive device models for ngspice/Xyce
7081
* xschem: primitive device symbols, settings and testbenches
7182
* Qucs-S: primitive device symbols, settings and testbenches
@@ -91,12 +102,17 @@ backend option offers 5 thin metal layers, two thick metal layers (2 and 3 μm t
91102
* KLayout
92103
* Download: https://www.klayout.de/build.html
93104
* Source: https://github.com/KLayout/klayout
105+
* Magic
106+
* Download: http://opencircuitdesign.com/magic/download.html
107+
* Source: https://github.com/RTimothyEdwards/magic
94108
* OpenEMS
95109
* Source: https://github.com/thliebig/openEMS-Project
96110
* OpenROAD
97111
* Source: https://github.com/The-OpenROAD-Project/OpenROAD
98112
* OpenROAD-flow-scripts
99113
* Source: https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts
114+
* LibreLane
115+
* Source: https://github.com/librelane/librelane
100116

101117
## Tool versions (tested with)
102118
[versions.txt](versions.txt)

ihp-sg13g2/libs.ref/sg13g2_stdcell/lef/sg13g2_tech.lef

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ Via Via1_s DEFAULT
425425
RECT -0.19 -0.19 0.19 0.19 ;
426426
END Via1_s
427427

428-
####### Definitions of Via1 duoble cut ########
428+
####### Definitions of Via1 double cut ########
429429

430430
Via Via1_DC1B DEFAULT
431431
RESISTANCE 20.0 ;
@@ -616,7 +616,7 @@ Via Via2_s DEFAULT
616616
RECT -0.19 -0.19 0.19 0.19 ;
617617
END Via2_s
618618

619-
####### Definitions of Via2 duoble cut ##############
619+
####### Definitions of Via2 double cut ##############
620620

621621
Via Via2_DC1B DEFAULT
622622
RESISTANCE 20.0 ;
@@ -807,7 +807,7 @@ Via Via3_s DEFAULT
807807
RECT -0.19 -0.19 0.19 0.19 ;
808808
END Via3_s
809809

810-
####### Definitions of Via3 duoble cut ##############
810+
####### Definitions of Via3 double cut ##############
811811

812812
Via Via3_DC1B DEFAULT
813813
RESISTANCE 20.0 ;
@@ -998,7 +998,7 @@ Via Via4_s DEFAULT
998998
RECT -0.19 -0.19 0.19 0.19 ;
999999
END Via4_s
10001000

1001-
####### Definitions of Via4 duoble cut ##############
1001+
####### Definitions of Via4 double cut ##############
10021002

10031003
Via Via4_DC1B DEFAULT
10041004
RESISTANCE 20.0 ;

ihp-sg13g2/libs.tech/klayout/python/sg13g2_pycell_lib/ihp/rhigh_code.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ def genLayout(self):
476476
# create virtuel l for CbResCalc
477477
lcalc = (l*stripes+contactpush*2+lcor)/stripes
478478
resistance = CbResCalc('R', 0, lcalc*1e-6, w*1e-6, b, ps*1e-6, Cell)
479-
labeltext = 'rpnd r={0:.3f}'.format(resistance)
479+
labeltext = 'rhigh r={0:.3f}'.format(resistance)
480480
labelpos = Point(w/2, l/2)
481481
labelheight = 0.1
482482
if w > l :

ihp-sg13g2/libs.tech/klayout/tech/drc/rule_decks/5_14_cont.drc

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,17 @@ if FEOL
4343
# Rule Cnt.c: Min. Activ enclosure of Cont is 0.07 um
4444
logger.info('Executing rule Cnt.c')
4545
cnt_c_value = drc_rules['Cnt_c'].to_f
46-
cnt_c_l = cont_sq.enclosed(activ_drw, cnt_c_value.um, euclidian)
46+
cnt_c_l = cont_sq.not(digibnd_drw).enclosed(activ_drw, cnt_c_value.um, euclidian)
4747
cnt_c_l.output('Cnt.c', "5.14. Cnt.c Min. Activ enclosure of Cont is #{cnt_c_value} um")
4848
cnt_c_l.forget
4949

50+
# Rule Cnt.c: Min. Activ enclosure of Cont (Inside DigiBnd) is 0.05 um
51+
logger.info('Executing rule Cnt.c')
52+
cnt_c_digibnd_value = drc_rules['Cnt_c_digibnd'].to_f
53+
cnt_c_l = cont_sq.and(digibnd_drw).enclosed(activ_drw, cnt_c_digibnd_value.um, euclidian)
54+
cnt_c_l.output('Cnt.c.digibnd', "8.1.2. Cnt.c.digibnd Min. Activ enclosure of Cont (Inside DigiBnd) is #{cnt_c_digibnd_value} um")
55+
cnt_c_l.forget
56+
5057
# Rule Cnt.d: Min. GatPoly enclosure of Cont is 0.07 um
5158
logger.info('Executing rule Cnt.d')
5259
cnt_d_value = drc_rules['Cnt_d'].to_f

ihp-sg13g2/libs.tech/klayout/tech/drc/rule_decks/main.drc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ pwell = pwell_allowed.not(nwell_drw).not(digisub_gap)
223223
# nBulay
224224
nbulay_tables = %w[main nbulay nwell activfiller schottkydiode]
225225
if nbulay_tables.include?(TABLE_NAME)
226-
nbulay_gen_sized = nwell_drw.sized(-1.5.um).sized(0.5.um)
226+
nbulay_gen_sized = nwell_drw.sized(-1.495.um).sized(0.495.um)
227227
nbuLay_gen = nbulay_gen_sized.not(nbulay_block.join(res_drw))
228228
nbuLay_gen_nbulay = nbuLay_gen.join(nbulay_drw)
229229
end

ihp-sg13g2/libs.tech/klayout/tech/drc/rule_decks/sg13g2_tech_default.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@
130130
"Cnt_b1": 0.2,
131131
"Cnt_b1_nr": 4,
132132
"Cnt_c": 0.07,
133+
"Cnt_c_digibnd": 0.05,
133134
"Cnt_d": 0.07,
134135
"Cnt_e": 0.14,
135136
"Cnt_f": 0.11,

ihp-sg13g2/libs.tech/klayout/tech/drc/testing/gen_golden.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,7 @@ def run_test_case(
483483
f"--run_dir={output_loc} "
484484
f"--run_mode=flat "
485485
f"--no_density "
486+
f"--disable_extra_rules "
486487
f"> {pattern_log} 2>&1"
487488
)
488489

-522 Bytes
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)