Initial commit for rework of chip_io and chip_io_alt layouts;

includes RTL change inside the padframe definition to remove one
previously unnoticed hard-wired connection between VDDIO and a
3.3V domain digital input pin.
This commit is contained in:
Tim Edwards 2022-10-08 12:05:10 -04:00
parent 7b271a7808
commit d1a3922dbb
5 changed files with 4816 additions and 9254 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,76 @@
magic
tech sky130A
magscale 1 2
timestamp 1665238917
<< checkpaint >>
rect 675407 99896 675887 115709
<< metal1 >>
rect 675682 113371 675734 115709
rect 675586 112665 675638 112671
rect 675586 112487 675638 112493
rect 675490 109630 675542 109636
rect 675490 109452 675542 109458
rect 675492 101631 675540 109452
rect 675588 108347 675636 112487
rect 675586 108341 675638 108347
rect 675586 108163 675638 108169
rect 675490 101625 675542 101631
rect 675490 101567 675542 101573
rect 675492 100265 675540 101567
rect 675588 100462 675636 108163
rect 675586 100456 675638 100462
rect 675586 100278 675638 100284
rect 675588 100265 675636 100278
rect 675682 99896 675734 113199
<< via1 >>
rect 675682 113199 675734 113371
rect 675586 112493 675638 112665
rect 675490 109458 675542 109630
rect 675586 108169 675638 108341
rect 675490 101573 675542 101625
rect 675586 100284 675638 100456
<< metal2 >>
rect 675676 113311 675682 113371
rect 675407 113255 675682 113311
rect 675676 113199 675682 113255
rect 675734 113311 675740 113371
rect 675734 113255 675887 113311
rect 675734 113199 675740 113255
rect 675407 112665 675887 112667
rect 675407 112611 675586 112665
rect 675580 112493 675586 112611
rect 675638 112611 675887 112665
rect 675638 112493 675644 112611
rect 675407 109630 675887 109631
rect 675407 109575 675490 109630
rect 675484 109458 675490 109575
rect 675542 109575 675887 109630
rect 675542 109458 675548 109575
rect 675407 108341 675887 108343
rect 675407 108287 675586 108341
rect 675580 108169 675586 108287
rect 675638 108287 675887 108341
rect 675638 108169 675644 108287
rect 675407 101625 675887 101627
rect 675407 101573 675490 101625
rect 675542 101573 675887 101625
rect 675407 101571 675887 101573
rect 675580 100339 675586 100456
rect 675407 100284 675586 100339
rect 675638 100339 675644 100456
rect 675638 100284 675887 100339
rect 675407 100283 675887 100284
<< labels >>
rlabel metal2 s 675407 113255 675887 113311 8 mprj_pads.area1_io_pad\[0\]/ENABLE_VDDA_H
port 14 nsew signal input
rlabel metal2 s 675407 100283 675887 100339 8 mprj_pads.area1_io_pad\[0\]/TIE_LO_ESD
port 18 nsew signal output
rlabel metal2 s 675407 108287 675887 108343 8 mprj_pads.area1_io_pad\[0\]/ENABLE_INP_H
port 15 nsew signal input
rlabel metal2 s 675407 112611 675887 112667 8 mprj_pads.area1_io_pad\[0\]/ENABLE_VSWITCH_H
port 25 nsew signal input
rlabel metal2 s 675407 101571 675887 101627 8 mprj_pads.area1_io_pad\[0\]/TIE_HI_ESD
port 17 nsew signal output
rlabel metal2 s 675407 109575 675887 109631 8 mprj_pads.area1_io_pad\[0\]/HLD_H_N
port 9 nsew signal input
<< end >>

View File

@ -104,14 +104,13 @@ module chip_io(
inout [`MPRJ_IO_PADS-10:0] mprj_analog_io
);
// To be considered: Master hold signal on all user pads (?)
// For now, set holdh_n to 1 (NOTE: This is in the 3.3V domain)
// To be considered: Master hold signal on all user pads (?)
// For now, set holdh_n to 1 internally (NOTE: This is in the
// VDDIO 3.3V domain)
// and setting enh to porb_h.
wire [`MPRJ_IO_PADS-1:0] mprj_io_hldh_n;
wire [`MPRJ_IO_PADS-1:0] mprj_io_enh;
assign mprj_io_hldh_n = {`MPRJ_IO_PADS{vddio}};
assign mprj_io_enh = {`MPRJ_IO_PADS{porb_h}};
wire analog_a, analog_b;
@ -395,7 +394,6 @@ module chip_io(
.io(mprj_io),
.io_out(mprj_io_out),
.oeb(mprj_io_oeb),
.hldh_n(mprj_io_hldh_n),
.enh(mprj_io_enh),
.inp_dis(mprj_io_inp_dis),
.ib_mode_sel(mprj_io_ib_mode_sel),

View File

@ -140,13 +140,12 @@ module chip_io_alt #(
wire analog_a, analog_b;
wire vddio_q, vssio_q;
// To be considered: Master hold signal on all user pads (?)
// For now, set holdh_n to 1 (NOTE: This is in the 3.3V domain)
// and setting enh to porb_h.
wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_hldh_n;
// To be considered: Master hold signal on all user pads (?)
// For now, set holdh_n to 1 internally (NOTE: This is in the
// VDDIO 3.3V domain) and setting enh to porb_h.
wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_enh;
assign mprj_io_hldh_n = {`MPRJ_IO_PADS{vddio}};
assign mprj_io_enh = {`MPRJ_IO_PADS{porb_h}};
// Instantiate power and ground pads for management domain
@ -469,7 +468,6 @@ module chip_io_alt #(
mprj_io[`MPRJ_IO_PADS_1-ANALOG_PADS_1-1:0]}),
.io_out(mprj_io_out),
.oeb(mprj_io_oeb),
.hldh_n(mprj_io_hldh_n),
.enh(mprj_io_enh),
.inp_dis(mprj_io_inp_dis),
.ib_mode_sel(mprj_io_ib_mode_sel),

View File

@ -48,7 +48,6 @@ module mprj_io #(
inout [TOTAL_PADS-1:0] io,
input [TOTAL_PADS-1:0] io_out,
input [TOTAL_PADS-1:0] oeb,
input [TOTAL_PADS-1:0] hldh_n,
input [TOTAL_PADS-1:0] enh,
input [TOTAL_PADS-1:0] inp_dis,
input [TOTAL_PADS-1:0] ib_mode_sel,
@ -65,7 +64,8 @@ module mprj_io #(
inout [TOTAL_PADS-10:0] analog_noesd_io
);
wire [TOTAL_PADS-1:0] loop1_io;
wire [TOTAL_PADS-1:0] loop0_io; // Internal loopback to 3.3V domain ground
wire [TOTAL_PADS-1:0] loop1_io; // Internal loopback to 3.3V domain power
wire [6:0] no_connect_1a, no_connect_1b;
wire [1:0] no_connect_2a, no_connect_2b;
@ -76,11 +76,11 @@ module mprj_io #(
`endif
.OUT(io_out[AREA1PADS - 1:0]),
.OE_N(oeb[AREA1PADS - 1:0]),
.HLD_H_N(hldh_n[AREA1PADS - 1:0]),
.HLD_H_N(loop1_iop[AREA1PADS - 1:0]),
.ENABLE_H(enh[AREA1PADS - 1:0]),
.ENABLE_INP_H(loop1_io[AREA1PADS - 1:0]),
.ENABLE_INP_H(loop0_io[AREA1PADS - 1:0]),
.ENABLE_VDDA_H(porb_h),
.ENABLE_VSWITCH_H(loop1_io[AREA1PADS - 1:0]),
.ENABLE_VSWITCH_H(loop0_io[AREA1PADS - 1:0]),
.ENABLE_VDDIO(vccd_conb[AREA1PADS - 1:0]),
.INP_DIS(inp_dis[AREA1PADS - 1:0]),
.IB_MODE_SEL(ib_mode_sel[AREA1PADS - 1:0]),
@ -96,8 +96,8 @@ module mprj_io #(
.PAD_A_ESD_1_H(),
.IN(io_in[AREA1PADS - 1:0]),
.IN_H(io_in_3v3[AREA1PADS - 1:0]),
.TIE_HI_ESD(),
.TIE_LO_ESD(loop1_io[AREA1PADS - 1:0])
.TIE_HI_ESD(loop1_io[AREA1PADS - 1:0]),
.TIE_LO_ESD(loop0_io[AREA1PADS - 1:0])
);
sky130_ef_io__gpiov2_pad_wrapped area2_io_pad [TOTAL_PADS - AREA1PADS - 1:0] (
@ -107,11 +107,11 @@ module mprj_io #(
`endif
.OUT(io_out[TOTAL_PADS - 1:AREA1PADS]),
.OE_N(oeb[TOTAL_PADS - 1:AREA1PADS]),
.HLD_H_N(hldh_n[TOTAL_PADS - 1:AREA1PADS]),
.HLD_H_N(loop1_io[TOTAL_PADS - 1:AREA1PADS]),
.ENABLE_H(enh[TOTAL_PADS - 1:AREA1PADS]),
.ENABLE_INP_H(loop1_io[TOTAL_PADS - 1:AREA1PADS]),
.ENABLE_INP_H(loop0_io[TOTAL_PADS - 1:AREA1PADS]),
.ENABLE_VDDA_H(porb_h),
.ENABLE_VSWITCH_H(loop1_io[TOTAL_PADS - 1:AREA1PADS]),
.ENABLE_VSWITCH_H(loop0_io[TOTAL_PADS - 1:AREA1PADS]),
.ENABLE_VDDIO(vccd_conb[TOTAL_PADS - 1:AREA1PADS]),
.INP_DIS(inp_dis[TOTAL_PADS - 1:AREA1PADS]),
.IB_MODE_SEL(ib_mode_sel[TOTAL_PADS - 1:AREA1PADS]),
@ -127,8 +127,8 @@ module mprj_io #(
.PAD_A_ESD_1_H(),
.IN(io_in[TOTAL_PADS - 1:AREA1PADS]),
.IN_H(io_in_3v3[TOTAL_PADS - 1:AREA1PADS]),
.TIE_HI_ESD(),
.TIE_LO_ESD(loop1_io[TOTAL_PADS - 1:AREA1PADS])
.TIE_HI_ESD(loop1_io[TOTAL_PADS - 1:AREA1PADS]),
.TIE_LO_ESD(loop0_io[TOTAL_PADS - 1:AREA1PADS])
);
endmodule