You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: checks/be_checks/README.md
+20-3Lines changed: 20 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
# Backend Checks
2
2
3
-
In your `caravel_user_project`or `caravel_user_project_analog` directory,
4
-
create an LVS configuration file based on [digital user project wrapper lvs configuration](https://github.com/efabless/caravel_user_project/blob/main/lvs/user_project_wrapper/lvs_config.json) or [analog user project configuration](https://github.com/efabless/caravel_user_project_analog/blob/main/lvs/user_analog_project_wrapper/lvs_config.json).
3
+
In your `caravel_user_project`, `caravel_user_project_analog`, `openframe_user_project`, or `caravel_user_mini` directory,
4
+
create an LVS configuration file based on [digital user project wrapper lvs configuration](https://github.com/efabless/caravel_user_project/blob/main/lvs/user_project_wrapper/lvs_config.json), [analog user project configuration](https://github.com/efabless/caravel_user_project_analog/blob/main/lvs/user_analog_project_wrapper/lvs_config.json), [openframe user project configuration](https://github.com/efabless/openframe_user_project/blob/main/lvs/openframe_project_wrapper/lvs_config.json), or [digital mini user project configuration](https://github.com/efabless/caravel_user_mini/blob/main/lvs/user_project_wrapper_mini4/lvs_config.json).
5
5
6
6
`mpw_precheck` expects this file to be in `lvs/<cellname>/lvs_config.json`.
7
7
@@ -30,7 +30,7 @@ Required variables:
30
30
31
31
`LVS_SPICE_FILES` : A list of spice files.
32
32
33
-
`LVS_VERILOG_FILES` : A list of verilog files. **Note: files with child modules should be listed before parent modules.**
33
+
`LVS_VERILOG_FILES` : A list of verilog files. **Note: files with child modules may need to be listed before parent modules.**
34
34
35
35
Optional variable lists: `*` may be used as a wild card character.
36
36
@@ -45,6 +45,21 @@ Optional variable lists: `*` may be used as a wild card character.
45
45
Using this variable can prevent unwanted flattening of empty cells.
46
46
This has no effect of cells that are flattened because of a small number of layers.
47
47
Internal connectivity is maintained (at least at the top level).
48
+
Cells that actually contain devices or hierarchies may also be abstracted.
49
+
If actual abstraction processing was done on a cell, a lef file will be created in the extraction diretory.
50
+
Be warned that this may take up over an hour for cells with many 100K subcells.
51
+
Also be aware that abstracting a cell will connect all ports by name
52
+
even if they are not internally connected.
53
+
54
+
`EXTRACT_CREATE_SUBCUT` : List of cells to surround with the substrate isolation layer.
55
+
The substrate isolation layer is used during LVS to virtually devide the substrate into regions
56
+
that may be connected to different nets (ex. `vssa1` and `vssd1`).
57
+
Without this layer all substrate connections are shorted and LVS is not possible.
58
+
The isolation layer must not overlap any deep nwell or other isolation layers at sub-hierarchies.
59
+
Specifing the cell here results in an isolation area excluding deep nwell and pre-exisiting isolation layers.
60
+
This is a temporary layer but the actual shape is stored in a gds file in the extraction directory.
61
+
WARNING: This should only be used with ground nets. It allows psubstrate to be
62
+
connected to any single net within the region, including power!
48
63
49
64
### LVS Options
50
65
`LVS_FLATTEN` : List of cells to flatten before comparing,
@@ -111,6 +126,8 @@ Optional variable lists: `*` may be used as a wild card character.
111
126
- Rerunning with --noextract is faster because previous extraction result will be used.
112
127
- Add cells to the `EXTRACT_FLATGLOB` to flatten before extraction.
113
128
- Cells in `EXTRACT_ABSTRACT` will be extracted (top level?), but netlisted as black-boxes.
129
+
- Add cells to the `EXTRACT_CREATE_SUBCUT` to isolate the psubstrate.
130
+
Use this when you have blocks with different substrate connections.
114
131
-`LVS_FLATTEN` is a list of cell names to be flattened during LVS.
115
132
Flattening cells with unmatched ports may resolve proxy port errors.
116
133
- netgen normally flattens unmatched cells which can lead to confusing results at higher levels.
0 commit comments