Changes that correct mgmt_core references and user_id_programming generation. (#73)

* Create lvs-cvc.rst

* user_project_analog_wrapper -> user_analog_project_wrapper

* Added table

* Update lvs-cvc.rst

* Create lvs_cvc_mpw4.rst

Initial steps for LVS and CVC-RV for MPW-4 slot-002

* Update lvs_cvc_mpw4.rst

diode and short errors

* daily progress

`simple_por` changes to `caravel.v`

* Update lvs_cvc_mpw4.rst

* Remove old local documentation.

* Changes that correct gpio_default_block, user_id_programming, and mgmt_core references.

mgmt_core_wrapper
  Use absolute path instead of relative path.

user_id_programming
  Remove GDS references as GDS is no longer modified.
  Corrected string concatenation.
  Corrected mag data replacement.
  Corrected verilog data replacement.

gpio_default_block
  Rename instances for gpio_default_blocks 0-4 in caravel.mag and caravan.mag.
  Change replace range in gen_gpio_defaults.py to handle gpio_default_blocks 0-4.

* Revert changes related to gpio_default_block.

* Changed mgmt_core_wrapper absolute path from UPRJ_ROOT to MCW_ROOT.

* Corrected MCW_ROOT path (includes mgmt_core_wrapper)
This commit is contained in:
Mitch Bailey 2022-04-19 12:24:11 +09:00 committed by GitHub
parent ae6bfcc107
commit 6f99301588
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 17 deletions

View File

@ -122,7 +122,7 @@ __ship:
property GDS_START 0; \
load mgmt_core_wrapper; \
property LEFview true; \
property GDS_FILE ../mgmt_core_wrapper/gds/mgmt_core_wrapper.gds; \
property GDS_FILE $(MCW_ROOT)/gds/mgmt_core_wrapper.gds; \
property GDS_START 0; \
load $(UPRJ_ROOT)/mag/user_id_programming; \
load $(UPRJ_ROOT)/mag/user_id_textblock; \
@ -174,7 +174,7 @@ __truck:
property GDS_START 0; \
load mgmt_core_wrapper; \
property LEFview true; \
property GDS_FILE ../mgmt_core_wrapper/gds/mgmt_core_wrapper.gds; \
property GDS_FILE $(MCW_ROOT)/gds/mgmt_core_wrapper.gds; \
property GDS_START 0; \
load $(UPRJ_ROOT)/mag/user_id_programming; \
load $(UPRJ_ROOT)/mag/user_id_textblock; \

View File

@ -152,7 +152,7 @@ Quick Start for User Projects
Your area is the full user space, so feel free to add your
project there or create a different macro and harden it separately then
insert it into the ``user_project_wrapper`` for digital projects or insert it
into ``user_project_analog_wrapper`` for analog projects.
into ``user_analog_project_wrapper`` for analog projects.
.. _digital-user-project:

View File

@ -18,7 +18,7 @@
#
# set_user_id.py ---
#
# Manipulate the magic database, GDS, and verilog source files for the
# Manipulate the magic database and verilog source files for the
# user_id_programming block to set the user ID number.
#
# The user ID number is a 32-bit value that is passed to this routine
@ -197,10 +197,6 @@ if __name__ == '__main__':
print('Step 1: Modify layout of the user_id_programming subcell')
# Bytes leading up to via position are:
viarec = "00 06 0d 02 00 43 00 06 0e 02 00 2c 00 2c 10 03 "
viabytes = bytes.fromhex(viarec)
# Read the ID programming layout. If a backup was made of the
# zero-value program, then use it.
@ -237,7 +233,7 @@ if __name__ == '__main__':
xuri = int(round(xurum * 200))
yuri = int(round(yurum * 200))
viaoldposdata = 'rect ' + xlli + ' ' + ylli + ' ' + xuri + ' ' + yuri
viaoldposdata = f"rect {xlli} {ylli} {xuri} {yuri}"
# For "one" bits, the X position is moved 0.92 microns to the left
newxllum = xllum - 0.92
@ -247,7 +243,7 @@ if __name__ == '__main__':
newxlli = int(round(newxllum * 200))
newxuri = int(round(newxurum * 200))
vianewposdata = 'rect ' + newxlli + ' ' + ylli + ' ' + newxuri + ' ' + yuri
vianewposdata = f"rect {newxlli} {ylli} {newxuri} {yuri}"
# Diagnostic
if debugmode:
@ -261,7 +257,7 @@ if __name__ == '__main__':
print('Error: via not found for bit position ' + str(i))
errors += 1
else:
magdata == magdata.replace(viaoldposdata, vianewposdata)
magdata = magdata.replace(viaoldposdata, vianewposdata)
if errors == 0:
# Keep a copy of the original
@ -313,17 +309,17 @@ if __name__ == '__main__':
if user_id_bits[i] == '0':
continue
outdata = vdata.replace('high[' + str(i) + ']', 'XXXX')
outdata = outdata.replace('low[' + str(i) + ']', 'high[' + str(i) + ']')
outdata = outdata.replace('XXXX', 'low[' + str(i) + ']')
outdata = outdata.replace('LO(mask_rev[' + str(i) + ']',
vdata = vdata.replace('high[' + str(i) + ']', 'XXXX')
vdata = vdata.replace('low[' + str(i) + ']', 'high[' + str(i) + ']')
vdata = vdata.replace('XXXX', 'low[' + str(i) + ']')
vdata = vdata.replace('LO(mask_rev[' + str(i) + ']',
'HI(mask_rev[' + str(i) + ']')
outdata = outdata.replace('HI(\\user_proj_id_low', 'LO(\\user_proj_id_low')
vdata = vdata.replace('HI(\\user_proj_id_low', 'LO(\\user_proj_id_low')
changed = True
if changed:
with open(vpath + '/gl/user_id_programming.v', 'w') as ofile:
ofile.write(outdata)
ofile.write(vdata)
print('Done!')
else:
print('Error: No substitutions done on verilog/gl/user_id_programming.v.')