Manikanta Neralla
06/24/2023, 1:14 PMMitch Bailey
06/24/2023, 1:53 PMManikanta Neralla
06/24/2023, 3:18 PMManikanta Neralla
06/24/2023, 3:19 PMManikanta Neralla
06/24/2023, 4:18 PMManikanta Neralla
06/24/2023, 4:22 PMMitch Bailey
06/24/2023, 4:49 PMuser_project_wrapper
level. This causes openlane to place a conb
cell but since "SYNTH_ELABORATE_ONLY": 1,
, it doesn’t get placed in a powered standard cell row.
I think what you want to do is tie all your inputs at the user_proj_example
level and use the default verilog/rtl/user_project_wrapper.v
. Anyone have any other ideas?Manikanta Neralla
06/24/2023, 8:03 PMManikanta Neralla
06/24/2023, 8:03 PMManikanta Neralla
06/24/2023, 8:06 PMMitch Bailey
06/24/2023, 9:37 PM"CLOCK_TREE_SYNTH": 1,
where it’s normally 0
. Does that make a difference?Manikanta Neralla
06/25/2023, 1:11 AMManikanta Neralla
06/25/2023, 5:50 AMManikanta Neralla
06/25/2023, 5:50 AMManikanta Neralla
06/25/2023, 5:50 AMManikanta Neralla
06/25/2023, 5:52 AMManikanta Neralla
06/25/2023, 5:53 AMMitch Bailey
06/25/2023, 8:07 AMverilog/gl/user*.v
files?Manikanta Neralla
06/25/2023, 8:40 AMMitch Bailey
06/25/2023, 11:41 AMio_in
below. You could t
sky130_fd_sc_hd__conb_1 TIE_ZERO_zero_ (.VGND(vssd1),
.VNB(vssd1),
.VPB(vccd1),
.VPWR(vccd1),
.LO(zero_));
user_proj_example mprj (.vccd1(vccd1),
.vssd1(vssd1),
.wb_clk_i(wb_clk_i),
.wb_rst_i(wb_rst_i),
.wbs_ack_o(wbs_ack_o),
.wbs_cyc_i(wbs_cyc_i),
.wbs_stb_i(wbs_stb_i),
.wbs_we_i(wbs_we_i),
.io_in({zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
zero_,
io_in[37],
io_in[36],
io_in[35],
io_in[34],
io_in[33],
io_in[32],
io_in[31],
io_in[30],
io_in[7],
io_in[6],
io_in[5],
io_in[4],
io_in[3],
io_in[2],
io_in[1],
io_in[0]}),
The rtl only has the lower 16 bits assigned.
.io_in ({io_in[37:30],io_in[7:0]}),
.io_out({io_out[37:30],io_out[7:0]}),
.io_oeb({io_oeb[37:30],io_oeb[7:0]}),
You could try assigning the upper 22 bits to io_in[29:8]
.
Right now, the user_proj_example.v
rtl has
wire [0:15] inp,outp;
and
assign inp=io_in[`MPRJ_IO_PADS-1:`MPRJ_IO_PADS-16];
assign io_out[`MPRJ_IO_PADS-1:22]=outp;
which is
inp [0:15] = io_in[37:22]
This looks like it reversing the bit order (may not be a problem) and using the unassigned (zero) values from the high bits of io_in.
Manikanta Neralla
06/25/2023, 11:54 AMManikanta Neralla
06/25/2023, 11:58 AMMitch Bailey
06/25/2023, 1:54 PMverilog/rtl/user_project_wrapper.v
and then using these assignment statements in verilog/rtl/user_proj_example.v
.
assign inp={io_in[37:30],io_in[7:0]};
assign {io_out[37:30],io_out[7:0]}=outp;
Are using the same gpio for input and output? If you are, you need to set io_oeb
low for the bits you what to output.Manikanta Neralla
06/25/2023, 1:55 PMManikanta Neralla
06/25/2023, 1:56 PMManikanta Neralla
06/25/2023, 1:57 PMMitch Bailey
06/25/2023, 2:17 PMuser_project_wrapper.v
.
Your user_proj_example
bus widths are too long.
Default user_proj_example
input [15:0] io_in,
output [15:0] io_out,
output [15:0] io_oeb,
Your user_proj_example
input [`MPRJ_IO_PADS-1:0] io_in,
output [`MPRJ_IO_PADS-1:0] io_out,
output [`MPRJ_IO_PADS-1:0] io_oeb,
The extra bits are being set to zero which causes the conb cell to be added and creates the drc error.
The io_oeb signals are set like this in the the default user_proj_example
assign io_oeb = {(14){rst}};
Manikanta Neralla
06/25/2023, 3:15 PMManikanta Neralla
06/25/2023, 3:51 PMMitch Bailey
06/25/2023, 4:26 PMuser_proj_example/config.json
.
"PL_RESIZER_SETUP_SLACK_MARGIN": 0.4,
"PL_RESIZER_MAX_SLEW_MARGIN": 50,
"GLB_RESIZER_MAX_SLEW_MARGIN": 50,
"GLB_RESIZER_SETUP_SLACK_MARGIN": 0.2,
Manikanta Neralla
06/25/2023, 4:26 PMManikanta Neralla
06/26/2023, 2:01 PMManikanta Neralla
06/26/2023, 2:02 PMMitch Bailey
06/26/2023, 2:09 PMverilog/dv/DMT_testbench/Makefile
?
Looks like it can’t figure out how to make DMT_testbench.vcd
. Is that something you need to provide?Manikanta Neralla
06/26/2023, 2:10 PMMitch Bailey
06/26/2023, 2:12 PMMCW_ROOT
set to? Is there anything in the directory? Did you run make install_mcw
?Manikanta Neralla
06/26/2023, 2:14 PMManikanta Neralla
06/26/2023, 2:14 PMMitch Bailey
06/26/2023, 3:43 PMinstall_mcw
should have been done as part of make setup
.
If there is nothing in the MCW_ROOT
directory, you should be able to run make install_mcw
.
Just be sure that MCW_ROOT
is an absolute directory.Manikanta Neralla
06/28/2023, 6:42 AMMitch Bailey
06/28/2023, 12:50 PM