JONATHAN ARMANDO PATIÑO
03/25/2024, 12:44 PMMitch Bailey
03/25/2024, 1:10 PMuser_project_wrapper
and user_analog_project_wrapper
have different ports. Can you find a user_analog_project_wrapper_empty.gds
file that contains the ports?
You should be able to run make user_analog_project_wrapper
, but there may still be a problem with caravel_user_project_analog/openlane/Makefile
. It should be the same as caravel_user_project/openlane/Makefile
. If it isn’t, I think you can just copy it.
If your analog blocks are hard macros, you can use openlane to route them just like digital blocks. You may want to edit the wires manually afterwards because openlane generally routes with (close to) minimum width wires.JONATHAN ARMANDO PATIÑO
03/26/2024, 9:10 AMMitch Bailey
03/26/2024, 1:41 PMpin_order.cfg
is needed for user_analog_project_wrapper
(or user_project_wrapper
). The pin positions come from the def file.
There should be something like
"FP_DEF_TEMPLATE": "dir::fixed_dont_change/user_project_wrapper.def",
but with the analog version.
Looks like it’s available in the caravel repo in the def directory.JONATHAN ARMANDO PATIÑO
03/26/2024, 7:54 PM/logs/floorplan/4-apply_def_template.log"
[ERROR]: Exit code: 1
[ERROR]: Last 10 lines:
Wrote pin wbs_sel_i[3] at layer met2 at (126729, -4000, 127289, 2400)...
[ERROR]: Pin wbs_sel_i[3]'s coordinate 126729 does not lie on the manufacturing grid.
[ERROR]: Pin wbs_sel_i[3]'s coordinate 127289 does not lie on the manufacturing grid.
Wrote pin wbs_stb_i at layer met2 at (26259, -4000, 26819, 2400)...
[ERROR]: Pin wbs_stb_i's coordinate 26259 does not lie on the manufacturing grid.
[ERROR]: Pin wbs_stb_i's coordinate 26819 does not lie on the manufacturing grid.
Wrote pin wbs_we_i at layer met2 at (32169, -4000, 32729, 2400)...
[ERROR]: Pin wbs_we_i's coordinate 32169 does not lie on the manufacturing grid.
[ERROR]: Pin wbs_we_i's coordinate 32729 does not lie on the manufacturing grid.
child process exited abnormally
[ERROR]: Step 4 (floorplan) failed with error:
-code 1 -level 0 -errorcode NONE -errorinfo {
while executing
"throw_error"
(procedure "try_exec" line 17)
invoked from within
"try_exec $::env(OPENROAD_BIN) -exit -no_init -python {*}$args --input-lef $::env(MERGED_LEF) --output-def $arg_values(-output_def) --output $arg_va..."
(procedure "manipulate_layout" line 19)
invoked from within
"manipulate_layout $::env(SCRIPTS_DIR)/odbpy/apply_def_template.py -indexed_log $log -output_def $::env(CURRENT_DEF) --def-template $::env(FP_DEF_TEMPL..."
(procedure "apply_def_template" line 7)
invoked from within
"apply_def_template"
(procedure "run_floorplan" line 38)
invoked from within
"run_floorplan"} -errorline 1
Mitch Bailey
03/27/2024, 3:43 AMuser_analog_project_wrapper.def
file in the repo has several hundred pins that are a little off. The def file is supposed to ensure that the ports match to the caravel framework.
I made a patch that should allow you to run openlane. Can you download and try this file? If it passes openlane and precheck, I create a pull request.
Thanks for reporting the problem.JONATHAN ARMANDO PATIÑO
03/27/2024, 11:20 AM[STEP 29]
[INFO]: Running LVS (log: ../home/jona/Desktop/prueba_project/prueba_caravan_openlane/caravel_user_project_analog/openlane/user_analog_project_wrapper/runs/24_03_27_12_01/logs/signoff/29-lvs.lef.log)...
[ERROR]: There are LVS errors in the design: See '../home/jona/Desktop/prueba_project/prueba_caravan_openlane/caravel_user_project_analog/openlane/user_analog_project_wrapper/runs/24_03_27_12_01/reports/signoff/29-user_analog_project_wrapper.lvs.rpt' for a summary and '../home/jona/Desktop/prueba_project/prueba_caravan_openlane/caravel_user_project_analog/openlane/user_analog_project_wrapper/runs/24_03_27_12_01/logs/signoff/29-lvs.lef.log' for details.
[ERROR]: Step 29 (lvs) failed with error:
-code 1 -level 0 -errorcode NONE -errorinfo {
while executing
"throw_error"
(procedure "quit_on_lvs_error" line 13)
invoked from within
"quit_on_lvs_error -rpt $count_lvs_rpt -log $log"
(procedure "run_lvs" line 76)
invoked from within
"run_lvs"
(procedure "run_lvs_step" line 10)
invoked from within
"run_lvs_step"} -errorline 1
[INFO]: Saving current set of views in '../home/jona/Desktop/prueba_project/prueba_caravan_openlane/caravel_user_project_analog/openlane/user_analog_project_wrapper/runs/24_03_27_12_01/results/final'...
[INFO]: Generating final set of reports...
[INFO]: Created manufacturability report at '../home/jona/Desktop/prueba_project/prueba_caravan_openlane/caravel_user_project_analog/openlane/user_analog_project_wrapper/runs/24_03_27_12_01/reports/manufacturability.rpt'.
[INFO]: Created metrics report at '../home/jona/Desktop/prueba_project/prueba_caravan_openlane/caravel_user_project_analog/openlane/user_analog_project_wrapper/runs/24_03_27_12_01/reports/metrics.csv'.
[INFO]: Saving runtime environment...
[ERROR]: Flow failed.
[INFO]: The failure may have been because of the following warnings:
[WARNING]: Module sky130_ef_sc_hd__decap_12 blackboxed during sta
[WARNING]: Module sky130_fd_sc_hd__fill_2 blackboxed during sta
[WARNING]: Module sky130_fd_sc_hd__fill_1 blackboxed during sta
[WARNING]: Module sky130_fd_sc_hd__tapvpwrvgnd_1 blackboxed during sta
[WARNING]: VSRC_LOC_FILES is not defined. The IR drop analysis will run, but the values may be inaccurate.
Mitch Bailey
03/27/2024, 6:26 PMlogs/signoff/29-lvs.lef.log
and reports/signoff/29-user_analog_project_wrapper.lvs.rpt
?JONATHAN ARMANDO PATIÑO
03/27/2024, 8:35 PMlogs/signoff/29-lvs.lef.log
is the one above, but it's attached here again, and I also attached the reports/signoff/29-user_analog_project_wrapper.lvs.rpt
:Mitch Bailey
03/28/2024, 12:21 AMlogs/signoff/29-user_analog_project_wrapper.lef.lvs.log
, too?
Incidentally, your netgen may be a little old. I’m currently using 1.5.272
- you have 1.5.255
. There were some changes dealing with shorted top level pins.JONATHAN ARMANDO PATIÑO
03/28/2024, 1:10 AMMitch Bailey
03/28/2024, 3:02 AMuser_proj_example
is using io_in[24:14]
etc. while the verilog has io_in[10:0]
etc.JONATHAN ARMANDO PATIÑO
03/29/2024, 3:39 PMMitch Bailey
03/29/2024, 5:14 PMDefault
just means you need to change your README.md
file so that it’s more than 75% different than the default.
Consistency
is a strange check for analog designs. I think you can eliminate it my copying the extracted netlist precheck_results/28_MAR_2024___23_23_11/tmp/ext/user_analog_project_wrapper.gds.spice
or precheck_results/28_MAR_2024___23_23_11/tmp/spice_fix/user_analog_project_wrapper.spice
to netgen/user_analog_project_wrapper.spice
.
XOR
is a problem and may be due to the adjusted def file. You can open the result gds file precheck_results/28_MAR_2024___23_23_11/outputs/user_analog_project_wrapper.xor.gds
in klayout (or there shoulld be an xml marker database) and see where the layers mismatch. If it is caused by the pin adjustments, it might be easier to open the layout in klayout, make sure the wires line up with the pins (don’t move the pins) and save the gds. You probably shouldn’t do this in magic.
LVS
probably needs more information. Can you share precheck_results/28_MAR_2024___23_23_11/tmp/lvs.report
? One thing you’ll most certainly need is the gate level verilog generated for user_proj_example
. Be sure to add that to the lvs/user_project_wrapper/lvs_config.json
file in the LVS_VERILOG_FILES
section.JONATHAN ARMANDO PATIÑO
03/29/2024, 8:43 PMMitch Bailey
03/29/2024, 11:46 PMlvs/user_analog_project_wrapper/lvs_config.json
file uses a top level netlist created from xschem and located in xschem/user_analog_project_wrapper.spice
.
How did you run openlane on user_analog_project_wrapper
or did you manually integrate user_proj_example
?
If you ran openlane, then you can just add verilog/gl/user_proj_example.v
and verilog/gl/user_project_wrapper.v
in the LVS_VERILOG_FILES
section of lvs/user_analog_project_wrapper/lvs_config.json
.
If you manually integrated, you can use xschem to place a symbol for user_proj_example
in the user_analog_project_wrapper
schematic and connect it along with any other cells at the top level.JONATHAN ARMANDO PATIÑO
03/30/2024, 12:10 AMMitch Bailey
03/30/2024, 12:20 AMuser_analog_project_wrapper
and then want to manually add analog blocks and change the wiring later?
Or did you run openlane on user_proj_example
and plan to do the top user_analog_project_wrapper
all by hand?JONATHAN ARMANDO PATIÑO
03/30/2024, 12:56 AMMitch Bailey
03/30/2024, 1:25 AMuser_analog_project_wrapper
verilog output from openlane, my suggestion is to
1. copy verilog/gl/user_analog_project_wrapper.v
to something like verllog/gl/user_analog_project_wrapper+macro.v
.
2. create the spice for the analog blocks that you want to add from xschem.
3. add the connections to these blocks manually in user_analog_project_wrapper+macro.v
but don’t create verilog stubs.
4. in your lvs_config.json
file, add the analog spice files to the LVS_SPICE_FILES
and the verilog files (user_proj_example.v
and user_analog_project_wrapper+macro.v
) to LVS_VERILOG_FILES
.
5. let me know if it works 😬JONATHAN ARMANDO PATIÑO
04/10/2024, 12:31 PMMitch Bailey
04/10/2024, 1:03 PM-hide
and -pinonly
with your lef write
command if your macro is large.