Ali Sabir
12/20/2022, 6:06 AMVijayan Krishnan
12/20/2022, 6:07 AMvccd1
net. Can you fix those issue?Vijayan Krishnan
12/20/2022, 6:08 AMissue_reproducible
generated by flow as testcaseAli Sabir
12/20/2022, 7:03 AMVijayan Krishnan
12/20/2022, 7:13 AMAli Sabir
12/20/2022, 7:21 AMmodule user_project_wrapper #(
parameter BITS = 32
)(
`ifdef USE_POWER_PINS
inout vccd1, // User area 5.0V supply
inout vssd1, // User area ground
`endif
// Wishbone Slave ports (WB MI A)
input wb_clk_i,
input wb_rst_i,
input wbs_stb_i,
input wbs_cyc_i,
input wbs_we_i,
input [3:0] wbs_sel_i,
input [31:0] wbs_dat_i,
input [31:0] wbs_adr_i,
output wbs_ack_o,
output [31:0] wbs_dat_o,
// Logic Analyzer Signals
input [63:0] la_data_in,
output [63:0] la_data_out,
input [63:0] la_oenb,
// IOs
input [`MPRJ_IO_PADS-1:0] io_in,
output [`MPRJ_IO_PADS-1:0] io_out,
output [`MPRJ_IO_PADS-1:0] io_oeb,
// Independent clock (on independent integer divider)
input user_clock2,
// User maskable interrupt signals
output [2:0] user_irq
);
user_proj_asic mprj(
.wb_clk_i(wb_clk_i),
.wb_rst_i(wb_rst_i),
.user_clock2(user_clock2),
.A_PAD(io_in[0]),
.B_PAD(io_in[1]),
.sel(io_in[2]),
.OUT_1(io_out[3]),
.OUT_2(io_out[4])
);
endmodule // user_project_wrapper
module user_proj_asic #(
parameter BITS = 32
)(
`ifdef USE_POWER_PINS
inout vccd1, // User area 5.0V supply
inout vssd1, // User area ground
`endif
// Wishbone Slave ports (WB MI A)
input wb_clk_i,
input wb_rst_i,
// IOs
input A_PAD,
input B_PAD,
input sel,
output OUT_1,
output OUT_2,
// Independent clock (on independent integer divider)
input user_clock2
);
endmodule
`default_nettype wire
Ali Sabir
12/20/2022, 7:22 AMVijayan Krishnan
12/20/2022, 7:24 AMconfig.json
and you're working for MPW-8 shuttle right?Mitch Bailey
12/20/2022, 7:40 AMuser_proj_asic mprj(
.wb_clk_i(wb_clk_i),
.wb_rst_i(wb_rst_i),
.user_clock2(user_clock2),
.A_PAD(io_in[0]),
.B_PAD(io_in[1]),
.sel(io_in[2]),
.OUT_1(io_out[3]),
.OUT_2(io_out[4])
);
Vijayan Krishnan
12/20/2022, 7:42 AMAli Sabir
12/20/2022, 10:00 AMAli Sabir
12/20/2022, 10:03 AM{
"DESIGN_NAME": "user_project_wrapper",
"VERILOG_FILES": [
"dir::../../verilog/rtl/defines.v",
"dir::../../verilog/rtl/user_project_wrapper.v"
],
"CLOCK_PERIOD": 10,
"CLOCK_PORT": "user_clock2",
"CLOCK_NET": "mprj.clk",
"FP_PDN_MACRO_HOOKS": "mprj vccd1 vssd1 vccd1 vssd1",
"MACRO_PLACEMENT_CFG": "dir::macro.cfg",
"VERILOG_FILES_BLACKBOX": [
"dir::../../verilog/rtl/defines.v",
"dir::../../verilog/rtl/user_proj_asic.v"
],
"EXTRA_LEFS": "dir::../../lef/user_proj_asic.lef",
"EXTRA_GDS_FILES": "dir::../../gds/user_proj_asic.gds",
"FP_PDN_CHECK_NODES": 0,
"SYNTH_ELABORATE_ONLY": 1,
"PL_RANDOM_GLB_PLACEMENT": 1,
"PL_RESIZER_DESIGN_OPTIMIZATIONS": 0,
"PL_RESIZER_TIMING_OPTIMIZATIONS": 0,
"PL_RESIZER_BUFFER_INPUT_PORTS": 0,
"FP_PDN_ENABLE_RAILS": 0,
"DIODE_INSERTION_STRATEGY": 0,
"RUN_FILL_INSERTION": 0,
"RUN_TAP_DECAP_INSERTION": 0,
"FP_PDN_VPITCH": 180,
"FP_PDN_HPITCH": 180,
"CLOCK_TREE_SYNTH": 0,
"FP_PDN_VOFFSET": 5,
"FP_PDN_HOFFSET": 5,
"MAGIC_ZEROIZE_ORIGIN": 0,
"FP_SIZING": "absolute",
"RUN_CVC": 0,
"UNIT": "2.4",
"FP_IO_VEXTEND": "expr::2 * $UNIT",
"FP_IO_HEXTEND": "expr::2 * $UNIT",
"FP_IO_VLENGTH": "ref::$UNIT",
"FP_IO_HLENGTH": "ref::$UNIT",
"FP_IO_VTHICKNESS_MULT": 4,
"FP_IO_HTHICKNESS_MULT": 4,
"FP_PDN_CORE_RING": 1,
"VDD_NETS": [
"vccd1",
"vccd2",
"vdda1",
"vdda2"
],
"GND_NETS": [
"vssd1",
"vssd2",
"vssa1",
"vssa2"
],
"SYNTH_USE_PG_PINS_DEFINES": "USE_POWER_PINS",
"pdk::sky130*": {
"RT_MAX_LAYER": "met4",
"DIE_AREA": "0 0 2920 3520",
"FP_DEF_TEMPLATE": "dir::fixed_dont_change/user_project_wrapper.def",
"scl::sky130_fd_sc_hd": {
"CLOCK_PERIOD": 10
},
"scl::sky130_fd_sc_hdll": {
"CLOCK_PERIOD": 10
},
"scl::sky130_fd_sc_hs": {
"CLOCK_PERIOD": 8
},
"scl::sky130_fd_sc_ls": {
"CLOCK_PERIOD": 10,
"SYNTH_MAX_FANOUT": 5
},
"scl::sky130_fd_sc_ms": {
"CLOCK_PERIOD": 10
}
}
}
Ali Sabir
12/20/2022, 10:04 AMAli Sabir
12/20/2022, 10:06 AM@Mitch Bailey
THis is not not issue, I did try with this one as well, Look at my final.v and still getting the same issue
module user_project_wrapper #(
parameter BITS = 32
)(
`ifdef USE_POWER_PINS
inout vccd1, // User area 5.0V supply
inout vssd1, // User area ground
`endif
// Wishbone Slave ports (WB MI A)
input wb_clk_i,
input wb_rst_i,
input wbs_stb_i,
input wbs_cyc_i,
input wbs_we_i,
input [3:0] wbs_sel_i,
input [31:0] wbs_dat_i,
input [31:0] wbs_adr_i,
output wbs_ack_o,
output [31:0] wbs_dat_o,
// Logic Analyzer Signals
input [63:0] la_data_in,
output [63:0] la_data_out,
input [63:0] la_oenb,
// IOs
input [`MPRJ_IO_PADS-1:0] io_in,
output [`MPRJ_IO_PADS-1:0] io_out,
output [`MPRJ_IO_PADS-1:0] io_oeb,
// Independent clock (on independent integer divider)
input user_clock2,
// User maskable interrupt signals
output [2:0] user_irq
);
user_proj_asic mprj(
`ifdef USE_POWER_PINS
.vccd1(vccd1), // User area 5.0V supply
.vssd1(vssd1), // User area ground
`endif
.wb_clk_i(wb_clk_i),
.wb_rst_i(wb_rst_i),
.user_clock2(user_clock2),
.A_PAD(io_in[0]),
.B_PAD(io_in[1]),
.sel(io_in[2]),
.OUT_1(io_out[3]),
.OUT_2(io_out[4])
);
endmodule // user_project_wrapper
module user_proj_asic #(
parameter BITS = 32
)(
`ifdef USE_POWER_PINS
inout vccd1, // User area 5.0V supply
inout vssd1, // User area ground
`endif
// Wishbone Slave ports (WB MI A)
input wb_clk_i,
input wb_rst_i,
// IOs
input A_PAD,
input B_PAD,
input sel,
output OUT_1,
output OUT_2,
// Independent clock (on independent integer divider)
input user_clock2
);
endmodule
`default_nettype wire
Vijayan Krishnan
12/20/2022, 10:10 AMuser_proj_asic
already hardened separately or doing directly with user_project_wrapper
?Ali Sabir
12/20/2022, 10:10 AMAli Sabir
12/20/2022, 10:11 AMVijayan Krishnan
12/20/2022, 10:11 AMmodule user_proj_asic
and other contents from user_project_wrapper.v
Ali Sabir
12/20/2022, 10:12 AMVijayan Krishnan
12/20/2022, 10:13 AMVijayan Krishnan
12/20/2022, 10:15 AMuser_project_wrapper.v
should contain only top level connection.Vijayan Krishnan
12/20/2022, 10:15 AMmodule user_project_wrapper #(
parameter BITS = 32
)(
`ifdef USE_POWER_PINS
inout vccd1, // User area 5.0V supply
inout vssd1, // User area ground
`endif
// Wishbone Slave ports (WB MI A)
input wb_clk_i,
input wb_rst_i,
input wbs_stb_i,
input wbs_cyc_i,
input wbs_we_i,
input [3:0] wbs_sel_i,
input [31:0] wbs_dat_i,
input [31:0] wbs_adr_i,
output wbs_ack_o,
output [31:0] wbs_dat_o,
// Logic Analyzer Signals
input [63:0] la_data_in,
output [63:0] la_data_out,
input [63:0] la_oenb,
// IOs
input [`MPRJ_IO_PADS-1:0] io_in,
output [`MPRJ_IO_PADS-1:0] io_out,
output [`MPRJ_IO_PADS-1:0] io_oeb,
// Independent clock (on independent integer divider)
input user_clock2,
// User maskable interrupt signals
output [2:0] user_irq
);
user_proj_asic mprj(
`ifdef USE_POWER_PINS
.vccd1(vccd1), // User area 5.0V supply
.vssd1(vssd1), // User area ground
`endif
.wb_clk_i(wb_clk_i),
.wb_rst_i(wb_rst_i),
.user_clock2(user_clock2),
.A_PAD(io_in[0]),
.B_PAD(io_in[1]),
.sel(io_in[2]),
.OUT_1(io_out[3]),
.OUT_2(io_out[4])
);
endmodule // user_project_wrapper
`default_nettype wire
Vijayan Krishnan
12/20/2022, 10:16 AMAli Sabir
12/20/2022, 10:16 AMAli Sabir
12/20/2022, 10:28 AMVijayan Krishnan
12/20/2022, 10:32 AMVERILOG_FILE_BLACKBOX
"VERILOG_FILES_BLACKBOX": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_proj_asic.v"],
"EXTRA_LEFS": "dir::../../lef/user_proj_asic.lef",
"EXTRA_GDS_FILES": "dir::../../gds/user_proj_asic.gds",
So not required to add same module in user_project_wrapper.v
.
The other way it should be quoted inside (* blackbox *) is acceptable.Ali Sabir
12/20/2022, 10:34 AMVijayan Krishnan
12/20/2022, 10:35 AMAli Sabir
12/20/2022, 10:36 AMAli Sabir
12/20/2022, 10:36 AMAli Sabir
12/20/2022, 10:36 AMMitch Bailey
12/20/2022, 10:42 AM"FP_PDN_CHECK_NODES": 0,
Can you enable that to see if it detects the error earlier?Ali Sabir
12/20/2022, 10:43 AMAli Sabir
12/20/2022, 10:44 AMMitch Bailey
12/20/2022, 11:07 AMwrapped_tms1x00
. Does your wrapped_tms1x00
have vccd1 power straps on metal4? wrapped_tms1x00
looks kind of short. It has to intersect with a vccd1 line from the user_project_wrapper
. Can you check that it does? If it doesn’t, you may be able to solve the problem by moving the macro up or down.Vijayan Krishnan
12/20/2022, 12:14 PM// Logic Analyzer Signals
input [63:0] la_data_in,
output [63:0] la_data_out,
input [63:0] la_oenb,
It should be 128 bit size for sky130 caravel.
Whether you're allowed use this GPIO pins range?
.A_PAD(io_in[0]),
.B_PAD(io_in[1]),
.sel(io_in[2]),
.OUT_1(io_out[3]),
.OUT_2(io_out[4])
you've to use choose any one hardening option: https://github.com/efabless/caravel_user_project/blob/mpw-8c/docs/source/index.rst#hardening-options, but your user_project_wrapper.v
and config.json
not matching as per hardening flow.Ali Sabir
12/20/2022, 12:30 PMAli Sabir
12/20/2022, 12:30 PMAli Sabir
12/20/2022, 12:31 PMAli Sabir
12/20/2022, 12:32 PMAli Sabir
12/21/2022, 4:56 PM