| ### SVRF statments for opensta friendly spef |
| |
| ``` |
| LAYOUT CASE YES |
| LAYOUT PRESERVE NET CASE YES |
| SOURCE CASE YES |
| |
| PEX REDUCE ANALOG NO |
| PEX NETLIST UPPERCASE KEYWORDS NO |
| PEX NETLIST VIRTUAL CONNECT NO |
| PEX NETLIST NOXREF NET NAMES YES |
| PEX NETLIST MUTUAL RESISTANCE YES |
| PEX NETLIST ESCAPE CHARACTERS "!@#$%^&*()+{}|\:;’‘<>?/.,-=[]" |
| PEX EXTRACT EXCLUDE LAYOUTNAMES RECURSIVE "?VGND?" |
| PEX EXTRACT EXCLUDE LAYOUTNAMES RECURSIVE "?VPWR?" |
| PEX EXTRACT EXCLUDE LAYOUTNAMES RECURSIVE "?VPB?" |
| PEX EXTRACT EXCLUDE LAYOUTNAMES RECURSIVE "?VNB?" |
| PEX NETLIST "$JOB_HOME/spef/$PEX_NETLIST" SPEF PRIMETIME SOURCENAMES |
| ``` |
| |
| ### Notes |
| |
| - avoid gds views in caravel. most of the time they are outdated. use magic instead |
| - `SOURCE CASE YES` is needed to preserve the case of source nets |
| - Some escaped square brackets cause issues with opensta: |
| - this casues an issue: |
| > div\[4\] |
| - also this causes an issue: |
| > ringosc.dstage[3].id.delayen0 |
| |
| to be investigated.. |
| |
| - turns out the in the verilog netlist we have things like |
| > \ringosc.dstage[3].id.delayen0 |
| |
| this means that the everything following the backslash is escaped. |
| and in turn the square brackets don't actually refer to buses. |
| everything following the backslash is escaped into, let's call it static variable name |
| |
| calibre verilog to spice tool, `vlog2lvs`, doesn't escape special characters in these static variable names |
| escaping characters happen in the end during `calibre -xrc -fmt` step |
| if we told calibre to escape square brackets, actual buses would be esacped, which isn't something we desire |
| the workaround is as follows: |
| - set bus delimeter to `<>` using `vlog2lvs -a "<>"` |
| - replace square brackets in the spice netlist with backlash-escaped square brackets |
| - replace bus delimeter `<>` with non-backslash-escaped square brackets |
| |
| - we don't need power connections so we exclude them |
| - some of the above statments may not be needed. the inclusion of every single statment is not fully tested. |
| |
| - `LAYOUT RENAME TEXT "/div/RENAMED/"` replaces div with RENAMED |
| - now we need to find the equivelent source statment |
| |
| - `LVS BOX sky130_fd_sc_hvl__lsbufhv2lv_1 SOURCE` eliminates |
| |
| ``` |
| 1 M0(3.975,0.755) MN(nshort) MI29 MN(nfet_01v8) |
| bad component subtype |
| ``` |
| |
| in `mgmt_protect_hv` |
| |
| - substrate cut layer reported in gpio_control_block `Dpar(reslocsub)` |
| - use `LVS FILTER` to eliminate |
| |
| - `mgmt_protect_hv` verilog (source) view is missing three fill cells |
| |
| - `mgmt_protect_hv` met2 and met3 wrong pin layers. They are swapped with pin label? |
| |
| - `gpio_control_block` manually add substrateCut layer to separate gpio_logic_high |
| |
| - in `caravel` top level ports `flash_clk_ieb_core` and `flash_csb_ieb_core` are connected to nets which aren't connected to anything so remove them from `chip_io` verilog model and in the instance in `caravel` |
| |