mrg
2991534d3f
Drafting local bitline stuff.
2020-07-23 17:15:39 -07:00
mrg
e1967dc548
Draft local and global arrays. Ensure rows before cols in usage.
2020-07-23 14:43:14 -07:00
jcirimel
df4a231c04
fix merge conflicts
2020-07-21 11:38:34 -07:00
mrg
58846a4a25
Limit wordline driver size. Place row addr dff near predecoders.
2020-07-20 17:57:38 -07:00
mrg
bed2e36550
Simplify write mask supply via logic
2020-07-01 14:44:48 -07:00
mrg
8cd1cba818
Fix missing via in wmask driver
2020-07-01 14:44:18 -07:00
mrg
bb18d05f75
Move control output via inside module instead of perimeter
2020-07-01 11:33:25 -07:00
mrg
3d0f29ff3a
Fix missing via LVS issues. LVS passing for some 20 tests.
2020-07-01 09:22:59 -07:00
mrg
b07f30cb9e
Missing output via in control logic
2020-06-30 16:23:07 -07:00
mrg
011ac2fc05
Don't route to clk to perimeter on m2
2020-06-30 13:57:45 -07:00
mrg
a48ea52253
Add missing contact to vdd pins.
2020-06-30 13:26:38 -07:00
mrg
eb11ac22f3
Widen pitch of control bus in bank.
2020-06-30 10:58:09 -07:00
mrg
372a8a728e
Off by one error in channel spacing
2020-06-29 16:47:34 -07:00
mrg
459e3789b8
Change control layers in sky130.
2020-06-29 16:23:25 -07:00
mrg
bec948dcc3
Fix error in when to add vias for array power
2020-06-29 15:28:55 -07:00
mrg
07d0f3af8e
Only copy end-cap pins to the bank level
2020-06-29 11:46:59 -07:00
mrg
1bc0775810
Only add pins to periphery
2020-06-29 10:03:24 -07:00
mrg
5285468380
All bitcells need a vdd/gnd pin
2020-06-28 15:09:47 -07:00
mrg
051c8d8697
Only add bitcells to dummy and replica rows and columns (the perimeter)
2020-06-28 14:47:54 -07:00
mrg
225fc69420
Use preferred routing direction
2020-06-28 14:29:12 -07:00
mrg
0c9f52e22f
Realign col decoder and control by 1/4 so metal can pass over
2020-06-28 07:15:06 -07:00
mrg
66ea559209
Use channel for dffs all at once
2020-06-27 08:23:12 -07:00
mrg
609aa98c8b
Move write mask pin to left of cell to avoid sense amp
2020-06-27 08:21:53 -07:00
mrg
2bd498c39c
Change precharge layer to m3
2020-06-27 08:21:30 -07:00
mrg
c07e20cbe4
Move mux select from li to m2 in sky130
2020-06-26 14:27:16 -07:00
mrg
f57eeb88eb
PEP8 cleanup, multiple vdd/gnd support
2020-06-26 11:47:55 -07:00
mrg
e23d41c1d4
PEP8 cleanup
2020-06-26 11:47:35 -07:00
mrg
66df659ad4
Col decoders are anything not bitcell pitch.
2020-06-25 14:25:48 -07:00
mrg
f84ee04fa9
Single bank passing.
...
Parameterized gate column mux of dff height.
End-cap only supply option instead of no vdd in bitcell.
2020-06-25 14:03:59 -07:00
mrg
93d65e84e1
Fix power pin layer problems in delay line
2020-06-24 10:26:49 -07:00
Joey Kunzler
4e83e8c648
added contact to locali for wmask
2020-06-23 18:13:17 -07:00
mrg
cfa234a4d0
Extra space between decoders for well spacing
2020-06-23 15:39:42 -07:00
mrg
cd23b31ab4
Merge branch 'dev' of github.com:VLSIDA/PrivateRAM into dev
2020-06-22 12:55:45 -07:00
mrg
0926eab9f5
PEP8 formatting
2020-06-22 12:55:18 -07:00
Joey Kunzler
208c652653
added error for sky130 with invalid x mirroring (for lvs)
2020-06-19 13:59:33 -07:00
mrg
abb5ff7bae
Separate route conditions for s8
2020-06-15 10:30:27 -07:00
mrg
e331d6fae8
Permute bus order to avoid conflict in control_logic
2020-06-15 10:25:53 -07:00
mrg
79b3b9a8b0
Switch input/output layers for predecodes
2020-06-15 10:06:04 -07:00
mrg
02352c35d7
Fix hard coded layer in wmask
2020-06-14 17:10:32 -07:00
mrg
78be9f367a
Add brain-dead router pins to perimeter
2020-06-14 15:52:09 -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
dff28a9997
Merge branch 'tech_migration' into dev
2020-06-10 17:09:05 -07:00
mrg
bfd1abc79f
Replica column pins start at 0 height.
2020-06-10 14:58:55 -07:00
mrg
157926960b
Flip freepdk45 flop, dff_buf route layer change
2020-06-09 13:48:16 -07:00
mrg
77fb7017c4
Merge branch 'tech_migration' into dev
2020-06-08 12:54:41 -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
Aditi Sinha
300522a1a8
Change spare enable pins offset to lower right
2020-06-08 14:31:46 +00:00
Aditi Sinha
d5041afebc
Merge branch 'dev' into bisr
2020-06-07 16:27:25 +00:00
mrg
0837432d45
Wordline route layers and (optional) via.
2020-06-05 16:47:22 -07:00
mrg
5514996708
Auto-generate port dependent cell names.
2020-06-05 15:09:22 -07:00
mrg
00b51f5464
PEP8 format replica_bitcell_array
2020-06-05 13:49:32 -07:00
mrg
4fef632dce
Fix syntax error
2020-06-05 12:13:41 -07:00
mrg
a62b85a6b1
Update mirroring in port_data for bitcell mirrored arrays
2020-06-05 11:29:31 -07:00
mrg
e14deff3d1
Fixed offset in port_data
2020-06-04 16:03:39 -07:00
mrg
2fcecb7227
Variable zjog. 512 port address test. s8 port address working.
2020-06-04 16:01:32 -07:00
mrg
7aafa43897
Connect RBL to bottom of precharge cell
2020-06-04 10:22:52 -07:00
mrg
249b5355ba
Adjust rbl route
2020-06-03 17:08:04 -07:00
mrg
3927c62e32
Undo extra space due to nwell spacing
2020-06-03 16:39:33 -07:00
mrg
3b1fe26d25
Spacing between decoder and driver for s8
2020-06-03 14:33:30 -07:00
Joey Kunzler
6430aad857
Merge branch 'dev' into s8_update
2020-06-03 11:53:33 -07:00
Aditi Sinha
eb0c595dbe
SRAM layout and functional tests with spare cols
2020-06-03 12:31:30 +00:00
mrg
34209dac3d
A port option for correct mirroring in port_data.
2020-06-02 16:50:07 -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
fce8e878b9
Add port to col mux and simplify route with computation to fix mirror bug.
2020-06-02 13:57:41 -07:00
mrg
fdf51c5a00
Add port option to precharge array
2020-06-02 11:44:22 -07:00
mrg
f1b7b91b1a
Use non-channel route for s8 port_data
2020-06-02 11:43:57 -07:00
mrg
45b0601e4b
Fix via directions in s8 col mux
2020-06-02 11:43:31 -07:00
mrg
a1c7474f80
Revert to channel route of bitlines
2020-06-02 10:08:53 -07:00
mrg
b3b03d4d39
Hard cells can accept height parameter too.
2020-06-01 16:46:00 -07:00
mrg
496a24389c
Remove prints
2020-05-29 16:57:47 -07:00
mrg
82dc937768
Add missing vias by using via stack function
2020-05-29 16:53:47 -07:00
Joey Kunzler
b00163e4e1
lvs fix for regression tests
2020-05-29 13:50:34 -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
218a553ac5
fix for replica column mirroring over y
2020-05-28 20:31:21 -07:00
Joey Kunzler
7505fa5aef
update for end caps
2020-05-27 20:03:11 -07:00
Joey Kunzler
9a6b38b67e
merge conflict
2020-05-26 16:03:36 -07:00
Aditi Sinha
c7d86b21ae
Spare cols with wmask enabled
2020-05-16 10:09:03 +00:00
Aditi Sinha
c14190c5aa
Changes in control logic for spare columns
2020-05-14 10:41:54 +00:00
Aditi Sinha
8bd1052fc2
Spare columns in full sram layout
2020-05-14 10:30:29 +00:00
mrg
4b526f0d5f
Check min size inverter.
2020-05-13 16:54:26 -07:00
Aditi Sinha
a5c211bd90
Merge branch 'dev' into bisr
2020-05-13 22:39:29 +00: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
Aditi Sinha
5c50cf234b
Fixed lvs errors for spare columns
2020-05-09 07:56:19 +00:00
Aditi Sinha
e30938fb66
Spare columns working at bank level
2020-05-03 15:23:30 +00:00
Aditi Sinha
2498ff07ea
Merge branch 'dev' into bisr
2020-05-02 07:48:35 +00: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
Joey Kunzler
fed1c0bbe1
s8 col mux array
2020-04-22 16:22:34 -07:00
mrg
32576fb62c
Convert wordline driver to pand2 rather than pnand2+pdriver
2020-04-22 13:27:50 -07:00
mrg
f1c1adc9bd
Simplify supply contacts in delay chain.
2020-04-21 16:12:54 -07:00
mrg
0f6998a1c5
PEP8 cleanup
2020-04-21 15:36:38 -07:00
mrg
cd66ddb37c
Add supply rails to dff array. PEP8 cleanup.
2020-04-21 15:21:29 -07:00
mrg
f6135f3471
PEP8 formatting
2020-04-20 16:38:30 -07:00
mrg
7995451cbb
PEP8 formatting
2020-04-20 14:45:18 -07:00
mrg
7f65176908
Configured bitline directions into prot_data
2020-04-20 14:23:40 -07:00
mrg
843e9414df
Parameterize vdd and gnd pin in write driver array.
2020-04-16 11:28:35 -07:00
mrg
770533e7b1
Parameterize vdd and gnd pin in sense amp array.
2020-04-16 11:27:26 -07:00
mrg
9d2902de9e
Conditional well spacing
2020-04-15 15:55:49 -07:00
mrg
e95c97d7a5
PEP8 cleanup
2020-04-15 14:29:43 -07:00
mrg
331a4f4606
Fix wire width bug in short jogs. PEP8 cleanup.
2020-04-15 09:48:42 -07:00
mrg
0941ebc3da
Fix well spacing issue
2020-04-14 14:08:07 -07:00
mrg
32d190b8b1
Jog connection on M1 for bank select.
2020-04-14 12:15:56 -07:00
mrg
43dcf675a1
Move pnand outputs to M1. Debug hierarchical decoder multirow.
2020-04-14 10:52:25 -07:00
Aditi Sinha
2661a42726
changes to support spare columns
2020-04-14 03:09:10 +00:00
mrg
2e67d44cd7
First pass of multiple bitcells per decoder row
2020-04-10 13:29:41 -07:00
mrg
7888e54fc4
Remove dynamic bitcell multiple detection.
...
Check for decoder bitcell multiple in tech file or assume 1.
PEP8 fixes.
2020-04-09 11:38:18 -07:00
mrg
8a55c223df
Use single height for netlist_only mode
2020-04-09 09:48:54 -07:00
mrg
58fbc5351a
Change rows to outputs in hierarchical decoder
2020-04-08 17:05:16 -07:00
mrg
0c27942bb2
Dynamically try and DRC decoder for height
2020-04-08 16:45:28 -07:00
Jesse Cirimelli-Low
b59c789dec
remove whitespace
2020-04-05 03:58:26 -07:00
Jesse Cirimelli-Low
8b33cb519f
Merge branch 'dev' into custom_mod
2020-04-03 17:05:56 -07:00
mrg
2850b9efb5
Don't force check in lib characterization. PEP8 formatting.
2020-04-02 12:52:42 -07:00
mrg
5349323acd
PEP8 cleanup. DRC/LVS returns errors.
2020-04-02 09:47:39 -07:00
mrg
a9d3548be1
Refactor drc/lvs error output
2020-04-01 15:54:06 -07:00
Jesse Cirimelli-Low
cdf0315a90
Merge branch 'dev' into custom_mod
2020-04-01 15:35:33 -07:00
mrg
7956b63d9f
Add licon option to precharge
2020-04-01 11:26:45 -07:00
mrg
d916322b74
PEP8 updates
2020-03-31 10:15:46 -07:00
Joey Kunzler
b0d2946c80
update to sense amp and write driver modules
2020-03-30 20:00:32 -07:00
Jesse Cirimelli-Low
341bde7a48
Merge branch 'dev' into custom_mod
2020-03-26 02:40:37 -07:00
Aditi Sinha
b75eeb7688
Merge branch 'dev' into bisr
2020-03-22 21:58:04 +00:00
mrg
c5a1be703c
Rotate via and PEP8 formatting
2020-03-06 13:39:46 -08:00
mrg
23501c7b35
Convert pnand+pinv to pand in decoders.
2020-03-06 13:26:40 -08:00
mrg
1a2efd77ad
Move rbl route away from bitcell array
2020-03-06 09:48:20 -08:00
mrg
ee18f61cbf
Route RBL to edge of bank.
2020-03-06 09:03:52 -08:00
mrg
ad98137cd4
Merge branch 'dev' into tech_migration
2020-03-05 14:18:06 -08:00
mrg
9c1f0657dd
PEP8 Formatting
2020-03-05 11:58:36 -08:00
mrg
7adeef6c9e
PEP8 Formatting
2020-03-05 10:21:18 -08:00
mrg
287a31f598
Precharge updates.
...
Enable different layers for bitlines.
Jog bitlines to fit precharge transistors for close proximity bitlines.
PEP8 cleanup.
2020-03-04 17:39:11 -08:00
Joey Kunzler
d7529ce526
Vdd/gnd via stacks now use perferred directions, added cell property to override
2020-03-04 17:05:19 -08:00
mrg
7ba9e09e12
Incomplete precharge layer decoupling
2020-03-04 22:23:05 +00:00
Jesse Cirimelli-Low
f62016ad9f
revert dff_buf for no body contact
2020-03-03 12:40:08 +00:00
mrg
bb2305d56a
PEP8 format fixes
2020-02-28 18:24:39 +00:00
Bastian Koppelmann
0e641bf905
Remove write_driver_array.py.orig
...
this was the remainder of applying a diff using "patch". To avoid this
mistake, add the filetypes created by "patch" to the .gitignore.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-02-21 13:29:43 +01:00
Aditi Sinha
694ea5c20e
Characterization for extra rows
2020-02-20 17:31:58 +00:00
Aditi Sinha
34939ebd70
Merge branch 'dev' into bisr
2020-02-20 17:09:09 +00:00
Matt Guthaus
da4c69ab98
Merge branch 'pin-pull3' into dev
2020-02-20 09:07:58 -08:00
Hunter Nichols
c1cb6bf512
Changed layout input names of s_en AND gate to match the schematic
2020-02-19 23:32:11 -08:00
Hunter Nichols
843fce41d7
Fixed issues with sen control logic for read ports.
2020-02-19 03:06:11 -08:00
Bastian Koppelmann
76256a2f1b
sense_amp: Allow custom pin names
...
we don't want to propagate the sense amp's bl/br names out of the
sense_amp_array. Thus the sense_amp_array gets them named as
"bl"/"br" again.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-02-17 15:20:12 +01:00
Bastian Koppelmann
680dc6d2c7
sense_amp/array: Remove hardcoded pin names
...
all pin names should be wrapped into a function/property. This ensures
that there is exactly one place to change the name.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-02-17 15:20:06 +01:00
Bastian Koppelmann
9a12b68680
write_driver: Allow custom pin names
...
we don't want to propagate the write driver bl/br names out of the
write_driver_array. Thus the write_driver_array gets them named as
"bl"/"br" again.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-02-17 14:25:00 +01:00
Bastian Koppelmann
c06cb2bfc2
write_driver/array: Remove hardcoded pin names
...
all pin names should be wrapped into a function/property. This ensures
that there is exactly one place to change the name.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-02-17 14:23:26 +01:00
Bastian Koppelmann
656fdd1008
port_data: Refactor channel_route/connect_bitlines()
...
both functions share a lot of code and are passing around a lot of data
under similar names (inst1, inst1_start_bit, inst1_bl_name, ...). Thus
we group all these elements in a named tuple to ease passing around
these elements.
All callers of channel_route/connect_bitlines() either pass in the bl/br
names or rely on "br_{}"/"bl_{}" as defaults. These hard coded values
should be determined by the instances. Thus we get the bitline names
based on the instances passed in. The callers only provide a template
string, to take care of the case that bitlines are called "bl_out_{}".
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-02-17 14:20:03 +01:00
Bastian Koppelmann
5e1f64c8f9
modules/port_data: Add get_bl/br_name method
...
if we rely on the names of the submodules (sense_amp_array,
write_driver_array, etc.) for port_data's pins, we get into trouble on
multiport SRAMs. To avoid this we use explicit names for br/bl depending
on the port number in port_data. Now each submodule does no longer need to
figure out the right name depending on the port number.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-02-17 14:18:32 +01:00
Bastian Koppelmann
f6302caeac
replica_bitcell_array: Connect bitcells based on bitcell bl/br/wl names
...
this allows us to override the bl/br/wl names of each bitcell.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-02-12 15:37:47 +01:00
Bastian Koppelmann
f9babcf666
port_data: Each submodule now specifies their bl/br names
...
before the names of bl/br from the bitcell were assumed. If we want to
allow renaming of bl/br from bitcells, we have to seperate the other
modules from that. Note, that we don't touch every occurence of bl/br,
but only the once necessary that pin renaming of the bitcell works.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-02-12 15:00:50 +01:00
Bastian Koppelmann
64bf93e4e5
bank: Connect instances by their individual bl/br names
...
each module should be able to state how their bl/br lines are named. Here we
always connect port_data with the bitcell_array, so port_data needs function
that return the names of bl/br.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-02-12 15:00:50 +01:00
Jesse Cirimelli-Low
a23f72d5a3
Merge branch 'dev' of https://github.com/VLSIDA/PrivateRAM into dev
2020-02-12 06:54:03 +00:00
Jesse Cirimelli-Low
aedbc5f968
merge custom cell and module properties
2020-02-12 04:09:40 +00:00
mrg
5928a93772
Merge branch 'dev' into tech_migration
2020-02-10 22:42:50 +00:00
mrg
0ef06ec1e1
Fix dff_buf width in netlist_only mode
2020-02-10 20:06:34 +00:00
mrg
6bf33a980f
Add conservative well spacing between library FF and our pgates.
2020-02-10 19:28:30 +00:00
jcirimel
27eced1fbe
netlist_only done
2020-02-09 23:51:01 -08:00
jcirimel
7038fad930
s8 gdsless netlist only working up to pdriver
2020-02-09 23:10:33 -08:00
jcirimel
b212b3e85a
s8 gdsless netlist only working up to dff array
2020-02-09 21:37:09 -08:00
mrg
2ff058f5d5
PEP8 Cleanup and reverse pitch offset of col addr routing
2020-02-06 22:59:30 +00:00
mrg
f0ecf385e8
Nwell fixes in pgates.
...
Fix minor PEP8 format fixes.
Fix nwell to be 55% of cell height.
Move contact in hierarchical decoder for DRC error.
2020-02-06 16:20:09 +00:00
Jesse Cirimelli-Low
3a06141030
add simple sram sizing for netlist only
2020-02-06 12:10:49 +00:00
jcirimel
7cb3091140
Merge branch 'dev' of https://github.com/VLSIDA/PrivateRAM into custom_mod
2020-02-04 23:40:54 -08:00
jcirimel
ed11145ca4
add custom module file, make dff clk pin dynamic
2020-02-04 23:35:06 -08:00
Jesse Cirimelli-Low
6cf20a0353
add technology based module customization
2020-01-30 19:44:24 +00:00
mrg
400cf0333a
Pgates are 8 M1 high by default. Port data is bitcell height.
2020-01-30 03:34:04 +00:00
mrg
0880c393fd
Fix base bitcell syntax error. Remove some unused imports.
2020-01-30 01:58:30 +00:00
mrg
79391b84da
Cleanup and rename vias.
2020-01-30 01:45:33 +00:00
Matt Guthaus
3147b99ce0
Merge remote-tracking branch 'bkoppelmann/bit-sym' into dev
2020-01-29 11:24:09 -08:00
Bastian Koppelmann
b5701af864
column_mux: Allow y axis mirroring
...
since the bitlines alternate in the bitcell array we also need to mirror
the port_data elements.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-01-28 15:51:39 +01:00
Bastian Koppelmann
ed66fca031
write_driver/sense_amp/precharge arrays: Allow y axis mirroring
...
since the bitlines alternate in the bitcell array we also need to mirror
the port_data elements.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-01-28 15:51:39 +01:00
Bastian Koppelmann
dd1afe0313
Bitcell arrays: Allow mirroring on the y axis
...
this allows for bitcells that need to be mirrored on the y axis, like
thin cells. However, the portdata elements also need to be mirrored on
the y axis. Otherwise the router will fail horribly when connecting
bitlines.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-01-28 15:51:21 +01:00
Bastian Koppelmann
df9f351a91
Add custom cell properties to technologies
...
this is technology specific database to store data about the custom
design cells. For now it only contains on which axis the bitcells are
mirrored. This is a first step to support thin cells that need to be
mirrored on the x and y axis.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-01-28 15:46:14 +01:00
Bastian Koppelmann
90a4a72bba
modules: Use add_power_pin API for all modules
...
sense_amp_array, write_driver_array, and single_column_mux were the only offenders.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-01-28 11:47:49 +01:00
Bastian Koppelmann
3fb2b9c1c3
Bitcell arrays: Create abstract base class
...
a lot of functions of dummy- and bitcell-array are either copy-pasted or
have just slight differences. Merge all of those into an abstract base
class such that we don't have too much duplicate code.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2020-01-28 10:59:58 +01:00
mrg
9beb0f4ece
Add separate well design rules.
...
Needed to fix various pgates with wells.
Did some cleanup of these gates as well.
2020-01-23 19:43:41 +00:00
Matt Guthaus
9ad06a7770
Move write mask vias to center to avoid data pins.
2019-12-20 11:48:27 -08:00
Matt Guthaus
82496a66fe
Simplify supply code.
2019-12-20 10:35:57 -08:00
Matt Guthaus
9e8b03d6c2
Merge branch 'dev' into tech_migration
2019-12-19 16:23:22 -08:00
Matt Guthaus
d2461e5011
Supply indexing bug resolved. Recompute width/height basted on insts.
2019-12-19 16:19:21 -08:00
Bastian Koppelmann
1df16eceb6
sram_factory: Give proper priority to overrides
...
modules overridden by the user are the highest priority, then modules
overridden by the technology. If nothing is overriden, use the defaults
from OPTS (if they exist) or use the requested module_type.
This fixes that custom tech_modules could not be used, if they had a default in
OPTS even if the latter was not overridden by the user.
We don't need extra defaults in the tech_modules, as we now only use them,
if they have been overridden by the tech_module.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2019-12-19 15:58:00 +01:00
Bastian Koppelmann
fab963701b
sram_base: Instantiate "dff_array" and "bank" through sram_factory
...
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2019-12-18 17:33:50 +01:00
jcirimel
f0958b0b11
squashed update of pex progress due to timezone error
2019-12-18 03:03:13 -08:00
Matt Guthaus
ed28b4983b
Clean up and generalize layer rules.
...
Convert metalN to mN.
Generalize helper constants in modules for
space, width, enclose, etc.
Use layer stacks whever possible.
Try to remove drc() calls in liu of helper constants.
2019-12-17 11:03:36 -08:00
Matt Guthaus
f30d0b9197
Fix KeyError for bitell types.
2019-12-16 12:04:33 -08:00
Bastian Koppelmann
233ec010ff
modules: Create a class that wraps all the module class names
...
this removes hard coded values from the module instatiations. It also allows
users to override certain modules with their custom cells.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
2019-12-16 16:51:38 +01:00
Matt Guthaus
e143a6033f
Use layer stacks from tech file in design class and throughout
2019-12-13 14:13:41 -08:00
Aditi Sinha
5b3846e1e5
Changed replica bitcell array to work with bank tests for non power of two rows
2019-12-08 13:24:39 +00:00
Matthew Guthaus
b3b3cf0210
Merge remote-tracking branch 'origin/dev' into tech_migration
2019-11-17 00:15:18 +00:00
Aditi Sinha
2c7aa5d0da
Non-power of 2 address decode tentative
2019-11-15 03:59:57 +00:00
Matthew Guthaus
131f4bda4a
Add layer-purpose GDS support. Various PEP8 fixes.
2019-11-14 18:17:20 +00:00
Matthew Guthaus
a2422cc8d4
Sometimes round down pdriver to fix polarity
2019-11-06 21:51:21 +00:00
Matthew Guthaus
35e65fc6f2
PEP8 wordline driver
2019-11-06 21:19:36 +00:00
Matt Guthaus
289d3b3988
Feedthru port edits.
...
Comment about write driver size for write through to work, but
disable write through in functional simulation.
Provide warning in Verilog about write throughs.
2019-09-27 14:18:49 -07:00
Matt Guthaus
99507ba5c5
Remove rbl_bl_delay_bar from w_en logic inputs.
2019-09-07 23:22:01 -07:00
Matt Guthaus
322af0ec09
Remove sense enable during writes
2019-09-07 20:04:48 -07:00
Matt Guthaus
6bee66f9dc
Forgot to add cs_bar to rw port rails.
2019-09-06 09:29:23 -07:00
Matt Guthaus
969cca28e4
Enable sensing during writes. Need to add dedicated test.
2019-09-06 07:16:50 -07:00
Matt Guthaus
585ce63dff
Removing unused tech parms. Simplifying redundant parms.
2019-09-04 16:08:18 -07:00
jsowash
452cc5e443
Added wmask to lib.py.
2019-09-04 09:29:45 -07:00
jsowash
1a72070f04
Removed LVS error where w_en went over whole AND array in 2 port.
2019-09-03 17:14:31 -07:00
jsowash
dd67490823
Changed routing to allow for 2 write port with write mask.
2019-09-03 14:43:03 -07:00
jsowash
c1906ade3f
Removed A pin's via connection since it's created in the SRAM level and rearranged the SRAM flip flop creation.
2019-08-29 14:48:13 -07:00
jsowash
af3d2af0ec
Merge branch 'dev' into add_wmask
2019-08-29 12:56:11 -07:00
jsowash
f13c8eae8d
Moved column mux ff's to be horizontal with wmask flip flops and adjusted wmask AND array en pin location starting point.
2019-08-29 11:07:42 -07:00
jsowash
5099ff6f6c
Changed A/Z pins to copy_layout_pin and made en (B) pin a single pin.
2019-08-29 09:01:35 -07:00
Matt Guthaus
64fc771fc4
Simplify is not None
2019-08-22 15:02:52 -07:00
Matt Guthaus
ee2456f433
Merge branch 'add_wmask' into dev
2019-08-22 15:01:41 -07:00
jsowash
737e873923
Changed via direction for via1 in flip flops.
2019-08-21 14:49:54 -07:00
Matt Guthaus
9f54afbf2c
Fix capitalization in verilog golden files
2019-08-21 14:29:57 -07:00
jsowash
980760b724
Add preferred direction to via1, routed between supply lines in wmask AND array, and only uses m3 for channel route with a write mask.
2019-08-21 14:02:57 -07:00
Matt Guthaus
d0f04405a6
Convert capital names to lower case for consistency
2019-08-21 13:45:34 -07:00
jsowash
4f01eeb3c1
Combined changes to the pin locations and vias.
2019-08-21 12:36:53 -07:00
jsowash
c2015335b0
Fixed merge issues.
2019-08-21 11:54:22 -07:00
jsowash
4813c01d56
Moved dff's up and moved wmask_AND/wdriver pins left/down, respectively.
2019-08-21 11:50:28 -07:00
Matt Guthaus
b0821a5a0e
Re-add simplified power pins on edges
2019-08-21 11:42:56 -07:00
Matt Guthaus
f281510828
Merge branch 'add_wmask' of github.com:VLSIDA/PrivateRAM into add_wmask
2019-08-21 11:20:42 -07:00
Matt Guthaus
2b7025335c
Use pand2 of correct size. Simplify width checking of AND array.
2019-08-21 11:20:35 -07:00
jsowash
43d45fba98
Moved pwr/gnd pins to the right of the rail.
2019-08-21 10:44:04 -07:00
Matt Guthaus
53d0544291
Minor cleanup and additional assertion checking.
2019-08-21 08:50:12 -07:00
jsowash
71af70a636
Moved pwr/gnd vias and corrected width boundary.
2019-08-20 09:14:23 -07:00
jsowash
316132a33c
Sized inverter for number of driven write drivers.
2019-08-19 13:31:49 -07:00
jsowash
c19bada8df
Performed clean up and added comments.
2019-08-19 08:57:05 -07:00
jsowash
a28c9fed8b
Fixed bug for more than 2 wmasks and changed test to test 4 wmasks.
2019-08-16 14:27:44 -07:00
jsowash
d02ea06ff2
Added method to route between the output of wmask AND array and en of write driver.
2019-08-16 14:12:41 -07:00
jsowash
aaa1e3a614
Added change to route wmask en between driver and AND gates. Need to apply it to all cases.
2019-08-16 10:23:51 -07:00
jsowash
92e0671e15
Removed DRC error with AND array in freepdk45 and moved pin on en_{} pin in port data.
2019-08-15 12:36:17 -07:00
jsowash
858fbb062d
Placed wmask dff and added connections for wmask pins.
2019-08-14 11:45:22 -07:00
jsowash
0d7170eb95
Created wmask AND array en pin to go through to top layer.
2019-08-14 09:59:40 -07:00
jsowash
aa4803f3c4
Increased enable pin's width for larger # of column mux ways.
2019-08-11 15:25:05 -07:00
jsowash
2573b5f48b
Fixed merge conflict.
2019-08-11 14:39:36 -07:00
jsowash
d259efbcda
Connected wdriver_sel between write_mask_and_array and write_driver_array.
2019-08-11 14:33:08 -07:00
Matt Guthaus
e5618b88af
Don't add sense amp to write only port. Fix write_and None define.
2019-08-11 08:46:36 -07:00
Matt Guthaus
6cf7366c56
Gate sen during first half period
2019-08-10 16:30:02 -07:00
Matt Guthaus
8d6a4c74e7
Merge branch 'dev' into control_fix
2019-08-10 13:07:30 -07:00
Matt Guthaus
34d28a19e6
Connect wl_en in all ports to bank.
2019-08-10 12:30:23 -07:00
Matt Guthaus
bac684a82a
Fix control logic routing.
2019-08-10 08:53:02 -07:00
jsowash
d5e331d4f3
Connected en together in write_mask_and_array.
2019-08-09 14:27:53 -07:00
Hunter Nichols
1d22d39667
Uncommented tests that use model delays. Fixed issue in sense amp cin.
2019-08-08 18:26:12 -07:00
jsowash
49fffcbc92
Added way to determine length of en pin with wmask in write_driver_array and shortened en to width of driver.
2019-08-08 15:49:23 -07:00
Hunter Nichols
d273c0eef5
Merge branch 'dev' into analytical_cleanup
2019-08-08 13:20:27 -07:00
jsowash
0cfa0ac755
Shortened write driver enable pin so that a write mask can be used without a col mux in layout.
2019-08-08 12:57:32 -07:00
jsowash
59e5441aef
Added write mask to write driver array
2019-08-08 08:46:58 -07:00
Hunter Nichols
3c44ce2df6
Replaced analytical characterization with graph implementation. Removed most analytical delay functions used by old chacterizer.
2019-08-08 02:33:51 -07:00
Hunter Nichols
fc1cba099c
Made all cin function relate to farads and all input_load relate to relative units.
2019-08-08 01:57:04 -07:00
Matt Guthaus
d36f14b408
New control logic, netlist only working
2019-08-07 17:14:33 -07:00
jsowash
9409f60237
Merge branch 'dev' into add_wmask
2019-08-07 09:42:55 -07:00
jsowash
abb9af0ea8
Added layout pins for wmask_and_array
2019-08-07 09:33:19 -07:00
jsowash
a6bb410560
Begin implementing a write mask layout as the port data level.
2019-08-07 09:12:21 -07:00
Hunter Nichols
6860d3258e
Added graph functions to compute analytical delay based on graph path.
2019-08-07 01:50:48 -07:00
Matt Guthaus
ae46a464b9
Undo delay changes. Fix bus order for DRC.
2019-08-06 17:17:59 -07:00
Hunter Nichols
2ce7323838
Removed all unused analytical delay functions.
2019-08-06 17:09:25 -07:00
Matt Guthaus
a2f81aeae4
Combine rbl_wl and wl_en. Size p_en_bar slower than wl_en.
2019-08-06 16:29:07 -07:00
Hunter Nichols
2efc0a3983
Merge branch 'dev' into analytical_cleanup
2019-08-06 14:51:30 -07:00
Matt Guthaus
ad35f8745e
Add direction to pins of all modules
2019-08-06 14:14:09 -07:00
Matt Guthaus
4d11de64ac
Additional debug. Smaller psram func tests.
2019-08-05 13:53:14 -07:00
jsowash
a4a72a9639
Merge branch 'dev' into add_wmask
2019-08-01 13:49:52 -07:00
Matt Guthaus
7ba97ee0ba
Fix missing port in control logic
2019-08-01 12:42:51 -07:00
Matt Guthaus
8771ffbfed
Fix bug to add all p_en_bar to banks
2019-08-01 12:28:21 -07:00
Matt Guthaus
ff64e7663e
Add p_en_bar to write ports as well
2019-08-01 12:21:43 -07:00
jsowash
9819b5356e
Merge branch 'dev' into add_wmask
2019-07-31 14:43:48 -07:00
jsowash
774f08da51
Added layout pins to and test for write_mask_and_array.
2019-07-31 14:11:37 -07:00
Hunter Nichols
24b1fa38a0
Added graph fixes to handmade multiport cells.
2019-07-30 20:31:32 -07:00
Matt Guthaus
98878a0a27
Conditionally path exclude
2019-07-27 12:14:00 -07:00
Matt Guthaus
5cb320a4ef
Fix wrong pin error.
2019-07-27 11:44:35 -07:00
Matt Guthaus
468a759d1e
Fixed control problems (probably)
...
Extended functional tests for 15 cycles (slow, but more checking)
Fixed s_en to be gated AFTER the RBL.
2019-07-27 11:09:08 -07:00
Matt Guthaus
52029d8e48
Fix incorrect port_data BL pin name.
2019-07-27 06:11:45 -07:00
Matt Guthaus
179efe4d04
Fix bitline names in merge error
2019-07-26 22:03:50 -07:00
Matt Guthaus
e750ef22f5
Undo some control logic changes.
2019-07-26 21:41:27 -07:00
Matt Guthaus
0c5cd2ced9
Merge branch 'dev' into rbl_revamp
2019-07-26 18:01:43 -07:00
Matt Guthaus
7eea63116f
Control logic LVS clean
2019-07-26 15:50:10 -07:00
Matt Guthaus
dce852d945
Restructure control logic for improved drive and timing.
2019-07-26 14:54:55 -07:00
Hunter Nichols
dc46d07ca3
Removed unused code for input loads
2019-07-26 14:20:47 -07:00
Matt Guthaus
c8c4d05bba
Fix some regression fails.
2019-07-25 14:18:08 -07:00
Matt Guthaus
0bb41b8a5d
Fix duplicate paths for timing checks
2019-07-25 13:25:58 -07:00
jsowash
61ba23706c
Removed comments for rw pen() and added a wmask func test.
2019-07-25 12:24:27 -07:00
Matt Guthaus
80df996720
Modify control logic for new RBL.
2019-07-25 11:19:16 -07:00
Matt Guthaus
5452ed69e7
Always have a precharge.
2019-07-25 10:31:39 -07:00
Matt Guthaus
fb60b51c72
Add check bits. Clean up logic. Move read/write bit check to next cycle.
2019-07-24 16:57:04 -07:00
jsowash
c8bbee884b
Removed layout related rw port's special pen.
2019-07-24 16:01:12 -07:00
jsowash
3bcb79d9d5
Removed code for RW ports to not precharge on writes. Previously, the entire bitline was written where part was an old value and part was the wmask value.
2019-07-24 15:01:20 -07:00
Matt Guthaus
3df8abd38c
Clean up. Split class into own file.
2019-07-24 08:15:10 -07:00
Matt Guthaus
07401fc6ea
Make control bus routing offset consistent
2019-07-23 09:39:28 -07:00
jsowash
2b29e505e0
Reversed order of wmask bits in functional.py since python lists go left to right. Made # of en bits equal to num_masks.
2019-07-22 12:44:35 -07:00
jsowash
0a5461201a
Change num_wmask to num_wmasks and write_size = None not word_size if wmask not used.
2019-07-19 14:58:37 -07:00
jsowash
45cb159d7f
Connected wmask in the spice netlist.
2019-07-19 13:17:55 -07:00
jsowash
082decba18
Temporarily made the functional tests write/read only all 0's or 1's
2019-07-18 15:26:38 -07:00
jsowash
5f37067da7
Turned write_mask_array into write_mask_and_array with flip flops from sram_base
2019-07-18 15:24:41 -07:00
Matt Guthaus
864639d96e
Remove old replica bitline.
2019-07-18 15:19:40 -07:00
jsowash
720739a192
Skipping test 22_sram_wmask_func_test and changed a typo of write_driver to write_mask
2019-07-17 11:04:17 -07:00
Hunter Nichols
9696401f34
Added graph exclusions to replica column to reduce s_en paths.
2019-07-16 23:47:34 -07:00
mrg
8ca656959b
Change direction of RBL bitline pins
2019-07-16 15:09:46 -07:00
mrg
b546ecce2c
Check 2 ports only for layout.
2019-07-16 14:11:54 -07:00
mrg
12fa36317e
Cleanup unit test. Fix s_en control bug for r-only.
2019-07-16 13:51:31 -07:00
mrg
2f55911604
Simplify column decoder placement.
2019-07-16 11:55:25 -07:00
mrg
bea07c2319
SRAM with RBL integration in array.
2019-07-16 09:04:58 -07:00
jsowash
ea2f786dcf
Redefined write_size inrecompute_sizes() to take the new word_size()
2019-07-15 14:41:26 -07:00
mrg
e550d6ff10
Port name maps between bank and replica array working.
2019-07-15 11:29:29 -07:00
mrg
2271946eef
Fix replica array pin names
2019-07-12 14:39:56 -07:00
mrg
d72691f6c2
Make mirror optional argument
2019-07-12 11:14:47 -07:00