mattvenn / multi_project_tools

tools to help make the most of the limited space we have on the Google sponsored Efabless shuttles
https://www.zerotoasiccourse.com
Apache License 2.0
34 stars 14 forks source link

Definable interfaces #14

Closed zbigos closed 2 years ago

zbigos commented 2 years ago

this PR changes the way that multi project tools handles interfaces.

Features

  1. interfaces are now defined in projects.yaml. Also moved some configuration in there
  2. entire code generation has been moved into codegen/
    • allocator.py provides a pluggable way to change the allocation, currently the legacy method has been implemented
    • in future this will be expanded to read/write files for the PBIL generator
    • caravel_codegen.py now contains the entire verilog-generating code. Caravel iface has been moved to this catalog as well

Testing

  1. pull repos
  2. run using ./multi_tool.py --copy-gds --create-openlane-config --fill 16 --force-delete
  3. go to caravel project, make user_project_wrapper this will most likely fail saying wrapped_frequency_counter' referenced in moduleuser_project_wrapper' in cell `wrapped_frequency_counter_15' does not have a port named 'vssd1'.

this is because the macros we are using have ifdefs that disable power. For now manually go to mpw3_repos and edit wrapper.v files to always include vccd1 and vssd1. repeat 2 + 3

inspect generated files macros: image

includes: image

wrapper: image

hardened design can be inspected by klayout openlane/user_project_wrapper/runs/user_project_wrapper/results/routing/23-user_project_wrapper.def

image