Include specify blocks in cell libraries
diff --git a/sky130/custom/scripts/fix_verilog.py b/sky130/custom/scripts/fix_verilog.py index 90162f0..b5dc469 100755 --- a/sky130/custom/scripts/fix_verilog.py +++ b/sky130/custom/scripts/fix_verilog.py
@@ -23,11 +23,6 @@ print('fix_verilog.py: failed to open ' + inname + ' for reading.', file=sys.stderr) return 1 - # Check if input file is a base cell or strength-specific cell, and - # check if it has a "specify" block file. To enable this, change - # dospecify from False to True. - dospecify = False - # Process input with regexp fixedlines = []
diff --git a/sky130/custom/scripts/inc_verilog.py b/sky130/custom/scripts/inc_verilog.py index 1dd663c..4af3281 100755 --- a/sky130/custom/scripts/inc_verilog.py +++ b/sky130/custom/scripts/inc_verilog.py
@@ -28,7 +28,7 @@ # Check if input file is a base cell or strength-specific cell, and # check if it has a "specify" block file. To enable this, change # dospecify from False to True. - dospecify = False + dospecify = True # Process input with regexp @@ -89,7 +89,39 @@ v3text = ispec.read() v3lines = v3text.splitlines() for line3 in v3lines: + + # Fix issues in specify files + line3 = line3.replace('RESETB_delayed', 'RESET_B_delayed') + line3 = line3.replace('GATEN_delayed', 'GATE_N_delayed') + line3 = line3.replace('AWAKE', 'awake') + line3 = line3.replace('COND0', 'cond0') + line3 = line3.replace('COND1', 'cond1') + line3 = line3.replace('COND2', 'cond2') + line3 = line3.replace('COND3', 'cond3') + line3 = line3.replace('COND4', 'cond4') fixedlines.append(line3) + + # Fix issues in included files + if ' wire 1 ;' in line2: + continue + + line2 = line2.replace('\tB2', ' ') + line2 = line2.replace('\tCIN', ' ') + line2 = line2.replace('\tcsi_opt_276,', ' ') + line2 = line2.replace('\tB1', ' ') + line2 = line2.replace('\tA4', ' ') + line2 = line2.replace('\tC1', ' ') + line2 = line2.replace('\tX', ' ') + line2 = line2.replace('\tD', ' ') + line2 = line2.replace('\tbuf_Q', ' ') + line2 = line2.replace('\tgate', ' ') + line2 = line2.replace('\tcsi_opt_296,', ' ') + line2 = line2.replace('\tY', ' ') + + line2 = line2.replace(' wire N not0_out ;', ' wire not0_out ;') + line2 = line2.replace(' wire N nor0_out ;', ' wire nor0_out ;') + line2 = line2.replace(' wire N nand0_out ;', ' wire nand0_out ;') + fixedlines.append(line2) else: # single-dot: Ignore this line