mirror of https://github.com/VLSIDA/OpenRAM.git
Merge branch 'dev' into multiport
This commit is contained in:
commit
c3bd54696f
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
path sys +$::env(OPENRAM_TECH)/scn3me_subm/tech
|
||||
tech load SCN3ME_SUBM.30
|
||||
Loading…
Reference in New Issue