mirror of https://github.com/efabless/caravel.git
104 lines
2.6 KiB
Verilog
104 lines
2.6 KiB
Verilog
// SPDX-FileCopyrightText: 2020 Efabless Corporation
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
`default_nettype none
|
|
/*----------------------------------------------------------------------*/
|
|
/* mgmt_protect_hv: */
|
|
/* */
|
|
/* High voltage (3.3V) part of the mgmt_protect module. Split out into */
|
|
/* a separate module and file so that the synthesis tools can handle it */
|
|
/* separately from the rest, since it uses a different standard cell */
|
|
/* library. See the file mgmt_protect.v for a full description of the */
|
|
/* whole management protection method. */
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
module mgmt_protect_hv (
|
|
`ifdef USE_POWER_PINS
|
|
inout vccd,
|
|
inout vssd,
|
|
inout vdda1,
|
|
inout vssa1,
|
|
inout vdda2,
|
|
inout vssa2,
|
|
`endif
|
|
|
|
output mprj_vdd_logic1,
|
|
output mprj2_vdd_logic1
|
|
|
|
);
|
|
|
|
wire mprj_vdd_logic1_h;
|
|
wire mprj2_vdd_logic1_h;
|
|
|
|
`ifdef USE_POWER_PINS
|
|
// This is to emulate the substrate shorting grounds together for LVS
|
|
// purposes
|
|
assign vssa2 = vssa1;
|
|
assign vssa1 = vssd;
|
|
`endif
|
|
|
|
// Logic high in the VDDA (3.3V) domains
|
|
|
|
sky130_fd_sc_hvl__conb_1 mprj_logic_high_hvl (
|
|
`ifdef USE_POWER_PINS
|
|
.VPWR(vdda1),
|
|
.VGND(vssa1),
|
|
.VPB(vdda1),
|
|
.VNB(vssa1),
|
|
`endif
|
|
.HI(mprj_vdd_logic1_h),
|
|
.LO()
|
|
);
|
|
|
|
sky130_fd_sc_hvl__conb_1 mprj2_logic_high_hvl (
|
|
`ifdef USE_POWER_PINS
|
|
.VPWR(vdda2),
|
|
.VGND(vssa2),
|
|
.VPB(vdda2),
|
|
.VNB(vssa2),
|
|
`endif
|
|
.HI(mprj2_vdd_logic1_h),
|
|
.LO()
|
|
);
|
|
|
|
// Level shift the logic high signals into the 1.8V domain
|
|
|
|
sky130_fd_sc_hvl__lsbufhv2lv_1 mprj_logic_high_lv (
|
|
`ifdef USE_POWER_PINS
|
|
.VPWR(vdda1),
|
|
.VGND(vssd),
|
|
.LVPWR(vccd),
|
|
.VPB(vdda1),
|
|
.VNB(vssd),
|
|
`endif
|
|
.X(mprj_vdd_logic1),
|
|
.A(mprj_vdd_logic1_h)
|
|
);
|
|
|
|
sky130_fd_sc_hvl__lsbufhv2lv_1 mprj2_logic_high_lv (
|
|
`ifdef USE_POWER_PINS
|
|
.VPWR(vdda2),
|
|
.VGND(vssd),
|
|
.LVPWR(vccd),
|
|
.VPB(vdda2),
|
|
.VNB(vssd),
|
|
`endif
|
|
.X(mprj2_vdd_logic1),
|
|
.A(mprj2_vdd_logic1_h)
|
|
);
|
|
endmodule
|
|
|
|
`default_nettype wire
|