Jesse Cirimelli-Low
d3199ea70e
Merge branch 'dev' into laptop_checkpoint
2021-05-03 12:53:31 -07:00
mrg
98fb34c44c
Add conditional power pins to Verilog model.
2021-04-30 14:15:32 -07:00
Jesse Cirimelli-Low
6ea4bdc5e5
Merge branch 'dev' into laptop_checkpoint
2021-04-23 22:50:23 -07:00
Jesse Cirimelli-Low
4ea0fcd068
support multi cell wide precharge cells
2021-04-23 22:49:29 -07:00
mrg
a111ecb74c
Fix extra indent that made openlane fail.
2021-04-22 13:05:51 -07:00
mrg
f45efe3db6
Abstracted LEF added. Params for array wordline layers.
2021-04-21 11:04:01 -07:00
mrg
584349c911
Add custom parameter for wordline layer
2021-04-21 11:04:01 -07:00
mrg
aa5e1fd168
Merge remote-tracking branch 'olofk/verilog_model_features' into dev
2021-04-15 14:41:56 -07:00
Olof Kindgren
688a1f1e60
Add HOLD_DELAY parameter for dout in verilog model
...
Signed-off-by: Olof Kindgren <olof.kindgren@gmail.com>
2021-04-15 22:39:49 +02:00
Olof Kindgren
1d657abebc
Add VERBOSE parameter to generated verilog model
...
This allows disabling the $display commands that are generated for every
read and write access to the model. The verilog output has been tested
with the following example script
from compiler.base.verilog import verilog
v = verilog()
v.num_words = 256
v.word_size = 32
v.write_size = 8
v.name = "sky130_sram_1kbyte_1rw1r_32x256_8"
v.all_ports = [0,1]
v.readwrite_ports = [0]
v.read_ports = [0,1]
v.write_ports = [0]
v.addr_size=8
v.verilog_write("mymodule.v")
Signed-off-by: Olof Kindgren <olof.kindgren@gmail.com>
2021-04-15 22:33:57 +02:00
Jesse Cirimelli-Low
e976c4043b
Merge branch 'dev' into laptop_checkpoint
2021-04-14 15:58:06 -07:00
mrg
41226087ba
Use separate mXp pin layer if it exists
2021-04-14 13:55:21 -07:00
mrg
3eed6bb8ff
Check for None before checking DRC tool
2021-04-14 11:07:38 -07:00
mrg
a730fd0f10
Use magic for LEF abstract. Fix supply perimter pin.
2021-04-14 10:01:43 -07:00
mrg
0e48e020c1
Use pins in computing bbox offsets
2021-04-13 16:24:28 -07:00
mrg
d609e4ea04
Reimplement trim options (except on unit tests).
...
Allow trim netlist to be used for delay and functional simulation.
Each class implements a "trim_insts" set of instances that can be removed.
By default far left, right, top and bottom cells in the bitcell arrays are kept.
Use lvs option in sp_write
Fix lvs option in sram.
2021-04-07 16:07:56 -07:00
mrg
db118beeba
Zoom parameter should be optional in tech files.
2021-03-02 13:38:09 -08:00
mrg
9e7c04a43a
Merge lekez2005 changes WITHOUT control logic change.
2021-03-01 15:19:30 -08:00
mrg
4ab694033d
Merge remote-tracking branch 'bvhoof/dev' into dev
2021-03-01 12:16:26 -08:00
ota2
48bc47c686
Set pin label size to use zoom factor from tech specifications
2021-02-27 18:30:57 -05:00
jcirimel
b18e2eae8d
remove debug lines and merge
2021-02-09 20:53:23 -08:00
jcirimel
dbe8a7f1af
fix pwell pin shape bug
2021-02-09 20:51:50 -08:00
Bob Vanhoof
d14a68847e
added cell label checker and cell labels to the freepdk technology
2021-02-09 13:09:26 +01:00
mrg
bc8fd4a882
Merge branch 'supply_router' into dev
2021-01-25 11:01:48 -08:00
Matt Guthaus
eebc2a93b6
Remove redundant pins when adding each pin
2021-01-25 09:36:27 -08:00
Matt Guthaus
30fc81a1f0
Update copyright year.
2021-01-22 11:23:28 -08:00
mrg
db142bcd5a
Rename pins to original names
2021-01-21 15:22:54 -08:00
mrg
88f2198524
Always use min area power/IO pins
2021-01-13 13:56:46 -08:00
mrg
4991693f1a
Clean up min area
2021-01-13 12:32:17 -08:00
mrg
01d312d65c
Refactor add power pins
2021-01-13 10:57:12 -08:00
mrg
7eb1e2f2d1
Keep previous pin shapes which were used in router pin connections.
2021-01-06 11:31:16 -08:00
mrg
d61fcb3be3
Fix lpp erase bug in removing router annotations
2021-01-06 09:39:01 -08:00
mrg
94b1e729ab
Don't add vias when placing dff array
2020-12-22 17:08:53 -08:00
mrg
286ac635d6
Escape router changes.
...
Rename exit router to escape router.
Perform supply and signal escape routing after channel and other routing.
2020-12-22 16:35:05 -08:00
mrg
52119fe3b3
Cleanup exit route. Pins are on perimeter mostly.
2020-12-22 15:56:51 -08:00
mrg
ae1c889235
Updates to IO signal router.
...
Route signals to perimeter using maze router.
Move IO pins without perimeter pins to M3 using add_io_pin (like add_power_pin).
2020-12-22 09:39:58 -08:00
mrg
6101195b51
Function to remove layout pins.
2020-12-21 12:44:04 -08:00
mrg
878a9cee8a
Add channel routes as flat instances to appease Magic extraction.
2020-12-15 16:01:39 -08:00
mrg
fd118c62e5
Default zom is None not negative.
2020-12-15 13:27:36 -08:00
mrg
2954f13294
Update temp file to be relative
2020-12-14 14:18:18 -08:00
mrg
9a3776e758
Use default zoom for text
2020-12-14 14:18:00 -08:00
mrg
d542b7dd76
Add separate box for pins if it has its own purpose
2020-12-08 10:31:57 -08:00
mrg
a2ebaf9f81
Fix typo
2020-12-08 10:31:39 -08:00
mrg
62bf713913
Only remove files at end of openram
2020-12-01 11:19:37 -08:00
mrg
0ccb3487b6
Set default port map
2020-11-24 13:27:11 -08:00
mrg
4e10f6d8a6
Make cell/bitcell custom cell external accessible.
2020-11-24 12:01:00 -08:00
mrg
cdcd115cec
Fix typos
2020-11-24 10:35:14 -08:00
jcirimel
d2bc7340ed
finish col cap start row cap
2020-11-24 03:02:55 -08:00
jcirimel
f40e5f6dba
start of adding additional granularity to 1port col caps
2020-11-23 06:55:47 -08:00
mrg
5ee3f4cc66
Many edits.
...
Use internal vdd/gnd names.
Refactor getters in bitcell to base class.
Add BIAS signal type.
2020-11-22 08:24:47 -08:00
mrg
95573c858c
Can redefine number of ports in custom_cell_properties
2020-11-21 08:05:49 -08:00
Hunter Nichols
53e64fb696
Merge branch 'dev' into characterizer_bug_fixes
2020-11-20 11:16:41 -08:00
mrg
35c162acbd
Use internal pin names in path names for signal traces.
2020-11-19 08:45:09 -08:00
mrg
fbed738b4a
Merge multiple cell_name fix.
2020-11-18 16:27:28 -08:00
mrg
8c72d3f2e7
PEP8 and small fix
2020-11-18 14:01:25 -08:00
mrg
8507881ea8
Merge branch 's8_single_port' into dev
2020-11-18 13:59:43 -08:00
jcirimel
50a0b88ef8
fix typo
2020-11-18 11:02:40 -08:00
jcirimel
520b496611
check for cell prop names list
2020-11-18 10:47:05 -08:00
mrg
305b546ad5
PEP8 cleanup
2020-11-17 16:56:00 -08:00
mrg
02c1fac3b8
Remove partial Verilog output
2020-11-17 16:51:08 -08:00
Hunter Nichols
ac425643a0
Merge branch 'dev' into characterizer_bug_fixes
2020-11-17 13:22:56 -08:00
Hunter Nichols
eaf285639a
Added debug measurements along main delay paths in SRAM. WIP.
2020-11-17 12:43:17 -08:00
mrg
baae28194b
Add custom cell custom port order code. Update setup/hold to use it.
2020-11-17 11:12:59 -08:00
mrg
86799ae3ff
Small bug fixes related to new name mapping.
2020-11-16 13:42:42 -08:00
mrg
1d729e8f02
Move pin name mapping to layout class.
2020-11-16 11:04:03 -08:00
mrg
93e94e26ec
Get vdd/gnd from properties if it is defined.
2020-11-16 10:14:37 -08:00
mrg
e4bc2c4914
Update property settings with getters/setters
2020-11-14 08:08:42 -08:00
mrg
2f994b8c0a
Change custom cells to use set_ports setter
2020-11-14 07:15:27 -08:00
mrg
b4342ac527
More cleanup
2020-11-13 17:29:20 -08:00
mrg
a2b17a271c
Port type order generated on the fly
2020-11-13 16:41:02 -08:00
mrg
01d191da40
clk_pin is redundant in DFFs
2020-11-13 16:23:27 -08:00
mrg
8021430122
Fix pbitcell erros
2020-11-13 15:55:55 -08:00
mrg
c472a94f1e
Rework bitcells.
...
Name them 1port and 2port consistently.
Allow cell overrides to cell_1rw and cell_2rw or other.
Will use 2rw for 1rw/1r, 2rw, 1w/1r, etc.
2020-11-13 10:07:40 -08:00
mrg
cf63499e76
Convert bitcells to 1port and 2port
2020-11-13 08:09:21 -08:00
mrg
198c0faf85
Remove special s8 6t names
2020-11-13 07:45:31 -08:00
mrg
662d4ea724
Merge remote-tracking branch 'private/drclvs' into dev
2020-11-12 16:01:07 -08:00
mrg
9eeab14639
Add comment before pininfo
2020-11-12 14:33:42 -08:00
mrg
190234df58
Add PININFO to outputs too
2020-11-12 12:12:53 -08:00
mrg
d4c4658c77
Clean up invalid routing layer error message
2020-11-12 09:43:08 -08:00
mrg
d3cb22c8c1
Fix pin vs module names issue #26
2020-11-12 09:33:48 -08:00
mrg
03dad01e4c
Use readspice to define ports from sp netlist in Magic extract.
2020-11-10 17:06:24 -08:00
mrg
66633a843b
Add PDK layer names to tech file
2020-11-09 09:10:43 -08:00
mrg
2c76a2680f
Adjust openram options.
...
Remove option -d (dontpurge) and replace with keeptemp
Add option -d (debug) to drop into pdb.
Add option -k (--keeptemp) to keep temp files
2020-11-05 13:12:26 -08:00
Matt Guthaus
844b850b74
Fix typo in 1w_1r bitcell
2020-11-03 17:14:45 -08:00
mrg
1de545fc8e
Fix row and col cap custom names by adding default.
2020-11-03 13:32:15 -08:00
mrg
29ac541b28
Refactor dynamic cell name to utilize base class
2020-11-03 13:18:46 -08:00
mrg
1890385be1
Use custom cells when needed.
2020-11-03 11:58:25 -08:00
mrg
cb3e9517bb
Use cell_properties to override cell names
2020-11-03 07:06:01 -08:00
mrg
da721a677d
Remove EOL whitespace globally
2020-11-03 06:29:17 -08:00
mrg
f9787eb878
Use bitcell_base for all bitcells. Fix missing setup_bitcell call
2020-11-02 17:00:15 -08:00
mrg
fa89b73ef8
PR from mithro + other changable GDS file names
2020-11-02 16:00:16 -08:00
Tim 'mithro' Ansell
95d77119c7
Add caches to GDS related functions in utils.py
...
* Cache the GDS reader.
* Cache the properties (size / pins / etc) measured from the GDS files.
Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-11-02 09:52:00 -08:00
mrg
f6c5f48b4c
Default channel route is true
2020-10-28 10:31:05 -07:00
mrg
acfec369d6
Add ptx cell properties
2020-10-28 09:54:15 -07:00
mrg
611a4155b9
Add initial custom layer properties.
2020-10-27 15:11:04 -07:00
mrg
5bff641c0a
Multiport constants can't be static
2020-10-27 09:28:21 -07:00
mrg
575f504e4b
Remove static method call
2020-10-27 09:26:40 -07:00
mrg
07ef43eaf8
Convert design class data to static
2020-10-27 09:23:11 -07:00
mrg
f23fe07893
Add custom layers without defaults
2020-10-26 16:37:00 -07:00
mrg
b45a7902c0
PEP8 cleanup
2020-10-26 13:13:38 -07:00
mrg
fcb7f42e48
Remove split_wl
2020-10-12 17:27:20 -07:00
mrg
3c2e8754e0
Search all shapes for boundary rather than specify structure
2020-10-08 14:04:19 -07:00
jcirimel
d40c3588ed
no wl for col end
2020-10-08 03:34:16 -07:00
jcirimel
4a1a7e637e
merge in dev
2020-10-07 11:54:07 -07:00
mrg
27d921d2db
Fix run-time bug for duplicate instance check
2020-10-06 16:26:35 -07:00
jcirimel
888646cdf9
merge in wlbuf and begin work on 32kb memory
2020-10-06 05:03:59 -07:00
mrg
b81cdab0d6
Use unique instance names for channel routes.
2020-10-01 07:43:06 -07:00
mrg
bd125e2ed3
Check for duplicate instance names.
2020-10-01 07:17:16 -07:00
mrg
0c280e062a
Fix func test with row/col of 0. PEP8 cleanup. Smaller global test case.
2020-09-29 11:35:58 -07:00
mrg
4b5bbe755f
PEP8 cleanup. Fix cur_slew bug.
2020-09-29 11:13:58 -07:00
mrg
d7e2340e62
Lots of PEP8 cleanup. Refactor path graph to simulation class.
2020-09-29 10:26:31 -07:00
mrg
4a987bef9a
Merge branch 'wlbuffer' into dev
2020-09-28 15:51:45 -07:00
mrg
88731ccd8e
Fix rounding error for wmask with various word_size
2020-09-28 09:53:01 -07:00
jcirimel
7f8edf6d7c
fix replica bitcell col
2020-09-23 00:36:08 -07:00
jcirimel
efdc171b14
make split wl specific to each port
2020-09-23 00:08:34 -07:00
jcirimel
fb6a665514
removed references to technology name
2020-09-22 18:33:03 -07:00
mrg
c7d32089f3
Create RBL wordline buffer with correct polarity.
2020-09-17 14:45:49 -07:00
jcirimel
d22164bd48
single port progess
2020-09-14 18:11:38 -07:00
mrg
71d86f88b0
Merge branch 'dev' into wlbuffer
2020-09-10 13:05:14 -07:00
mrg
8e91ec1770
Add check_pins function
2020-09-08 13:31:50 -07:00
Hunter Nichols
8bcbf005bf
Merge branch 'dev' into characterizer_bug_fixes
2020-09-04 02:25:01 -07:00
Hunter Nichols
13b1d4613c
Moved spice naming checking code from design to the spice base module
2020-08-31 14:36:13 -07:00
mrg
c1c1535210
Merge branch 'wlbuffer' into dev
2020-08-27 15:44:29 -07:00
Hunter Nichols
42f2ff679e
Removed dead code from delay and base module related to characterization
2020-08-27 15:40:41 -07:00
mrg
11a82b7283
Fixed local bitcell array for single and dual port
2020-08-27 14:03:05 -07:00
jcirimel
9cecf367ee
Merge branch 'dev' into pex
2020-08-17 17:49:41 -07:00
jcirimel
714b57d48e
Merge branch 'dev' into pex
2020-08-17 17:48:21 -07:00
mrg
3a692e2846
Comment updates
2020-08-17 14:35:39 -07:00
mrg
30976df48f
Change inheritance inits to use super
2020-08-06 11:33:26 -07:00
jcirimel
df4a231c04
fix merge conflicts
2020-07-21 11:38:34 -07:00
mrg
2ccf3aea3b
Set channel route height and width (of routes, not pins)
2020-07-20 13:25:47 -07:00
mrg
f87b427f76
Add parent to channel route for dumpign debug gds.
2020-07-20 12:03:25 -07:00
mrg
7385decbff
Add channel route cyclic VCG debugging.
2020-07-20 12:02:30 -07:00
mrg
9d5d632d1a
Pins may be below the channel.
2020-07-16 14:23:48 -07:00
mrg
ba3d32fa0c
Starting to implement minimizing channel router (not done)
2020-07-16 13:21:44 -07:00
mrg
e49236f8fc
Default drc and lvs errors is skipped.
2020-07-13 14:08:00 -07:00
mrg
716798baae
Convert all DRC and LVS routines to set member variables for drc_errors and lvs_errors.
2020-07-13 13:01:00 -07:00
mrg
2011974e01
Make drc and lvs errors a member variable. Run only once.
2020-07-13 12:49:24 -07:00
mrg
27166c75f0
Don't remove temp files during regular openram runs.
2020-07-03 07:00:56 -07:00
mrg
c340870ba0
Channel route dout wires as well in read write ports
2020-07-01 14:44:01 -07:00
mrg
3d0f29ff3a
Fix missing via LVS issues. LVS passing for some 20 tests.
2020-07-01 09:22:59 -07:00
mrg
c1fedda575
Modifications for min area metal.
...
Made add_via_stack_center iterative instead of recursive.
Removed add_via_stack (non-center) since it isn't used.
Add min area metal during iterative via insertion.
2020-06-30 15:07:34 -07:00
mrg
8cedeeb3d9
Widen pitch of control bus in bank.
2020-06-30 10:57:41 -07:00
Matt Guthaus
9b939c9a1a
DRC/LVS and errors fixes.
...
Only enact pdb if assert fails in debug.error.
Only run drc/lvs one time in parse_info by saving result.
Cleanup drc/lvs output.
2020-06-30 07:16:05 -07:00
Matt Guthaus
e97644c424
Only do reverse lookup on valid interconnect layers since layer numbers can be shared.
2020-06-29 14:42:24 -07:00
mrg
07d0f3af8e
Only copy end-cap pins to the bank level
2020-06-29 11:46:59 -07:00
mrg
47f541df0e
Fix bugs in channel route.
2020-06-28 16:58:28 -07:00
mrg
709535f90f
Fix right perimeter pin coordinate bug
2020-06-28 14:47:17 -07:00
mrg
bc3de9db05
Pick correct side of pin in channel route.
2020-06-28 14:28:18 -07:00
mrg
94d7000717
Reduce output clutter from gds write
2020-06-26 12:16:54 -07:00
mrg
567675ab31
PEP8 cleanup
2020-06-26 11:47:12 -07:00
mrg
d53abba479
Always route the channel route since it is it's own design.
2020-06-25 17:43:44 -07:00
mrg
f11afaa63d
Refactor channel route to be a design.
2020-06-25 17:30:03 -07:00
mrg
4bc3df8931
Add get_tx_insts and expand add_enclosure
2020-06-24 11:54:36 -07:00
mrg
cddb16dabc
Separate active and poly contact to gate rule
2020-06-24 09:17:39 -07:00
mrg
83001e1ab5
PEP8 formatting
2020-06-23 15:39:26 -07:00
mrg
e849a9b973
Use different LVS libs based on tech and sky130
2020-06-23 14:53:24 -07:00
mrg
031862c749
Add metal enclosure to base case of center via stack.
2020-06-23 11:56:50 -07:00
mrg
54120f8405
Add option for removing subckt/instances of cells for row/col caps
2020-06-22 12:35:37 -07:00
mrg
a13d535945
PEP8 cleanup
2020-06-22 11:33:02 -07:00
mrg
78be9f367a
Add brain-dead router pins to perimeter
2020-06-14 15:52:09 -07:00
mrg
8f1dc7eeea
Include mirror/rotate on translate_all boundary update
2020-06-13 06:50:53 -07:00
mrg
33a32101c9
DRC and LVS fixes for pinv_dec
2020-06-12 15:23:51 -07:00
mrg
443b8fbe23
Change s8 to sky130
2020-06-12 14:23:26 -07:00
mrg
e9780ea599
Add non-preferred directions for channel routes
2020-06-11 15:03:36 -07:00
mrg
7ad2d54a69
Add pin and label purposes
2020-06-11 11:54:51 -07:00
mrg
089331ced3
Add stdc bounding box too
2020-06-11 11:54:16 -07:00
mrg
098219d56c
Add npc enclosure to poly contacts
2020-06-11 11:53:59 -07:00
mrg
5e3332453b
Allow power pins to start on any layer besides m1
2020-06-10 10:15:23 -07:00
mrg
a28e747a02
Fix precharge offset. Move well rules to design class.
2020-06-09 15:28:50 -07:00
mrg
148521c458
Remove stdc layer
2020-06-09 13:48:47 -07:00
mrg
9cc36c6d3a
Bus code converted to pins. Fix layers on control signal routes in bank.
2020-06-08 11:01:14 -07:00
mrg
2fcecb7227
Variable zjog. 512 port address test. s8 port address working.
2020-06-04 16:01:32 -07:00
Joey Kunzler
7a602b75a4
keep dev routing changes to hierarchy_layout
2020-06-03 12:54:15 -07:00
Joey Kunzler
84021c9ccb
merge conflict 2 - port data
2020-06-02 16:32:08 -07:00
Joey Kunzler
001bf1b827
merge conflict - port data
2020-06-02 14:15:39 -07:00
mrg
620604603c
Fixed offset jogs
2020-06-02 10:08:37 -07:00
Joey Kunzler
b39579c109
temp drc fix for regression tests
2020-06-01 20:55:15 -07:00
mrg
4a67f7dc71
Thin-cell decoder changes.
...
Add hard decoder gates (nand, inv, pnan)
Add conditions for routing using LI layer in s8.
Generalize bus layers for decoders.
Move custom cells to own directory.
Fixed via directions, etc.
Add 4x16 hierarchical decoder and test case
2020-05-29 10:36:07 -07:00
Joey Kunzler
9a6b38b67e
merge conflict
2020-05-26 16:03:36 -07:00
mrg
848241a3ad
PEP8 cleanup
2020-05-11 16:22:17 -07:00
mrg
b7c66d7e07
Changes to simplify metal preferred directions and pitches.
...
Changes to allow decoder height to be a 2x multiple of bitcell height.
Split of control logic tests.
Fixed track spacing in SRAM and channel router
PEP8 cleanup.
2020-05-10 11:32:45 -07:00
mrg
dd73afc983
Changes to allow decoder height to be a 2x multiple of bitcell height.
...
Convert to use li layer in pgates.
Fix multifinger devices with li layers.
Simplify wordline driver input routing.
Fix power pin direction option update.
PEP8 cleanup
Changes to simplify metal preferred directions and pitches.
Split of control logic tests.
2020-05-10 06:56:22 -07:00
Joey Kunzler
e642b8521b
increase col_mux bitline spacing to fix cyclic vcg
2020-05-06 13:02:33 -07:00
Joey Kunzler
91dbbed9ba
added horizontal trunk route edit to vertical trunk route
2020-05-05 12:18:26 -07:00
Joey Kunzler
1b6634bb97
port data routing fix
2020-04-29 15:48:15 -07:00
Joey Kunzler
0bae652be9
fix merge conflicts
2020-04-23 11:51:46 -07:00
mrg
ab91d0ab1d
Add purpose to string output
2020-04-21 15:20:30 -07:00
mrg
dfbf6fe45c
Default is to use preferred layer directions
2020-04-20 15:33:53 -07:00
mrg
7f65176908
Configured bitline directions into prot_data
2020-04-20 14:23:40 -07:00
Joey Kunzler
7920b0cef9
m3 min area rounding fix
2020-04-17 12:36:48 -07:00
mrg
d1319d633d
Don't widen too short wires either
2020-04-16 11:02:54 -07:00
mrg
b347e3f7a8
Try both layers for reversed layer stacks.
2020-04-15 16:49:04 -07:00
mrg
94eb2afa36
Change to callable DRC rule. Use bottom coordinate for bus offsets.
2020-04-15 15:29:55 -07:00
mrg
43fe1ae023
Improve pitch computation
2020-04-15 11:16:45 -07:00
mrg
331a4f4606
Fix wire width bug in short jogs. PEP8 cleanup.
2020-04-15 09:48:42 -07:00
mrg
ade3b78711
Add exception errors file
2020-04-08 16:55:45 -07:00
mrg
cd8dc8e20b
Output lvs model instead of spice model
2020-04-06 14:08:38 -07:00
mrg
ab5dd47182
Ptx is in microns if lvs_lib exists
2020-04-03 14:06:56 -07:00
mrg
f358de78bb
Add optional lvs_lib netlists for LVS usage (sp_lib is for simulation)
2020-04-03 13:39:54 -07:00