Rafael Oliveira
11/07/2024, 8:27 PM2024-11-07 03:45:48 - [ERROR] - ERROR OEB FAILED, stat=6, see /home/roliveira/Desktop/osiris_i/precheck_results/07_NOV_2024___03_21_11/logs/OEB_check.log
2024-11-07 03:45:48 - [WARNING] - {{OEB CHECK FAILED}} The design, user_project_wrapper, has OEB violations.Mitch Bailey
11/07/2024, 11:23 PMio_out. For output signals, the corresponding io_oeb signal must be low. Currently, none of the io_oeb signals are connected to anything.
I recommend tying unused io_out signals low and unused io_oeb signals high to avoid possible leaks due to floating signals into logic gates.
gpio 31 has both io_in and io_out connections. Is this a bi-directional signal? If so, during output, io_oeb should be low and during input, io_oeb should be high.
BTW, oeb stands for output enable bar, where the bar refers to an inverted signal, i.e. active low.Mitch Bailey
11/07/2024, 11:24 PMverilog/rtl/user_defines.v file?Rafael Oliveira
11/08/2024, 3:25 AMio_out, io_in and io_oeb works.
This issue was solved by setting in the verilog the io_oeb low for enabling outputs I needed in my design (io_out[11:10]) and io_oeb high for enabling inputs (io_in[9:5]). The following lines were added in the verilog of my block.
assign io_oeb[9:5] = 5'b11111; // I/O[9:5]
assign io_oeb[11:10] = 2'b00; // I/O[11:10]
In the user_defines I set the hex code to be 13'h0402 for inputs and 13'1008 for outputs:
`define USER_CONFIG_GPIO_5_INIT 13'h0402
`define USER_CONFIG_GPIO_6_INIT 13'h0402
`define USER_CONFIG_GPIO_7_INIT 13'h0402
`define USER_CONFIG_GPIO_8_INIT 13'h0402
`define USER_CONFIG_GPIO_9_INIT 13'h0402
`define USER_CONFIG_GPIO_10_INIT 13'h1808
`define USER_CONFIG_GPIO_11_INIT 13'h1808Rafael Oliveira
11/08/2024, 3:25 AMMitch Bailey
11/08/2024, 3:35 AMio_out and io_oeb to avoid any leaks caused by floating inputs. The io_out and io_oeb signals are buffered in the caravel_core level for gpio 0-5? so it’s probably a good idea to tie those too. The io_out signals to gpio 5 - 9 are unconnected, so that might result in some leak.
The simplest solution, I think, is to tie off any unused io_out and io_oeb signals.Rafael Oliveira
11/08/2024, 3:51 AMio_in, io_out and io_oeb to my logic works. As I show bellow:
/*--------------------------------------*/
/* User project is instantiated here */
/*--------------------------------------*/
osiris_i_wrapper mprj (
`ifdef USE_POWER_PINS
.vccd1(vccd1), // User area 1 1.8V power
.vssd1(vssd1), // User area 1 digital ground
`endif
.wb_clk_i(wb_clk_i),
.wb_rst_i(wb_rst_i),
// MGMT SoC Wishbone Slave
.wbs_cyc_i(wbs_cyc_i),
.wbs_stb_i(wbs_stb_i),
.wbs_we_i(wbs_we_i),
.wbs_adr_i(wbs_adr_i),
.wbs_dat_i(wbs_dat_i),
// Logic Analyzer
// IO Pads
.io_in (io_in[9:5]),
.io_out(io_out[11:10]),
.io_oeb({io_oeb[11:5]})
// IRQ
);
So inside my design I tie the io_oeb as follows, and use the inputs and outputs to connect my logic:
assign io_oeb[5:0] = 5'b11111; // I/O[9:5]
assign io_oeb[7:6] = 2'b00; // I/O[11:10]Rafael Oliveira
11/08/2024, 3:53 AMio_out or io_oeb bits. Is this the correct approach? Or should I send all the bits and tie all of them inside my design even though I'll not use it?Mitch Bailey
11/08/2024, 4:09 AMio_oeb and io_out outputs either high or low even if they are not used.
1. Some of these signals are buffered in the caravel_core block. If you don’t connect them, there can be a leak through the inverters with floating inputs.
2. Any gpio configured in a USER mode could have a leak if io_out or io_oeb is not connected.
Just to be clear, unconnected the unused signals will not cause a logic problem. Just unexpected current leaks.Rafael Oliveira
11/08/2024, 4:18 AMMGMT and i'll be fine not tie io_out or io_oeb, because the management area will take care of that. However, if I configure it as USER in the user_defines.v I do need to tie them to not have leak, even if I'm not using it. Did I understood correctly?Rafael Oliveira
11/08/2024, 4:19 AMMitch Bailey
11/08/2024, 4:26 AMcaravel_core / caravan_core blocks. The signals that are buffered should be tied no matter if they are USER or MGMT. The signals that are buffered are different between caravel and caravan.
io_out[6:0] and io_oeb[6:0] for user projects that connect to caravel_core and
io_out[26,1:0] and io_oeb[0] for projects that connect to caravan_core.Rafael Oliveira
11/08/2024, 4:29 AMLinen is a search-engine friendly community platform. We offer integrations with existing Slack/Discord communities and make those conversations Google-searchable.
Powered by