blob: c5f9399b272cd05a3cdfa42d281cea44d3aaab68 [file] [log] [blame]
So far:
1. under netgen/, spice created from Magic using ext2spice
2. under xschem/, spice created from xschem with special LVS toggle
Top level LVS check:
1. Generate spice from layout:
a. In Magic, run the following:
extract all
ext2spice lvs
set filename [cellname list window]
set spicefilename [lindex [split $filename .] 0]
ext2spice -o "./lvs/$spicefilename.spice"
b. This generates a user_analog_project_wrapper.spice file. I moved it under /netgen/ folder
2. Generate spice from schematic:
a. In xschem, open user_analog_project_wrapper.sch (top level schematic), enable "LVS netlist: Top level is a .subckt", and press "netlist" to generate netlist
b. A bunch of open/undriven net warnings show up. This is expected because we didn't use every pin resource. Here are the warnings:
-----------/home/zexious/project/sloci_caravel/xschem/user_analog_project_wrapper.sch
shorted: gpio_noesd[17:0] - gpio_analog[17:0]
open net: la_data_in<50>
open net: la_data_in<51>
open net: la_data_in<52>
open net: la_data_in<53>
open net: la_data_in<54>
open net: la_data_in<55>
open net: la_data_in<56>
open net: la_data_in<57>
open net: la_data_in<58>
open net: la_data_in<59>
open net: gpio_noesd<10>
open net: gpio_noesd<11>
open net: wbs_dat_i<0>
open net: user_clock2
open net: gpio_noesd<12>
open net: wbs_dat_i<1>
open net: gpio_noesd<13>
open net: wbs_dat_i<2>
open net: gpio_noesd<14>
open net: wbs_dat_i<3>
open net: gpio_noesd<15>
open net: wbs_dat_i<4>
open net: gpio_noesd<16>
open net: wbs_dat_i<5>
open net: gpio_noesd<17>
open net: wbs_dat_i<6>
open net: wbs_dat_i<7>
open net: wbs_dat_i<8>
open net: wbs_dat_i<9>
open net: gpio_noesd<0>
open net: gpio_noesd<1>
open net: gpio_noesd<2>
open net: gpio_noesd<3>
open net: gpio_noesd<4>
open net: gpio_noesd<5>
open net: gpio_noesd<6>
open net: gpio_noesd<7>
open net: gpio_noesd<8>
open net: gpio_noesd<9>
open net: la_data_in<60>
open net: la_data_in<61>
open net: la_data_in<62>
open net: la_data_in<63>
open net: la_data_in<64>
open net: la_data_in<65>
open net: la_data_in<66>
open net: la_data_in<67>
open net: la_data_in<68>
open net: la_data_in<69>
open net: la_data_in<70>
open net: la_data_in<71>
open net: la_data_in<72>
open net: la_data_in<73>
open net: la_data_in<74>
open net: la_data_in<75>
open net: la_data_in<76>
open net: #net11
open net: la_data_in<77>
open net: la_data_in<78>
open net: la_data_in<79>
open net: vssd1
open net: vssd2
open net: la_data_in<80>
open net: la_data_in<81>
open net: la_data_in<82>
open net: la_data_in<83>
open net: la_data_in<84>
open net: la_data_in<85>
open net: la_data_in<86>
open net: la_data_in<87>
open net: la_data_in<88>
open net: la_data_in<89>
open net: wbs_stb_i
open net: la_data_in<90>
open net: la_data_in<91>
open net: io_in_3v3<10>
open net: la_data_in<92>
open net: io_in_3v3<11>
open net: la_data_in<93>
open net: io_in_3v3<12>
open net: la_data_in<94>
open net: io_in_3v3<13>
open net: la_data_in<95>
open net: io_in_3v3<14>
open net: la_data_in<96>
open net: io_in_3v3<15>
open net: la_data_in<97>
open net: io_in_3v3<16>
open net: la_data_in<98>
open net: io_in_3v3<17>
open net: la_data_in<99>
open net: io_in_3v3<18>
open net: gpio_analog<0>
open net: io_in_3v3<19>
open net: gpio_analog<1>
open net: gpio_analog<2>
open net: gpio_analog<3>
open net: gpio_analog<4>
open net: gpio_analog<5>
open net: gpio_analog<6>
open net: gpio_analog<8>
open net: gpio_analog<9>
undriven node: wbs_ack_o
open net: io_in_3v3<20>
open net: io_in_3v3<21>
open net: io_in_3v3<22>
open net: io_in_3v3<23>
open net: io_in_3v3<24>
open net: io_in_3v3<25>
undriven node: la_data_out<10>
open net: io_in_3v3<26>
undriven node: la_data_out<11>
open net: la_oenb<0>
undriven node: la_data_out<12>
open net: la_oenb<1>
undriven node: la_data_out<13>
open net: la_oenb<2>
undriven node: la_data_out<14>
open net: la_oenb<3>
undriven node: la_data_out<15>
open net: la_oenb<4>
undriven node: la_data_out<16>
open net: la_oenb<5>
undriven node: la_data_out<17>
open net: la_oenb<6>
undriven node: la_data_out<18>
open net: la_oenb<7>
open net: la_data_in<100>
undriven node: la_data_out<19>
open net: la_oenb<8>
open net: la_data_in<101>
open net: la_oenb<9>
open net: la_data_in<102>
open net: la_data_in<103>
open net: la_data_in<104>
open net: la_data_in<105>
open net: la_data_in<106>
open net: la_data_in<107>
open net: la_data_in<108>
open net: la_data_in<109>
undriven node: la_data_out<20>
undriven node: la_data_out<21>
undriven node: la_data_out<22>
undriven node: la_data_out<23>
undriven node: la_data_out<24>
undriven node: la_data_out<25>
undriven node: la_data_out<26>
undriven node: la_data_out<27>
undriven node: la_data_out<28>
open net: la_data_in<110>
undriven node: la_data_out<29>
open net: la_data_in<111>
open net: la_data_in<112>
open net: la_data_in<113>
open net: la_data_in<114>
open net: la_data_in<115>
open net: la_data_in<116>
open net: la_data_in<117>
open net: la_data_in<118>
open net: la_data_in<119>
undriven node: la_data_out<30>
undriven node: la_data_out<31>
undriven node: la_data_out<32>
undriven node: la_data_out<33>
undriven node: la_data_out<34>
undriven node: la_data_out<35>
undriven node: la_data_out<36>
undriven node: la_data_out<37>
undriven node: la_data_out<38>
open net: la_data_in<120>
undriven node: la_data_out<39>
open net: la_data_in<121>
open net: la_data_in<122>
open net: la_data_in<123>
open net: la_data_in<124>
open net: la_data_in<125>
open net: la_data_in<126>
open net: la_data_in<127>
undriven node: io_out<10>
undriven node: io_out<11>
undriven node: io_out<12>
undriven node: io_out<13>
undriven node: io_out<14>
undriven node: io_out<15>
undriven node: io_out<16>
undriven node: io_out<17>
undriven node: io_out<18>
undriven node: io_out<19>
undriven node: la_data_out<40>
undriven node: la_data_out<41>
undriven node: la_data_out<42>
undriven node: la_data_out<43>
undriven node: la_data_out<44>
undriven node: la_data_out<45>
undriven node: la_data_out<46>
undriven node: user_irq<0>
undriven node: la_data_out<47>
undriven node: user_irq<1>
undriven node: la_data_out<48>
undriven node: user_irq<2>
undriven node: la_data_out<49>
open net: wb_rst_i
undriven node: io_out<20>
undriven node: io_out<21>
undriven node: io_out<22>
undriven node: io_out<23>
undriven node: io_out<24>
undriven node: io_out<25>
undriven node: io_out<26>
undriven node: la_data_out<50>
undriven node: la_data_out<51>
undriven node: la_data_out<52>
undriven node: la_data_out<53>
undriven node: la_data_out<54>
undriven node: la_data_out<55>
undriven node: la_data_out<56>
undriven node: la_data_out<57>
undriven node: la_data_out<58>
undriven node: la_data_out<59>
undriven node: la_data_out<60>
undriven node: la_data_out<61>
undriven node: la_data_out<62>
undriven node: la_data_out<63>
undriven node: la_data_out<64>
undriven node: la_data_out<65>
undriven node: la_data_out<66>
undriven node: la_data_out<67>
undriven node: la_data_out<68>
undriven node: la_data_out<69>
undriven node: io_oeb<0>
undriven node: io_oeb<1>
undriven node: io_oeb<2>
undriven node: io_oeb<3>
undriven node: io_oeb<4>
undriven node: io_oeb<5>
undriven node: io_oeb<6>
undriven node: io_oeb<7>
undriven node: io_oeb<8>
undriven node: io_oeb<9>
undriven node: la_data_out<70>
undriven node: la_data_out<71>
undriven node: la_data_out<72>
undriven node: la_data_out<73>
undriven node: la_data_out<74>
undriven node: la_data_out<75>
undriven node: la_data_out<76>
undriven node: la_data_out<77>
undriven node: la_data_out<78>
undriven node: la_data_out<79>
undriven node: la_data_out<80>
undriven node: la_data_out<81>
undriven node: la_data_out<82>
undriven node: la_data_out<83>
undriven node: la_data_out<84>
undriven node: la_data_out<85>
undriven node: la_data_out<86>
undriven node: la_data_out<87>
undriven node: la_data_out<88>
undriven node: la_data_out<89>
open net: la_oenb<10>
open net: la_oenb<11>
open net: la_oenb<12>
undriven node: la_data_out<90>
open net: la_oenb<13>
undriven node: la_data_out<91>
open net: la_oenb<14>
undriven node: la_data_out<92>
open net: la_oenb<15>
undriven node: la_data_out<93>
open net: la_oenb<16>
undriven node: la_data_out<94>
open net: la_oenb<17>
undriven node: la_data_out<95>
open net: la_oenb<18>
undriven node: la_data_out<96>
open net: la_oenb<19>
undriven node: la_data_out<97>
undriven node: la_data_out<98>
undriven node: la_data_out<99>
open net: la_oenb<20>
open net: la_oenb<21>
open net: la_oenb<22>
open net: la_oenb<23>
open net: la_oenb<24>
open net: la_oenb<25>
open net: la_oenb<26>
open net: la_oenb<27>
open net: la_oenb<28>
open net: la_oenb<29>
open net: la_oenb<30>
open net: la_oenb<31>
open net: la_oenb<32>
open net: la_oenb<33>
open net: la_oenb<34>
open net: la_oenb<35>
open net: la_oenb<36>
open net: vdda1
open net: la_oenb<37>
open net: la_oenb<38>
open net: la_oenb<39>
open net: la_oenb<40>
open net: la_oenb<41>
open net: la_oenb<42>
open net: la_oenb<43>
open net: la_oenb<44>
open net: la_oenb<45>
open net: la_oenb<46>
open net: la_oenb<47>
open net: la_oenb<48>
open net: la_oenb<49>
open net: io_in_3v3<0>
open net: io_in_3v3<1>
open net: io_in_3v3<2>
open net: io_in_3v3<3>
open net: io_in_3v3<4>
open net: io_in_3v3<5>
open net: wb_clk_i
open net: io_in_3v3<6>
open net: io_in_3v3<7>
open net: io_in_3v3<8>
open net: io_in_3v3<9>
open net: la_oenb<50>
open net: la_oenb<51>
open net: la_oenb<52>
open net: la_oenb<53>
open net: la_oenb<54>
open net: la_oenb<55>
open net: la_oenb<56>
open net: la_oenb<57>
open net: la_oenb<58>
open net: la_oenb<59>
open net: io_in<0>
open net: io_in<1>
open net: io_in<2>
open net: io_in<3>
open net: io_in<4>
open net: la_oenb<60>
open net: io_in<5>
open net: la_oenb<61>
open net: io_in<6>
open net: la_oenb<62>
open net: io_in<7>
open net: la_oenb<63>
open net: io_in<8>
open net: la_oenb<64>
open net: io_in<9>
open net: la_oenb<65>
open net: la_oenb<66>
open net: la_oenb<67>
open net: la_oenb<68>
open net: la_oenb<69>
open net: wbs_adr_i<0>
open net: wbs_adr_i<1>
open net: wbs_adr_i<2>
shorted output node: io_analog<2>
open net: wbs_adr_i<3>
shorted output node: io_analog<3>
open net: wbs_adr_i<4>
open net: wbs_adr_i<5>
open net: wbs_adr_i<6>
open net: wbs_adr_i<7>
open net: io_analog<7>
open net: wbs_adr_i<8>
open net: wbs_adr_i<9>
open net: la_oenb<70>
open net: la_oenb<71>
open net: la_oenb<72>
open net: la_oenb<73>
open net: la_oenb<74>
open net: la_oenb<100>
open net: la_oenb<75>
open net: la_oenb<101>
open net: la_oenb<76>
open net: la_oenb<102>
open net: la_oenb<77>
open net: la_oenb<103>
open net: la_oenb<78>
open net: la_oenb<104>
open net: la_oenb<79>
open net: la_oenb<105>
open net: la_oenb<106>
open net: la_oenb<107>
open net: la_oenb<108>
open net: la_oenb<109>
open net: io_clamp_low<0>
open net: io_clamp_low<1>
open net: io_clamp_low<2>
undriven node: #net1
undriven node: #net2
undriven node: #net3
undriven node: #net4
undriven node: #net5
undriven node: #net6
undriven node: #net7
undriven node: #net8
open net: la_oenb<80>
open net: la_oenb<81>
open net: la_oenb<82>
open net: la_oenb<83>
open net: la_oenb<84>
open net: la_oenb<110>
open net: la_oenb<85>
open net: la_oenb<111>
open net: la_oenb<86>
open net: la_oenb<112>
open net: la_oenb<87>
open net: la_oenb<113>
open net: la_oenb<88>
open net: la_oenb<114>
open net: la_oenb<89>
open net: la_oenb<115>
open net: la_oenb<116>
open net: la_oenb<117>
open net: la_oenb<118>
open net: la_oenb<119>
open net: gpio_analog<10>
open net: gpio_analog<11>
open net: gpio_analog<12>
open net: gpio_analog<13>
open net: gpio_analog<14>
open net: gpio_analog<15>
open net: gpio_analog<16>
open net: gpio_analog<17>
open net: la_oenb<90>
open net: la_oenb<91>
open net: la_oenb<92>
open net: la_oenb<93>
open net: la_oenb<94>
open net: la_oenb<120>
open net: la_oenb<95>
open net: la_oenb<121>
open net: la_oenb<96>
open net: la_oenb<122>
open net: la_oenb<97>
open net: la_oenb<123>
open net: la_oenb<98>
open net: la_oenb<124>
open net: la_oenb<99>
open net: la_oenb<125>
open net: la_oenb<126>
open net: la_oenb<127>
open net: wbs_adr_i<10>
open net: wbs_adr_i<11>
open net: wbs_adr_i<12>
open net: wbs_adr_i<13>
open net: wbs_adr_i<14>
open net: wbs_adr_i<15>
open net: wbs_adr_i<16>
open net: wbs_adr_i<17>
undriven node: la_data_out<100>
open net: wbs_adr_i<18>
undriven node: la_data_out<101>
open net: wbs_adr_i<19>
undriven node: la_data_out<102>
undriven node: la_data_out<103>
undriven node: wbs_dat_o<10>
undriven node: la_data_out<104>
undriven node: wbs_dat_o<11>
undriven node: la_data_out<105>
undriven node: wbs_dat_o<12>
undriven node: la_data_out<106>
undriven node: wbs_dat_o<13>
undriven node: la_data_out<107>
undriven node: wbs_dat_o<14>
undriven node: la_data_out<108>
undriven node: wbs_dat_o<15>
undriven node: la_data_out<109>
undriven node: wbs_dat_o<16>
undriven node: wbs_dat_o<17>
undriven node: wbs_dat_o<18>
undriven node: wbs_dat_o<19>
undriven node: io_out<0>
undriven node: io_out<1>
undriven node: io_out<2>
undriven node: io_out<3>
undriven node: io_out<4>
undriven node: io_out<5>
undriven node: io_out<6>
undriven node: la_data_out<0>
undriven node: io_out<7>
undriven node: la_data_out<1>
open net: wbs_dat_i<10>
undriven node: io_out<8>
undriven node: la_data_out<2>
open net: wbs_dat_i<11>
undriven node: io_out<9>
undriven node: la_data_out<3>
open net: wbs_dat_i<12>
undriven node: la_data_out<4>
open net: wbs_dat_i<13>
undriven node: la_data_out<5>
open net: wbs_dat_i<14>
undriven node: la_data_out<6>
open net: wbs_dat_i<15>
open net: wbs_adr_i<20>
undriven node: la_data_out<7>
open net: wbs_dat_i<16>
open net: wbs_adr_i<21>
undriven node: la_data_out<8>
open net: wbs_dat_i<17>
open net: wbs_adr_i<22>
undriven node: la_data_out<9>
open net: wbs_dat_i<18>
open net: wbs_adr_i<23>
open net: wbs_dat_i<19>
open net: wbs_adr_i<24>
open net: wbs_adr_i<25>
open net: wbs_adr_i<26>
open net: wbs_adr_i<27>
undriven node: la_data_out<110>
open net: wbs_adr_i<28>
undriven node: la_data_out<111>
open net: wbs_adr_i<29>
undriven node: la_data_out<112>
undriven node: la_data_out<113>
undriven node: wbs_dat_o<20>
undriven node: la_data_out<114>
undriven node: wbs_dat_o<21>
undriven node: la_data_out<115>
undriven node: wbs_dat_o<22>
undriven node: la_data_out<116>
undriven node: wbs_dat_o<23>
undriven node: la_data_out<117>
undriven node: wbs_dat_o<24>
undriven node: la_data_out<118>
undriven node: wbs_dat_o<25>
undriven node: la_data_out<119>
undriven node: wbs_dat_o<26>
undriven node: wbs_dat_o<27>
undriven node: wbs_dat_o<28>
undriven node: wbs_dat_o<29>
open net: wbs_dat_i<20>
open net: wbs_dat_i<21>
open net: wbs_dat_i<22>
open net: wbs_dat_i<23>
open net: wbs_dat_i<24>
open net: wbs_dat_i<25>
open net: wbs_adr_i<30>
open net: wbs_dat_i<26>
open net: wbs_adr_i<31>
open net: wbs_dat_i<27>
open net: wbs_dat_i<28>
open net: wbs_dat_i<29>
undriven node: wbs_dat_o<0>
undriven node: la_data_out<120>
undriven node: wbs_dat_o<1>
undriven node: la_data_out<121>
undriven node: wbs_dat_o<2>
undriven node: la_data_out<122>
undriven node: wbs_dat_o<3>
undriven node: la_data_out<123>
undriven node: wbs_dat_o<30>
undriven node: wbs_dat_o<4>
undriven node: la_data_out<124>
undriven node: wbs_dat_o<31>
undriven node: wbs_dat_o<5>
undriven node: la_data_out<125>
undriven node: wbs_dat_o<6>
undriven node: la_data_out<126>
undriven node: wbs_dat_o<7>
undriven node: la_data_out<127>
undriven node: wbs_dat_o<8>
undriven node: wbs_dat_o<9>
open net: wbs_dat_i<30>
open net: wbs_dat_i<31>
undriven node: io_oeb<10>
undriven node: io_oeb<11>
undriven node: io_oeb<12>
open net: io_in<10>
undriven node: io_oeb<13>
open net: io_in<11>
undriven node: io_oeb<14>
open net: io_in<12>
undriven node: io_oeb<15>
undriven node: io_oeb<16>
open net: io_in<14>
undriven node: io_oeb<17>
undriven node: io_oeb<18>
open net: la_data_in<10>
undriven node: io_oeb<19>
open net: la_data_in<11>
open net: la_data_in<12>
open net: la_data_in<13>
open net: la_data_in<14>
open net: la_data_in<15>
open net: la_data_in<16>
open net: la_data_in<17>
open net: la_data_in<18>
open net: la_data_in<19>
undriven node: io_oeb<20>
undriven node: io_oeb<21>
open net: wbs_cyc_i
undriven node: io_oeb<22>
open net: io_in<20>
undriven node: io_oeb<23>
open net: io_in<21>
undriven node: io_oeb<24>
open net: io_in<22>
undriven node: io_oeb<25>
open net: io_in<23>
undriven node: io_oeb<26>
open net: io_in<24>
open net: io_in<25>
open net: io_in<26>
open net: la_data_in<20>
open net: la_data_in<21>
open net: la_data_in<22>
open net: la_data_in<23>
open net: la_data_in<24>
open net: la_data_in<25>
open net: la_data_in<26>
open net: la_data_in<27>
open net: la_data_in<28>
open net: la_data_in<29>
open net: la_data_in<30>
open net: la_data_in<31>
open net: la_data_in<32>
open net: la_data_in<33>
open net: la_data_in<34>
open net: la_data_in<35>
open net: la_data_in<36>
open net: la_data_in<37>
open net: la_data_in<38>
open net: la_data_in<39>
open net: la_data_in<0>
open net: la_data_in<1>
open net: la_data_in<2>
open net: la_data_in<3>
open net: la_data_in<4>
open net: la_data_in<5>
open net: la_data_in<6>
open net: la_data_in<7>
open net: la_data_in<8>
open net: la_data_in<9>
open net: la_data_in<40>
open net: la_data_in<41>
open net: la_data_in<42>
open net: la_data_in<43>
open net: la_data_in<44>
open net: la_data_in<45>
open net: io_clamp_high<0>
open net: la_data_in<46>
open net: io_clamp_high<1>
open net: la_data_in<47>
open net: io_clamp_high<2>
open net: la_data_in<48>
open net: la_data_in<49>
open net: wbs_we_i
open net: wbs_sel_i<0>
open net: wbs_sel_i<1>
open net: wbs_sel_i<2>
open net: wbs_sel_i<3>
Warning: overlapped instance found: l52(lab_wire.sym) -> l36
-----------/home/zexious/project/sloci_caravel/xschem/VCO.sch
-----------/home/zexious/project/sloci_caravel/xschem/BGR_lvs.sch
-----------/home/zexious/project/sloci_caravel/xschem/Tx_line.sch
shorted: INA - OUTA
shorted: INB - OUTB
undriven node: OUTA
undriven node: OUTB
open net: INA
open net: INB
Warning: overlapped instance found: l19(lab_pin.sym) -> l13
-----------/home/zexious/project/sloci_caravel/xschem/topLevel.sch
-----------/home/zexious/project/sloci_caravel/xschem/core_osc.sch
-----------/home/zexious/project/sloci_caravel/xschem/buffer_amp_vop.sch
shorted output node: #net1
-----------/home/zexious/project/sloci_caravel/xschem/bias_calc.sch
-----------/home/zexious/project/sloci_caravel/xschem/cap_bank.sch
-----------/home/zexious/project/sloci_caravel/xschem/output_buffer.sch
-----------/home/zexious/project/sloci_caravel/xschem/opamp_realcomp3_usefinger.sch
-----------/home/zexious/project/sloci_caravel/xschem/core_osc_amp.sch
-----------/home/zexious/project/sloci_caravel/xschem/buffer_amp.sch
-----------/home/zexious/project/sloci_caravel/xschem/amp_dec.sch
-----------/home/zexious/project/sloci_caravel/xschem/vop_dec.sch
-----------/home/zexious/project/sloci_caravel/xschem/user_analog_project_wrapper.sch
shorted: gpio_noesd[17:0] - gpio_analog[17:0]
c. Regardless of the warnings, spice file is succesfully generated under ~/.xschem/simulations/user_analog_project_wrapper.spice
Move this schematic spice file under /xschem directory.