Mitch Bailey
08/08/2023, 2:03 PMgpiov2
cell LVS. Feel free to post PR’s for simulation settings.
LVS instructions are in the README
file.
Hopefully this will clarify some of the verilog/rtl/user_defines.v
settings.
https://github.com/d-m-bailey/sky130_fd_io.gitMitch Bailey
08/18/2023, 4:51 AMuser_defines.v
, gpio_control_block.v
, and the schematic, I’ve noticed OUTPUT_DISABLE
has no effect in USER
modes. Can you verify this? Here’s some relevant code from rtl.
assign gpio_in_unbuf = pad_gpio_in;
assign mgmt_gpio_in = (gpio_inenb == 1'b0 && gpio_outenb == 1'b1) ?
pad_gpio_in : 1'bz;
assign pad_gpio_outenb = (mgmt_ena) ? ((mgmt_gpio_oeb == 1'b1) ?
gpio_outenb : 1'b0) : user_gpio_oeb;
assign pad_gpio_out = (mgmt_ena) ? ((mgmt_gpio_oeb == 1'b1) ?
((gpio_dm[2:1] == 2'b01) ? ~gpio_dm[0] : mgmt_gpio_out) :
mgmt_gpio_out) : user_gpio_out;
/* Buffer user_gpio_in with an enable that is set by the user domain vccd */
gpio_logic_high gpio_logic_high (
.gpio_logic1(gpio_logic1)
);
sky130_fd_sc_hd__einvp_8 gpio_in_buf (
.Z(user_gpio_in),
.A(~gpio_in_unbuf),
.TE(gpio_logic1)
);
This means that user_oeb
is always needed for USER
modes (specifically, INPUT
and ANALOG
) to prevent Hi-Z input to the pad_gpio_outenb
selector, correct?
Also for USER_INPUT_PULLDOWN
and USER_INPUT_PULLUP
, it’s the designer’s responsibility to set io_oeb
to low and io_out
to high for pull up and low for pull down, right?Tim Edwards
08/19/2023, 12:43 AMuser_gpio_in
signal is always what's on the pad regardless of whether the mode is MGMT
or USER
, so input modes (other than pull-up and pull-down) can be made to work without user_gpio_oeb
; and analog mode can always be made to work using MGMT
mode and so also can work without user_gpio_oeb
.
The main issue is that for user output, the user_gpio_oeb
line must be set low, and that is also true for the pull-up and pull-down input modes, for the reasons you mentioned.Linen is a search-engine friendly community platform. We offer integrations with existing Slack/Discord communities and make those conversations Google-searchable.
Powered by