mirror of https://github.com/efabless/caravel.git
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:
parent
7b271a7808
commit
d1a3922dbb
13952
mag/chip_io.mag
13952
mag/chip_io.mag
File diff suppressed because it is too large
Load Diff
|
@ -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 >>
|
|
@ -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),
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue