https://open-source-silicon.dev logo
#openlane
Title
# openlane
m

Matt Venn

12/02/2020, 11:56 AM
I'm trying to harden user_project_wrapper to include my module and 2 previously hardened macros. config is here: https://github.com/mattvenn/multi-project-harness/tree/matt-openlane-config/openlane/user_project_wrapper
t

tnt

12/02/2020, 11:58 AM
That's because it's probably not. The default
interactive.tcl
(and really the whole stuff in
user_project_wrapper
) is setup only to wire things, and not to synthesize any logic.
m

Matt Venn

12/02/2020, 12:00 PM
t

tnt

12/02/2020, 12:04 PM
The way I see it, you have 2 options : • Come up with a custom
interactive.tcl
scripts that combines the normal flow ( from openlane's
flow.tcl
) add adds the custom steps needed to be a top level module for the caravel: • Put all your custom muxing logic into another macro which has exposed external ports to connect to 'upstream' and to each of your subprojects independently, harden that separately like you hardened the subprojects and then in the
user_project_wrapper
you only have wiring.
m

Matt Venn

12/02/2020, 12:05 PM
how about this 3rd option: harden the muxing logic as well as all the blackboxed macros into one big macro
then wire that into user_project_wrapper
I don't want to do #1 because it feels like a world of pain.
t

tnt

12/02/2020, 12:05 PM
Sure that works too, I thought you wanted to keep the subproject separate.
m

Matt Venn

12/02/2020, 12:06 PM
well they will still be separated pre-hardened macros
but I guess swimming in a sea of decap
I was trying to avoid #2 because it involves a lot of hacking on verilog that I had hoped was finished
but maybe it's the best option
t

tnt

12/02/2020, 12:07 PM
Oh, you want to keep them as macro inside ... huh, yeah it's possible too but beware of power grid.
the user project wrapper layer will not "see" the grid/pads from your inside macro and so won't connect to them.
you can probably do something similar to what I did to power the SRAMs: • Have the inside macro not use
met5
at all and export their
met4
straps as power pads in the LEF • Have your muxing macro generate
met5
straps over the whole thing and create proper vias to the exposed `met4`straps from the subblocks • Have those
met5
straps match the top level pitch of 180, expose them all as pads and have the LEF a bit and then align it properly in the wrapper to match the top level power grid.
m

Matt Venn

12/02/2020, 12:12 PM
dang, now #2 sounds easier