From 93a6247f26b534bd6a97b3b784edc2bd462c8c2f Mon Sep 17 00:00:00 2001 From: Matt Guthaus Date: Wed, 29 Aug 2018 17:21:53 -0700 Subject: [PATCH 1/3] Unrotate vias in delay chain --- compiler/modules/delay_chain.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/modules/delay_chain.py b/compiler/modules/delay_chain.py index ff9878fb..b8a57f15 100644 --- a/compiler/modules/delay_chain.py +++ b/compiler/modules/delay_chain.py @@ -186,7 +186,7 @@ class delay_chain(design.design): continue for pin_name in ["vdd", "gnd"]: pin = load.get_pin(pin_name) - self.add_power_pin(pin_name, pin.rc(),rotate=0) + self.add_power_pin(pin_name, pin.rc()) else: # We have an even number of rows, so need to get the last gnd rail inv = self.driver_inst_list[-1] @@ -195,7 +195,7 @@ class delay_chain(design.design): continue pin_name = "gnd" pin = load.get_pin(pin_name) - self.add_power_pin(pin_name, pin.rc(),rotate=0) + self.add_power_pin(pin_name, pin.rc()) # input is A pin of first inverter From 762f2d894c828f3dc1fef007baa99b81944f21b3 Mon Sep 17 00:00:00 2001 From: Matt Guthaus Date: Wed, 29 Aug 2018 17:23:04 -0700 Subject: [PATCH 2/3] Revert all transFlags in GdsMill --- compiler/gdsMill/gdsMill/vlsiLayout.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/compiler/gdsMill/gdsMill/vlsiLayout.py b/compiler/gdsMill/gdsMill/vlsiLayout.py index dd001948..b9813149 100644 --- a/compiler/gdsMill/gdsMill/vlsiLayout.py +++ b/compiler/gdsMill/gdsMill/vlsiLayout.py @@ -163,7 +163,7 @@ class VlsiLayout: angle = 0 else: # MRG: Added negative to make CCW rotate 8/29/18 - angle = math.radians(-1.0*float(rotateAngle)) + angle = math.radians(float(rotateAngle)) mRotate = matrix([[math.cos(angle),-math.sin(angle),0.0], [math.sin(angle),math.cos(angle),0.0], [0.0,0.0,1.0]]) @@ -314,6 +314,8 @@ class VlsiLayout: layoutToAddSref.coordinates = offsetInLayoutUnits if mirror or rotate: + + layoutToAddSref.transFlags = [0,0,0] # This is NOT the same as the order in the GDS spec! # It gets written out in gds2writer in the right order though. # transFlags = (mirror around x-axis, rotation, magnification) @@ -325,8 +327,6 @@ class VlsiLayout: rotate = 180.0 if mirror=="R270": rotate = 270.0 - - layoutToAddSref.transFlags = [0,0,0] if rotate: #layoutToAddSref.transFlags = [0,1,0] layoutToAddSref.rotateAngle = rotate @@ -337,7 +337,7 @@ class VlsiLayout: layoutToAddSref.transFlags = [1,0,0] layoutToAddSref.rotateAngle = 180.0 if mirror == "xy" or mirror == "XY": #NOTE: "XY" option will override specified rotate angle - layoutToAddSref.transFlags = [0,1,0] + #layoutToAddSref.transFlags = [0,1,0] layoutToAddSref.transFlags = [0,0,0] layoutToAddSref.rotateAngle = 180.0 @@ -405,10 +405,10 @@ class VlsiLayout: if(len(text)%2 == 1): text = text + '\x00' textToAdd.textString = text - textToAdd.transFlags[1] = 1 + textToAdd.transFlags = [0,0,1] textToAdd.magFactor = magnification if rotate: - textToAdd.transFlags[2] = 1 + textToAdd.transFlags = [0,1,1] textToAdd.rotateAngle = rotate #add the sref to the root structure self.structures[self.rootStructureName].texts.append(textToAdd) From 3ab0b569cb55b076770491e04e994bb3d4b3b039 Mon Sep 17 00:00:00 2001 From: Matt Guthaus Date: Thu, 30 Aug 2018 14:20:41 -0700 Subject: [PATCH 3/3] Use a .magicrc in the technology directory to read magic tech files --- README.md | 8 -------- compiler/verify/magic.py | 9 +++++---- technology/scn3me_subm/mag_lib/.magicrc | 2 ++ 3 files changed, 7 insertions(+), 12 deletions(-) create mode 100644 technology/scn3me_subm/mag_lib/.magicrc diff --git a/README.md b/README.md index 49700434..e7e05e5f 100644 --- a/README.md +++ b/README.md @@ -92,14 +92,6 @@ To specify a particular technology use "-t " such as "-t scn3me_subm". The default for a unit test is freepdk45 whereas the default for openram.py is specified in the configuration file. -A regression daemon script that can be used with cron is included in -a separate repository at https://github.com/mguthaus/openram-daemons -``` - regress_daemon.py - regress_daemon.sh -``` -This updates a git repository, checks out code, and sends an email -report with status information. # CREATING CUSTOM TECHNOLOGIES diff --git a/compiler/verify/magic.py b/compiler/verify/magic.py index 63e8bdec..a07785d3 100644 --- a/compiler/verify/magic.py +++ b/compiler/verify/magic.py @@ -16,6 +16,7 @@ and include its appropriate license. import os import re import time +import shutil import debug from globals import OPTS import subprocess @@ -34,10 +35,6 @@ def write_magic_script(cell_name, gds_name, extract=False): f = open(run_file, "w") f.write("#!/bin/sh\n") f.write("{} -dnull -noconsole << EOF\n".format(OPTS.drc_exe[1])) - f.write("path sys +{}/tech\n".format(OPTS.openram_tech)) - f.write("tech load SCN3ME_SUBM.30\n") - #gf.write("scalegrid 1 8\n") - #f.write("gds rescale no\n") f.write("gds polygon subcell true\n") f.write("gds warning default\n") f.write("gds read {}\n".format(gds_name)) @@ -119,6 +116,10 @@ def run_drc(cell_name, gds_name, extract=False): global num_drc_runs num_drc_runs += 1 + # Copy .magicrc file into temp dir + shutil.copy(OPTS.openram_tech + "/mag_lib/.magicrc", + OPTS.openram_temp) + write_magic_script(cell_name, gds_name, extract) # run drc diff --git a/technology/scn3me_subm/mag_lib/.magicrc b/technology/scn3me_subm/mag_lib/.magicrc new file mode 100644 index 00000000..d6068ec3 --- /dev/null +++ b/technology/scn3me_subm/mag_lib/.magicrc @@ -0,0 +1,2 @@ +path sys +$::env(OPENRAM_TECH)/scn3me_subm/tech +tech load SCN3ME_SUBM.30