From 4942b2509a10c96a52a5a5b05657945a25377206 Mon Sep 17 00:00:00 2001 From: Noah Moroze Date: Tue, 17 Aug 2021 19:32:57 +0000 Subject: [PATCH 1/4] Fix typo --- padring/hdl/oh_padring.v | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/padring/hdl/oh_padring.v b/padring/hdl/oh_padring.v index 1b4c837..4a689b4 100644 --- a/padring/hdl/oh_padring.v +++ b/padring/hdl/oh_padring.v @@ -30,7 +30,7 @@ module oh_padring parameter WE_VSSIO = 8, parameter WE_VDD = 8, parameter WE_VSS = 8, - parameter ENABLE_CUTS = 1, + parameter ENABLE_CUT = 1, parameter ENABLE_POC = 1, parameter TECH_CFG_WIDTH = 16 ) From eeb0b784c41b1e75f0ad6caee88d36833d0a958c Mon Sep 17 00:00:00 2001 From: Noah Moroze Date: Wed, 18 Aug 2021 19:31:04 +0000 Subject: [PATCH 2/4] Add ring port for tech-specific power-ring signals --- padring/hdl/oh_padring.v | 9 ++++++- padring/hdl/oh_pads_domain.v | 48 ++++++++++++++++++++++-------------- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/padring/hdl/oh_padring.v b/padring/hdl/oh_padring.v index 4a689b4..a57abf2 100644 --- a/padring/hdl/oh_padring.v +++ b/padring/hdl/oh_padring.v @@ -32,7 +32,8 @@ module oh_padring parameter WE_VSS = 8, parameter ENABLE_CUT = 1, parameter ENABLE_POC = 1, - parameter TECH_CFG_WIDTH = 16 + parameter TECH_CFG_WIDTH = 16, + parameter TECH_RING_WIDTH = 8 ) ( //CONTINUOUS GROUND @@ -88,6 +89,8 @@ module oh_padring wire [WE_DOMAINS-1:0] we_poc; wire [EA_DOMAINS-1:0] ea_poc; + wire [TECH_RING_WIDTH-1:0] ring; + generate genvar i; @@ -117,6 +120,7 @@ module oh_padring .vddio (no_vddio[i]), .vssio (no_vssio[i]), .poc (no_poc[i]), + .ring(ring), // Inputs .dout (no_dout[NO_GPIO-1:0]), .oen (no_oen[NO_GPIO-1:0]), @@ -151,6 +155,7 @@ module oh_padring .vddio (so_vddio[i]), .vssio (so_vssio[i]), .poc (so_poc[i]), + .ring(ring), // Inputs .dout (so_dout[SO_GPIO-1:0]), .oen (so_oen[SO_GPIO-1:0]), @@ -186,6 +191,7 @@ module oh_padring .vddio (ea_vddio[i]), .vssio (ea_vssio[i]), .poc (ea_poc[i]), + .ring(ring), // Inputs .dout (ea_dout[EA_GPIO-1:0]), .oen (ea_oen[EA_GPIO-1:0]), @@ -222,6 +228,7 @@ module oh_padring .vddio (we_vddio[i]), .vssio (we_vssio[i]), .poc (we_poc[i]), + .ring(ring), // Inputs .dout (we_dout[WE_GPIO-1:0]), .oen (we_oen[WE_GPIO-1:0]), diff --git a/padring/hdl/oh_pads_domain.v b/padring/hdl/oh_pads_domain.v index 3e2cd28..bfc1687 100644 --- a/padring/hdl/oh_pads_domain.v +++ b/padring/hdl/oh_pads_domain.v @@ -1,10 +1,10 @@ //############################################################################# //# Function: A Padring IO Domain # //# Copyright: OH Project Authors. ALl rights Reserved. # -//# License: MIT (see LICENSE file in OH repository) # +//# License: MIT (see LICENSE file in OH repository) # //############################################################################# -module oh_pads_domain +module oh_pads_domain #(parameter TYPE = "SOFT",// asic cell type selector parameter DIR = "NO", // "NO", "SO", "EA", "WE" parameter NGPIO = 8, // total IO signal pads @@ -15,7 +15,8 @@ module oh_pads_domain parameter POC = 1, // 1 = place poc cell parameter LEFTCUT = 1, // 1 = place cut on left (seen from center) parameter RIGHTCUT = 1, // 1 = place cut on right (seen from center - parameter TECH_CFG_WIDTH = 16 + parameter TECH_CFG_WIDTH = 16, + parameter TECH_RING_WIDTH = 8 ) (//pad inout [NGPIO-1:0] pad, // pad @@ -25,6 +26,9 @@ module oh_pads_domain inout vdd, // core supply inout vss, // common ground inout poc, // power-on-ctrl + + inout [TECH_RING_WIDTH-1:0] ring, + //core facing signals input [NGPIO-1:0] dout, // data to drive to pad output [NGPIO-1:0] din, // data from pad @@ -33,9 +37,9 @@ module oh_pads_domain input [NGPIO*8-1:0] cfg, // io config input [NGPIO*TECH_CFG_WIDTH-1:0] tech_cfg // technology-specific config ); - + generate - genvar i; + genvar i; //##################### //# IO BUFFERS @@ -61,7 +65,9 @@ module oh_pads_domain .vddio (vddio), .vssio (vssio), .pad (pad[i]), - + + .ring(ring), + .tech_cfg(tech_cfg[i*TECH_CFG_WIDTH+:TECH_CFG_WIDTH])); end @@ -69,7 +75,7 @@ module oh_pads_domain //# IO SUPPLY PINS //###################### - for(i=0;i Date: Thu, 7 Oct 2021 18:31:34 +0000 Subject: [PATCH 3/4] Make tech_cfg an inout so it can expose tieoffs --- padring/hdl/oh_padring.v | 8 ++++---- padring/hdl/oh_pads_domain.v | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/padring/hdl/oh_padring.v b/padring/hdl/oh_padring.v index a57abf2..b29c42a 100644 --- a/padring/hdl/oh_padring.v +++ b/padring/hdl/oh_padring.v @@ -49,7 +49,7 @@ module oh_padring input [NO_GPIO*8-1:0] no_cfg, // config input [NO_GPIO-1:0] no_ie, // input enable input [NO_GPIO-1:0] no_oen, // output enable (bar) - input [NO_GPIO*TECH_CFG_WIDTH-1:0] no_tech_cfg, + inout [NO_GPIO*TECH_CFG_WIDTH-1:0] no_tech_cfg, //SOUTH inout [SO_DOMAINS-1:0] so_vddio, inout [SO_DOMAINS-1:0] so_vssio, @@ -59,7 +59,7 @@ module oh_padring input [SO_GPIO*8-1:0] so_cfg, // config input [SO_GPIO-1:0] so_ie, // input enable input [SO_GPIO-1:0] so_oen, // output enable (bar) - input [SO_GPIO*TECH_CFG_WIDTH-1:0] so_tech_cfg, + inout [SO_GPIO*TECH_CFG_WIDTH-1:0] so_tech_cfg, //EAST inout [EA_DOMAINS-1:0] ea_vddio, inout [EA_DOMAINS-1:0] ea_vssio, @@ -69,7 +69,7 @@ module oh_padring input [EA_GPIO*8-1:0] ea_cfg, // config input [EA_GPIO-1:0] ea_ie, // input enable input [EA_GPIO-1:0] ea_oen, // output enable (bar) - input [EA_GPIO*TECH_CFG_WIDTH-1:0] ea_tech_cfg, + inout [EA_GPIO*TECH_CFG_WIDTH-1:0] ea_tech_cfg, //WEST inout [WE_DOMAINS-1:0] we_vddio, inout [WE_DOMAINS-1:0] we_vssio, @@ -79,7 +79,7 @@ module oh_padring input [WE_GPIO*8-1:0] we_cfg, // config input [WE_GPIO-1:0] we_ie, // input enable input [WE_GPIO-1:0] we_oen, // output enable (bar) - input [WE_GPIO*TECH_CFG_WIDTH-1:0] we_tech_cfg + inout [WE_GPIO*TECH_CFG_WIDTH-1:0] we_tech_cfg ); diff --git a/padring/hdl/oh_pads_domain.v b/padring/hdl/oh_pads_domain.v index bfc1687..1fb972e 100644 --- a/padring/hdl/oh_pads_domain.v +++ b/padring/hdl/oh_pads_domain.v @@ -35,7 +35,7 @@ module oh_pads_domain input [NGPIO-1:0] oen, // output enable (bar) input [NGPIO-1:0] ie, // input enable input [NGPIO*8-1:0] cfg, // io config - input [NGPIO*TECH_CFG_WIDTH-1:0] tech_cfg // technology-specific config + inout [NGPIO*TECH_CFG_WIDTH-1:0] tech_cfg // technology-specific config ); generate From a7bae72f34fc729ad5d235e71c34a422e244a347 Mon Sep 17 00:00:00 2001 From: Noah Moroze Date: Fri, 8 Oct 2021 18:53:47 +0000 Subject: [PATCH 4/4] Pass through tech_cfg_width to iobuf --- padring/hdl/oh_pads_domain.v | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/padring/hdl/oh_pads_domain.v b/padring/hdl/oh_pads_domain.v index 1fb972e..c939848 100644 --- a/padring/hdl/oh_pads_domain.v +++ b/padring/hdl/oh_pads_domain.v @@ -48,7 +48,8 @@ module oh_pads_domain for(i=0;i