Change to yesterday's commit to move the specify section from the
strength-specific cell to the base cell, since the signal names in
the specify section match those in the base cell.
diff --git a/VERSION b/VERSION
index e5a4b3e..cba437c 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.226
+1.0.227
diff --git a/sky130/custom/scripts/inc_verilog.py b/sky130/custom/scripts/inc_verilog.py
index 63f4595..2e8c350 100755
--- a/sky130/custom/scripts/inc_verilog.py
+++ b/sky130/custom/scripts/inc_verilog.py
@@ -25,18 +25,10 @@
print('inc_verilog.py: failed to open ' + fnmIn + ' 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 "False" to "True".
- specfile = None
- if False:
- strrex = re.compile('(.+)_[0-9]+.v')
- smatch = strrex.match(inname)
- if smatch:
- basename = smatch.group(1)
- specname = basename + '.specify.v'
- if os.path.exists(specname):
- print('Specfile ' + specname + ' found for cell ' + inname)
- specfile = specname
+ # 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
@@ -49,6 +41,7 @@
inpath = os.path.split(inname)[0]
for line in vlines:
+ isbehav = False
# Check includes
imatch = increx.match(line)
@@ -73,29 +66,36 @@
incfilename = '.'.join(ilist)
print(' New filename is: ' + incfilename)
+ # If adding specify blocks, check if the include file is a
+ # behavioral base cell.
+ if dospecify:
+ if '.behavioral.' in incfilename:
+ specname = incfilename.split('.')[0] + '.specify.v'
+ if os.path.exists(inpath + '/' + specname):
+ print('Specfile ' + specname + ' found for cell ' + incfilename)
+ isbehav = True
+
with open(inpath + '/' + incfilename, 'r') as incfile:
v2text = incfile.read()
v2lines = v2text.splitlines()
for line2 in v2lines:
i2match = increx.match(line2)
if not i2match:
+ # Experimental: Put back "specify" block.
+ if isbehav:
+ ematch = endrex.match(line2)
+ if ematch:
+ with open(inpath + '/' + specname, 'r') as ispec:
+ v3text = ispec.read()
+ v3lines = v3text.splitlines()
+ for line3 in v3lines:
+ fixedlines.append(line3)
fixedlines.append(line2)
else:
# single-dot: Ignore this line
pass
modified = True
else:
- # Experimental: Put back "specify" block.
- if specfile:
- ematch = endrex.match(line)
- if ematch:
- fixedlines.append('`ifndef FUNCTIONAL')
- with open(specfile, 'r') as ispec:
- v3text = ispec.read()
- v3lines = v3text.splitlines()
- for line3 in v3lines:
- fixedlines.append(line3)
- fixedlines.append('`endif')
fixedlines.append(line)
# Write output