Jordan
06/11/2024, 7:32 PMMitch Bailey
06/12/2024, 1:03 AMcaravel_user_project/Makefile
includes the lvs-<block>
target where <block>
is a subdirectory of lvs
and contains an lvs_config.json
file. (ie. lvs/<block>/lvs_config.json
).
Unfortunately, the caravel_user_project_analog/Makefile
may not have this target (the analog version of the Makefile
may be out-of-date).
The lvs system using lvs_config.json
is hierarchical. For example, if you had digital blocks digital1
and digital2
each with lvs_config.json
files, you could include these in your user_analog_project_wrapper/lvs_config.json
file like this:
"INCLUDE_CONFIGS": [
"$UPRJ_ROOT/lvs/digital1/lvs_config.json",
"$UPRJ_ROOT/lvs/digital2/lvs_config.json"
]
And it should pull all the relevant information.
There are some things that you need to be careful of:
• In xschem, create a symbol for each digital block with the pins in the same order as the verilog port order. You can use the sim_pinorder
(I think) property to order the pins, but I find it easiest to open the text file and put them in order there.
• Set the symbol type=primitive
property (not type=subcircuit
).
• Mixed signal LVS is case insensitive, so be sure your verilog doesn’t use names that only differ in case.
• Analog layouts may require selective flattening during LVS. This can be specified in the lvs_config.json
file, so you shouldn’t need any preprocessing.
I’d be happy to help with any questions.Jordan
06/12/2024, 12:40 PMMitch Bailey
06/12/2024, 1:15 PM