Merge branch 'dev' into multiport

This commit is contained in:
Matt Guthaus 2018-08-31 12:56:25 -07:00
commit c3bd54696f
5 changed files with 15 additions and 20 deletions

View File

@ -92,14 +92,6 @@ To specify a particular technology use "-t <techname>" 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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,2 @@
path sys +$::env(OPENRAM_TECH)/scn3me_subm/tech
tech load SCN3ME_SUBM.30